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

API

pool

Module0xce6a…2530
Move path
0xce6a…2530::pool
Functions
5025 public, 0 entry
Structs
10
Friend modules
marketorders
pool

Bytecode2491 lines

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

// Move bytecode v6
module ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530.pool {
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::vec_set;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::agg_price;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::decimal;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::fee;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::model;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::position;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::rate;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::sdecimal;
use ce6a4384ceb1306efdb45cd0b093a7a49669a998749c59e614be8cfdf1352530::srate;
 
struct Vault<phantom Ty0> has store {
enabled: bool,
weight: Decimal,
reserving_fee_model: ID,
price_config: AggPriceConfig,
last_update: u64,
liquidity: Balance<Ty0>,
reserved_amount: u64,
unrealised_reserving_fee_amount: Decimal,
acc_reserving_rate: Rate
}
 
struct Symbol has store {
open_enabled: bool,
decrease_enabled: bool,
liquidate_enabled: bool,
supported_collaterals: VecSet<TypeName>,
funding_fee_model: ID,
price_config: AggPriceConfig,
last_update: u64,
opening_amount: u64,
opening_size: Decimal,
realised_pnl: SDecimal,
unrealised_funding_fee_value: SDecimal,
acc_funding_rate: SRate
}
 
struct OpenPositionResult<phantom Ty0> {
position: Position<Ty0>,
referral_rebate: Balance<Ty0>,
fee_rebate: Balance<Ty0>,
scard_rebate: Option<Balance<Ty0>>,
event: OpenPositionSuccessEvent
}
 
struct DecreasePositionResult<phantom Ty0> {
to_trader: Balance<Ty0>,
referral_rebate: Balance<Ty0>,
fee_rebate: Balance<Ty0>,
scard_rebate: Option<Balance<Ty0>>,
event: DecreasePositionSuccessEvent
}
 
struct OpenPositionSuccessEvent has copy, drop {
position_config: PositionConfig,
collateral_price: Decimal,
index_price: Decimal,
open_amount: u64,
open_fee_amount: u64,
reserve_amount: u64,
collateral_amount: u64,
referral_rebate_amount: u64,
fee_rebate_amount: u64,
scard_rebate_amount: Option<u64>
}
 
struct DecreasePositionSuccessEvent has copy, drop {
collateral_price: Decimal,
index_price: Decimal,
decrease_amount: u64,
decrease_fee_value: Decimal,
reserving_fee_value: Decimal,
funding_fee_value: SDecimal,
delta_realised_pnl: SDecimal,
closed: bool,
has_profit: bool,
settled_amount: u64,
referral_rebate_amount: u64,
fee_rebate_amount: u64,
scard_rebate_amount: Option<u64>
}
 
struct DecreaseReservedFromPositionEvent has copy, drop {
decrease_amount: u64
}
 
struct PledgeInPositionEvent has copy, drop {
pledge_amount: u64
}
 
struct RedeemFromPositionEvent has copy, drop {
collateral_price: Decimal,
index_price: Decimal,
redeem_amount: u64
}
 
struct LiquidatePositionEvent has copy, drop {
liquidator: address,
collateral_price: Decimal,
index_price: Decimal,
position_size: Decimal,
reserving_fee_value: Decimal,
funding_fee_value: SDecimal,
delta_realised_pnl: SDecimal,
loss_amount: u64,
liquidator_bonus_amount: u64,
liquidation_amount: u64
}
 
refresh_vault<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &ReservingFeeModel, Arg2: u64) {
L3: loc0: Rate
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1FreezeRef
2MoveLoc[1](Arg1: &ReservingFeeModel)
3CopyLoc[2](Arg2: u64)
4Call vault_delta_reserving_rate<Ty0>(&Vault<Ty0>, &ReservingFeeModel, u64): Rate
5StLoc[3](loc0: Rate)
6CopyLoc[0](Arg0: &mut Vault<Ty0>)
7FreezeRef
8CopyLoc[3](loc0: Rate)
9Call vault_acc_reserving_rate<Ty0>(&Vault<Ty0>, Rate): Rate
10CopyLoc[0](Arg0: &mut Vault<Ty0>)
11MutBorrowFieldGeneric[0](Vault.acc_reserving_rate: Rate)
12WriteRef
13CopyLoc[0](Arg0: &mut Vault<Ty0>)
14FreezeRef
15MoveLoc[3](loc0: Rate)
16Call vault_unrealised_reserving_fee_amount<Ty0>(&Vault<Ty0>, Rate): Decimal
17CopyLoc[0](Arg0: &mut Vault<Ty0>)
18MutBorrowFieldGeneric[1](Vault.unrealised_reserving_fee_amount: Decimal)
19WriteRef
20MoveLoc[2](Arg2: u64)
21MoveLoc[0](Arg0: &mut Vault<Ty0>)
22MutBorrowFieldGeneric[2](Vault.last_update: u64)
23WriteRef
24Ret
}
 
refresh_symbol(Arg0: &mut Symbol, Arg1: &FundingFeeModel, Arg2: SDecimal, Arg3: Decimal, Arg4: u64) {
L5: loc0: SRate
B0:
0CopyLoc[0](Arg0: &mut Symbol)
1FreezeRef
2MoveLoc[1](Arg1: &FundingFeeModel)
3MoveLoc[2](Arg2: SDecimal)
4MoveLoc[3](Arg3: Decimal)
5CopyLoc[4](Arg4: u64)
6Call symbol_delta_funding_rate(&Symbol, &FundingFeeModel, SDecimal, Decimal, u64): SRate
7StLoc[5](loc0: SRate)
8CopyLoc[0](Arg0: &mut Symbol)
9FreezeRef
10CopyLoc[5](loc0: SRate)
11Call symbol_acc_funding_rate(&Symbol, SRate): SRate
12CopyLoc[0](Arg0: &mut Symbol)
13MutBorrowField[3](Symbol.acc_funding_rate: SRate)
14WriteRef
15CopyLoc[0](Arg0: &mut Symbol)
16FreezeRef
17MoveLoc[5](loc0: SRate)
18Call symbol_unrealised_funding_fee_value(&Symbol, SRate): SDecimal
19CopyLoc[0](Arg0: &mut Symbol)
20MutBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
21WriteRef
22MoveLoc[4](Arg4: u64)
23MoveLoc[0](Arg0: &mut Symbol)
24MutBorrowField[5](Symbol.last_update: u64)
25WriteRef
26Ret
}
 
public vault_enabled<Ty0>(Arg0: &Vault<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3Ret
}
 
public vault_weight<Ty0>(Arg0: &Vault<Ty0>): Decimal {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[4](Vault.weight: Decimal)
2ReadRef
3Ret
}
 
public vault_reserving_fee_model<Ty0>(Arg0: &Vault<Ty0>): &ID {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[5](Vault.reserving_fee_model: ID)
2Ret
}
 
public vault_price_config<Ty0>(Arg0: &Vault<Ty0>): &AggPriceConfig {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[6](Vault.price_config: AggPriceConfig)
2Ret
}
 
public vault_liquidity_amount<Ty0>(Arg0: &Vault<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3Ret
}
 
public vault_reserved_amount<Ty0>(Arg0: &Vault<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
2ReadRef
3Ret
}
 
public vault_utilization<Ty0>(Arg0: &Vault<Ty0>): Rate {
L1: loc0: Rate
L2: loc1: Decimal
B0:
0CopyLoc[0](Arg0: &Vault<Ty0>)
1Call vault_supply_amount<Ty0>(&Vault<Ty0>): Decimal
2StLoc[2](loc1: Decimal)
3ImmBorrowLoc[2](loc1: Decimal)
4Call decimal::is_zero(&Decimal): bool
5BrFalse(11)
B1:
6MoveLoc[0](Arg0: &Vault<Ty0>)
7Pop
8Call rate::zero(): Rate
9StLoc[1](loc0: Rate)
10Branch(19)
B2:
11MoveLoc[0](Arg0: &Vault<Ty0>)
12ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
13ReadRef
14Call decimal::from_u64(u64): Decimal
15MoveLoc[2](loc1: Decimal)
16Call decimal::div(Decimal, Decimal): Decimal
17Call decimal::to_rate(Decimal): Rate
18StLoc[1](loc0: Rate)
B3:
19MoveLoc[1](loc0: Rate)
20Ret
}
 
public vault_supply_amount<Ty0>(Arg0: &Vault<Ty0>): Decimal {
B0:
0CopyLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3CopyLoc[0](Arg0: &Vault<Ty0>)
4ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
5ReadRef
6Add
7Call decimal::from_u64(u64): Decimal
8MoveLoc[0](Arg0: &Vault<Ty0>)
9ImmBorrowFieldGeneric[1](Vault.unrealised_reserving_fee_amount: Decimal)
10ReadRef
11Call decimal::add(Decimal, Decimal): Decimal
12Ret
}
 
public vault_delta_reserving_rate<Ty0>(Arg0: &Vault<Ty0>, Arg1: &ReservingFeeModel, Arg2: u64): Rate {
L3: loc0: u64
B0:
0CopyLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[2](Vault.last_update: u64)
2ReadRef
3LdU64(0)
4Gt
5BrFalse(27)
B1:
6MoveLoc[2](Arg2: u64)
7CopyLoc[0](Arg0: &Vault<Ty0>)
8ImmBorrowFieldGeneric[2](Vault.last_update: u64)
9ReadRef
10Sub
11StLoc[3](loc0: u64)
12CopyLoc[3](loc0: u64)
13LdU64(0)
14Gt
15BrFalse(22)
B2:
16MoveLoc[1](Arg1: &ReservingFeeModel)
17MoveLoc[0](Arg0: &Vault<Ty0>)
18Call vault_utilization<Ty0>(&Vault<Ty0>): Rate
19MoveLoc[3](loc0: u64)
20Call model::compute_reserving_fee_rate(&ReservingFeeModel, Rate, u64): Rate
21Ret
B3:
22MoveLoc[0](Arg0: &Vault<Ty0>)
23Pop
24MoveLoc[1](Arg1: &ReservingFeeModel)
25Pop
26Branch(31)
B4:
27MoveLoc[0](Arg0: &Vault<Ty0>)
28Pop
29MoveLoc[1](Arg1: &ReservingFeeModel)
30Pop
B5:
31Call rate::zero(): Rate
32Ret
}
 
public vault_acc_reserving_rate<Ty0>(Arg0: &Vault<Ty0>, Arg1: Rate): Rate {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[0](Vault.acc_reserving_rate: Rate)
2ReadRef
3MoveLoc[1](Arg1: Rate)
4Call rate::add(Rate, Rate): Rate
5Ret
}
 
public vault_unrealised_reserving_fee_amount<Ty0>(Arg0: &Vault<Ty0>, Arg1: Rate): Decimal {
B0:
0CopyLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[1](Vault.unrealised_reserving_fee_amount: Decimal)
2ReadRef
3MoveLoc[0](Arg0: &Vault<Ty0>)
4ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
5ReadRef
6Call decimal::from_u64(u64): Decimal
7MoveLoc[1](Arg1: Rate)
8Call decimal::mul_with_rate(Decimal, Rate): Decimal
9Call decimal::add(Decimal, Decimal): Decimal
10Ret
}
 
public symbol_open_enabled(Arg0: &Symbol): bool {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[12](Symbol.open_enabled: bool)
2ReadRef
3Ret
}
 
public symbol_decrease_enabled(Arg0: &Symbol): bool {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[13](Symbol.decrease_enabled: bool)
2ReadRef
3Ret
}
 
public symbol_liquidate_enabled(Arg0: &Symbol): bool {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[14](Symbol.liquidate_enabled: bool)
2ReadRef
3Ret
}
 
public symbol_supported_collaterals(Arg0: &Symbol): &VecSet<TypeName> {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[15](Symbol.supported_collaterals: VecSet<TypeName>)
2Ret
}
 
public symbol_funding_fee_model(Arg0: &Symbol): &ID {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[16](Symbol.funding_fee_model: ID)
2Ret
}
 
public symbol_price_config(Arg0: &Symbol): &AggPriceConfig {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[17](Symbol.price_config: AggPriceConfig)
2Ret
}
 
public symbol_opening_amount(Arg0: &Symbol): u64 {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[18](Symbol.opening_amount: u64)
2ReadRef
3Ret
}
 
public symbol_opening_size(Arg0: &Symbol): Decimal {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[19](Symbol.opening_size: Decimal)
2ReadRef
3Ret
}
 
