ZO package::position bytecode | tide- Move path
- 0x7fd8…1fec::position
- Functions
- 3822 public, 0 entry
- Structs
- 6
position
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v7
2module 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec.position {
3use 0000000000000000000000000000000000000000000000000000000000000002::balance;
4use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::admin;
5use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::agg_price;
6use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::decimal;
7
use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::rate;
8use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::sdecimal;
9use 7fd8aba1652c58b6397c799fd375e748e5053145cb7e126d303e0a1545fd1fec::srate;
11struct PositionConfig has copy, drop, store {
13 min_holding_duration: u64,
14 max_reserved_multiplier: u64,
15 min_collateral_value: Decimal,
16 min_order_fee_value: Decimal,
18 decrease_fee_bps: Rate,
19 liquidation_threshold: Rate,
20 liquidation_bonus: Rate
23struct PositionInstantExitFeeConfig has copy, drop, store {
24 instant_exit_tier_1_duration_threshold: u64,
25 instant_exit_tier_1_fee_bps: Rate,
26 instant_exit_tier_1_fee_enabled: bool,
27 instant_exit_tier_2_duration_threshold: u64,
28 instant_exit_tier_2_fee_bps: Rate,
29 instant_exit_tier_2_fee_enabled: bool,
30 instant_exit_tier_3_duration_threshold: u64,
31 instant_exit_tier_3_fee_bps: Rate,
32 instant_exit_tier_3_fee_enabled: bool
35struct Position<phantom Ty0> has store {
37 config: PositionConfig,
40 position_size: Decimal,
41 reserving_fee_amount: Decimal,
42 funding_fee_value: SDecimal,
43 last_reserving_rate: Rate,
44 last_funding_rate: SRate,
45 reserved: Balance<Ty0>,
46 collateral: Balance<Ty0>
49struct OpenPositionResult<phantom Ty0> {
50 position: Position<Ty0>,
51 open_fee: Balance<Ty0>,
52 open_fee_amount: Decimal
55struct DecreasePositionResult<phantom Ty0> {
59 decreased_reserved_amount: u64,
60 decrease_size: Decimal,
61 reserving_fee_amount: Decimal,
62 decrease_fee_value: Decimal,
63 reserving_fee_value: Decimal,
64 funding_fee_value: SDecimal,
65 to_vault: Balance<Ty0>,
66 to_trader: Balance<Ty0>
69struct DecreasePositionResultV1<phantom Ty0> {
73 decreased_reserved_amount: u64,
74 decrease_size: Decimal,
75 reserving_fee_amount: Decimal,
76 decrease_fee_value: Decimal,
77 reserving_fee_value: Decimal,
78 funding_fee_value: SDecimal,
79 instant_exit_fee_value: Decimal,
80 instant_exit_fee_tier: u8,
81 to_vault: Balance<Ty0>,
82 to_trader: Balance<Ty0>
85public config_max_leverage(Arg0: &PositionConfig): u64 {
870MoveLoc[0](Arg0: &PositionConfig)
881ImmBorrowField[0](PositionConfig.max_leverage: u64)
93public config_min_holding_duration(Arg0: &PositionConfig): u64 {
950MoveLoc[0](Arg0: &PositionConfig)
961ImmBorrowField[1](PositionConfig.min_holding_duration: u64)
101public config_max_reserved_multiplier(Arg0: &PositionConfig): u64 {
1030MoveLoc[0](Arg0: &PositionConfig)
1041ImmBorrowField[2](PositionConfig.max_reserved_multiplier: u64)
109public config_min_collateral_value(Arg0: &PositionConfig): Decimal {
1110MoveLoc[0](Arg0: &PositionConfig)
1121ImmBorrowField[3](PositionConfig.min_collateral_value: Decimal)
117public config_min_order_fee_value(Arg0: &PositionConfig): Decimal {
1190MoveLoc[0](Arg0: &PositionConfig)
1201ImmBorrowField[4](PositionConfig.min_order_fee_value: Decimal)
125public config_open_fee_bps(Arg0: &PositionConfig): Rate {
1270MoveLoc[0](Arg0: &PositionConfig)
1281ImmBorrowField[5](PositionConfig.open_fee_bps: Rate)
133public config_decrease_fee_bps(Arg0: &PositionConfig): Rate {
1350MoveLoc[0](Arg0: &PositionConfig)
1361ImmBorrowField[6](PositionConfig.decrease_fee_bps: Rate)
141public config_liquidation_threshold(Arg0: &PositionConfig): Rate {
1430MoveLoc[0](Arg0: &PositionConfig)
1441ImmBorrowField[7](PositionConfig.liquidation_threshold: Rate)
149public config_liquidation_bonus(Arg0: &PositionConfig): Rate {
1510MoveLoc[0](Arg0: &PositionConfig)
1521ImmBorrowField[8](PositionConfig.liquidation_bonus: Rate)
157public closed<Ty0>(Arg0: &Position<Ty0>): bool {
1590MoveLoc[0](Arg0: &Position<Ty0>)
1601ImmBorrowFieldGeneric[0](Position.closed: bool)
165public position_config<Ty0>(Arg0: &Position<Ty0>): &PositionConfig {
1670MoveLoc[0](Arg0: &Position<Ty0>)
1681ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
172public open_timestamp<Ty0>(Arg0: &Position<Ty0>): u64 {
1740MoveLoc[0](Arg0: &Position<Ty0>)
1751ImmBorrowFieldGeneric[2](Position.open_timestamp: u64)
180public position_amount<Ty0>(Arg0: &Position<Ty0>): u64 {
1820MoveLoc[0](Arg0: &Position<Ty0>)
1831ImmBorrowFieldGeneric[3](Position.position_amount: u64)
188public position_size<Ty0>(Arg0: &Position<Ty0>): Decimal {
1900MoveLoc[0](Arg0: &Position<Ty0>)
1911ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
196public collateral_amount<Ty0>(Arg0: &Position<Ty0>): u64 {
1980MoveLoc[0](Arg0: &Position<Ty0>)
1991ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
2002Call balance::value<Ty0>(&Balance<Ty0>): u64
204public reserved_amount<Ty0>(Arg0: &Position<Ty0>): u64 {
2060MoveLoc[0](Arg0: &Position<Ty0>)
2071ImmBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
2082Call balance::value<Ty0>(&Balance<Ty0>): u64
212public compute_reserving_fee_amount<Ty0>(Arg0: &Position<Ty0>, Arg1: Rate): Decimal {
2150CopyLoc[0](Arg0: &Position<Ty0>)
2161ImmBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
2172Call balance::value<Ty0>(&Balance<Ty0>): u64
2183Call decimal::from_u64(u64): Decimal
2194MoveLoc[1](Arg1: Rate)
2205CopyLoc[0](Arg0: &Position<Ty0>)
2216ImmBorrowFieldGeneric[7](Position.last_reserving_rate: Rate)
2238Call rate::sub(Rate, Rate): Rate
2249Call decimal::mul_with_rate(Decimal, Rate): Decimal
22510StLoc[2](loc0: Decimal)
22611MoveLoc[0](Arg0: &Position<Ty0>)
22712ImmBorrowFieldGeneric[8](Position.reserving_fee_amount: Decimal)
22914MoveLoc[2](loc0: Decimal)
23015Call decimal::add(Decimal, Decimal): Decimal
234public compute_funding_fee_value<Ty0>(Arg0: &Position<Ty0>, Arg1: SRate): SDecimal {
2380MoveLoc[1](Arg1: SRate)
2391CopyLoc[0](Arg0: &Position<Ty0>)
2402ImmBorrowFieldGeneric[9](Position.last_funding_rate: SRate)
2424Call srate::sub(SRate, SRate): SRate
2435StLoc[3](loc1: SRate)
2446ImmBorrowLoc[3](loc1: SRate)
2457Call srate::is_positive(&SRate): bool
2468CopyLoc[0](Arg0: &Position<Ty0>)
2479ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
24911ImmBorrowLoc[3](loc1: SRate)
25012Call srate::value(&SRate): Rate
25113Call decimal::mul_with_rate(Decimal, Rate): Decimal
25214Call sdecimal::from_decimal(bool, Decimal): SDecimal
25315StLoc[2](loc0: SDecimal)
25416MoveLoc[0](Arg0: &Position<Ty0>)
25517ImmBorrowFieldGeneric[10](Position.funding_fee_value: SDecimal)
25719MoveLoc[2](loc0: SDecimal)
25820Call sdecimal::add(SDecimal, SDecimal): SDecimal
262public compute_delta_size<Ty0>(Arg0: &Position<Ty0>, Arg1: &AggPrice, Arg2: bool): SDecimal {
2670MoveLoc[1](Arg1: &AggPrice)
2681CopyLoc[0](Arg0: &Position<Ty0>)
2692ImmBorrowFieldGeneric[3](Position.position_amount: u64)
2714Call agg_price::coins_to_value(&AggPrice, u64): Decimal
2725StLoc[5](loc2: Decimal)
2736ImmBorrowLoc[5](loc2: Decimal)
2747CopyLoc[0](Arg0: &Position<Ty0>)
2758ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
2769Call decimal::gt(&Decimal, &Decimal): bool
27911MoveLoc[2](Arg2: bool)
28012MoveLoc[5](loc2: Decimal)
28113MoveLoc[0](Arg0: &Position<Ty0>)
28214ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
28416Call decimal::sub(Decimal, Decimal): Decimal
28517StLoc[4](loc1: Decimal)
28618StLoc[3](loc0: bool)
28920MoveLoc[2](Arg2: bool)
29122MoveLoc[0](Arg0: &Position<Ty0>)
29223ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
29425MoveLoc[5](loc2: Decimal)
29526Call decimal::sub(Decimal, Decimal): Decimal
29627StLoc[4](loc1: Decimal)
29728StLoc[3](loc0: bool)
29929MoveLoc[3](loc0: bool)
30030MoveLoc[4](loc1: Decimal)
30131Call sdecimal::from_decimal(bool, Decimal): SDecimal
305public check_holding_duration<Ty0>(Arg0: &Position<Ty0>, Arg1: &SDecimal, Arg2: u64): bool {
3080MoveLoc[1](Arg1: &SDecimal)
3091Call sdecimal::is_positive(&SDecimal): bool
3134MoveLoc[0](Arg0: &Position<Ty0>)
3199CopyLoc[0](Arg0: &Position<Ty0>)
32010ImmBorrowFieldGeneric[2](Position.open_timestamp: u64)
32212MoveLoc[0](Arg0: &Position<Ty0>)
32313ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
32414ImmBorrowField[1](PositionConfig.min_holding_duration: u64)
32717MoveLoc[2](Arg2: u64)
32919StLoc[3](loc0: bool)
33120MoveLoc[3](loc0: bool)
335public check_leverage(Arg0: &PositionConfig, Arg1: Decimal, Arg2: u64, Arg3: &AggPrice): bool {
3390MoveLoc[1](Arg1: Decimal)
3401MoveLoc[0](Arg0: &PositionConfig)
3412ImmBorrowField[0](PositionConfig.max_leverage: u64)
3434Call decimal::mul_with_u64(Decimal, u64): Decimal
3445StLoc[5](loc1: Decimal)
3456MoveLoc[3](Arg3: &AggPrice)
3467MoveLoc[2](Arg2: u64)
3478Call agg_price::coins_to_value(&AggPrice, u64): Decimal
3489StLoc[4](loc0: Decimal)
34910ImmBorrowLoc[5](loc1: Decimal)
35011ImmBorrowLoc[4](loc0: Decimal)
35112Call decimal::ge(&Decimal, &Decimal): bool
355public check_liquidation(Arg0: &PositionConfig, Arg1: Decimal, Arg2: &SDecimal): bool {
3610CopyLoc[2](Arg2: &SDecimal)
3621Call sdecimal::is_positive(&SDecimal): bool
3653MoveLoc[2](Arg2: &SDecimal)
3675MoveLoc[0](Arg0: &PositionConfig)
37310MoveLoc[1](Arg1: Decimal)
37411MoveLoc[0](Arg0: &PositionConfig)
37512ImmBorrowField[7](PositionConfig.liquidation_threshold: Rate)
37714Call decimal::mul_with_rate(Decimal, Rate): Decimal
37815StLoc[4](loc1: Decimal)
37916ImmBorrowLoc[4](loc1: Decimal)
38017StLoc[5](loc2: &Decimal)
38118MoveLoc[2](Arg2: &SDecimal)
38219Call sdecimal::value(&SDecimal): Decimal
38320StLoc[3](loc0: Decimal)
38421MoveLoc[5](loc2: &Decimal)
38522ImmBorrowLoc[3](loc0: Decimal)
38623Call decimal::le(&Decimal, &Decimal): bool
38724StLoc[6](loc3: bool)
38925MoveLoc[6](loc3: bool)
393public(friend) new_position_instant_exit_fee_config(Arg0: u64, Arg1: Rate, Arg2: bool, Arg3: u64, Arg4: Rate, Arg5: bool, Arg6: u64, Arg7: Rate, Arg8: bool): PositionInstantExitFeeConfig {
3950MoveLoc[0](Arg0: u64)
3961MoveLoc[1](Arg1: Rate)
3972MoveLoc[2](Arg2: bool)
3983MoveLoc[3](Arg3: u64)
3994MoveLoc[4](Arg4: Rate)
4005MoveLoc[5](Arg5: bool)
4016MoveLoc[6](Arg6: u64)
4027MoveLoc[7](Arg7: Rate)
4038MoveLoc[8](Arg8: bool)
4049Pack[1](PositionInstantExitFeeConfig)
408public(friend) set_position_instant_exit_fee_config(Arg0: &mut PositionInstantExitFeeConfig, Arg1: u64, Arg2: bool, Arg3: Rate, Arg4: u64, Arg5: bool, Arg6: Rate, Arg7: u64, Arg8: bool, Arg9: Rate): PositionInstantExitFeeConfig {
4100MoveLoc[1](Arg1: u64)
4111CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
4122MutBorrowField[20](PositionInstantExitFeeConfig.instant_exit_tier_1_duration_threshold: u64)
4144MoveLoc[3](Arg3: Rate)
4155CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
4166MutBorrowField[21](PositionInstantExitFeeConfig.instant_exit_tier_1_fee_bps: Rate)
4188MoveLoc[2](Arg2: bool)
4199CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
42010MutBorrowField[22](PositionInstantExitFeeConfig.instant_exit_tier_1_fee_enabled: bool)
42212MoveLoc[4](Arg4: u64)
42313CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
42414MutBorrowField[23](PositionInstantExitFeeConfig.instant_exit_tier_2_duration_threshold: u64)
42616MoveLoc[6](Arg6: Rate)
42717CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
42818MutBorrowField[24](PositionInstantExitFeeConfig.instant_exit_tier_2_fee_bps: Rate)
43020MoveLoc[5](Arg5: bool)
43121CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
43222MutBorrowField[25](PositionInstantExitFeeConfig.instant_exit_tier_2_fee_enabled: bool)
43424MoveLoc[7](Arg7: u64)
43525CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
43626MutBorrowField[26](PositionInstantExitFeeConfig.instant_exit_tier_3_duration_threshold: u64)
43828MoveLoc[9](Arg9: Rate)
43929CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
44030MutBorrowField[27](PositionInstantExitFeeConfig.instant_exit_tier_3_fee_bps: Rate)
44232MoveLoc[8](Arg8: bool)
44333CopyLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
44434MutBorrowField[28](PositionInstantExitFeeConfig.instant_exit_tier_3_fee_enabled: bool)
44636MoveLoc[0](Arg0: &mut PositionInstantExitFeeConfig)
451public(friend) default_position_instant_exit_fee_config(): PositionInstantExitFeeConfig {
4541Call rate::zero(): Rate
4574Call rate::zero(): Rate
4607Call rate::zero(): Rate
4629Pack[1](PositionInstantExitFeeConfig)
466public(friend) clone_position_instant_exit_fee_config(Arg0: &PositionInstantExitFeeConfig): PositionInstantExitFeeConfig {
4680CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
4691ImmBorrowField[20](PositionInstantExitFeeConfig.instant_exit_tier_1_duration_threshold: u64)
4713CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
4724ImmBorrowField[21](PositionInstantExitFeeConfig.instant_exit_tier_1_fee_bps: Rate)
4746CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
4757ImmBorrowField[22](PositionInstantExitFeeConfig.instant_exit_tier_1_fee_enabled: bool)
4779CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
47810ImmBorrowField[23](PositionInstantExitFeeConfig.instant_exit_tier_2_duration_threshold: u64)
48012CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
48113ImmBorrowField[24](PositionInstantExitFeeConfig.instant_exit_tier_2_fee_bps: Rate)
48315CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
48416ImmBorrowField[25](PositionInstantExitFeeConfig.instant_exit_tier_2_fee_enabled: bool)
48618CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
48719ImmBorrowField[26](PositionInstantExitFeeConfig.instant_exit_tier_3_duration_threshold: u64)
48921CopyLoc[0](Arg0: &PositionInstantExitFeeConfig)
49022ImmBorrowField[27](PositionInstantExitFeeConfig.instant_exit_tier_3_fee_bps: Rate)
49224MoveLoc[0](Arg0: &PositionInstantExitFeeConfig)
49325ImmBorrowField[28](PositionInstantExitFeeConfig.instant_exit_tier_3_fee_enabled: bool)
49527Pack[1](PositionInstantExitFeeConfig)
499public(friend) new_position_config(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: u256, Arg4: u256, Arg5: u128, Arg6: u128, Arg7: u128, Arg8: u128): PositionConfig {
5010MoveLoc[0](Arg0: u64)
5021MoveLoc[1](Arg1: u64)
5032MoveLoc[2](Arg2: u64)
5043MoveLoc[3](Arg3: u256)
5054Call decimal::from_raw(u256): Decimal
5065MoveLoc[4](Arg4: u256)
5076Call decimal::from_raw(u256): Decimal
5087MoveLoc[5](Arg5: u128)
5098Call rate::from_raw(u128): Rate
5109MoveLoc[6](Arg6: u128)
51110Call rate::from_raw(u128): Rate
51211MoveLoc[7](Arg7: u128)
51312Call rate::from_raw(u128): Rate
51413MoveLoc[8](Arg8: u128)
51514Call rate::from_raw(u128): Rate
51615Pack[0](PositionConfig)
520public(friend) open_position<Ty0>(Arg0: &PositionConfig, Arg1: &AggPrice, Arg2: &AggPrice, Arg3: &mut Balance<Ty0>, Arg4: &mut Balance<Ty0>, Arg5: Decimal, Arg6: u64, Arg7: u64, Arg8: Rate, Arg9: SRate, Arg10: u64): OpenPositionResult<Ty0> {
523L13: loc2: Balance<Ty0>
5290CopyLoc[4](Arg4: &mut Balance<Ty0>)
5312Call balance::value<Ty0>(&Balance<Ty0>): u64
5387MoveLoc[3](Arg3: &mut Balance<Ty0>)
5409MoveLoc[2](Arg2: &AggPrice)
54211MoveLoc[0](Arg0: &PositionConfig)
54413MoveLoc[1](Arg1: &AggPrice)
54615MoveLoc[4](Arg4: &mut Balance<Ty0>)
54817LdConst[2](u64: 403)
55119CopyLoc[1](Arg1: &AggPrice)
55220Call agg_price::price_of(&AggPrice): Decimal
55321StLoc[11](loc0: Decimal)
55422ImmBorrowLoc[11](loc0: Decimal)
55523ImmBorrowLoc[5](Arg5: Decimal)
55624Call decimal::ge(&Decimal, &Decimal): bool
56127MoveLoc[3](Arg3: &mut Balance<Ty0>)
56329MoveLoc[2](Arg2: &AggPrice)
56531MoveLoc[0](Arg0: &PositionConfig)
56733MoveLoc[1](Arg1: &AggPrice)
56935MoveLoc[4](Arg4: &mut Balance<Ty0>)
57137LdConst[14](u64: 415)
57439CopyLoc[6](Arg6: u64)
58144MoveLoc[3](Arg3: &mut Balance<Ty0>)
58346MoveLoc[2](Arg2: &AggPrice)
58548MoveLoc[0](Arg0: &PositionConfig)
58750MoveLoc[1](Arg1: &AggPrice)
58952MoveLoc[4](Arg4: &mut Balance<Ty0>)
59154LdConst[4](u64: 405)
59456CopyLoc[7](Arg7: u64)
59557CopyLoc[4](Arg4: &mut Balance<Ty0>)
59759Call balance::value<Ty0>(&Balance<Ty0>): u64
59860CopyLoc[0](Arg0: &PositionConfig)
59961ImmBorrowField[2](PositionConfig.max_reserved_multiplier: u64)
60767MoveLoc[3](Arg3: &mut Balance<Ty0>)
60969MoveLoc[2](Arg2: &AggPrice)
61171MoveLoc[0](Arg0: &PositionConfig)
61373MoveLoc[1](Arg1: &AggPrice)
61575MoveLoc[4](Arg4: &mut Balance<Ty0>)
61777LdConst[13](u64: 414)
62079CopyLoc[2](Arg2: &AggPrice)
62180CopyLoc[6](Arg6: u64)
62281Call agg_price::coins_to_value(&AggPrice, u64): Decimal
62382StLoc[17](loc6: Decimal)
62483CopyLoc[17](loc6: Decimal)
62584CopyLoc[0](Arg0: &PositionConfig)
62685ImmBorrowField[5](PositionConfig.open_fee_bps: Rate)
62887Call decimal::mul_with_rate(Decimal, Rate): Decimal
62988StLoc[16](loc5: Decimal)
63089CopyLoc[1](Arg1: &AggPrice)
63190MoveLoc[16](loc5: Decimal)
63291Call agg_price::value_to_coins(&AggPrice, Decimal): Decimal
63392StLoc[15](loc4: Decimal)
63493CopyLoc[15](loc4: Decimal)
63594Call decimal::ceil_u64(Decimal): u64
63695StLoc[14](loc3: u64)
63796CopyLoc[4](Arg4: &mut Balance<Ty0>)
63998Call balance::value<Ty0>(&Balance<Ty0>): u64
64099CopyLoc[14](loc3: u64)
646103MoveLoc[3](Arg3: &mut Balance<Ty0>)
648105MoveLoc[2](Arg2: &AggPrice)
650107MoveLoc[0](Arg0: &PositionConfig)
652109MoveLoc[1](Arg1: &AggPrice)
654111MoveLoc[4](Arg4: &mut Balance<Ty0>)
656113LdConst[6](u64: 407)
659115MoveLoc[1](Arg1: &AggPrice)
660116CopyLoc[4](Arg4: &mut Balance<Ty0>)
662118Call balance::value<Ty0>(&Balance<Ty0>): u64
663119CopyLoc[14](loc3: u64)
665121Call agg_price::coins_to_value(&AggPrice, u64): Decimal
666122StLoc[12](loc1: Decimal)
667123ImmBorrowLoc[12](loc1: Decimal)
668124CopyLoc[0](Arg0: &PositionConfig)
669125ImmBorrowField[3](PositionConfig.min_collateral_value: Decimal)
670126Call decimal::ge(&Decimal, &Decimal): bool
675129MoveLoc[3](Arg3: &mut Balance<Ty0>)
677131MoveLoc[2](Arg2: &AggPrice)
679133MoveLoc[0](Arg0: &PositionConfig)
681135MoveLoc[4](Arg4: &mut Balance<Ty0>)
683137LdConst[8](u64: 409)
686139CopyLoc[0](Arg0: &PositionConfig)
687140MoveLoc[12](loc1: Decimal)
688141CopyLoc[6](Arg6: u64)
689142MoveLoc[2](Arg2: &AggPrice)
690143Call check_leverage(&PositionConfig, Decimal, u64, &AggPrice): bool
695146MoveLoc[3](Arg3: &mut Balance<Ty0>)
697148MoveLoc[0](Arg0: &PositionConfig)
699150MoveLoc[4](Arg4: &mut Balance<Ty0>)
701152LdConst[10](u64: 411)
704154CopyLoc[4](Arg4: &mut Balance<Ty0>)
705155MoveLoc[14](loc3: u64)
706156Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
707157StLoc[13](loc2: Balance<Ty0>)
709159MoveLoc[0](Arg0: &PositionConfig)
711161MoveLoc[10](Arg10: u64)
712162MoveLoc[6](Arg6: u64)
713163MoveLoc[17](loc6: Decimal)
714164Call decimal::zero(): Decimal
715165Call sdecimal::zero(): SDecimal
716166MoveLoc[8](Arg8: Rate)
717167MoveLoc[9](Arg9: SRate)
718168MoveLoc[3](Arg3: &mut Balance<Ty0>)
719169MoveLoc[7](Arg7: u64)
720170Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
721171MoveLoc[4](Arg4: &mut Balance<Ty0>)
722172Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
723173PackGeneric[0](Position<Ty0>)
724174MoveLoc[13](loc2: Balance<Ty0>)
725175MoveLoc[15](loc4: Decimal)
726176PackGeneric[1](OpenPositionResult<Ty0>)
730public(friend) unwrap_open_position_result<Ty0>(Arg0: OpenPositionResult<Ty0>): Position<Ty0> * Balance<Ty0> * Decimal {
7320MoveLoc[0](Arg0: OpenPositionResult<Ty0>)
7331UnpackGeneric[1](OpenPositionResult<Ty0>)
737public(friend) decrease_position_v1<Ty0>(Arg0: &mut Position<Ty0>, Arg1: &AggPrice, Arg2: &AggPrice, Arg3: Decimal, Arg4: bool, Arg5: u64, Arg6: Rate, Arg7: SRate, Arg8: &PositionInstantExitFeeConfig, Arg9: u64): DecreasePositionResultV1<Ty0> {
745L17: loc7: Balance<Ty0>
746L18: loc8: Balance<Ty0>
767L39: loc29: Balance<Ty0>
768L40: loc30: Balance<Ty0>
7700CopyLoc[0](Arg0: &mut Position<Ty0>)
7711ImmBorrowFieldGeneric[0](Position.closed: bool)
7786MoveLoc[0](Arg0: &mut Position<Ty0>)
7808MoveLoc[8](Arg8: &PositionInstantExitFeeConfig)
78210MoveLoc[2](Arg2: &AggPrice)
78412MoveLoc[1](Arg1: &AggPrice)
78614LdConst[0](u64: 401)
78916CopyLoc[1](Arg1: &AggPrice)
79017Call agg_price::price_of(&AggPrice): Decimal
79118StLoc[10](loc0: Decimal)
79219ImmBorrowLoc[10](loc0: Decimal)
79320ImmBorrowLoc[3](Arg3: Decimal)
79421Call decimal::ge(&Decimal, &Decimal): bool
79924MoveLoc[0](Arg0: &mut Position<Ty0>)
80126MoveLoc[8](Arg8: &PositionInstantExitFeeConfig)
80328MoveLoc[2](Arg2: &AggPrice)
80530MoveLoc[1](Arg1: &AggPrice)
80732LdConst[14](u64: 415)
81034CopyLoc[5](Arg5: u64)
81538CopyLoc[5](Arg5: u64)
81639CopyLoc[0](Arg0: &mut Position<Ty0>)
81740ImmBorrowFieldGeneric[3](Position.position_amount: u64)
82043StLoc[11](loc1: bool)
82446StLoc[11](loc1: bool)
82647MoveLoc[11](loc1: bool)
83150MoveLoc[0](Arg0: &mut Position<Ty0>)
83352MoveLoc[8](Arg8: &PositionInstantExitFeeConfig)
83554MoveLoc[2](Arg2: &AggPrice)
83756MoveLoc[1](Arg1: &AggPrice)
83958LdConst[5](u64: 406)
84260CopyLoc[0](Arg0: &mut Position<Ty0>)
84361ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
84563CopyLoc[5](Arg5: u64)
84664Call decimal::from_u64(u64): Decimal
84765CopyLoc[0](Arg0: &mut Position<Ty0>)
84866ImmBorrowFieldGeneric[3](Position.position_amount: u64)
85068Call decimal::mul_div_by_64(Decimal, Decimal, u64): Decimal
85169StLoc[22](loc12: Decimal)
85270CopyLoc[0](Arg0: &mut Position<Ty0>)
85472CopyLoc[2](Arg2: &AggPrice)
85573MoveLoc[4](Arg4: bool)
85674Call compute_delta_size<Ty0>(&Position<Ty0>, &AggPrice, bool): SDecimal
85775StLoc[24](loc14: SDecimal)
85876CopyLoc[24](loc14: SDecimal)
85977CopyLoc[5](Arg5: u64)
86078Call sdecimal::mul_with_u64(SDecimal, u64): SDecimal
86179CopyLoc[0](Arg0: &mut Position<Ty0>)
86280ImmBorrowFieldGeneric[3](Position.position_amount: u64)
86482Call sdecimal::div_by_u64(SDecimal, u64): SDecimal
86583StLoc[38](loc28: SDecimal)
86684MoveLoc[24](loc14: SDecimal)
86785CopyLoc[38](loc28: SDecimal)
86886Call sdecimal::sub(SDecimal, SDecimal): SDecimal
86987StLoc[24](loc14: SDecimal)
87088CopyLoc[0](Arg0: &mut Position<Ty0>)
87290ImmBorrowLoc[38](loc28: SDecimal)
87391CopyLoc[9](Arg9: u64)
87492Call check_holding_duration<Ty0>(&Position<Ty0>, &SDecimal, u64): bool
87995MoveLoc[0](Arg0: &mut Position<Ty0>)
88197MoveLoc[8](Arg8: &PositionInstantExitFeeConfig)
88399MoveLoc[2](Arg2: &AggPrice)
885101MoveLoc[1](Arg1: &AggPrice)
887103LdConst[9](u64: 410)
890105CopyLoc[0](Arg0: &mut Position<Ty0>)
892107CopyLoc[6](Arg6: Rate)
893108Call compute_reserving_fee_amount<Ty0>(&Position<Ty0>, Rate): Decimal
894109StLoc[34](loc24: Decimal)
895110CopyLoc[1](Arg1: &AggPrice)
896111CopyLoc[34](loc24: Decimal)
897112Call decimal::ceil_u64(Decimal): u64
898113Call agg_price::coins_to_value(&AggPrice, u64): Decimal
899114StLoc[35](loc25: Decimal)
900115CopyLoc[0](Arg0: &mut Position<Ty0>)
902117CopyLoc[7](Arg7: SRate)
903118Call compute_funding_fee_value<Ty0>(&Position<Ty0>, SRate): SDecimal
904119StLoc[25](loc15: SDecimal)
905120CopyLoc[22](loc12: Decimal)
906121CopyLoc[0](Arg0: &mut Position<Ty0>)
907122ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
908123ImmBorrowField[6](PositionConfig.decrease_fee_bps: Rate)
910125Call decimal::mul_with_rate(Decimal, Rate): Decimal
911126StLoc[21](loc11: Decimal)
912127MoveLoc[9](Arg9: u64)
913128CopyLoc[0](Arg0: &mut Position<Ty0>)
914129ImmBorrowFieldGeneric[2](Position.open_timestamp: u64)
917132StLoc[27](loc17: u64)
918133CopyLoc[22](loc12: Decimal)
919134MoveLoc[27](loc17: u64)
920135CopyLoc[38](loc28: SDecimal)
921136MoveLoc[8](Arg8: &PositionInstantExitFeeConfig)
922137Call calculate_instant_exit_fee(Decimal, u64, SDecimal, &PositionInstantExitFeeConfig): Decimal * u8
923138StLoc[28](loc18: u8)
924139StLoc[29](loc19: Decimal)
925140MoveLoc[38](loc28: SDecimal)
926141CopyLoc[25](loc15: SDecimal)
927142CopyLoc[21](loc11: Decimal)
928143CopyLoc[35](loc25: Decimal)
929144Call decimal::add(Decimal, Decimal): Decimal
930145CopyLoc[29](loc19: Decimal)
931146Call decimal::add(Decimal, Decimal): Decimal
932147Call sdecimal::add_with_decimal(SDecimal, Decimal): SDecimal
933148Call sdecimal::sub(SDecimal, SDecimal): SDecimal
934149StLoc[38](loc28: SDecimal)
935150CopyLoc[5](Arg5: u64)
936151CopyLoc[0](Arg0: &mut Position<Ty0>)
937152ImmBorrowFieldGeneric[3](Position.position_amount: u64)
940155StLoc[19](loc9: bool)
941156ImmBorrowLoc[38](loc28: SDecimal)
942157Call sdecimal::is_positive(&SDecimal): bool
943158StLoc[26](loc16: bool)
944159CopyLoc[1](Arg1: &AggPrice)
945160ImmBorrowLoc[38](loc28: SDecimal)
946161Call sdecimal::value(&SDecimal): Decimal
947162Call agg_price::value_to_coins(&AggPrice, Decimal): Decimal
948163StLoc[36](loc26: Decimal)
949164CopyLoc[26](loc16: bool)
952166MoveLoc[36](loc26: Decimal)
953167Call decimal::floor_u64(Decimal): u64
954168StLoc[33](loc23: u64)
955169CopyLoc[33](loc23: u64)
956170CopyLoc[0](Arg0: &mut Position<Ty0>)
957171ImmBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
958172Call balance::value<Ty0>(&Balance<Ty0>): u64
963176StLoc[19](loc9: bool)
964177CopyLoc[0](Arg0: &mut Position<Ty0>)
965178ImmBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
966179Call balance::value<Ty0>(&Balance<Ty0>): u64
967180StLoc[33](loc23: u64)
969181MoveLoc[33](loc23: u64)
970182StLoc[12](loc2: u64)
973184MoveLoc[36](loc26: Decimal)
974185Call decimal::ceil_u64(Decimal): u64
975186StLoc[30](loc20: u64)
976187CopyLoc[30](loc20: u64)
977188CopyLoc[0](Arg0: &mut Position<Ty0>)
978189ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
979190Call balance::value<Ty0>(&Balance<Ty0>): u64
984194StLoc[19](loc9: bool)
985195CopyLoc[0](Arg0: &mut Position<Ty0>)
986196ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
987197Call balance::value<Ty0>(&Balance<Ty0>): u64
988198StLoc[30](loc20: u64)
990199MoveLoc[30](loc20: u64)
991200StLoc[12](loc2: u64)
993201MoveLoc[12](loc2: u64)
994202StLoc[37](loc27: u64)
995203CopyLoc[19](loc9: bool)
998205CopyLoc[0](Arg0: &mut Position<Ty0>)
999206ImmBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
1000207Call balance::value<Ty0>(&Balance<Ty0>): u64
1001208StLoc[14](loc4: u64)
1004210CopyLoc[26](loc16: bool)
1007212CopyLoc[37](loc27: u64)
1008213StLoc[13](loc3: u64)
1012216StLoc[13](loc3: u64)
1014217MoveLoc[13](loc3: u64)
1015218StLoc[14](loc4: u64)
1017219MoveLoc[14](loc4: u64)
1018220StLoc[23](loc13: u64)
1019221CopyLoc[0](Arg0: &mut Position<Ty0>)
1020222ImmBorrowFieldGeneric[3](Position.position_amount: u64)
1022224MoveLoc[5](Arg5: u64)
1024226StLoc[31](loc21: u64)
1025227CopyLoc[0](Arg0: &mut Position<Ty0>)
1026228ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
1028230CopyLoc[22](loc12: Decimal)
1029231Call decimal::sub(Decimal, Decimal): Decimal
1030232StLoc[32](loc22: Decimal)
1031233CopyLoc[19](loc9: bool)
1035236MoveLoc[1](Arg1: &AggPrice)
1036237StLoc[16](loc6: &AggPrice)
1037238CopyLoc[26](loc16: bool)
1040240CopyLoc[0](Arg0: &mut Position<Ty0>)
1041241ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1042242Call balance::value<Ty0>(&Balance<Ty0>): u64
1043243StLoc[15](loc5: u64)
1046245CopyLoc[0](Arg0: &mut Position<Ty0>)
1047246ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1048247Call balance::value<Ty0>(&Balance<Ty0>): u64
1049248CopyLoc[37](loc27: u64)
1051250StLoc[15](loc5: u64)
1053251MoveLoc[16](loc6: &AggPrice)
1054252MoveLoc[15](loc5: u64)
1055253Call agg_price::coins_to_value(&AggPrice, u64): Decimal
1056254StLoc[20](loc10: Decimal)
1057255ImmBorrowLoc[20](loc10: Decimal)
1058256CopyLoc[0](Arg0: &mut Position<Ty0>)
1059257ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
1060258ImmBorrowField[3](PositionConfig.min_collateral_value: Decimal)
1061259Call decimal::ge(&Decimal, &Decimal): bool
1066262MoveLoc[0](Arg0: &mut Position<Ty0>)
1068264MoveLoc[2](Arg2: &AggPrice)
1070266LdConst[8](u64: 409)
1073268CopyLoc[0](Arg0: &mut Position<Ty0>)
1074269ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
1075270CopyLoc[20](loc10: Decimal)
1076271CopyLoc[31](loc21: u64)
1077272MoveLoc[2](Arg2: &AggPrice)
1078273Call check_leverage(&PositionConfig, Decimal, u64, &AggPrice): bool
1083276MoveLoc[0](Arg0: &mut Position<Ty0>)
1085278LdConst[10](u64: 411)
1088280CopyLoc[0](Arg0: &mut Position<Ty0>)
1089281ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
1090282MoveLoc[20](loc10: Decimal)
1091283ImmBorrowLoc[24](loc14: SDecimal)
1092284Call check_liquidation(&PositionConfig, Decimal, &SDecimal): bool
1098288MoveLoc[0](Arg0: &mut Position<Ty0>)
1100290LdConst[11](u64: 412)
1103292MoveLoc[2](Arg2: &AggPrice)
1105294MoveLoc[1](Arg1: &AggPrice)
1108296CopyLoc[19](loc9: bool)
1109297CopyLoc[0](Arg0: &mut Position<Ty0>)
1110298MutBorrowFieldGeneric[0](Position.closed: bool)
1112300MoveLoc[31](loc21: u64)
1113301CopyLoc[0](Arg0: &mut Position<Ty0>)
1114302MutBorrowFieldGeneric[3](Position.position_amount: u64)
1116304MoveLoc[32](loc22: Decimal)
1117305CopyLoc[0](Arg0: &mut Position<Ty0>)
1118306MutBorrowFieldGeneric[4](Position.position_size: Decimal)
1120308Call decimal::zero(): Decimal
1121309CopyLoc[0](Arg0: &mut Position<Ty0>)
1122310MutBorrowFieldGeneric[8](Position.reserving_fee_amount: Decimal)
1124312Call sdecimal::zero(): SDecimal
1125313CopyLoc[0](Arg0: &mut Position<Ty0>)
1126314MutBorrowFieldGeneric[10](Position.funding_fee_value: SDecimal)
1128316MoveLoc[7](Arg7: SRate)
1129317CopyLoc[0](Arg0: &mut Position<Ty0>)
1130318MutBorrowFieldGeneric[9](Position.last_funding_rate: SRate)
1132320MoveLoc[6](Arg6: Rate)
1133321CopyLoc[0](Arg0: &mut Position<Ty0>)
1134322MutBorrowFieldGeneric[7](Position.last_reserving_rate: Rate)
1136324CopyLoc[26](loc16: bool)
1139326Call balance::zero<Ty0>(): Balance<Ty0>
1140327CopyLoc[0](Arg0: &mut Position<Ty0>)
1141328MutBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
1142329CopyLoc[37](loc27: u64)
1143330Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1144331StLoc[18](loc8: Balance<Ty0>)
1145332StLoc[17](loc7: Balance<Ty0>)
1148334CopyLoc[0](Arg0: &mut Position<Ty0>)
1149335MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1150336CopyLoc[37](loc27: u64)
1151337Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1152338Call balance::zero<Ty0>(): Balance<Ty0>
1153339StLoc[18](loc8: Balance<Ty0>)
1154340StLoc[17](loc7: Balance<Ty0>)
1156341MoveLoc[17](loc7: Balance<Ty0>)
1157342MoveLoc[18](loc8: Balance<Ty0>)
1158343StLoc[39](loc29: Balance<Ty0>)
1159344StLoc[40](loc30: Balance<Ty0>)
1160345CopyLoc[19](loc9: bool)
1163347MutBorrowLoc[40](loc30: Balance<Ty0>)
1164348CopyLoc[0](Arg0: &mut Position<Ty0>)
1165349MutBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
1166350Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
1167351Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
1169353MutBorrowLoc[39](loc29: Balance<Ty0>)
1170354MoveLoc[0](Arg0: &mut Position<Ty0>)
1171355MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1172356Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
1173357Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
1177360MoveLoc[0](Arg0: &mut Position<Ty0>)
1180362MoveLoc[19](loc9: bool)
1181363MoveLoc[26](loc16: bool)
1182364MoveLoc[37](loc27: u64)
1183365MoveLoc[23](loc13: u64)
1184366MoveLoc[22](loc12: Decimal)
1185367MoveLoc[34](loc24: Decimal)
1186368MoveLoc[21](loc11: Decimal)
1187369MoveLoc[35](loc25: Decimal)
1188370MoveLoc[25](loc15: SDecimal)
1189371MoveLoc[29](loc19: Decimal)
1190372MoveLoc[28](loc18: u8)
1191373MoveLoc[40](loc30: Balance<Ty0>)
1192374MoveLoc[39](loc29: Balance<Ty0>)
1193375PackGeneric[2](DecreasePositionResultV1<Ty0>)
1197public(friend) unwrap_decrease_position_result_v1<Ty0>(Arg0: DecreasePositionResultV1<Ty0>): bool * bool * u64 * u64 * Decimal * Decimal * Decimal * Decimal * SDecimal * Decimal * u8 * Balance<Ty0> * Balance<Ty0> {
11990MoveLoc[0](Arg0: DecreasePositionResultV1<Ty0>)
12001UnpackGeneric[2](DecreasePositionResultV1<Ty0>)
1204public(friend) decrease_reserved_from_position<Ty0>(Arg0: &mut Position<Ty0>, Arg1: u64, Arg2: Rate): Balance<Ty0> {
12060CopyLoc[0](Arg0: &mut Position<Ty0>)
12071ImmBorrowFieldGeneric[0](Position.closed: bool)
12146MoveLoc[0](Arg0: &mut Position<Ty0>)
12168LdConst[0](u64: 401)
121910CopyLoc[1](Arg1: u64)
122011CopyLoc[0](Arg0: &mut Position<Ty0>)
122112ImmBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
122213Call balance::value<Ty0>(&Balance<Ty0>): u64
122817MoveLoc[0](Arg0: &mut Position<Ty0>)
123019LdConst[7](u64: 408)
123321CopyLoc[0](Arg0: &mut Position<Ty0>)
123523CopyLoc[2](Arg2: Rate)
123624Call compute_reserving_fee_amount<Ty0>(&Position<Ty0>, Rate): Decimal
123725CopyLoc[0](Arg0: &mut Position<Ty0>)
123826MutBorrowFieldGeneric[8](Position.reserving_fee_amount: Decimal)
124028MoveLoc[2](Arg2: Rate)
124129CopyLoc[0](Arg0: &mut Position<Ty0>)
124230MutBorrowFieldGeneric[7](Position.last_reserving_rate: Rate)
124432MoveLoc[0](Arg0: &mut Position<Ty0>)
124533MutBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
124634MoveLoc[1](Arg1: u64)
124735Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1251public(friend) pledge_in_position<Ty0>(Arg0: &mut Position<Ty0>, Arg1: Balance<Ty0>) {
12530CopyLoc[0](Arg0: &mut Position<Ty0>)
12541ImmBorrowFieldGeneric[0](Position.closed: bool)
12616MoveLoc[0](Arg0: &mut Position<Ty0>)
12638LdConst[0](u64: 401)
126610ImmBorrowLoc[1](Arg1: Balance<Ty0>)
126711Call balance::value<Ty0>(&Balance<Ty0>): u64
127416MoveLoc[0](Arg0: &mut Position<Ty0>)
127618LdConst[2](u64: 403)
127920MoveLoc[0](Arg0: &mut Position<Ty0>)
128021MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
128122MoveLoc[1](Arg1: Balance<Ty0>)
128223Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
1287public(friend) redeem_from_position<Ty0>(Arg0: &mut Position<Ty0>, Arg1: &AggPrice, Arg2: &AggPrice, Arg3: bool, Arg4: u64, Arg5: Rate, Arg6: SRate, Arg7: u64): Balance<Ty0> {
1292L12: loc4: Balance<Ty0>
12960CopyLoc[0](Arg0: &mut Position<Ty0>)
12971ImmBorrowFieldGeneric[0](Position.closed: bool)
13046MoveLoc[0](Arg0: &mut Position<Ty0>)
13068MoveLoc[2](Arg2: &AggPrice)
130810MoveLoc[1](Arg1: &AggPrice)
131012LdConst[0](u64: 401)
131314CopyLoc[4](Arg4: u64)
131818CopyLoc[4](Arg4: u64)
131919CopyLoc[0](Arg0: &mut Position<Ty0>)
132020ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
132121Call balance::value<Ty0>(&Balance<Ty0>): u64
132323StLoc[8](loc0: bool)
132726StLoc[8](loc0: bool)
132927MoveLoc[8](loc0: bool)
133430MoveLoc[0](Arg0: &mut Position<Ty0>)
133632MoveLoc[2](Arg2: &AggPrice)
133834MoveLoc[1](Arg1: &AggPrice)
134036LdConst[3](u64: 404)
134338CopyLoc[0](Arg0: &mut Position<Ty0>)
134540CopyLoc[2](Arg2: &AggPrice)
134641MoveLoc[3](Arg3: bool)
134742Call compute_delta_size<Ty0>(&Position<Ty0>, &AggPrice, bool): SDecimal
134843StLoc[10](loc2: SDecimal)
134944CopyLoc[0](Arg0: &mut Position<Ty0>)
135146ImmBorrowLoc[10](loc2: SDecimal)
135247MoveLoc[7](Arg7: u64)
135348Call check_holding_duration<Ty0>(&Position<Ty0>, &SDecimal, u64): bool
135851MoveLoc[0](Arg0: &mut Position<Ty0>)
136053MoveLoc[2](Arg2: &AggPrice)
136255MoveLoc[1](Arg1: &AggPrice)
136457LdConst[9](u64: 410)
136759CopyLoc[0](Arg0: &mut Position<Ty0>)
136961CopyLoc[5](Arg5: Rate)
137062Call compute_reserving_fee_amount<Ty0>(&Position<Ty0>, Rate): Decimal
137163StLoc[13](loc5: Decimal)
137264CopyLoc[1](Arg1: &AggPrice)
137365CopyLoc[13](loc5: Decimal)
137466Call decimal::ceil_u64(Decimal): u64
137567Call agg_price::coins_to_value(&AggPrice, u64): Decimal
137668StLoc[14](loc6: Decimal)
137769CopyLoc[0](Arg0: &mut Position<Ty0>)
137971CopyLoc[6](Arg6: SRate)
138072Call compute_funding_fee_value<Ty0>(&Position<Ty0>, SRate): SDecimal
138173StLoc[11](loc3: SDecimal)
138274MoveLoc[10](loc2: SDecimal)
138375CopyLoc[11](loc3: SDecimal)
138476MoveLoc[14](loc6: Decimal)
138577Call sdecimal::add_with_decimal(SDecimal, Decimal): SDecimal
138678Call sdecimal::sub(SDecimal, SDecimal): SDecimal
138779StLoc[10](loc2: SDecimal)
138880MoveLoc[13](loc5: Decimal)
138981CopyLoc[0](Arg0: &mut Position<Ty0>)
139082MutBorrowFieldGeneric[8](Position.reserving_fee_amount: Decimal)
139284MoveLoc[11](loc3: SDecimal)
139385CopyLoc[0](Arg0: &mut Position<Ty0>)
139486MutBorrowFieldGeneric[10](Position.funding_fee_value: SDecimal)
139688MoveLoc[5](Arg5: Rate)
139789CopyLoc[0](Arg0: &mut Position<Ty0>)
139890MutBorrowFieldGeneric[7](Position.last_reserving_rate: Rate)
140092MoveLoc[6](Arg6: SRate)
140193CopyLoc[0](Arg0: &mut Position<Ty0>)
140294MutBorrowFieldGeneric[9](Position.last_funding_rate: SRate)
140496CopyLoc[0](Arg0: &mut Position<Ty0>)
140597MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
140698MoveLoc[4](Arg4: u64)
140799Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1408100StLoc[12](loc4: Balance<Ty0>)
1409101MoveLoc[1](Arg1: &AggPrice)
1410102CopyLoc[0](Arg0: &mut Position<Ty0>)
1411103ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1412104Call balance::value<Ty0>(&Balance<Ty0>): u64
1413105Call agg_price::coins_to_value(&AggPrice, u64): Decimal
1414106StLoc[9](loc1: Decimal)
1415107ImmBorrowLoc[9](loc1: Decimal)
1416108CopyLoc[0](Arg0: &mut Position<Ty0>)
1417109ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
1418110ImmBorrowField[3](PositionConfig.min_collateral_value: Decimal)
1419111Call decimal::ge(&Decimal, &Decimal): bool
1424114MoveLoc[0](Arg0: &mut Position<Ty0>)
1426116MoveLoc[2](Arg2: &AggPrice)
1428118LdConst[8](u64: 409)
1431120CopyLoc[0](Arg0: &mut Position<Ty0>)
1432121ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
1433122CopyLoc[9](loc1: Decimal)
1434123CopyLoc[0](Arg0: &mut Position<Ty0>)
1435124ImmBorrowFieldGeneric[3](Position.position_amount: u64)
1437126MoveLoc[2](Arg2: &AggPrice)
1438127Call check_leverage(&PositionConfig, Decimal, u64, &AggPrice): bool
1443130MoveLoc[0](Arg0: &mut Position<Ty0>)
1445132LdConst[10](u64: 411)
1448134MoveLoc[0](Arg0: &mut Position<Ty0>)
1449135ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
1450136MoveLoc[9](loc1: Decimal)
1451137ImmBorrowLoc[10](loc2: SDecimal)
1452138Call check_liquidation(&PositionConfig, Decimal, &SDecimal): bool
1458142LdConst[11](u64: 412)
1461144MoveLoc[12](loc4: Balance<Ty0>)
1465public(friend) liquidate_position<Ty0>(Arg0: &mut Position<Ty0>, Arg1: &AggPrice, Arg2: &AggPrice, Arg3: bool, Arg4: Rate, Arg5: SRate, Arg6: Rate): u64 * u64 * u64 * u64 * Decimal * Decimal * Decimal * SDecimal * u64 * Decimal * Balance<Ty0> * Balance<Ty0> * Balance<Ty0> {
1478L19: loc12: Balance<Ty0>
1479L20: loc13: Balance<Ty0>
1480L21: loc14: Balance<Ty0>
14820CopyLoc[0](Arg0: &mut Position<Ty0>)
14831ImmBorrowFieldGeneric[0](Position.closed: bool)
14906MoveLoc[0](Arg0: &mut Position<Ty0>)
14928MoveLoc[2](Arg2: &AggPrice)
149410MoveLoc[1](Arg1: &AggPrice)
149612LdConst[0](u64: 401)
149914CopyLoc[0](Arg0: &mut Position<Ty0>)
150116MoveLoc[2](Arg2: &AggPrice)
150217MoveLoc[3](Arg3: bool)
150318Call compute_delta_size<Ty0>(&Position<Ty0>, &AggPrice, bool): SDecimal
150419StLoc[10](loc3: SDecimal)
150520CopyLoc[0](Arg0: &mut Position<Ty0>)
150722CopyLoc[4](Arg4: Rate)
150823Call compute_reserving_fee_amount<Ty0>(&Position<Ty0>, Rate): Decimal
150924StLoc[17](loc10: Decimal)
151025CopyLoc[1](Arg1: &AggPrice)
151126CopyLoc[17](loc10: Decimal)
151227Call decimal::ceil_u64(Decimal): u64
151328Call agg_price::coins_to_value(&AggPrice, u64): Decimal
151429StLoc[18](loc11: Decimal)
151530CopyLoc[0](Arg0: &mut Position<Ty0>)
151732CopyLoc[5](Arg5: SRate)
151833Call compute_funding_fee_value<Ty0>(&Position<Ty0>, SRate): SDecimal
151934StLoc[11](loc4: SDecimal)
152035MoveLoc[10](loc3: SDecimal)
152136CopyLoc[11](loc4: SDecimal)
152237CopyLoc[18](loc11: Decimal)
152338Call sdecimal::add_with_decimal(SDecimal, Decimal): SDecimal
152439Call sdecimal::sub(SDecimal, SDecimal): SDecimal
152540StLoc[10](loc3: SDecimal)
152641CopyLoc[1](Arg1: &AggPrice)
152742CopyLoc[0](Arg0: &mut Position<Ty0>)
152843ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
152944Call balance::value<Ty0>(&Balance<Ty0>): u64
153045Call agg_price::coins_to_value(&AggPrice, u64): Decimal
153146StLoc[9](loc2: Decimal)
153247CopyLoc[0](Arg0: &mut Position<Ty0>)
153348ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
153449MoveLoc[9](loc2: Decimal)
153550ImmBorrowLoc[10](loc3: SDecimal)
153651Call check_liquidation(&PositionConfig, Decimal, &SDecimal): bool
154154MoveLoc[0](Arg0: &mut Position<Ty0>)
154356MoveLoc[1](Arg1: &AggPrice)
154558LdConst[12](u64: 413)
154860CopyLoc[0](Arg0: &mut Position<Ty0>)
154961ImmBorrowFieldGeneric[3](Position.position_amount: u64)
155163StLoc[14](loc7: u64)
155264CopyLoc[0](Arg0: &mut Position<Ty0>)
155365ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
155567StLoc[15](loc8: Decimal)
155668CopyLoc[0](Arg0: &mut Position<Ty0>)
155769ImmBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
155870Call balance::value<Ty0>(&Balance<Ty0>): u64
155971StLoc[8](loc1: u64)
156072CopyLoc[0](Arg0: &mut Position<Ty0>)
156173ImmBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
156274Call balance::value<Ty0>(&Balance<Ty0>): u64
156375StLoc[16](loc9: u64)
156577CopyLoc[0](Arg0: &mut Position<Ty0>)
156678MutBorrowFieldGeneric[0](Position.closed: bool)
156981CopyLoc[0](Arg0: &mut Position<Ty0>)
157082MutBorrowFieldGeneric[3](Position.position_amount: u64)
157284Call decimal::zero(): Decimal
157385CopyLoc[0](Arg0: &mut Position<Ty0>)
157486MutBorrowFieldGeneric[4](Position.position_size: Decimal)
157688Call decimal::zero(): Decimal
157789CopyLoc[0](Arg0: &mut Position<Ty0>)
157890MutBorrowFieldGeneric[8](Position.reserving_fee_amount: Decimal)
158092Call sdecimal::zero(): SDecimal
158193CopyLoc[0](Arg0: &mut Position<Ty0>)
158294MutBorrowFieldGeneric[10](Position.funding_fee_value: SDecimal)
158496MoveLoc[5](Arg5: SRate)
158597CopyLoc[0](Arg0: &mut Position<Ty0>)
158698MutBorrowFieldGeneric[9](Position.last_funding_rate: SRate)
1588100MoveLoc[4](Arg4: Rate)
1589101CopyLoc[0](Arg0: &mut Position<Ty0>)
1590102MutBorrowFieldGeneric[7](Position.last_reserving_rate: Rate)
1592104CopyLoc[8](loc1: u64)
1593105Call decimal::from_u64(u64): Decimal
1594106MoveLoc[6](Arg6: Rate)
1595107Call decimal::mul_with_rate(Decimal, Rate): Decimal
1596108Call decimal::floor_u64(Decimal): u64
1597109StLoc[12](loc5: u64)
1598110MoveLoc[1](Arg1: &AggPrice)
1599111CopyLoc[12](loc5: u64)
1600112Call agg_price::coins_to_value(&AggPrice, u64): Decimal
1601113StLoc[13](loc6: Decimal)
1602114CopyLoc[8](loc1: u64)
1603115Call decimal::from_u64(u64): Decimal
1604116CopyLoc[0](Arg0: &mut Position<Ty0>)
1605117ImmBorrowFieldGeneric[1](Position.config: PositionConfig)
1606118ImmBorrowField[8](PositionConfig.liquidation_bonus: Rate)
1608120Call decimal::mul_with_rate(Decimal, Rate): Decimal
1609121Call decimal::floor_u64(Decimal): u64
1610122StLoc[7](loc0: u64)
1611123CopyLoc[12](loc5: u64)
1612124CopyLoc[7](loc0: u64)
1614126CopyLoc[8](loc1: u64)
1620130MoveLoc[0](Arg0: &mut Position<Ty0>)
1622132LdConst[15](u64: 416)
1625134CopyLoc[0](Arg0: &mut Position<Ty0>)
1626135MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1627136CopyLoc[12](loc5: u64)
1628137Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1629138StLoc[19](loc12: Balance<Ty0>)
1630139CopyLoc[0](Arg0: &mut Position<Ty0>)
1631140MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1632141CopyLoc[7](loc0: u64)
1633142Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
1634143StLoc[20](loc13: Balance<Ty0>)
1635144CopyLoc[0](Arg0: &mut Position<Ty0>)
1636145MutBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
1637146Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
1638147StLoc[21](loc14: Balance<Ty0>)
1639148MutBorrowLoc[21](loc14: Balance<Ty0>)
1640149MoveLoc[0](Arg0: &mut Position<Ty0>)
1641150MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
1642151Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
1643152Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
1645154MoveLoc[7](loc0: u64)
1646155MoveLoc[8](loc1: u64)
1647156MoveLoc[14](loc7: u64)
1648157MoveLoc[16](loc9: u64)
1649158MoveLoc[15](loc8: Decimal)
1650159MoveLoc[17](loc10: Decimal)
1651160MoveLoc[18](loc11: Decimal)
1652161MoveLoc[11](loc4: SDecimal)
1653162MoveLoc[12](loc5: u64)
1654163MoveLoc[13](loc6: Decimal)
1655164MoveLoc[21](loc14: Balance<Ty0>)
1656165MoveLoc[19](loc12: Balance<Ty0>)
1657166MoveLoc[20](loc13: Balance<Ty0>)
1661public(friend) destroy_position<Ty0>(Arg0: Position<Ty0>) {
1662L1: loc0: Balance<Ty0>
1663L2: loc1: Balance<Ty0>
16650MoveLoc[0](Arg0: Position<Ty0>)
16661UnpackGeneric[0](Position<Ty0>)
16672StLoc[1](loc0: Balance<Ty0>)
16683StLoc[2](loc1: Balance<Ty0>)
168114LdConst[1](u64: 402)
168416MoveLoc[2](loc1: Balance<Ty0>)
168517Call balance::destroy_zero<Ty0>(Balance<Ty0>)
168618MoveLoc[1](loc0: Balance<Ty0>)
168719Call balance::destroy_zero<Ty0>(Balance<Ty0>)
1691public(friend) force_settle<Ty0>(Arg0: &AdminCap, Arg1: &mut Position<Ty0>, Arg2: Rate, Arg3: SRate): Balance<Ty0> * u64 * Decimal * SDecimal * Balance<Ty0> * u64 * Decimal {
1692L4: loc0: Balance<Ty0>
1696L8: loc4: Balance<Ty0>
17000CopyLoc[1](Arg1: &mut Position<Ty0>)
17022CopyLoc[2](Arg2: Rate)
17033Call compute_reserving_fee_amount<Ty0>(&Position<Ty0>, Rate): Decimal
17044StLoc[10](loc6: Decimal)
17055CopyLoc[1](Arg1: &mut Position<Ty0>)
17077CopyLoc[3](Arg3: SRate)
17088Call compute_funding_fee_value<Ty0>(&Position<Ty0>, SRate): SDecimal
17099StLoc[5](loc1: SDecimal)
171010CopyLoc[1](Arg1: &mut Position<Ty0>)
171111MutBorrowFieldGeneric[6](Position.reserved: Balance<Ty0>)
171212Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
171313StLoc[8](loc4: Balance<Ty0>)
171414ImmBorrowLoc[8](loc4: Balance<Ty0>)
171515Call balance::value<Ty0>(&Balance<Ty0>): u64
171616StLoc[9](loc5: u64)
171717CopyLoc[1](Arg1: &mut Position<Ty0>)
171818MutBorrowFieldGeneric[5](Position.collateral: Balance<Ty0>)
171919Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
172020StLoc[4](loc0: Balance<Ty0>)
172121CopyLoc[1](Arg1: &mut Position<Ty0>)
172222ImmBorrowFieldGeneric[3](Position.position_amount: u64)
172424StLoc[6](loc2: u64)
172525CopyLoc[1](Arg1: &mut Position<Ty0>)
172626ImmBorrowFieldGeneric[4](Position.position_size: Decimal)
172828StLoc[7](loc3: Decimal)
173030CopyLoc[1](Arg1: &mut Position<Ty0>)
173131MutBorrowFieldGeneric[0](Position.closed: bool)
173434CopyLoc[1](Arg1: &mut Position<Ty0>)
173535MutBorrowFieldGeneric[3](Position.position_amount: u64)
173737Call decimal::zero(): Decimal
173838CopyLoc[1](Arg1: &mut Position<Ty0>)
173939MutBorrowFieldGeneric[4](Position.position_size: Decimal)
174141Call decimal::zero(): Decimal
174242CopyLoc[1](Arg1: &mut Position<Ty0>)
174343MutBorrowFieldGeneric[8](Position.reserving_fee_amount: Decimal)
174545Call sdecimal::zero(): SDecimal
174646CopyLoc[1](Arg1: &mut Position<Ty0>)
174747MutBorrowFieldGeneric[10](Position.funding_fee_value: SDecimal)
174949MoveLoc[3](Arg3: SRate)
175050CopyLoc[1](Arg1: &mut Position<Ty0>)
175151MutBorrowFieldGeneric[9](Position.last_funding_rate: SRate)
175353MoveLoc[2](Arg2: Rate)
175454MoveLoc[1](Arg1: &mut Position<Ty0>)
175555MutBorrowFieldGeneric[7](Position.last_reserving_rate: Rate)
175757MoveLoc[8](loc4: Balance<Ty0>)
175858MoveLoc[9](loc5: u64)
175959MoveLoc[10](loc6: Decimal)
176060MoveLoc[5](loc1: SDecimal)
176161MoveLoc[4](loc0: Balance<Ty0>)
176262MoveLoc[6](loc2: u64)
176363MoveLoc[7](loc3: Decimal)
1767calculate_instant_exit_fee(Arg0: Decimal, Arg1: u64, Arg2: SDecimal, Arg3: &PositionInstantExitFeeConfig): Decimal * u8 {
17720ImmBorrowLoc[2](Arg2: SDecimal)
17731Call sdecimal::is_positive(&SDecimal): bool
17774MoveLoc[3](Arg3: &PositionInstantExitFeeConfig)
17796Call decimal::zero(): Decimal
17839CopyLoc[3](Arg3: &PositionInstantExitFeeConfig)
178410ImmBorrowField[22](PositionInstantExitFeeConfig.instant_exit_tier_1_fee_enabled: bool)
178813CopyLoc[1](Arg1: u64)
178914CopyLoc[3](Arg3: &PositionInstantExitFeeConfig)
179015ImmBorrowField[20](PositionInstantExitFeeConfig.instant_exit_tier_1_duration_threshold: u64)
179318StLoc[4](loc0: bool)
179721StLoc[4](loc0: bool)
179922MoveLoc[4](loc0: bool)
180224MoveLoc[0](Arg0: Decimal)
180325MoveLoc[3](Arg3: &PositionInstantExitFeeConfig)
180426ImmBorrowField[21](PositionInstantExitFeeConfig.instant_exit_tier_1_fee_bps: Rate)
180628Call decimal::mul_with_rate(Decimal, Rate): Decimal
181031CopyLoc[3](Arg3: &PositionInstantExitFeeConfig)
181132ImmBorrowField[25](PositionInstantExitFeeConfig.instant_exit_tier_2_fee_enabled: bool)
181535CopyLoc[1](Arg1: u64)
181636CopyLoc[3](Arg3: &PositionInstantExitFeeConfig)
181737ImmBorrowField[23](PositionInstantExitFeeConfig.instant_exit_tier_2_duration_threshold: u64)
182040StLoc[5](loc1: bool)
182443StLoc[5](loc1: bool)
182644MoveLoc[5](loc1: bool)
182946MoveLoc[0](Arg0: Decimal)
183047MoveLoc[3](Arg3: &PositionInstantExitFeeConfig)
183148ImmBorrowField[24](PositionInstantExitFeeConfig.instant_exit_tier_2_fee_bps: Rate)
183350Call decimal::mul_with_rate(Decimal, Rate): Decimal
183753CopyLoc[3](Arg3: &PositionInstantExitFeeConfig)
183854ImmBorrowField[28](PositionInstantExitFeeConfig.instant_exit_tier_3_fee_enabled: bool)
184257MoveLoc[1](Arg1: u64)
184358CopyLoc[3](Arg3: &PositionInstantExitFeeConfig)
184459ImmBorrowField[26](PositionInstantExitFeeConfig.instant_exit_tier_3_duration_threshold: u64)
184762StLoc[6](loc2: bool)
185165StLoc[6](loc2: bool)
185366MoveLoc[6](loc2: bool)
185668MoveLoc[0](Arg0: Decimal)
185769MoveLoc[3](Arg3: &PositionInstantExitFeeConfig)
185870ImmBorrowField[27](PositionInstantExitFeeConfig.instant_exit_tier_3_fee_bps: Rate)
186072Call decimal::mul_with_rate(Decimal, Rate): Decimal
186475MoveLoc[3](Arg3: &PositionInstantExitFeeConfig)
186677Call decimal::zero(): Decimal