public symbol_pnl_per_lp(Arg0: &Symbol, Arg1: SDecimal, Arg2: Decimal): SDecimal {
B0:
0CopyLoc[0](Arg0: &Symbol)
1ImmBorrowField[20](Symbol.realised_pnl: SDecimal)
2ReadRef
3MoveLoc[0](Arg0: &Symbol)
4ImmBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
5ReadRef
6Call sdecimal::add(SDecimal, SDecimal): SDecimal
7MoveLoc[1](Arg1: SDecimal)
8Call sdecimal::add(SDecimal, SDecimal): SDecimal
9MoveLoc[2](Arg2: Decimal)
10Call sdecimal::div_by_decimal(SDecimal, Decimal): SDecimal
11Ret
}
 
public symbol_delta_funding_rate(Arg0: &Symbol, Arg1: &FundingFeeModel, Arg2: SDecimal, Arg3: Decimal, Arg4: u64): SRate {
L5: loc0: u64
B0:
0CopyLoc[0](Arg0: &Symbol)
1ImmBorrowField[5](Symbol.last_update: u64)
2ReadRef
3LdU64(0)
4Gt
5BrFalse(29)
B1:
6MoveLoc[4](Arg4: u64)
7CopyLoc[0](Arg0: &Symbol)
8ImmBorrowField[5](Symbol.last_update: u64)
9ReadRef
10Sub
11StLoc[5](loc0: u64)
12CopyLoc[5](loc0: u64)
13LdU64(0)
14Gt
15BrFalse(24)
B2:
16MoveLoc[1](Arg1: &FundingFeeModel)
17MoveLoc[0](Arg0: &Symbol)
18MoveLoc[2](Arg2: SDecimal)
19MoveLoc[3](Arg3: Decimal)
20Call symbol_pnl_per_lp(&Symbol, SDecimal, Decimal): SDecimal
21MoveLoc[5](loc0: u64)
22Call model::compute_funding_fee_rate(&FundingFeeModel, SDecimal, u64): SRate
23Ret
B3:
24MoveLoc[0](Arg0: &Symbol)
25Pop
26MoveLoc[1](Arg1: &FundingFeeModel)
27Pop
28Branch(33)
B4:
29MoveLoc[0](Arg0: &Symbol)
30Pop
31MoveLoc[1](Arg1: &FundingFeeModel)
32Pop
B5:
33Call srate::zero(): SRate
34Ret
}
 
public symbol_acc_funding_rate(Arg0: &Symbol, Arg1: SRate): SRate {
B0:
0MoveLoc[0](Arg0: &Symbol)
1ImmBorrowField[3](Symbol.acc_funding_rate: SRate)
2ReadRef
3MoveLoc[1](Arg1: SRate)
4Call srate::add(SRate, SRate): SRate
5Ret
}
 
public symbol_unrealised_funding_fee_value(Arg0: &Symbol, Arg1: SRate): SDecimal {
B0:
0CopyLoc[0](Arg0: &Symbol)
1ImmBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
2ReadRef
3ImmBorrowLoc[1](Arg1: SRate)
4Call srate::is_positive(&SRate): bool
5MoveLoc[0](Arg0: &Symbol)
6ImmBorrowField[19](Symbol.opening_size: Decimal)
7ReadRef
8ImmBorrowLoc[1](Arg1: SRate)
9Call srate::value(&SRate): Rate
10Call decimal::mul_with_rate(Decimal, Rate): Decimal
11Call sdecimal::from_decimal(bool, Decimal): SDecimal
12Call sdecimal::add(SDecimal, SDecimal): SDecimal
13Ret
}
 
public symbol_delta_size(Arg0: &Symbol, Arg1: &AggPrice, Arg2: bool): SDecimal {
L3: loc0: bool
L4: loc1: Decimal
L5: loc2: Decimal
B0:
0MoveLoc[1](Arg1: &AggPrice)
1CopyLoc[0](Arg0: &Symbol)
2ImmBorrowField[18](Symbol.opening_amount: u64)
3ReadRef
4Call agg_price::coins_to_value(&AggPrice, u64): Decimal
5StLoc[5](loc2: Decimal)
6ImmBorrowLoc[5](loc2: Decimal)
7CopyLoc[0](Arg0: &Symbol)
8ImmBorrowField[19](Symbol.opening_size: Decimal)
9Call decimal::gt(&Decimal, &Decimal): bool
10BrFalse(21)
B1:
11MoveLoc[2](Arg2: bool)
12Not
13MoveLoc[5](loc2: Decimal)
14MoveLoc[0](Arg0: &Symbol)
15ImmBorrowField[19](Symbol.opening_size: Decimal)
16ReadRef
17Call decimal::sub(Decimal, Decimal): Decimal
18StLoc[4](loc1: Decimal)
19StLoc[3](loc0: bool)
20Branch(29)
B2:
21MoveLoc[2](Arg2: bool)
22MoveLoc[0](Arg0: &Symbol)
23ImmBorrowField[19](Symbol.opening_size: Decimal)
24ReadRef
25MoveLoc[5](loc2: Decimal)
26Call decimal::sub(Decimal, Decimal): Decimal
27StLoc[4](loc1: Decimal)
28StLoc[3](loc0: bool)
B3:
29MoveLoc[3](loc0: bool)
30MoveLoc[4](loc1: Decimal)
31Call sdecimal::from_decimal(bool, Decimal): SDecimal
32Ret
}
 
public compute_rebase_fee_rate(Arg0: &RebaseFeeModel, Arg1: bool, Arg2: Decimal, Arg3: Decimal, Arg4: Decimal, Arg5: Decimal): Rate {
L6: loc0: Rate
L7: loc1: Rate
L8: loc2: Rate
B0:
0ImmBorrowLoc[2](Arg2: Decimal)
1ImmBorrowLoc[3](Arg3: Decimal)
2Call decimal::eq(&Decimal, &Decimal): bool
3BrFalse(9)
B1:
4MoveLoc[0](Arg0: &RebaseFeeModel)
5Pop
6Call rate::zero(): Rate
7StLoc[6](loc0: Rate)
8Branch(25)
B2:
9MoveLoc[2](Arg2: Decimal)
10MoveLoc[3](Arg3: Decimal)
11Call decimal::div(Decimal, Decimal): Decimal
12Call decimal::to_rate(Decimal): Rate
13StLoc[7](loc1: Rate)
14MoveLoc[4](Arg4: Decimal)
15MoveLoc[5](Arg5: Decimal)
16Call decimal::div(Decimal, Decimal): Decimal
17Call decimal::to_rate(Decimal): Rate
18StLoc[8](loc2: Rate)
19MoveLoc[0](Arg0: &RebaseFeeModel)
20MoveLoc[1](Arg1: bool)
21MoveLoc[7](loc1: Rate)
22MoveLoc[8](loc2: Rate)
23Call model::compute_rebase_fee_rate(&RebaseFeeModel, bool, Rate, Rate): Rate
24StLoc[6](loc0: Rate)
B3:
25MoveLoc[6](loc0: Rate)
26Ret
}
 
public(friend) new_vault<Ty0>(Arg0: u256, Arg1: ID, Arg2: AggPriceConfig): Vault<Ty0> {
B0:
0LdTrue
1MoveLoc[0](Arg0: u256)
2Call decimal::from_raw(u256): Decimal
3MoveLoc[1](Arg1: ID)
4MoveLoc[2](Arg2: AggPriceConfig)
5LdU64(0)
6Call balance::zero<Ty0>(): Balance<Ty0>
7LdU64(0)
8Call decimal::zero(): Decimal
9Call rate::zero(): Rate
10PackGeneric[0](Vault<Ty0>)
11Ret
}
 
public(friend) mut_vault_price_config<Ty0>(Arg0: &mut Vault<Ty0>): &mut AggPriceConfig {
B0:
0MoveLoc[0](Arg0: &mut Vault<Ty0>)
1MutBorrowFieldGeneric[6](Vault.price_config: AggPriceConfig)
2Ret
}
 
public(friend) new_symbol(Arg0: ID, Arg1: AggPriceConfig): Symbol {
B0:
0LdTrue
1LdTrue
2LdTrue
3Call vec_set::empty<TypeName>(): VecSet<TypeName>
4MoveLoc[0](Arg0: ID)
5MoveLoc[1](Arg1: AggPriceConfig)
6LdU64(0)
7LdU64(0)
8Call decimal::zero(): Decimal
9Call sdecimal::zero(): SDecimal
10Call sdecimal::zero(): SDecimal
11Call srate::zero(): SRate
12Pack[1](Symbol)
13Ret
}
 
public(friend) mut_symbol_price_config(Arg0: &mut Symbol): &mut AggPriceConfig {
B0:
0MoveLoc[0](Arg0: &mut Symbol)
1MutBorrowField[17](Symbol.price_config: AggPriceConfig)
2Ret
}
 
public(friend) add_collateral_to_symbol<Ty0>(Arg0: &mut Symbol) {
B0:
0MoveLoc[0](Arg0: &mut Symbol)
1MutBorrowField[15](Symbol.supported_collaterals: VecSet<TypeName>)
2Call type_name::get<Ty0>(): TypeName
3Call vec_set::insert<TypeName>(&mut VecSet<TypeName>, TypeName)
4Ret
}
 
public(friend) remove_collateral_from_symbol<Ty0>(Arg0: &mut Symbol) {
L1: loc0: TypeName
L2: loc1: &mut VecSet<TypeName>
B0:
0MoveLoc[0](Arg0: &mut Symbol)
1MutBorrowField[15](Symbol.supported_collaterals: VecSet<TypeName>)
2StLoc[2](loc1: &mut VecSet<TypeName>)
3Call type_name::get<Ty0>(): TypeName
4StLoc[1](loc0: TypeName)
5MoveLoc[2](loc1: &mut VecSet<TypeName>)
6ImmBorrowLoc[1](loc0: TypeName)
7Call vec_set::remove<TypeName>(&mut VecSet<TypeName>, &TypeName)
8Ret
}
 
public(friend) set_symbol_status(Arg0: &mut Symbol, Arg1: bool, Arg2: bool, Arg3: bool) {
B0:
0MoveLoc[1](Arg1: bool)
1CopyLoc[0](Arg0: &mut Symbol)
2MutBorrowField[12](Symbol.open_enabled: bool)
3WriteRef
4MoveLoc[2](Arg2: bool)
5CopyLoc[0](Arg0: &mut Symbol)
6MutBorrowField[13](Symbol.decrease_enabled: bool)
7WriteRef
8MoveLoc[3](Arg3: bool)
9MoveLoc[0](Arg0: &mut Symbol)
10MutBorrowField[14](Symbol.liquidate_enabled: bool)
11WriteRef
12Ret
}
 
public(friend) set_vault_status<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: bool) {
B0:
0MoveLoc[1](Arg1: bool)
1MoveLoc[0](Arg0: &mut Vault<Ty0>)
2MutBorrowFieldGeneric[3](Vault.enabled: bool)
3WriteRef
4Ret
}
 
public(friend) set_vault_weight<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: u256) {
B0:
0MoveLoc[1](Arg1: u256)
1Call decimal::from_raw(u256): Decimal
2MoveLoc[0](Arg0: &mut Vault<Ty0>)
3MutBorrowFieldGeneric[4](Vault.weight: Decimal)
4WriteRef
5Ret
}
 
public(friend) deposit<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &RebaseFeeModel, Arg2: &AggPrice, Arg3: Balance<Ty0>, Arg4: u64, Arg5: u64, Arg6: Decimal, Arg7: Decimal, Arg8: Decimal, Arg9: Decimal): u64 * Decimal {
L10: loc0: u64
L11: loc1: u64
L12: loc2: Decimal
L13: loc3: Rate
L14: loc4: Decimal
L15: loc5: u64
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(13)
B2:
5MoveLoc[0](Arg0: &mut Vault<Ty0>)
6Pop
7MoveLoc[2](Arg2: &AggPrice)
8Pop
9MoveLoc[1](Arg1: &RebaseFeeModel)
10Pop
11LdConst[0](u64: 100)
12Abort
B3:
13ImmBorrowLoc[3](Arg3: Balance<Ty0>)
14Call balance::value<Ty0>(&Balance<Ty0>): u64
15StLoc[11](loc1: u64)
16CopyLoc[11](loc1: u64)
17LdU64(0)
18Gt
19BrFalse(21)
B4:
20Branch(29)
B5:
21MoveLoc[0](Arg0: &mut Vault<Ty0>)
22Pop
23MoveLoc[2](Arg2: &AggPrice)
24Pop
25MoveLoc[1](Arg1: &RebaseFeeModel)
26Pop
27LdConst[8](u64: 108)
28Abort
B6:
29MoveLoc[2](Arg2: &AggPrice)
30MoveLoc[11](loc1: u64)
31Call agg_price::coins_to_value(&AggPrice, u64): Decimal
32StLoc[12](loc2: Decimal)
33MoveLoc[1](Arg1: &RebaseFeeModel)
34LdTrue
35MoveLoc[7](Arg7: Decimal)
36CopyLoc[12](loc2: Decimal)
37Call decimal::add(Decimal, Decimal): Decimal
38MoveLoc[8](Arg8: Decimal)
39CopyLoc[12](loc2: Decimal)
40Call decimal::add(Decimal, Decimal): Decimal
41CopyLoc[0](Arg0: &mut Vault<Ty0>)
42ImmBorrowFieldGeneric[4](Vault.weight: Decimal)
43ReadRef
44MoveLoc[9](Arg9: Decimal)
45Call compute_rebase_fee_rate(&RebaseFeeModel, bool, Decimal, Decimal, Decimal, Decimal): Rate
46StLoc[13](loc3: Rate)
47CopyLoc[12](loc2: Decimal)
48MoveLoc[13](loc3: Rate)
49Call decimal::mul_with_rate(Decimal, Rate): Decimal
50StLoc[14](loc4: Decimal)
51MoveLoc[12](loc2: Decimal)
52CopyLoc[14](loc4: Decimal)
53Call decimal::sub(Decimal, Decimal): Decimal
54StLoc[12](loc2: Decimal)
55MoveLoc[0](Arg0: &mut Vault<Ty0>)
56MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
57MoveLoc[3](Arg3: Balance<Ty0>)
58Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
59Pop
60CopyLoc[5](Arg5: u64)
61LdU64(0)
62Eq
63BrFalse(74)
B7:
64ImmBorrowLoc[6](Arg6: Decimal)
65Call decimal::is_zero(&Decimal): bool
66BrFalse(68)
B8:
67Branch(70)
B9:
68LdConst[10](u64: 110)
69Abort
B10:
70MoveLoc[12](loc2: Decimal)
71Call decimal::truncate_decimal(Decimal): u64
72StLoc[10](loc0: u64)
73Branch(88)
B11:
74ImmBorrowLoc[6](Arg6: Decimal)
75Call decimal::is_zero(&Decimal): bool
76Not
77BrFalse(79)
B12:
78Branch(81)
B13:
79LdConst[10](u64: 110)
80Abort
B14:
81MoveLoc[12](loc2: Decimal)
82MoveLoc[5](Arg5: u64)
83Call decimal::from_u64(u64): Decimal
84MoveLoc[6](Arg6: Decimal)
85Call decimal::mul_div(Decimal, Decimal, Decimal): Decimal
86Call decimal::floor_u64(Decimal): u64
87StLoc[10](loc0: u64)
B15:
88MoveLoc[10](loc0: u64)
89StLoc[15](loc5: u64)
90CopyLoc[15](loc5: u64)
91MoveLoc[4](Arg4: u64)
92Ge
93BrFalse(95)
B16:
94Branch(97)
B17:
95LdConst[11](u64: 111)
96Abort
B18:
97MoveLoc[15](loc5: u64)
98MoveLoc[14](loc4: Decimal)
99Ret
}
 
public(friend) withdraw<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &RebaseFeeModel, Arg2: &AggPrice, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: Decimal, Arg7: Decimal, Arg8: Decimal, Arg9: Decimal): Balance<Ty0> * Decimal {
L10: loc0: Rate
L11: loc1: Decimal
L12: loc2: Balance<Ty0>
L13: loc3: u64
L14: loc4: Decimal
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(13)
B2:
5MoveLoc[0](Arg0: &mut Vault<Ty0>)
6Pop
7MoveLoc[2](Arg2: &AggPrice)
8Pop
9MoveLoc[1](Arg1: &RebaseFeeModel)
10Pop
11LdConst[0](u64: 100)
12Abort
B3:
13CopyLoc[3](Arg3: u64)
14LdU64(0)
15Gt
16BrFalse(18)
B4:
17Branch(26)
B5:
18MoveLoc[0](Arg0: &mut Vault<Ty0>)
19Pop
20MoveLoc[2](Arg2: &AggPrice)
21Pop
22MoveLoc[1](Arg1: &RebaseFeeModel)
23Pop
24LdConst[9](u64: 109)
25Abort
B6:
26MoveLoc[6](Arg6: Decimal)
27MoveLoc[3](Arg3: u64)
28Call decimal::from_u64(u64): Decimal
29MoveLoc[5](Arg5: u64)
30Call decimal::from_u64(u64): Decimal
31Call decimal::mul_div(Decimal, Decimal, Decimal): Decimal
32StLoc[14](loc4: Decimal)
33ImmBorrowLoc[14](loc4: Decimal)
34ImmBorrowLoc[7](Arg7: Decimal)
35Call decimal::le(&Decimal, &Decimal): bool
36BrFalse(38)
B7:
37Branch(46)
B8:
38MoveLoc[0](Arg0: &mut Vault<Ty0>)
39Pop
40MoveLoc[2](Arg2: &AggPrice)
41Pop
42MoveLoc[1](Arg1: &RebaseFeeModel)
43Pop
44LdConst[1](u64: 101)
45Abort
B9:
46MoveLoc[1](Arg1: &RebaseFeeModel)
47LdFalse
48MoveLoc[7](Arg7: Decimal)
49CopyLoc[14](loc4: Decimal)
50Call decimal::sub(Decimal, Decimal): Decimal
51MoveLoc[8](Arg8: Decimal)
52CopyLoc[14](loc4: Decimal)
53Call decimal::sub(Decimal, Decimal): Decimal
54CopyLoc[0](Arg0: &mut Vault<Ty0>)
55ImmBorrowFieldGeneric[4](Vault.weight: Decimal)
56ReadRef
57MoveLoc[9](Arg9: Decimal)
58Call compute_rebase_fee_rate(&RebaseFeeModel, bool, Decimal, Decimal, Decimal, Decimal): Rate
59StLoc[10](loc0: Rate)
60CopyLoc[14](loc4: Decimal)
61MoveLoc[10](loc0: Rate)
62Call decimal::mul_with_rate(Decimal, Rate): Decimal
63StLoc[11](loc1: Decimal)
64MoveLoc[14](loc4: Decimal)
65CopyLoc[11](loc1: Decimal)
66Call decimal::sub(Decimal, Decimal): Decimal
67StLoc[14](loc4: Decimal)
68MoveLoc[2](Arg2: &AggPrice)
69MoveLoc[14](loc4: Decimal)
70Call agg_price::value_to_coins(&AggPrice, Decimal): Decimal
71Call decimal::floor_u64(Decimal): u64
72StLoc[13](loc3: u64)
73CopyLoc[13](loc3: u64)
74CopyLoc[0](Arg0: &mut Vault<Ty0>)
75ImmBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
76Call balance::value<Ty0>(&Balance<Ty0>): u64
77Le
78BrFalse(80)
B10:
79Branch(84)
B11:
80MoveLoc[0](Arg0: &mut Vault<Ty0>)
81Pop
82LdConst[2](u64: 102)
83Abort
B12:
84MoveLoc[0](Arg0: &mut Vault<Ty0>)
85MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
86MoveLoc[13](loc3: u64)
87Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
88StLoc[12](loc2: Balance<Ty0>)
89ImmBorrowLoc[12](loc2: Balance<Ty0>)
90Call balance::value<Ty0>(&Balance<Ty0>): u64
91MoveLoc[4](Arg4: u64)
92Ge
93BrFalse(95)
B13:
94Branch(97)
B14:
95LdConst[11](u64: 111)
96Abort
B15:
97MoveLoc[12](loc2: Balance<Ty0>)
98MoveLoc[11](loc1: Decimal)
99Ret
}
 
public(friend) swap_in<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &RebaseFeeModel, Arg2: &AggPrice, Arg3: Balance<Ty0>, Arg4: Decimal, Arg5: Decimal, Arg6: Decimal): Decimal * Decimal {
L7: loc0: u64
L8: loc1: Rate
L9: loc2: Decimal
L10: loc3: Decimal
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(13)
B2:
5MoveLoc[0](Arg0: &mut Vault<Ty0>)
6Pop
7MoveLoc[2](Arg2: &AggPrice)
8Pop
9MoveLoc[1](Arg1: &RebaseFeeModel)
10Pop
11LdConst[0](u64: 100)
12Abort
B3:
13ImmBorrowLoc[3](Arg3: Balance<Ty0>)
14Call balance::value<Ty0>(&Balance<Ty0>): u64
15StLoc[7](loc0: u64)
16CopyLoc[7](loc0: u64)
17LdU64(0)
18Gt
19BrFalse(21)
B4:
20Branch(29)
B5:
21MoveLoc[0](Arg0: &mut Vault<Ty0>)
22Pop
23MoveLoc[2](Arg2: &AggPrice)
24Pop
25MoveLoc[1](Arg1: &RebaseFeeModel)
26Pop
27LdConst[7](u64: 107)
28Abort
B6:
29CopyLoc[0](Arg0: &mut Vault<Ty0>)
30MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
31MoveLoc[3](Arg3: Balance<Ty0>)
32Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
33Pop
34MoveLoc[2](Arg2: &AggPrice)
35MoveLoc[7](loc0: u64)
36Call agg_price::coins_to_value(&AggPrice, u64): Decimal
37StLoc[10](loc3: Decimal)
38MoveLoc[1](Arg1: &RebaseFeeModel)
39LdTrue
40MoveLoc[4](Arg4: Decimal)
41CopyLoc[10](loc3: Decimal)
42Call decimal::add(Decimal, Decimal): Decimal
43MoveLoc[5](Arg5: Decimal)
44CopyLoc[10](loc3: Decimal)
45Call decimal::add(Decimal, Decimal): Decimal
46MoveLoc[0](Arg0: &mut Vault<Ty0>)
47ImmBorrowFieldGeneric[4](Vault.weight: Decimal)
48ReadRef
49MoveLoc[6](Arg6: Decimal)
50Call compute_rebase_fee_rate(&RebaseFeeModel, bool, Decimal, Decimal, Decimal, Decimal): Rate
51StLoc[8](loc1: Rate)
52CopyLoc[10](loc3: Decimal)
53MoveLoc[8](loc1: Rate)
54Call decimal::mul_with_rate(Decimal, Rate): Decimal
55StLoc[9](loc2: Decimal)
56MoveLoc[10](loc3: Decimal)
57CopyLoc[9](loc2: Decimal)
58Call decimal::sub(Decimal, Decimal): Decimal
59MoveLoc[9](loc2: Decimal)
60Ret
}
 
public(friend) swap_out<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &RebaseFeeModel, Arg2: &AggPrice, Arg3: u64, Arg4: Decimal, Arg5: Decimal, Arg6: Decimal, Arg7: Decimal): Balance<Ty0> * Decimal {
L8: loc0: u64
L9: loc1: Rate
L10: loc2: Decimal
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(13)
B2:
5MoveLoc[1](Arg1: &RebaseFeeModel)
6Pop
7MoveLoc[0](Arg0: &mut Vault<Ty0>)
8Pop
9MoveLoc[2](Arg2: &AggPrice)
10Pop
11LdConst[0](u64: 100)
12Abort
B3:
13ImmBorrowLoc[4](Arg4: Decimal)
14ImmBorrowLoc[5](Arg5: Decimal)
15Call decimal::lt(&Decimal, &Decimal): bool
16BrFalse(18)
B4:
17Branch(26)
B5:
18MoveLoc[1](Arg1: &RebaseFeeModel)
19Pop
20MoveLoc[0](Arg0: &mut Vault<Ty0>)
21Pop
22MoveLoc[2](Arg2: &AggPrice)
23Pop
24LdConst[1](u64: 101)
25Abort
B6:
26MoveLoc[1](Arg1: &RebaseFeeModel)
27LdFalse
28MoveLoc[5](Arg5: Decimal)
29CopyLoc[4](Arg4: Decimal)
30Call decimal::sub(Decimal, Decimal): Decimal
31MoveLoc[6](Arg6: Decimal)
32CopyLoc[0](Arg0: &mut Vault<Ty0>)
33ImmBorrowFieldGeneric[4](Vault.weight: Decimal)
34ReadRef
35MoveLoc[7](Arg7: Decimal)
36Call compute_rebase_fee_rate(&RebaseFeeModel, bool, Decimal, Decimal, Decimal, Decimal): Rate
37StLoc[9](loc1: Rate)
38CopyLoc[4](Arg4: Decimal)
39MoveLoc[9](loc1: Rate)
40Call decimal::mul_with_rate(Decimal, Rate): Decimal
41StLoc[10](loc2: Decimal)
42MoveLoc[4](Arg4: Decimal)
43CopyLoc[10](loc2: Decimal)
44Call decimal::sub(Decimal, Decimal): Decimal
45StLoc[4](Arg4: Decimal)
46MoveLoc[2](Arg2: &AggPrice)
47MoveLoc[4](Arg4: Decimal)
48Call agg_price::value_to_coins(&AggPrice, Decimal): Decimal
49Call decimal::floor_u64(Decimal): u64
50StLoc[8](loc0: u64)
51CopyLoc[8](loc0: u64)
52MoveLoc[3](Arg3: u64)
53Ge
54BrFalse(56)
B7:
55Branch(60)
B8:
56MoveLoc[0](Arg0: &mut Vault<Ty0>)
57Pop
58LdConst[11](u64: 111)
59Abort
B9:
60CopyLoc[8](loc0: u64)
61CopyLoc[0](Arg0: &mut Vault<Ty0>)
62ImmBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
63Call balance::value<Ty0>(&Balance<Ty0>): u64
64Lt
65BrFalse(67)
B10:
66Branch(71)
B11:
67MoveLoc[0](Arg0: &mut Vault<Ty0>)
68Pop
69LdConst[2](u64: 102)
70Abort
B12:
71MoveLoc[0](Arg0: &mut Vault<Ty0>)
72MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
73MoveLoc[8](loc0: u64)
74Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
75MoveLoc[10](loc2: Decimal)
76Ret
}
 
public(friend) open_position<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &mut Symbol, Arg2: &FeeConfig, Arg3: &ReservingFeeModel, Arg4: &FundingFeeModel, Arg5: &PositionConfig, Arg6: &AggPrice, Arg7: &AggPrice, Arg8: &mut Balance<Ty0>, Arg9: Decimal, Arg10: Rate, Arg11: Option<Rate>, Arg12: bool, Arg13: u64, Arg14: u64, Arg15: Decimal, Arg16: u64): OpenPositionResult<Ty0> {
L17: loc0: TypeName
L18: loc1: u64
L19: loc2: u64
L20: loc3: Decimal
L21: loc4: Decimal
L22: loc5: PositionConfig
L23: loc6: Option<Balance<Ty0>>
L24: loc7: Balance<Ty0>
L25: loc8: Balance<Ty0>
L26: loc9: Position<Ty0>
L27: loc10: &VecSet<TypeName>
L28: loc11: u64
L29: loc12: Option<Balance<Ty0>>
L30: loc13: Option<u64>
L31: loc14: u64
L32: loc15: u64
L33: loc16: u64
L34: loc17: u64
L35: loc18: u64
L36: loc19: SDecimal
L37: loc20: Balance<Ty0>
L38: loc21: u64
L39: loc22: u64
L40: loc23: Balance<Ty0>
L41: loc24: u64
L42: loc25: Decimal
L43: loc26: Position<Ty0>
L44: loc27: u64
L45: loc28: Balance<Ty0>
L46: loc29: u64
L47: loc30: Option<Balance<Ty0>>
L48: loc31: u64
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(25)
B2:
5MoveLoc[0](Arg0: &mut Vault<Ty0>)
6Pop
7MoveLoc[1](Arg1: &mut Symbol)
8Pop
9MoveLoc[3](Arg3: &ReservingFeeModel)
10Pop
11MoveLoc[5](Arg5: &PositionConfig)
12Pop
13MoveLoc[7](Arg7: &AggPrice)
14Pop
15MoveLoc[4](Arg4: &FundingFeeModel)
16Pop
17MoveLoc[2](Arg2: &FeeConfig)
18Pop
19MoveLoc[6](Arg6: &AggPrice)
20Pop
21MoveLoc[8](Arg8: &mut Balance<Ty0>)
22Pop
23LdConst[0](u64: 100)
24Abort
B3:
25CopyLoc[1](Arg1: &mut Symbol)
26ImmBorrowField[12](Symbol.open_enabled: bool)
27ReadRef
28BrFalse(30)
B4:
29Branch(50)
B5:
30MoveLoc[0](Arg0: &mut Vault<Ty0>)
31Pop
32MoveLoc[1](Arg1: &mut Symbol)
33Pop
34MoveLoc[3](Arg3: &ReservingFeeModel)
35Pop
36MoveLoc[5](Arg5: &PositionConfig)
37Pop
38MoveLoc[7](Arg7: &AggPrice)
39Pop
40MoveLoc[4](Arg4: &FundingFeeModel)
41Pop
42MoveLoc[2](Arg2: &FeeConfig)
43Pop
44MoveLoc[6](Arg6: &AggPrice)
45Pop
46MoveLoc[8](Arg8: &mut Balance<Ty0>)
47Pop
48LdConst[4](u64: 104)
49Abort
B6:
50CopyLoc[3](Arg3: &ReservingFeeModel)
51Call object::id<ReservingFeeModel>(&ReservingFeeModel): ID
52CopyLoc[0](Arg0: &mut Vault<Ty0>)
53ImmBorrowFieldGeneric[5](Vault.reserving_fee_model: ID)
54ReadRef
55Eq
56BrFalse(58)
B7:
57Branch(78)
B8:
58MoveLoc[0](Arg0: &mut Vault<Ty0>)
59Pop
60MoveLoc[1](Arg1: &mut Symbol)
61Pop
62MoveLoc[3](Arg3: &ReservingFeeModel)
63Pop
64MoveLoc[5](Arg5: &PositionConfig)
65Pop
66MoveLoc[7](Arg7: &AggPrice)
67Pop
68MoveLoc[4](Arg4: &FundingFeeModel)
69Pop
70MoveLoc[2](Arg2: &FeeConfig)
71Pop
72MoveLoc[6](Arg6: &AggPrice)
73Pop
74MoveLoc[8](Arg8: &mut Balance<Ty0>)
75Pop
76LdConst[12](u64: 112)
77Abort
B9:
78CopyLoc[4](Arg4: &FundingFeeModel)
79Call object::id<FundingFeeModel>(&FundingFeeModel): ID
80CopyLoc[1](Arg1: &mut Symbol)
81ImmBorrowField[16](Symbol.funding_fee_model: ID)
82ReadRef
83Eq
84BrFalse(86)
B10:
85Branch(106)
B11:
86MoveLoc[0](Arg0: &mut Vault<Ty0>)
87Pop
88MoveLoc[1](Arg1: &mut Symbol)
89Pop
90MoveLoc[3](Arg3: &ReservingFeeModel)
91Pop
92MoveLoc[5](Arg5: &PositionConfig)
93Pop
94MoveLoc[7](Arg7: &AggPrice)
95Pop
96MoveLoc[4](Arg4: &FundingFeeModel)
97Pop
98MoveLoc[2](Arg2: &FeeConfig)
99Pop
100MoveLoc[6](Arg6: &AggPrice)
101Pop
102MoveLoc[8](Arg8: &mut Balance<Ty0>)
103Pop
104LdConst[13](u64: 113)
105Abort
B12:
106CopyLoc[1](Arg1: &mut Symbol)
107ImmBorrowField[15](Symbol.supported_collaterals: VecSet<TypeName>)
108StLoc[27](loc10: &VecSet<TypeName>)
109Call type_name::get<Ty0>(): TypeName
110StLoc[17](loc0: TypeName)
111MoveLoc[27](loc10: &VecSet<TypeName>)
112ImmBorrowLoc[17](loc0: TypeName)
113Call vec_set::contains<TypeName>(&VecSet<TypeName>, &TypeName): bool
114BrFalse(116)
B13:
115Branch(136)
B14:
116MoveLoc[0](Arg0: &mut Vault<Ty0>)
117Pop
118MoveLoc[1](Arg1: &mut Symbol)
119Pop
120MoveLoc[3](Arg3: &ReservingFeeModel)
121Pop
122MoveLoc[5](Arg5: &PositionConfig)
123Pop
124MoveLoc[7](Arg7: &AggPrice)
125Pop
126MoveLoc[4](Arg4: &FundingFeeModel)
127Pop
128MoveLoc[2](Arg2: &FeeConfig)
129Pop
130MoveLoc[6](Arg6: &AggPrice)
131Pop
132MoveLoc[8](Arg8: &mut Balance<Ty0>)
133Pop
134LdConst[3](u64: 103)
135Abort
B15:
136CopyLoc[0](Arg0: &mut Vault<Ty0>)
137ImmBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
138Call balance::value<Ty0>(&Balance<Ty0>): u64
139CopyLoc[14](Arg14: u64)
140Gt
141BrFalse(143)
B16:
142Branch(163)
B17:
143MoveLoc[0](Arg0: &mut Vault<Ty0>)
144Pop
145MoveLoc[1](Arg1: &mut Symbol)
146Pop
147MoveLoc[3](Arg3: &ReservingFeeModel)
148Pop
149MoveLoc[5](Arg5: &PositionConfig)
150Pop
151MoveLoc[7](Arg7: &AggPrice)
152Pop
153MoveLoc[4](Arg4: &FundingFeeModel)
154Pop
155MoveLoc[2](Arg2: &FeeConfig)
156Pop
157MoveLoc[6](Arg6: &AggPrice)
158Pop
159MoveLoc[8](Arg8: &mut Balance<Ty0>)
160Pop
161LdConst[2](u64: 102)
162Abort
B18:
163CopyLoc[0](Arg0: &mut Vault<Ty0>)
164MoveLoc[3](Arg3: &ReservingFeeModel)
165CopyLoc[16](Arg16: u64)
166Call refresh_vault<Ty0>(&mut Vault<Ty0>, &ReservingFeeModel, u64)
167CopyLoc[1](Arg1: &mut Symbol)
168FreezeRef
169CopyLoc[7](Arg7: &AggPrice)
170MoveLoc[12](Arg12: bool)
171Call symbol_delta_size(&Symbol, &AggPrice, bool): SDecimal
172StLoc[36](loc19: SDecimal)
173CopyLoc[1](Arg1: &mut Symbol)
174MoveLoc[4](Arg4: &FundingFeeModel)
175MoveLoc[36](loc19: SDecimal)
176MoveLoc[15](Arg15: Decimal)
177CopyLoc[16](Arg16: u64)
178Call refresh_symbol(&mut Symbol, &FundingFeeModel, SDecimal, Decimal, u64)
179CopyLoc[5](Arg5: &PositionConfig)
180CopyLoc[6](Arg6: &AggPrice)
181CopyLoc[7](Arg7: &AggPrice)
182CopyLoc[0](Arg0: &mut Vault<Ty0>)
183MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
184MoveLoc[8](Arg8: &mut Balance<Ty0>)
185MoveLoc[9](Arg9: Decimal)
186CopyLoc[13](Arg13: u64)
187CopyLoc[14](Arg14: u64)
188CopyLoc[0](Arg0: &mut Vault<Ty0>)
189ImmBorrowFieldGeneric[0](Vault.acc_reserving_rate: Rate)
190ReadRef
191CopyLoc[1](Arg1: &mut Symbol)
192ImmBorrowField[3](Symbol.acc_funding_rate: SRate)
193ReadRef
194MoveLoc[16](Arg16: u64)
195Call position::open_position<Ty0>(&PositionConfig, &AggPrice, &AggPrice, &mut Balance<Ty0>, &mut Balance<Ty0>, Decimal, u64, u64, Rate, SRate, u64): OpenPositionResult<Ty0>
196Call position::unwrap_open_position_result<Ty0>(OpenPositionResult<Ty0>): Position<Ty0> * Balance<Ty0> * Decimal
197StLoc[42](loc25: Decimal)
198StLoc[40](loc23: Balance<Ty0>)
199StLoc[43](loc26: Position<Ty0>)
200ImmBorrowLoc[40](loc23: Balance<Ty0>)
201Call balance::value<Ty0>(&Balance<Ty0>): u64
202StLoc[41](loc24: u64)
203CopyLoc[42](loc25: Decimal)
204MoveLoc[10](Arg10: Rate)
205Call decimal::mul_with_rate(Decimal, Rate): Decimal
206Call decimal::floor_u64(Decimal): u64
207StLoc[46](loc29: u64)
208CopyLoc[42](loc25: Decimal)
209MoveLoc[2](Arg2: &FeeConfig)
210Call fee::get_fee_rate(&FeeConfig): Rate
211Call decimal::mul_with_rate(Decimal, Rate): Decimal
212Call decimal::floor_u64(Decimal): u64
213StLoc[38](loc21: u64)
214ImmBorrowLoc[11](Arg11: Option<Rate>)
215Call option::is_some<Rate>(&Option<Rate>): bool
216BrFalse(225)
B19:
217MoveLoc[42](loc25: Decimal)
218ImmBorrowLoc[11](Arg11: Option<Rate>)
219Call option::borrow<Rate>(&Option<Rate>): &Rate
220ReadRef
221Call decimal::mul_with_rate(Decimal, Rate): Decimal
222Call decimal::floor_u64(Decimal): u64
223StLoc[28](loc11: u64)
224Branch(227)
B20:
225LdU64(0)
226StLoc[28](loc11: u64)
B21:
227MoveLoc[28](loc11: u64)
228StLoc[48](loc31: u64)
229CopyLoc[0](Arg0: &mut Vault<Ty0>)
230ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
231ReadRef
232CopyLoc[14](Arg14: u64)
233Add
234CopyLoc[0](Arg0: &mut Vault<Ty0>)
235MutBorrowFieldGeneric[8](Vault.reserved_amount: u64)
236WriteRef
237CopyLoc[0](Arg0: &mut Vault<Ty0>)
238MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
239MoveLoc[40](loc23: Balance<Ty0>)
240Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
241StLoc[39](loc22: u64)
242CopyLoc[46](loc29: u64)
243CopyLoc[38](loc21: u64)
244Add
245CopyLoc[48](loc31: u64)
246Add
247StLoc[44](loc27: u64)
248MoveLoc[39](loc22: u64)
249MoveLoc[44](loc27: u64)
250Gt
251BrFalse(253)
B22:
252Branch(265)
B23:
253MoveLoc[0](Arg0: &mut Vault<Ty0>)
254Pop
255MoveLoc[1](Arg1: &mut Symbol)
256Pop
257MoveLoc[5](Arg5: &PositionConfig)
258Pop
259MoveLoc[7](Arg7: &AggPrice)
260Pop
261MoveLoc[6](Arg6: &AggPrice)
262Pop
263LdConst[2](u64: 102)
264Abort
B24:
265CopyLoc[0](Arg0: &mut Vault<Ty0>)
266MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
267CopyLoc[46](loc29: u64)
268Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
269StLoc[45](loc28: Balance<Ty0>)
270CopyLoc[0](Arg0: &mut Vault<Ty0>)
271MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
272CopyLoc[38](loc21: u64)
273Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
274StLoc[37](loc20: Balance<Ty0>)
275CopyLoc[48](loc31: u64)
276LdU64(0)
277Gt
278BrFalse(286)
B25:
279MoveLoc[0](Arg0: &mut Vault<Ty0>)
280MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
281CopyLoc[48](loc31: u64)
282Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
283Call option::some<Balance<Ty0>>(Balance<Ty0>): Option<Balance<Ty0>>
284StLoc[29](loc12: Option<Balance<Ty0>>)
285Branch(290)
B26:
286MoveLoc[0](Arg0: &mut Vault<Ty0>)
287Pop
288Call option::none<Balance<Ty0>>(): Option<Balance<Ty0>>
289StLoc[29](loc12: Option<Balance<Ty0>>)
B27:
290MoveLoc[29](loc12: Option<Balance<Ty0>>)
291StLoc[47](loc30: Option<Balance<Ty0>>)
292CopyLoc[1](Arg1: &mut Symbol)
293ImmBorrowField[19](Symbol.opening_size: Decimal)
294ReadRef
295ImmBorrowLoc[43](loc26: Position<Ty0>)
296Call position::position_size<Ty0>(&Position<Ty0>): Decimal
297Call decimal::add(Decimal, Decimal): Decimal
298CopyLoc[1](Arg1: &mut Symbol)
299MutBorrowField[19](Symbol.opening_size: Decimal)
300WriteRef
301CopyLoc[1](Arg1: &mut Symbol)
302ImmBorrowField[18](Symbol.opening_amount: u64)
303ReadRef
304CopyLoc[13](Arg13: u64)
305Add
306MoveLoc[1](Arg1: &mut Symbol)
307MutBorrowField[18](Symbol.opening_amount: u64)
308WriteRef
309ImmBorrowLoc[43](loc26: Position<Ty0>)
310Call position::collateral_amount<Ty0>(&Position<Ty0>): u64
311StLoc[35](loc18: u64)
312MoveLoc[43](loc26: Position<Ty0>)
313StLoc[26](loc9: Position<Ty0>)
314MoveLoc[45](loc28: Balance<Ty0>)
315StLoc[25](loc8: Balance<Ty0>)
316MoveLoc[37](loc20: Balance<Ty0>)
317StLoc[24](loc7: Balance<Ty0>)
318MoveLoc[47](loc30: Option<Balance<Ty0>>)
319StLoc[23](loc6: Option<Balance<Ty0>>)
320MoveLoc[5](Arg5: &PositionConfig)
321ReadRef
322StLoc[22](loc5: PositionConfig)
323MoveLoc[6](Arg6: &AggPrice)
324Call agg_price::price_of(&AggPrice): Decimal
325StLoc[21](loc4: Decimal)
326MoveLoc[7](Arg7: &AggPrice)
327Call agg_price::price_of(&AggPrice): Decimal
328StLoc[20](loc3: Decimal)
329MoveLoc[13](Arg13: u64)
330StLoc[19](loc2: u64)
331MoveLoc[41](loc24: u64)
332StLoc[18](loc1: u64)
333MoveLoc[14](Arg14: u64)
334StLoc[34](loc17: u64)
335MoveLoc[35](loc18: u64)
336StLoc[33](loc16: u64)
337MoveLoc[46](loc29: u64)
338StLoc[32](loc15: u64)
339MoveLoc[38](loc21: u64)
340StLoc[31](loc14: u64)
341CopyLoc[48](loc31: u64)
342LdU64(0)
343Gt
344BrFalse(349)
B28:
345MoveLoc[48](loc31: u64)
346Call option::some<u64>(u64): Option<u64>
347StLoc[30](loc13: Option<u64>)
348Branch(351)
B29:
349Call option::none<u64>(): Option<u64>
350StLoc[30](loc13: Option<u64>)
B30:
351MoveLoc[26](loc9: Position<Ty0>)
352MoveLoc[25](loc8: Balance<Ty0>)
353MoveLoc[24](loc7: Balance<Ty0>)
354MoveLoc[23](loc6: Option<Balance<Ty0>>)
355MoveLoc[22](loc5: PositionConfig)
356MoveLoc[21](loc4: Decimal)
357MoveLoc[20](loc3: Decimal)
358MoveLoc[19](loc2: u64)
359MoveLoc[18](loc1: u64)
360MoveLoc[34](loc17: u64)
361MoveLoc[33](loc16: u64)
362MoveLoc[32](loc15: u64)
363MoveLoc[31](loc14: u64)
364MoveLoc[30](loc13: Option<u64>)
365Pack[4](OpenPositionSuccessEvent)
366PackGeneric[1](OpenPositionResult<Ty0>)
367Ret
}
 
public(friend) unwrap_open_position_result<Ty0>(Arg0: OpenPositionResult<Ty0>): Position<Ty0> * Balance<Ty0> * Balance<Ty0> * Option<Balance<Ty0>> * OpenPositionSuccessEvent {
B0:
0MoveLoc[0](Arg0: OpenPositionResult<Ty0>)
1UnpackGeneric[1](OpenPositionResult<Ty0>)
2Ret
}
 
public(friend) decrease_position<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &mut Symbol, Arg2: &FeeConfig, Arg3: &mut Position<Ty0>, Arg4: &ReservingFeeModel, Arg5: &FundingFeeModel, Arg6: &AggPrice, Arg7: &AggPrice, Arg8: Decimal, Arg9: Rate, Arg10: Option<Rate>, Arg11: bool, Arg12: u64, Arg13: Decimal, Arg14: u64): DecreasePositionResult<Ty0> {
L15: loc0: Decimal
L16: loc1: SDecimal
L17: loc2: Decimal
L18: loc3: Decimal
L19: loc4: u64
L20: loc5: Decimal
L21: loc6: Decimal
L22: loc7: Option<Balance<Ty0>>
L23: loc8: Balance<Ty0>
L24: loc9: Balance<Ty0>
L25: loc10: Balance<Ty0>
L26: loc11: Option<Balance<Ty0>>
L27: loc12: Option<u64>
L28: loc13: u64
L29: loc14: u64
L30: loc15: u64
L31: loc16: bool
L32: loc17: bool
L33: loc18: SDecimal
L34: loc19: bool
L35: loc20: Decimal
L36: loc21: Decimal
L37: loc22: u64
L38: loc23: SDecimal
L39: loc24: SDecimal
L40: loc25: Rate
L41: loc26: Balance<Ty0>
L42: loc27: u64
L43: loc28: Decimal
L44: loc29: SDecimal
L45: loc30: bool
L46: loc31: u64
L47: loc32: Decimal
L48: loc33: Balance<Ty0>
L49: loc34: u64
L50: loc35: Decimal
L51: loc36: Decimal
L52: loc37: Decimal
L53: loc38: Option<Balance<Ty0>>
L54: loc39: u64
L55: loc40: Decimal
L56: loc41: u64
L57: loc42: Balance<Ty0>
L58: loc43: Balance<Ty0>
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(23)
B2:
5MoveLoc[0](Arg0: &mut Vault<Ty0>)
6Pop
7MoveLoc[1](Arg1: &mut Symbol)
8Pop
9MoveLoc[4](Arg4: &ReservingFeeModel)
10Pop
11MoveLoc[3](Arg3: &mut Position<Ty0>)
12Pop
13MoveLoc[7](Arg7: &AggPrice)
14Pop
15MoveLoc[5](Arg5: &FundingFeeModel)
16Pop
17MoveLoc[2](Arg2: &FeeConfig)
18Pop
19MoveLoc[6](Arg6: &AggPrice)
20Pop
21LdConst[0](u64: 100)
22Abort
B3:
23CopyLoc[1](Arg1: &mut Symbol)
24ImmBorrowField[13](Symbol.decrease_enabled: bool)
25ReadRef
26BrFalse(28)
B4:
27Branch(46)
B5:
28MoveLoc[0](Arg0: &mut Vault<Ty0>)
29Pop
30MoveLoc[1](Arg1: &mut Symbol)
31Pop
32MoveLoc[4](Arg4: &ReservingFeeModel)
33Pop
34MoveLoc[3](Arg3: &mut Position<Ty0>)
35Pop
36MoveLoc[7](Arg7: &AggPrice)
37Pop
38MoveLoc[5](Arg5: &FundingFeeModel)
39Pop
40MoveLoc[2](Arg2: &FeeConfig)
41Pop
42MoveLoc[6](Arg6: &AggPrice)
43Pop
44LdConst[5](u64: 105)
45Abort
B6:
46CopyLoc[4](Arg4: &ReservingFeeModel)
47Call object::id<ReservingFeeModel>(&ReservingFeeModel): ID
48CopyLoc[0](Arg0: &mut Vault<Ty0>)
49ImmBorrowFieldGeneric[5](Vault.reserving_fee_model: ID)
50ReadRef
51Eq
52BrFalse(54)
B7:
53Branch(72)
B8:
54MoveLoc[0](Arg0: &mut Vault<Ty0>)
55Pop
56MoveLoc[1](Arg1: &mut Symbol)
57Pop
58MoveLoc[4](Arg4: &ReservingFeeModel)
59Pop
60MoveLoc[3](Arg3: &mut Position<Ty0>)
61Pop
62MoveLoc[7](Arg7: &AggPrice)
63Pop
64MoveLoc[5](Arg5: &FundingFeeModel)
65Pop
66MoveLoc[2](Arg2: &FeeConfig)
67Pop
68MoveLoc[6](Arg6: &AggPrice)
69Pop
70LdConst[12](u64: 112)
71Abort
B9:
72CopyLoc[5](Arg5: &FundingFeeModel)
73Call object::id<FundingFeeModel>(&FundingFeeModel): ID
74CopyLoc[1](Arg1: &mut Symbol)
75ImmBorrowField[16](Symbol.funding_fee_model: ID)
76ReadRef
77Eq
78BrFalse(80)
B10:
79Branch(98)
B11:
80MoveLoc[0](Arg0: &mut Vault<Ty0>)
81Pop
82MoveLoc[1](Arg1: &mut Symbol)
83Pop
84MoveLoc[4](Arg4: &ReservingFeeModel)
85Pop
86MoveLoc[3](Arg3: &mut Position<Ty0>)
87Pop
88MoveLoc[7](Arg7: &AggPrice)
89Pop
90MoveLoc[5](Arg5: &FundingFeeModel)
91Pop
92MoveLoc[2](Arg2: &FeeConfig)
93Pop
94MoveLoc[6](Arg6: &AggPrice)
95Pop
96LdConst[13](u64: 113)
97Abort
B12:
98CopyLoc[0](Arg0: &mut Vault<Ty0>)
99MoveLoc[4](Arg4: &ReservingFeeModel)
100CopyLoc[14](Arg14: u64)
101Call refresh_vault<Ty0>(&mut Vault<Ty0>, &ReservingFeeModel, u64)
102CopyLoc[1](Arg1: &mut Symbol)
103FreezeRef
104CopyLoc[7](Arg7: &AggPrice)
105CopyLoc[11](Arg11: bool)
106Call symbol_delta_size(&Symbol, &AggPrice, bool): SDecimal
107StLoc[39](loc24: SDecimal)
108CopyLoc[1](Arg1: &mut Symbol)
109MoveLoc[5](Arg5: &FundingFeeModel)
110MoveLoc[39](loc24: SDecimal)
111MoveLoc[13](Arg13: Decimal)
112CopyLoc[14](Arg14: u64)
113Call refresh_symbol(&mut Symbol, &FundingFeeModel, SDecimal, Decimal, u64)
114MoveLoc[3](Arg3: &mut Position<Ty0>)
115CopyLoc[6](Arg6: &AggPrice)
116CopyLoc[7](Arg7: &AggPrice)
117MoveLoc[8](Arg8: Decimal)
118MoveLoc[11](Arg11: bool)
119CopyLoc[12](Arg12: u64)
120CopyLoc[0](Arg0: &mut Vault<Ty0>)
121ImmBorrowFieldGeneric[0](Vault.acc_reserving_rate: Rate)
122ReadRef
123CopyLoc[1](Arg1: &mut Symbol)
124ImmBorrowField[3](Symbol.acc_funding_rate: SRate)
125ReadRef
126MoveLoc[14](Arg14: u64)
127Call position::decrease_position<Ty0>(&mut Position<Ty0>, &AggPrice, &AggPrice, Decimal, bool, u64, Rate, SRate, u64): DecreasePositionResult<Ty0>
128Call position::unwrap_decrease_position_result<Ty0>(DecreasePositionResult<Ty0>): bool * bool * u64 * u64 * Decimal * Decimal * Decimal * Decimal * SDecimal * Balance<Ty0> * Balance<Ty0>
129StLoc[57](loc42: Balance<Ty0>)
130StLoc[58](loc43: Balance<Ty0>)
131StLoc[44](loc29: SDecimal)
132StLoc[52](loc37: Decimal)
133StLoc[35](loc20: Decimal)
134StLoc[51](loc36: Decimal)
135StLoc[36](loc21: Decimal)
136StLoc[37](loc22: u64)
137StLoc[56](loc41: u64)
138StLoc[45](loc30: bool)
139StLoc[34](loc19: bool)
140CopyLoc[35](loc20: Decimal)
141MoveLoc[9](Arg9: Rate)
142Call decimal::mul_with_rate(Decimal, Rate): Decimal
143StLoc[50](loc35: Decimal)
144CopyLoc[6](Arg6: &AggPrice)
145CopyLoc[50](loc35: Decimal)
146Call agg_price::value_to_coins(&AggPrice, Decimal): Decimal
147Call decimal::floor_u64(Decimal): u64
148StLoc[49](loc34: u64)
149ImmBorrowLoc[10](Arg10: Option<Rate>)
150Call option::is_some<Rate>(&Option<Rate>): bool
151BrFalse(159)
B13:
152CopyLoc[35](loc20: Decimal)
153ImmBorrowLoc[10](Arg10: Option<Rate>)
154Call option::borrow<Rate>(&Option<Rate>): &Rate
155ReadRef
156Call decimal::mul_with_rate(Decimal, Rate): Decimal
157StLoc[15](loc0: Decimal)
158Branch(161)
B14:
159Call decimal::zero(): Decimal
160StLoc[15](loc0: Decimal)
B15:
161MoveLoc[15](loc0: Decimal)
162StLoc[55](loc40: Decimal)
163CopyLoc[6](Arg6: &AggPrice)
164CopyLoc[55](loc40: Decimal)
165Call agg_price::value_to_coins(&AggPrice, Decimal): Decimal
166Call decimal::floor_u64(Decimal): u64
167StLoc[54](loc39: u64)
168MoveLoc[2](Arg2: &FeeConfig)
169Call fee::get_fee_rate(&FeeConfig): Rate
170StLoc[40](loc25: Rate)
171CopyLoc[35](loc20: Decimal)
172MoveLoc[40](loc25: Rate)
173Call decimal::mul_with_rate(Decimal, Rate): Decimal
174StLoc[43](loc28: Decimal)
175CopyLoc[6](Arg6: &AggPrice)
176CopyLoc[43](loc28: Decimal)
177Call agg_price::value_to_coins(&AggPrice, Decimal): Decimal
178Call decimal::floor_u64(Decimal): u64
179StLoc[42](loc27: u64)
180MoveLoc[50](loc35: Decimal)
181MoveLoc[43](loc28: Decimal)
182MoveLoc[55](loc40: Decimal)
183Call decimal::add(Decimal, Decimal): Decimal
184Call decimal::add(Decimal, Decimal): Decimal
185StLoc[47](loc32: Decimal)
186CopyLoc[42](loc27: u64)
187CopyLoc[49](loc34: u64)
188Add
189CopyLoc[54](loc39: u64)
190Add
191StLoc[46](loc31: u64)
192CopyLoc[0](Arg0: &mut Vault<Ty0>)
193ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
194ReadRef
195MoveLoc[37](loc22: u64)
196Sub
197CopyLoc[0](Arg0: &mut Vault<Ty0>)
198MutBorrowFieldGeneric[8](Vault.reserved_amount: u64)
199WriteRef
200CopyLoc[0](Arg0: &mut Vault<Ty0>)
201ImmBorrowFieldGeneric[1](Vault.unrealised_reserving_fee_amount: Decimal)
202ReadRef
203MoveLoc[51](loc36: Decimal)
204Call decimal::sub(Decimal, Decimal): Decimal
205CopyLoc[0](Arg0: &mut Vault<Ty0>)
206MutBorrowFieldGeneric[1](Vault.unrealised_reserving_fee_amount: Decimal)
207WriteRef
208CopyLoc[0](Arg0: &mut Vault<Ty0>)
209MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
210MoveLoc[58](loc43: Balance<Ty0>)
211Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
212MoveLoc[46](loc31: u64)
213Gt
214BrFalse(216)
B16:
215Branch(226)
B17:
216MoveLoc[0](Arg0: &mut Vault<Ty0>)
217Pop
218MoveLoc[1](Arg1: &mut Symbol)
219Pop
220MoveLoc[7](Arg7: &AggPrice)
221Pop
222MoveLoc[6](Arg6: &AggPrice)
223Pop
224LdConst[2](u64: 102)
225Abort
B18:
226CopyLoc[0](Arg0: &mut Vault<Ty0>)
227MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
228CopyLoc[49](loc34: u64)
229Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
230StLoc[48](loc33: Balance<Ty0>)
231CopyLoc[0](Arg0: &mut Vault<Ty0>)
232MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
233CopyLoc[42](loc27: u64)
234Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
235StLoc[41](loc26: Balance<Ty0>)
236CopyLoc[54](loc39: u64)
237LdU64(0)
238Gt
239BrFalse(247)
B19:
240MoveLoc[0](Arg0: &mut Vault<Ty0>)
241MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
242CopyLoc[54](loc39: u64)
243Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
244Call option::some<Balance<Ty0>>(Balance<Ty0>): Option<Balance<Ty0>>
245StLoc[26](loc11: Option<Balance<Ty0>>)
246Branch(251)
B20:
247MoveLoc[0](Arg0: &mut Vault<Ty0>)
248Pop
249Call option::none<Balance<Ty0>>(): Option<Balance<Ty0>>
250StLoc[26](loc11: Option<Balance<Ty0>>)
B21:
251MoveLoc[26](loc11: Option<Balance<Ty0>>)
252StLoc[53](loc38: Option<Balance<Ty0>>)
253CopyLoc[1](Arg1: &mut Symbol)
254ImmBorrowField[19](Symbol.opening_size: Decimal)
255ReadRef
256MoveLoc[36](loc21: Decimal)
257Call decimal::sub(Decimal, Decimal): Decimal
258CopyLoc[1](Arg1: &mut Symbol)
259MutBorrowField[19](Symbol.opening_size: Decimal)
260WriteRef
261CopyLoc[1](Arg1: &mut Symbol)
262ImmBorrowField[18](Symbol.opening_amount: u64)
263ReadRef
264CopyLoc[12](Arg12: u64)
265Sub
266CopyLoc[1](Arg1: &mut Symbol)
267MutBorrowField[18](Symbol.opening_amount: u64)
268WriteRef
269CopyLoc[1](Arg1: &mut Symbol)
270ImmBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
271ReadRef
272CopyLoc[44](loc29: SDecimal)
273Call sdecimal::sub(SDecimal, SDecimal): SDecimal
274CopyLoc[1](Arg1: &mut Symbol)
275MutBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
276WriteRef
277CopyLoc[45](loc30: bool)
278Not
279CopyLoc[6](Arg6: &AggPrice)
280CopyLoc[56](loc41: u64)
281Call agg_price::coins_to_value(&AggPrice, u64): Decimal
282Call sdecimal::from_decimal(bool, Decimal): SDecimal
283CopyLoc[35](loc20: Decimal)
284MoveLoc[47](loc32: Decimal)
285Call decimal::sub(Decimal, Decimal): Decimal
286CopyLoc[52](loc37: Decimal)
287Call decimal::add(Decimal, Decimal): Decimal
288Call sdecimal::sub_with_decimal(SDecimal, Decimal): SDecimal
289StLoc[38](loc23: SDecimal)
290CopyLoc[1](Arg1: &mut Symbol)
291ImmBorrowField[20](Symbol.realised_pnl: SDecimal)
292ReadRef
293CopyLoc[38](loc23: SDecimal)
294Call sdecimal::add(SDecimal, SDecimal): SDecimal
295MoveLoc[1](Arg1: &mut Symbol)
296MutBorrowField[20](Symbol.realised_pnl: SDecimal)
297WriteRef
298MoveLoc[57](loc42: Balance<Ty0>)
299StLoc[25](loc10: Balance<Ty0>)
300MoveLoc[48](loc33: Balance<Ty0>)
301StLoc[24](loc9: Balance<Ty0>)
302MoveLoc[41](loc26: Balance<Ty0>)
303StLoc[23](loc8: Balance<Ty0>)
304MoveLoc[53](loc38: Option<Balance<Ty0>>)
305StLoc[22](loc7: Option<Balance<Ty0>>)
306MoveLoc[6](Arg6: &AggPrice)
307Call agg_price::price_of(&AggPrice): Decimal
308StLoc[21](loc6: Decimal)
309MoveLoc[7](Arg7: &AggPrice)
310Call agg_price::price_of(&AggPrice): Decimal
311StLoc[20](loc5: Decimal)
312MoveLoc[12](Arg12: u64)
313StLoc[19](loc4: u64)
314MoveLoc[35](loc20: Decimal)
315StLoc[18](loc3: Decimal)
316MoveLoc[52](loc37: Decimal)
317StLoc[17](loc2: Decimal)
318MoveLoc[44](loc29: SDecimal)
319StLoc[16](loc1: SDecimal)
320MoveLoc[38](loc23: SDecimal)
321StLoc[33](loc18: SDecimal)
322MoveLoc[34](loc19: bool)
323StLoc[32](loc17: bool)
324MoveLoc[45](loc30: bool)
325StLoc[31](loc16: bool)
326MoveLoc[56](loc41: u64)
327StLoc[30](loc15: u64)
328MoveLoc[49](loc34: u64)
329StLoc[29](loc14: u64)
330MoveLoc[42](loc27: u64)
331StLoc[28](loc13: u64)
332CopyLoc[54](loc39: u64)
333LdU64(0)
334Gt
335BrFalse(340)
B22:
336MoveLoc[54](loc39: u64)
337Call option::some<u64>(u64): Option<u64>
338StLoc[27](loc12: Option<u64>)
339Branch(342)
B23:
340Call option::none<u64>(): Option<u64>
341StLoc[27](loc12: Option<u64>)
B24:
342MoveLoc[25](loc10: Balance<Ty0>)
343MoveLoc[24](loc9: Balance<Ty0>)
344MoveLoc[23](loc8: Balance<Ty0>)
345MoveLoc[22](loc7: Option<Balance<Ty0>>)
346MoveLoc[21](loc6: Decimal)
347MoveLoc[20](loc5: Decimal)
348MoveLoc[19](loc4: u64)
349MoveLoc[18](loc3: Decimal)
350MoveLoc[17](loc2: Decimal)
351MoveLoc[16](loc1: SDecimal)
352MoveLoc[33](loc18: SDecimal)
353MoveLoc[32](loc17: bool)
354MoveLoc[31](loc16: bool)
355MoveLoc[30](loc15: u64)
356MoveLoc[29](loc14: u64)
357MoveLoc[28](loc13: u64)
358MoveLoc[27](loc12: Option<u64>)
359Pack[5](DecreasePositionSuccessEvent)
360PackGeneric[2](DecreasePositionResult<Ty0>)
361Ret
}
 
public(friend) unwrap_decrease_position_result<Ty0>(Arg0: DecreasePositionResult<Ty0>): Balance<Ty0> * Balance<Ty0> * Balance<Ty0> * Option<Balance<Ty0>> * DecreasePositionSuccessEvent {
B0:
0MoveLoc[0](Arg0: DecreasePositionResult<Ty0>)
1UnpackGeneric[2](DecreasePositionResult<Ty0>)
2Ret
}
 
public(friend) decrease_reserved_from_position<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &mut Position<Ty0>, Arg2: &ReservingFeeModel, Arg3: u64, Arg4: u64): DecreaseReservedFromPositionEvent {
L5: loc0: Balance<Ty0>
B0:
0CopyLoc[2](Arg2: &ReservingFeeModel)
1Call object::id<ReservingFeeModel>(&ReservingFeeModel): ID
2CopyLoc[0](Arg0: &mut Vault<Ty0>)
3ImmBorrowFieldGeneric[5](Vault.reserving_fee_model: ID)
4ReadRef
5Eq
6BrFalse(8)
B1:
7Branch(16)
B2:
8MoveLoc[0](Arg0: &mut Vault<Ty0>)
9Pop
10MoveLoc[2](Arg2: &ReservingFeeModel)
11Pop
12MoveLoc[1](Arg1: &mut Position<Ty0>)
13Pop
14LdConst[12](u64: 112)
15Abort
B3:
16CopyLoc[0](Arg0: &mut Vault<Ty0>)
17MoveLoc[2](Arg2: &ReservingFeeModel)
18MoveLoc[4](Arg4: u64)
19Call refresh_vault<Ty0>(&mut Vault<Ty0>, &ReservingFeeModel, u64)
20MoveLoc[1](Arg1: &mut Position<Ty0>)
21CopyLoc[3](Arg3: u64)
22CopyLoc[0](Arg0: &mut Vault<Ty0>)
23ImmBorrowFieldGeneric[0](Vault.acc_reserving_rate: Rate)
24ReadRef
25Call position::decrease_reserved_from_position<Ty0>(&mut Position<Ty0>, u64, Rate): Balance<Ty0>
26StLoc[5](loc0: Balance<Ty0>)
27CopyLoc[0](Arg0: &mut Vault<Ty0>)
28ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
29ReadRef
30CopyLoc[3](Arg3: u64)
31Sub
32CopyLoc[0](Arg0: &mut Vault<Ty0>)
33MutBorrowFieldGeneric[8](Vault.reserved_amount: u64)
34WriteRef
35MoveLoc[0](Arg0: &mut Vault<Ty0>)
36MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
37MoveLoc[5](loc0: Balance<Ty0>)
38Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
39Pop
40MoveLoc[3](Arg3: u64)
41Pack[6](DecreaseReservedFromPositionEvent)
42Ret
}
 
public(friend) pledge_in_position<Ty0>(Arg0: &mut Position<Ty0>, Arg1: Balance<Ty0>): PledgeInPositionEvent {
L2: loc0: u64
B0:
0ImmBorrowLoc[1](Arg1: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2StLoc[2](loc0: u64)
3MoveLoc[0](Arg0: &mut Position<Ty0>)
4MoveLoc[1](Arg1: Balance<Ty0>)
5Call position::pledge_in_position<Ty0>(&mut Position<Ty0>, Balance<Ty0>)
6MoveLoc[2](loc0: u64)
7Pack[7](PledgeInPositionEvent)
8Ret
}
 
public(friend) redeem_from_position<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &mut Symbol, Arg2: &mut Position<Ty0>, Arg3: &ReservingFeeModel, Arg4: &FundingFeeModel, Arg5: &AggPrice, Arg6: &AggPrice, Arg7: bool, Arg8: u64, Arg9: Decimal, Arg10: u64): Balance<Ty0> * RedeemFromPositionEvent {
L11: loc0: SDecimal
L12: loc1: RedeemFromPositionEvent
L13: loc2: Balance<Ty0>
B0:
0CopyLoc[3](Arg3: &ReservingFeeModel)
1Call object::id<ReservingFeeModel>(&ReservingFeeModel): ID
2CopyLoc[0](Arg0: &mut Vault<Ty0>)
3ImmBorrowFieldGeneric[5](Vault.reserving_fee_model: ID)
4ReadRef
5Eq
6BrFalse(8)
B1:
7Branch(24)
B2:
8MoveLoc[0](Arg0: &mut Vault<Ty0>)
9Pop
10MoveLoc[1](Arg1: &mut Symbol)
11Pop
12MoveLoc[3](Arg3: &ReservingFeeModel)
13Pop
14MoveLoc[2](Arg2: &mut Position<Ty0>)
15Pop
16MoveLoc[6](Arg6: &AggPrice)
17Pop
18MoveLoc[4](Arg4: &FundingFeeModel)
19Pop
20MoveLoc[5](Arg5: &AggPrice)
21Pop
22LdConst[12](u64: 112)
23Abort
B3:
24CopyLoc[4](Arg4: &FundingFeeModel)
25Call object::id<FundingFeeModel>(&FundingFeeModel): ID
26CopyLoc[1](Arg1: &mut Symbol)
27ImmBorrowField[16](Symbol.funding_fee_model: ID)
28ReadRef
29Eq
30BrFalse(32)
B4:
31Branch(48)
B5:
32MoveLoc[0](Arg0: &mut Vault<Ty0>)
33Pop
34MoveLoc[1](Arg1: &mut Symbol)
35Pop
36MoveLoc[3](Arg3: &ReservingFeeModel)
37Pop
38MoveLoc[2](Arg2: &mut Position<Ty0>)
39Pop
40MoveLoc[6](Arg6: &AggPrice)
41Pop
42MoveLoc[4](Arg4: &FundingFeeModel)
43Pop
44MoveLoc[5](Arg5: &AggPrice)
45Pop
46LdConst[13](u64: 113)
47Abort
B6:
48CopyLoc[0](Arg0: &mut Vault<Ty0>)
49MoveLoc[3](Arg3: &ReservingFeeModel)
50CopyLoc[10](Arg10: u64)
51Call refresh_vault<Ty0>(&mut Vault<Ty0>, &ReservingFeeModel, u64)
52CopyLoc[1](Arg1: &mut Symbol)
53FreezeRef
54CopyLoc[6](Arg6: &AggPrice)
55CopyLoc[7](Arg7: bool)
56Call symbol_delta_size(&Symbol, &AggPrice, bool): SDecimal
57StLoc[11](loc0: SDecimal)
58CopyLoc[1](Arg1: &mut Symbol)
59MoveLoc[4](Arg4: &FundingFeeModel)
60MoveLoc[11](loc0: SDecimal)
61MoveLoc[9](Arg9: Decimal)
62CopyLoc[10](Arg10: u64)
63Call refresh_symbol(&mut Symbol, &FundingFeeModel, SDecimal, Decimal, u64)
64MoveLoc[2](Arg2: &mut Position<Ty0>)
65CopyLoc[5](Arg5: &AggPrice)
66CopyLoc[6](Arg6: &AggPrice)
67MoveLoc[7](Arg7: bool)
68CopyLoc[8](Arg8: u64)
69MoveLoc[0](Arg0: &mut Vault<Ty0>)
70ImmBorrowFieldGeneric[0](Vault.acc_reserving_rate: Rate)
71ReadRef
72MoveLoc[1](Arg1: &mut Symbol)
73ImmBorrowField[3](Symbol.acc_funding_rate: SRate)
74ReadRef
75MoveLoc[10](Arg10: u64)
76Call position::redeem_from_position<Ty0>(&mut Position<Ty0>, &AggPrice, &AggPrice, bool, u64, Rate, SRate, u64): Balance<Ty0>
77StLoc[13](loc2: Balance<Ty0>)
78MoveLoc[5](Arg5: &AggPrice)
79Call agg_price::price_of(&AggPrice): Decimal
80MoveLoc[6](Arg6: &AggPrice)
81Call agg_price::price_of(&AggPrice): Decimal
82MoveLoc[8](Arg8: u64)
83Pack[8](RedeemFromPositionEvent)
84StLoc[12](loc1: RedeemFromPositionEvent)
85MoveLoc[13](loc2: Balance<Ty0>)
86MoveLoc[12](loc1: RedeemFromPositionEvent)
87Ret
}
 
public(friend) liquidate_position<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &mut Symbol, Arg2: &mut Position<Ty0>, Arg3: &ReservingFeeModel, Arg4: &FundingFeeModel, Arg5: &AggPrice, Arg6: &AggPrice, Arg7: bool, Arg8: Decimal, Arg9: u64, Arg10: address): Balance<Ty0> * LiquidatePositionEvent {
L11: loc0: SDecimal
L12: loc1: SDecimal
L13: loc2: LiquidatePositionEvent
L14: loc3: SDecimal
L15: loc4: u64
L16: loc5: u64
L17: loc6: Decimal
L18: loc7: u64
L19: loc8: Decimal
L20: loc9: Decimal
L21: loc10: Balance<Ty0>
L22: loc11: Balance<Ty0>
L23: loc12: u64
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(21)
B2:
5MoveLoc[0](Arg0: &mut Vault<Ty0>)
6Pop
7MoveLoc[1](Arg1: &mut Symbol)
8Pop
9MoveLoc[3](Arg3: &ReservingFeeModel)
10Pop
11MoveLoc[2](Arg2: &mut Position<Ty0>)
12Pop
13MoveLoc[6](Arg6: &AggPrice)
14Pop
15MoveLoc[4](Arg4: &FundingFeeModel)
16Pop
17MoveLoc[5](Arg5: &AggPrice)
18Pop
19LdConst[0](u64: 100)
20Abort
B3:
21CopyLoc[1](Arg1: &mut Symbol)
22ImmBorrowField[14](Symbol.liquidate_enabled: bool)
23ReadRef
24BrFalse(26)
B4:
25Branch(42)
B5:
26MoveLoc[0](Arg0: &mut Vault<Ty0>)
27Pop
28MoveLoc[1](Arg1: &mut Symbol)
29Pop
30MoveLoc[3](Arg3: &ReservingFeeModel)
31Pop
32MoveLoc[2](Arg2: &mut Position<Ty0>)
33Pop
34MoveLoc[6](Arg6: &AggPrice)
35Pop
36MoveLoc[4](Arg4: &FundingFeeModel)
37Pop
38MoveLoc[5](Arg5: &AggPrice)
39Pop
40LdConst[6](u64: 106)
41Abort
B6:
42CopyLoc[3](Arg3: &ReservingFeeModel)
43Call object::id<ReservingFeeModel>(&ReservingFeeModel): ID
44CopyLoc[0](Arg0: &mut Vault<Ty0>)
45ImmBorrowFieldGeneric[5](Vault.reserving_fee_model: ID)
46ReadRef
47Eq
48BrFalse(50)
B7:
49Branch(66)
B8:
50MoveLoc[0](Arg0: &mut Vault<Ty0>)
51Pop
52MoveLoc[1](Arg1: &mut Symbol)
53Pop
54MoveLoc[3](Arg3: &ReservingFeeModel)
55Pop
56MoveLoc[2](Arg2: &mut Position<Ty0>)
57Pop
58MoveLoc[6](Arg6: &AggPrice)
59Pop
60MoveLoc[4](Arg4: &FundingFeeModel)
61Pop
62MoveLoc[5](Arg5: &AggPrice)
63Pop
64LdConst[12](u64: 112)
65Abort
B9:
66CopyLoc[4](Arg4: &FundingFeeModel)
67Call object::id<FundingFeeModel>(&FundingFeeModel): ID
68CopyLoc[1](Arg1: &mut Symbol)
69ImmBorrowField[16](Symbol.funding_fee_model: ID)
70ReadRef
71Eq
72BrFalse(74)
B10:
73Branch(90)
B11:
74MoveLoc[0](Arg0: &mut Vault<Ty0>)
75Pop
76MoveLoc[1](Arg1: &mut Symbol)
77Pop
78MoveLoc[3](Arg3: &ReservingFeeModel)
79Pop
80MoveLoc[2](Arg2: &mut Position<Ty0>)
81Pop
82MoveLoc[6](Arg6: &AggPrice)
83Pop
84MoveLoc[4](Arg4: &FundingFeeModel)
85Pop
86MoveLoc[5](Arg5: &AggPrice)
87Pop
88LdConst[13](u64: 113)
89Abort
B12:
90CopyLoc[0](Arg0: &mut Vault<Ty0>)
91MoveLoc[3](Arg3: &ReservingFeeModel)
92CopyLoc[9](Arg9: u64)
93Call refresh_vault<Ty0>(&mut Vault<Ty0>, &ReservingFeeModel, u64)
94CopyLoc[1](Arg1: &mut Symbol)
95FreezeRef
96CopyLoc[6](Arg6: &AggPrice)
97CopyLoc[7](Arg7: bool)
98Call symbol_delta_size(&Symbol, &AggPrice, bool): SDecimal
99StLoc[12](loc1: SDecimal)
100CopyLoc[1](Arg1: &mut Symbol)
101MoveLoc[4](Arg4: &FundingFeeModel)
102MoveLoc[12](loc1: SDecimal)
103MoveLoc[8](Arg8: Decimal)
104MoveLoc[9](Arg9: u64)
105Call refresh_symbol(&mut Symbol, &FundingFeeModel, SDecimal, Decimal, u64)
106MoveLoc[2](Arg2: &mut Position<Ty0>)
107CopyLoc[5](Arg5: &AggPrice)
108CopyLoc[6](Arg6: &AggPrice)
109MoveLoc[7](Arg7: bool)
110CopyLoc[0](Arg0: &mut Vault<Ty0>)
111ImmBorrowFieldGeneric[0](Vault.acc_reserving_rate: Rate)
112ReadRef
113CopyLoc[1](Arg1: &mut Symbol)
114ImmBorrowField[3](Symbol.acc_funding_rate: SRate)
115ReadRef
116Call position::liquidate_position<Ty0>(&mut Position<Ty0>, &AggPrice, &AggPrice, bool, Rate, SRate): u64 * u64 * u64 * u64 * Decimal * Decimal * Decimal * SDecimal * Balance<Ty0> * Balance<Ty0>
117StLoc[21](loc10: Balance<Ty0>)
118StLoc[22](loc11: Balance<Ty0>)
119StLoc[14](loc3: SDecimal)
120StLoc[20](loc9: Decimal)
121StLoc[19](loc8: Decimal)
122StLoc[17](loc6: Decimal)
123StLoc[18](loc7: u64)
124StLoc[16](loc5: u64)
125StLoc[23](loc12: u64)
126StLoc[15](loc4: u64)
127CopyLoc[0](Arg0: &mut Vault<Ty0>)
128ImmBorrowFieldGeneric[8](Vault.reserved_amount: u64)
129ReadRef
130MoveLoc[18](loc7: u64)
131Sub
132CopyLoc[0](Arg0: &mut Vault<Ty0>)
133MutBorrowFieldGeneric[8](Vault.reserved_amount: u64)
134WriteRef
135CopyLoc[0](Arg0: &mut Vault<Ty0>)
136ImmBorrowFieldGeneric[1](Vault.unrealised_reserving_fee_amount: Decimal)
137ReadRef
138MoveLoc[19](loc8: Decimal)
139Call decimal::sub(Decimal, Decimal): Decimal
140CopyLoc[0](Arg0: &mut Vault<Ty0>)
141MutBorrowFieldGeneric[1](Vault.unrealised_reserving_fee_amount: Decimal)
142WriteRef
143MoveLoc[0](Arg0: &mut Vault<Ty0>)
144MutBorrowFieldGeneric[7](Vault.liquidity: Balance<Ty0>)
145MoveLoc[22](loc11: Balance<Ty0>)
146Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
147Pop
148CopyLoc[1](Arg1: &mut Symbol)
149ImmBorrowField[19](Symbol.opening_size: Decimal)
150ReadRef
151CopyLoc[17](loc6: Decimal)
152Call decimal::sub(Decimal, Decimal): Decimal
153CopyLoc[1](Arg1: &mut Symbol)
154MutBorrowField[19](Symbol.opening_size: Decimal)
155WriteRef
156CopyLoc[1](Arg1: &mut Symbol)
157ImmBorrowField[18](Symbol.opening_amount: u64)
158ReadRef
159CopyLoc[16](loc5: u64)
160Sub
161CopyLoc[1](Arg1: &mut Symbol)
162MutBorrowField[18](Symbol.opening_amount: u64)
163WriteRef
164CopyLoc[1](Arg1: &mut Symbol)
165ImmBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
166ReadRef
167CopyLoc[14](loc3: SDecimal)
168Call sdecimal::sub(SDecimal, SDecimal): SDecimal
169CopyLoc[1](Arg1: &mut Symbol)
170MutBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
171WriteRef
172LdTrue
173CopyLoc[5](Arg5: &AggPrice)
174CopyLoc[23](loc12: u64)
175Call agg_price::coins_to_value(&AggPrice, u64): Decimal
176Call sdecimal::from_decimal(bool, Decimal): SDecimal
177CopyLoc[20](loc9: Decimal)
178Call sdecimal::sub_with_decimal(SDecimal, Decimal): SDecimal
179StLoc[11](loc0: SDecimal)
180CopyLoc[1](Arg1: &mut Symbol)
181ImmBorrowField[20](Symbol.realised_pnl: SDecimal)
182ReadRef
183CopyLoc[11](loc0: SDecimal)
184Call sdecimal::add(SDecimal, SDecimal): SDecimal
185MoveLoc[1](Arg1: &mut Symbol)
186MutBorrowField[20](Symbol.realised_pnl: SDecimal)
187WriteRef
188MoveLoc[10](Arg10: address)
189MoveLoc[5](Arg5: &AggPrice)
190Call agg_price::price_of(&AggPrice): Decimal
191MoveLoc[6](Arg6: &AggPrice)
192Call agg_price::price_of(&AggPrice): Decimal
193MoveLoc[17](loc6: Decimal)
194MoveLoc[20](loc9: Decimal)
195MoveLoc[14](loc3: SDecimal)
196MoveLoc[11](loc0: SDecimal)
197MoveLoc[23](loc12: u64)
198MoveLoc[15](loc4: u64)
199MoveLoc[16](loc5: u64)
200Pack[9](LiquidatePositionEvent)
201StLoc[13](loc2: LiquidatePositionEvent)
202MoveLoc[21](loc10: Balance<Ty0>)
203MoveLoc[13](loc2: LiquidatePositionEvent)
204Ret
}
 
public(friend) valuate_vault<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &ReservingFeeModel, Arg2: &AggPrice, Arg3: u64): Decimal {
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[3](Vault.enabled: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(13)
B2:
5MoveLoc[0](Arg0: &mut Vault<Ty0>)
6Pop
7MoveLoc[1](Arg1: &ReservingFeeModel)
8Pop
9MoveLoc[2](Arg2: &AggPrice)
10Pop
11LdConst[0](u64: 100)
12Abort
B3:
13CopyLoc[1](Arg1: &ReservingFeeModel)
14Call object::id<ReservingFeeModel>(&ReservingFeeModel): ID
15CopyLoc[0](Arg0: &mut Vault<Ty0>)
16ImmBorrowFieldGeneric[5](Vault.reserving_fee_model: ID)
17ReadRef
18Eq
19BrFalse(21)
B4:
20Branch(29)
B5:
21MoveLoc[0](Arg0: &mut Vault<Ty0>)
22Pop
23MoveLoc[1](Arg1: &ReservingFeeModel)
24Pop
25MoveLoc[2](Arg2: &AggPrice)
26Pop
27LdConst[12](u64: 112)
28Abort
B6:
29CopyLoc[0](Arg0: &mut Vault<Ty0>)
30MoveLoc[1](Arg1: &ReservingFeeModel)
31MoveLoc[3](Arg3: u64)
32Call refresh_vault<Ty0>(&mut Vault<Ty0>, &ReservingFeeModel, u64)
33MoveLoc[2](Arg2: &AggPrice)
34MoveLoc[0](Arg0: &mut Vault<Ty0>)
35FreezeRef
36Call vault_supply_amount<Ty0>(&Vault<Ty0>): Decimal
37Call decimal::floor_u64(Decimal): u64
38Call agg_price::coins_to_value(&AggPrice, u64): Decimal
39Ret
}
 
public(friend) valuate_symbol(Arg0: &mut Symbol, Arg1: &FundingFeeModel, Arg2: &AggPrice, Arg3: bool, Arg4: Decimal, Arg5: u64): SDecimal {
L6: loc0: SDecimal
B0:
0CopyLoc[1](Arg1: &FundingFeeModel)
1Call object::id<FundingFeeModel>(&FundingFeeModel): ID
2CopyLoc[0](Arg0: &mut Symbol)
3ImmBorrowField[16](Symbol.funding_fee_model: ID)
4ReadRef
5Eq
6BrFalse(8)
B1:
7Branch(16)
B2:
8MoveLoc[0](Arg0: &mut Symbol)
9Pop
10MoveLoc[2](Arg2: &AggPrice)
11Pop
12MoveLoc[1](Arg1: &FundingFeeModel)
13Pop
14LdConst[13](u64: 113)
15Abort
B3:
16CopyLoc[0](Arg0: &mut Symbol)
17FreezeRef
18MoveLoc[2](Arg2: &AggPrice)
19MoveLoc[3](Arg3: bool)
20Call symbol_delta_size(&Symbol, &AggPrice, bool): SDecimal
21StLoc[6](loc0: SDecimal)
22CopyLoc[0](Arg0: &mut Symbol)
23MoveLoc[1](Arg1: &FundingFeeModel)
24CopyLoc[6](loc0: SDecimal)
25MoveLoc[4](Arg4: Decimal)
26MoveLoc[5](Arg5: u64)
27Call refresh_symbol(&mut Symbol, &FundingFeeModel, SDecimal, Decimal, u64)
28MoveLoc[6](loc0: SDecimal)
29MoveLoc[0](Arg0: &mut Symbol)
30ImmBorrowField[4](Symbol.unrealised_funding_fee_value: SDecimal)
31ReadRef
32Call sdecimal::add(SDecimal, SDecimal): SDecimal
33Ret
}
 
Constants [
0 => u64: 100
1 => u64: 101
2 => u64: 102
3 => u64: 103
4 => u64: 104
5 => u64: 105
6 => u64: 106
7 => u64: 107
8 => u64: 108
9 => u64: 109
10 => u64: 110
11 => u64: 111
12 => u64: 112
13 => u64: 113
]
}