clearing_house
Module0x3ec7…efc7
- Move path
- 0x3ec7…efc7::clearing_house
- Functions
- 14087 public, 1 entry
- Structs
- 7
- Friend modules
- adlstop_orderstwap_orders
clearing_house
Bytecode8817 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7.clearing_house {
use 4e2df80a5e2fd0392878298c51ce15164222111ccea05504b9291b158f552677::authority;
use 4b4703a7581781d74a4c7b0fb0836b2a67f34f1a377fb81aab6f5cad29d78760::ifixed;
use 9237337d846fc90b0a7acbdee4ab91809298691873d28e1d64d91e6303ff6ba4::price_feed_storage;
use f453864f39b7c6122551f665d4fe961b8625853cf89bcae55be4b3b99e848126::ordered_map;
use 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7::account;
use 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7::authority as 0authority;
use 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7::events;
use 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7::keys;
use 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7::market;
use 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7::orderbook;
use 3ec740df8428aa9c93aaef7f8cc1542ac3194fd014826b51bfe245346d64efc7::registry;
use 9196fffe0341b2f0ca7424926b22d9e9e35b4807a1f625fc20eeea1382d08dec::position;
use 0000000000000000000000000000000000000000000000000000000000000001::ascii;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000001::u128;
use 0000000000000000000000000000000000000000000000000000000000000001::u64;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::coin_registry;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct ClearingHouse<phantom Ty0> has key {
id: UID,
version: u64,
paused: u8,
market_params: MarketParams,
market_state: MarketState,
orderbook: Orderbook
}
struct Vault<phantom Ty0> has store {
collateral_balance: Balance<Ty0>,
insurance_fund_balance: Balance<Ty0>
}
struct MarginRatioProposal has store {
maturity: u64,
margin_ratio_initial: u256,
margin_ratio_maintenance: u256
}
struct SettlementPrices has store {
base_price: Option<u256>,
collateral_price: Option<u256>,
enabled: bool
}
struct Executor has drop {
sender: address,
domain: Option<address>
}
struct SessionHotPotato<phantom Ty0> {
clearing_house: ClearingHouse<Ty0>,
account_id: u64,
timestamp_ms: u64,
collateral_price: u256,
mark_price: u256,
uses_priority_gas_price: bool,
margin_before: u256,
min_margin_before: u256,
position_base_before: u256,
total_open_interest: u256,
total_fees: u256,
taker_pending_cancelled: bool,
maker_events: vector<FilledMakerOrder>,
integrator_info: Option<IntegratorInfo>,
liqee_account_id: Option<u64>,
liquidator_fees: u256,
session_summary: SessionSummary
}
struct SessionSummary has copy, drop {
base_filled_ask: u256,
base_filled_bid: u256,
quote_filled_ask: u256,
quote_filled_bid: u256,
base_posted_ask: u256,
base_posted_bid: u256,
posted_orders: u64,
base_liquidated: u256,
quote_liquidated: u256,
is_liqee_long: bool,
bad_debt: u256
}
public version<Ty0>(Arg0: &ClearingHouse<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[0](ClearingHouse.version: u64)
2ReadRef
3Ret
}
public is_frozen<Ty0>(Arg0: &ClearingHouse<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::frozen_version(): FrozenVersionKey
3Call dynamic_field::exists_with_type<FrozenVersionKey, u64>(&UID, FrozenVersionKey): bool
4Ret
}
public market_params<Ty0>(Arg0: &ClearingHouse<Ty0>): &MarketParams {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
2Ret
}
public(friend) borrow_mut_market_params<Ty0>(Arg0: &mut ClearingHouse<Ty0>): &mut MarketParams {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MutBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
2Ret
}
public market_state<Ty0>(Arg0: &ClearingHouse<Ty0>): &MarketState {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
2Ret
}
public(friend) borrow_mut_market_state<Ty0>(Arg0: &mut ClearingHouse<Ty0>): &mut MarketState {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
2Ret
}
public market_pause_mode<Ty0>(Arg0: &ClearingHouse<Ty0>): u8 {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[4](ClearingHouse.paused: u8)
2ReadRef
3Ret
}
public is_market_paused<Ty0>(Arg0: &ClearingHouse<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[4](ClearingHouse.paused: u8)
2ReadRef
3LdU8(0)
4Neq
5Ret
}
public is_market_cancel_only<Ty0>(Arg0: &ClearingHouse<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[4](ClearingHouse.paused: u8)
2ReadRef
3LdU8(2)
4Eq
5Ret
}
public market_objects<Ty0>(Arg0: &ClearingHouse<Ty0>): &MarketParams * &MarketState {
B0:
0CopyLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
2MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
3ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
4Ret
}
public(friend) borrow_mut_market_objects<Ty0>(Arg0: &mut ClearingHouse<Ty0>): &MarketParams * &mut MarketState {
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
2MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
3MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
4Ret
}
public(friend) settlement_prices<Ty0>(Arg0: &ClearingHouse<Ty0>): &SettlementPrices {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::settlement_prices(): SettlementPricesKey
3Call dynamic_field::borrow<SettlementPricesKey, SettlementPrices>(&UID, SettlementPricesKey): &SettlementPrices
4Ret
}
public settlement_valuation_prices<Ty0>(Arg0: &ClearingHouse<Ty0>): bool * u256 * u256 {
L1: loc0: &SettlementPrices
B0:
0CopyLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::settlement_prices(): SettlementPricesKey
3Call dynamic_field::exists<SettlementPricesKey>(&UID, SettlementPricesKey): bool
4Not
5BrFalse(12)
B1:
6MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
7Pop
8LdFalse
9LdU256(0)
10LdU256(0)
11Ret
B2:
12MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
13ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
14Call keys::settlement_prices(): SettlementPricesKey
15Call dynamic_field::borrow<SettlementPricesKey, SettlementPrices>(&UID, SettlementPricesKey): &SettlementPrices
16StLoc[1](loc0: &SettlementPrices)
17CopyLoc[1](loc0: &SettlementPrices)
18ImmBorrowField[5](SettlementPrices.enabled: bool)
19ReadRef
20Not
21BrFalse(28)
B3:
22MoveLoc[1](loc0: &SettlementPrices)
23Pop
24LdFalse
25LdU256(0)
26LdU256(0)
27Ret
B4:
28LdTrue
29CopyLoc[1](loc0: &SettlementPrices)
30ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
31Call option::borrow<u256>(&Option<u256>): &u256
32ReadRef
33MoveLoc[1](loc0: &SettlementPrices)
34ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
35Call option::borrow<u256>(&Option<u256>): &u256
36ReadRef
37Ret
}
public(friend) borrow_mut_settlement_prices<Ty0>(Arg0: &mut ClearingHouse<Ty0>): &mut SettlementPrices {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::settlement_prices(): SettlementPricesKey
3Call dynamic_field::borrow_mut<SettlementPricesKey, SettlementPrices>(&mut UID, SettlementPricesKey): &mut SettlementPrices
4Ret
}
public(friend) closed_market_adl_prices<Ty0>(Arg0: &ClearingHouse<Ty0>): u256 * u256 {
L1: loc0: bool
L2: loc1: &SettlementPrices
B0:
0CopyLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call assert_market_is_closed<Ty0>(&ClearingHouse<Ty0>)
2MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
3Call settlement_prices<Ty0>(&ClearingHouse<Ty0>): &SettlementPrices
4StLoc[2](loc1: &SettlementPrices)
5CopyLoc[2](loc1: &SettlementPrices)
6ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
7Call option::is_some<u256>(&Option<u256>): bool
8BrFalse(14)
B1:
9CopyLoc[2](loc1: &SettlementPrices)
10ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
11Call option::is_some<u256>(&Option<u256>): bool
12StLoc[1](loc0: bool)
13Branch(16)
B2:
14LdFalse
15StLoc[1](loc0: bool)
B3:
16MoveLoc[1](loc0: bool)
17BrFalse(19)
B4:
18Branch(23)
B5:
19MoveLoc[2](loc1: &SettlementPrices)
20Pop
21LdU64(7)
22Abort
B6:
23CopyLoc[2](loc1: &SettlementPrices)
24ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
25Call option::borrow<u256>(&Option<u256>): &u256
26ReadRef
27MoveLoc[2](loc1: &SettlementPrices)
28ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
29Call option::borrow<u256>(&Option<u256>): &u256
30ReadRef
31Ret
}
public book_price<Ty0>(Arg0: &ClearingHouse<Ty0>): Option<u256> {
L1: loc0: Option<u64>
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call orderbook<Ty0>(&ClearingHouse<Ty0>): &Orderbook
2Call orderbook::book_price(&Orderbook): Option<u64>
3StLoc[1](loc0: Option<u64>)
4ImmBorrowLoc[1](loc0: Option<u64>)
5Call option::is_none<u64>(&Option<u64>): bool
6BrFalse(9)
B1:
7Call option::none<u256>(): Option<u256>
8Ret
B2:
9MoveLoc[1](loc0: Option<u64>)
10Call option::destroy_some<u64>(Option<u64>): u64
11LdU256(1000000000)
12Call ifixed::from_balance(u64, u256): u256
13Call option::some<u256>(u256): Option<u256>
14Ret
}
public best_price<Ty0>(Arg0: &ClearingHouse<Ty0>, Arg1: bool): Option<u256> {
L2: loc0: Option<u64>
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call orderbook<Ty0>(&ClearingHouse<Ty0>): &Orderbook
2MoveLoc[1](Arg1: bool)
3Call orderbook::best_price(&Orderbook, bool): Option<u64>
4StLoc[2](loc0: Option<u64>)
5ImmBorrowLoc[2](loc0: Option<u64>)
6Call option::is_none<u64>(&Option<u64>): bool
7BrFalse(10)
B1:
8Call option::none<u256>(): Option<u256>
9Ret
B2:
10MoveLoc[2](loc0: Option<u64>)
11Call option::destroy_some<u64>(Option<u64>): u64
12LdU256(1000000000)
13Call ifixed::from_balance(u64, u256): u256
14Call option::some<u256>(u256): Option<u256>
15Ret
}
public best_price_u64<Ty0>(Arg0: &ClearingHouse<Ty0>, Arg1: bool): Option<u64> {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call orderbook<Ty0>(&ClearingHouse<Ty0>): &Orderbook
2MoveLoc[1](Arg1: bool)
3Call orderbook::best_price(&Orderbook, bool): Option<u64>
4Ret
}
public mark_price<Ty0>(Arg0: &ClearingHouse<Ty0>, Arg1: &PriceFeedStorage, Arg2: &Clock): u256 {
L3: loc0: u256
L4: loc1: u256
L5: loc2: u256
L6: loc3: &MarketParams
L7: loc4: &MarketState
L8: loc5: u64
B0:
0CopyLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call market_objects<Ty0>(&ClearingHouse<Ty0>): &MarketParams * &MarketState
2StLoc[7](loc4: &MarketState)
3StLoc[6](loc3: &MarketParams)
4CopyLoc[6](loc3: &MarketParams)
5MoveLoc[1](Arg1: &PriceFeedStorage)
6CopyLoc[2](Arg2: &Clock)
7Call market::base_oracle_price_and_twap_price(&MarketParams, &PriceFeedStorage, &Clock): u256 * u256
8StLoc[5](loc2: u256)
9StLoc[4](loc1: u256)
10CopyLoc[6](loc3: &MarketParams)
11CopyLoc[4](loc1: u256)
12CopyLoc[5](loc2: u256)
13Call market::assert_index_twap_divergence_within_limit(&MarketParams, u256, u256)
14MoveLoc[2](Arg2: &Clock)
15Call clock::timestamp_ms(&Clock): u64
16StLoc[8](loc5: u64)
17MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
18Call orderbook<Ty0>(&ClearingHouse<Ty0>): &Orderbook
19MoveLoc[4](loc1: u256)
20Call orderbook::book_price_or_index(&Orderbook, u256): u256
21StLoc[3](loc0: u256)
22MoveLoc[7](loc4: &MarketState)
23MoveLoc[6](loc3: &MarketParams)
24MoveLoc[5](loc2: u256)
25MoveLoc[3](loc0: u256)
26MoveLoc[8](loc5: u64)
27Call market::calculate_mark_price(&MarketState, &MarketParams, u256, u256, u64): u256
28Ret
}
public create_client_order_id(Arg0: u64): Option<u64> {
B0:
0MoveLoc[0](Arg0: u64)
1Call option::some<u64>(u64): Option<u64>
2Ret
}
public market_vault<Ty0>(Arg0: &ClearingHouse<Ty0>): &Vault<Ty0> {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::market_vault(): MarketVaultKey
3Call dynamic_field::borrow<MarketVaultKey, Vault<Ty0>>(&UID, MarketVaultKey): &Vault<Ty0>
4Ret
}
public(friend) borrow_mut_market_vault<Ty0>(Arg0: &mut ClearingHouse<Ty0>): &mut Vault<Ty0> {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::market_vault(): MarketVaultKey
3Call dynamic_field::borrow_mut<MarketVaultKey, Vault<Ty0>>(&mut UID, MarketVaultKey): &mut Vault<Ty0>
4Ret
}
public collateral_and_insurance_fund_balances<Ty0>(Arg0: &ClearingHouse<Ty0>): u64 * u64 {
L1: loc0: &Vault<Ty0>
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call market_vault<Ty0>(&ClearingHouse<Ty0>): &Vault<Ty0>
2StLoc[1](loc0: &Vault<Ty0>)
3CopyLoc[1](loc0: &Vault<Ty0>)
4ImmBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
5Call balance::value<Ty0>(&Balance<Ty0>): u64
6MoveLoc[1](loc0: &Vault<Ty0>)
7ImmBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
8Call balance::value<Ty0>(&Balance<Ty0>): u64
9Ret
}
public orderbook<Ty0>(Arg0: &ClearingHouse<Ty0>): &Orderbook {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[7](ClearingHouse.orderbook: Orderbook)
2Ret
}
public(friend) borrow_mut_orderbook<Ty0>(Arg0: &mut ClearingHouse<Ty0>): &mut Orderbook {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MutBorrowFieldGeneric[7](ClearingHouse.orderbook: Orderbook)
2Ret
}
public position<Ty0>(Arg0: &ClearingHouse<Ty0>, Arg1: u64): &Position {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2MoveLoc[1](Arg1: u64)
3Call keys::position(u64): PositionKey
4Call dynamic_field::borrow<PositionKey, Position>(&UID, PositionKey): &Position
5Ret
}
public exists_position<Ty0>(Arg0: &ClearingHouse<Ty0>, Arg1: u64): bool {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2MoveLoc[1](Arg1: u64)
3Call keys::position(u64): PositionKey
4Call dynamic_field::exists<PositionKey>(&UID, PositionKey): bool
5Ret
}
public(friend) borrow_mut_position<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: u64): &mut Position {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
2MoveLoc[1](Arg1: u64)
3Call keys::position(u64): PositionKey
4Call dynamic_field::borrow_mut<PositionKey, Position>(&mut UID, PositionKey): &mut Position
5Ret
}
borrow_mut_position_from_id(Arg0: &mut UID, Arg1: u64): &mut Position {
B0:
0MoveLoc[0](Arg0: &mut UID)
1MoveLoc[1](Arg1: u64)
2Call keys::position(u64): PositionKey
3Call dynamic_field::borrow_mut<PositionKey, Position>(&mut UID, PositionKey): &mut Position
4Ret
}
public(friend) settle_position_funding_and_emit(Arg0: &mut Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: &ID, Arg5: u64) {
L6: loc0: u256
L7: loc1: u256
B0:
0MoveLoc[0](Arg0: &mut Position)
1MoveLoc[1](Arg1: u256)
2CopyLoc[2](Arg2: u256)
3CopyLoc[3](Arg3: u256)
4Call position::settle_position_funding(&mut Position, u256, u256, u256): bool * u256 * u256
5StLoc[6](loc0: u256)
6StLoc[7](loc1: u256)
7BrFalse(17)
B1:
8MoveLoc[4](Arg4: &ID)
9ReadRef
10MoveLoc[5](Arg5: u64)
11MoveLoc[7](loc1: u256)
12MoveLoc[6](loc0: u256)
13MoveLoc[2](Arg2: u256)
14MoveLoc[3](Arg3: u256)
15Call events::e15(ID, u64, u256, u256, u256, u256)
16Branch(19)
B2:
17MoveLoc[4](Arg4: &ID)
18Pop
B3:
19Ret
}
add_position<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: u64, Arg2: Position) {
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2CopyLoc[1](Arg1: u64)
3Call keys::position(u64): PositionKey
4Call dynamic_field::exists<PositionKey>(&UID, PositionKey): bool
5Not
6BrFalse(8)
B1:
7Branch(12)
B2:
8MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
9Pop
10LdU64(41)
11Abort
B3:
12MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
13MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
14MoveLoc[1](Arg1: u64)
15Call keys::position(u64): PositionKey
16MoveLoc[2](Arg2: Position)
17Call dynamic_field::add<PositionKey, Position>(&mut UID, PositionKey, Position)
18Ret
}
public collateral_to_deallocate_for_margin_ratio<Ty0>(Arg0: &ClearingHouse<Ty0>, Arg1: u64, Arg2: &PriceFeedStorage, Arg3: &PriceFeedStorage, Arg4: &Clock, Arg5: Option<u256>): u64 {
L6: loc0: u256
L7: loc1: u256
L8: loc2: u256
L9: loc3: u256
L10: loc4: u256
L11: loc5: u256
L12: loc6: u256
L13: loc7: u256
L14: loc8: u256
L15: loc9: u256
L16: loc10: &MarketParams
L17: loc11: &MarketState
L18: loc12: Option<u256>
L19: loc13: &Position
L20: loc14: u256
B0:
0CopyLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call market_params<Ty0>(&ClearingHouse<Ty0>): &MarketParams
2StLoc[16](loc10: &MarketParams)
3CopyLoc[0](Arg0: &ClearingHouse<Ty0>)
4Call market_state<Ty0>(&ClearingHouse<Ty0>): &MarketState
5StLoc[17](loc11: &MarketState)
6CopyLoc[16](loc10: &MarketParams)
7Call market::scaling_factor(&MarketParams): u256
8StLoc[20](loc14: u256)
9CopyLoc[16](loc10: &MarketParams)
10Call market::margin_ratio_initial(&MarketParams): u256
11StLoc[15](loc9: u256)
12CopyLoc[16](loc10: &MarketParams)
13Call market::collateral_haircut(&MarketParams): u256
14StLoc[7](loc1: u256)
15CopyLoc[17](loc11: &MarketState)
16Call market::cum_funding_rates(&MarketState): u256 * u256
17StLoc[10](loc4: u256)
18StLoc[9](loc3: u256)
19CopyLoc[16](loc10: &MarketParams)
20MoveLoc[3](Arg3: &PriceFeedStorage)
21CopyLoc[4](Arg4: &Clock)
22Call market::collateral_oracle_price(&MarketParams, &PriceFeedStorage, &Clock): u256
23StLoc[8](loc2: u256)
24CopyLoc[16](loc10: &MarketParams)
25MoveLoc[2](Arg2: &PriceFeedStorage)
26CopyLoc[4](Arg4: &Clock)
27Call market::base_oracle_price_and_twap_price(&MarketParams, &PriceFeedStorage, &Clock): u256 * u256
28StLoc[12](loc6: u256)
29StLoc[11](loc5: u256)
30CopyLoc[16](loc10: &MarketParams)
31CopyLoc[11](loc5: u256)
32CopyLoc[12](loc6: u256)
33Call market::assert_index_twap_divergence_within_limit(&MarketParams, u256, u256)
34MoveLoc[17](loc11: &MarketState)
35MoveLoc[16](loc10: &MarketParams)
36MoveLoc[12](loc6: u256)
37CopyLoc[0](Arg0: &ClearingHouse<Ty0>)
38Call orderbook<Ty0>(&ClearingHouse<Ty0>): &Orderbook
39MoveLoc[11](loc5: u256)
40Call orderbook::book_price_or_index(&Orderbook, u256): u256
41MoveLoc[4](Arg4: &Clock)
42Call clock::timestamp_ms(&Clock): u64
43Call market::calculate_mark_price(&MarketState, &MarketParams, u256, u256, u64): u256
44StLoc[14](loc8: u256)
45MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
46MoveLoc[1](Arg1: u64)
47Call position<Ty0>(&ClearingHouse<Ty0>, u64): &Position
48StLoc[19](loc13: &Position)
49MoveLoc[5](Arg5: Option<u256>)
50StLoc[18](loc12: Option<u256>)
51ImmBorrowLoc[18](loc12: Option<u256>)
52Call option::is_some<u256>(&Option<u256>): bool
53BrFalse(58)
B1:
54MoveLoc[18](loc12: Option<u256>)
55Call option::destroy_some<u256>(Option<u256>): u256
56StLoc[6](loc0: u256)
57Branch(63)
B2:
58MoveLoc[18](loc12: Option<u256>)
59Call option::destroy_none<u256>(Option<u256>)
60CopyLoc[19](loc13: &Position)
61Call position::initial_margin_ratio(&Position): u256
62StLoc[6](loc0: u256)
B3:
63MoveLoc[6](loc0: u256)
64StLoc[13](loc7: u256)
65CopyLoc[13](loc7: u256)
66MoveLoc[15](loc9: u256)
67Call ifixed::greater_than_eq(u256, u256): bool
68BrFalse(70)
B4:
69Branch(74)
B5:
70MoveLoc[19](loc13: &Position)
71Pop
72LdU64(42)
73Abort
B6:
74MoveLoc[19](loc13: &Position)
75MoveLoc[8](loc2: u256)
76MoveLoc[14](loc8: u256)
77MoveLoc[13](loc7: u256)
78MoveLoc[9](loc3: u256)
79MoveLoc[10](loc4: u256)
80MoveLoc[7](loc1: u256)
81Call position::compute_free_collateral_with_fundings(&Position, u256, u256, u256, u256, u256, u256): u256
82MoveLoc[20](loc14: u256)
83Call ifixed::to_balance(u256, u256): u64
84Ret
}
public account_id<Ty0>(Arg0: &SessionHotPotato<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[8](SessionHotPotato.account_id: u64)
2ReadRef
3Ret
}
public clearing_house<Ty0>(Arg0: &SessionHotPotato<Ty0>): &ClearingHouse<Ty0> {
B0:
0MoveLoc[0](Arg0: &SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2Ret
}
public no_domain_executor(Arg0: &TxContext): Executor {
B0:
0MoveLoc[0](Arg0: &TxContext)
1Call tx_context::sender(&TxContext): address
2Call option::none<address>(): Option<address>
3Pack[4](Executor)
4Ret
}
public domain_executor(Arg0: &UID, Arg1: &TxContext): Executor {
B0:
0MoveLoc[1](Arg1: &TxContext)
1Call tx_context::sender(&TxContext): address
2MoveLoc[0](Arg0: &UID)
3Call object::uid_to_address(&UID): address
4Call option::some<address>(address): Option<address>
5Pack[4](Executor)
6Ret
}
public executor_sender(Arg0: &Executor): address {
B0:
0MoveLoc[0](Arg0: &Executor)
1ImmBorrowField[13](Executor.sender: address)
2ReadRef
3Ret
}
public executor_domain(Arg0: &Executor): Option<address> {
B0:
0MoveLoc[0](Arg0: &Executor)
1ImmBorrowField[14](Executor.domain: Option<address>)
2ReadRef
3Ret
}
public mark_price_in_session<Ty0>(Arg0: &SessionHotPotato<Ty0>): u256 {
B0:
0MoveLoc[0](Arg0: &SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[10](SessionHotPotato.mark_price: u256)
2ReadRef
3Ret
}
public summary<Ty0>(Arg0: &SessionHotPotato<Ty0>): &SessionSummary {
B0:
0MoveLoc[0](Arg0: &SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
2Ret
}
public tick_rounded_liquidation_mark_price<Ty0>(Arg0: &SessionHotPotato<Ty0>): u64 {
L1: loc0: u64
B0:
0CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
3Call market::tick_size(&MarketParams): u64
4StLoc[1](loc0: u64)
5CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
6ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
7ImmBorrowField[17](SessionSummary.quote_liquidated: u256)
8ReadRef
9MoveLoc[0](Arg0: &SessionHotPotato<Ty0>)
10ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
11ImmBorrowField[18](SessionSummary.base_liquidated: u256)
12ReadRef
13Call ifixed::div(u256, u256): u256
14LdU256(1000000000)
15Call ifixed::to_balance(u256, u256): u64
16CopyLoc[1](loc0: u64)
17Div
18MoveLoc[1](loc0: u64)
19Mul
20Ret
}
session_has_activity(Arg0: &SessionSummary, Arg1: &vector<FilledMakerOrder>, Arg2: &Option<u64>): bool {
L3: loc0: bool
B0:
0MoveLoc[2](Arg2: &Option<u64>)
1Call option::is_some<u64>(&Option<u64>): bool
2BrFalse(10)
B1:
3MoveLoc[0](Arg0: &SessionSummary)
4Pop
5MoveLoc[1](Arg1: &vector<FilledMakerOrder>)
6Pop
7LdTrue
8StLoc[3](loc0: bool)
9Branch(25)
B2:
10MoveLoc[0](Arg0: &SessionSummary)
11ImmBorrowField[19](SessionSummary.posted_orders: u64)
12ReadRef
13LdU64(0)
14Neq
15BrFalse(21)
B3:
16MoveLoc[1](Arg1: &vector<FilledMakerOrder>)
17Pop
18LdTrue
19StLoc[3](loc0: bool)
20Branch(25)
B4:
21MoveLoc[1](Arg1: &vector<FilledMakerOrder>)
22Call vector::is_empty<FilledMakerOrder>(&vector<FilledMakerOrder>): bool
23Not
24StLoc[3](loc0: bool)
B5:
25MoveLoc[3](loc0: bool)
26Ret
}
public filled_base_and_quote(Arg0: &SessionSummary, Arg1: bool): u256 * u256 {
L2: loc0: u256
L3: loc1: u256
B0:
0MoveLoc[1](Arg1: bool)
1BrFalse(11)
B1:
2CopyLoc[0](Arg0: &SessionSummary)
3ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
4ReadRef
5MoveLoc[0](Arg0: &SessionSummary)
6ImmBorrowField[21](SessionSummary.quote_filled_ask: u256)
7ReadRef
8StLoc[3](loc1: u256)
9StLoc[2](loc0: u256)
10Branch(19)
B2:
11CopyLoc[0](Arg0: &SessionSummary)
12ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
13ReadRef
14MoveLoc[0](Arg0: &SessionSummary)
15ImmBorrowField[23](SessionSummary.quote_filled_bid: u256)
16ReadRef
17StLoc[3](loc1: u256)
18StLoc[2](loc0: u256)
B3:
19MoveLoc[2](loc0: u256)
20MoveLoc[3](loc1: u256)
21Ret
}
public base_filled_bid(Arg0: &SessionSummary): u256 {
B0:
0MoveLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
2ReadRef
3Ret
}
public base_filled_ask(Arg0: &SessionSummary): u256 {
B0:
0MoveLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
2ReadRef
3Ret
}
public posted_orders(Arg0: &SessionSummary): u64 {
B0:
0MoveLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[19](SessionSummary.posted_orders: u64)
2ReadRef
3Ret
}
public execution_price(Arg0: &SessionSummary, Arg1: bool): u256 {
L2: loc0: bool
L3: loc1: bool
L4: loc2: u256
L5: loc3: u256
B0:
0CopyLoc[1](Arg1: bool)
1BrFalse(9)
B1:
2CopyLoc[0](Arg0: &SessionSummary)
3ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
4ReadRef
5LdU256(0)
6Neq
7StLoc[2](loc0: bool)
8Branch(11)
B2:
9LdFalse
10StLoc[2](loc0: bool)
B3:
11MoveLoc[2](loc0: bool)
12BrFalse(22)
B4:
13CopyLoc[0](Arg0: &SessionSummary)
14ImmBorrowField[21](SessionSummary.quote_filled_ask: u256)
15ReadRef
16MoveLoc[0](Arg0: &SessionSummary)
17ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
18ReadRef
19Call ifixed::div(u256, u256): u256
20StLoc[5](loc3: u256)
21Branch(51)
B5:
22MoveLoc[1](Arg1: bool)
23Not
24BrFalse(32)
B6:
25CopyLoc[0](Arg0: &SessionSummary)
26ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
27ReadRef
28LdU256(0)
29Neq
30StLoc[3](loc1: bool)
31Branch(34)
B7:
32LdFalse
33StLoc[3](loc1: bool)
B8:
34MoveLoc[3](loc1: bool)
35BrFalse(45)
B9:
36CopyLoc[0](Arg0: &SessionSummary)
37ImmBorrowField[23](SessionSummary.quote_filled_bid: u256)
38ReadRef
39MoveLoc[0](Arg0: &SessionSummary)
40ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
41ReadRef
42Call ifixed::div(u256, u256): u256
43StLoc[4](loc2: u256)
44Branch(49)
B10:
45MoveLoc[0](Arg0: &SessionSummary)
46Pop
47LdU256(0)
48StLoc[4](loc2: u256)
B11:
49MoveLoc[4](loc2: u256)
50StLoc[5](loc3: u256)
B12:
51MoveLoc[5](loc3: u256)
52Ret
}
public posted_base_by_side(Arg0: &SessionSummary): u256 * u256 {
B0:
0CopyLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[24](SessionSummary.base_posted_ask: u256)
2ReadRef
3MoveLoc[0](Arg0: &SessionSummary)
4ImmBorrowField[25](SessionSummary.base_posted_bid: u256)
5ReadRef
6Ret
}
public liquidation_base_quote_and_side(Arg0: &SessionSummary): u256 * u256 * bool {
B0:
0CopyLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[18](SessionSummary.base_liquidated: u256)
2ReadRef
3CopyLoc[0](Arg0: &SessionSummary)
4ImmBorrowField[17](SessionSummary.quote_liquidated: u256)
5ReadRef
6MoveLoc[0](Arg0: &SessionSummary)
7ImmBorrowField[26](SessionSummary.is_liqee_long: bool)
8ReadRef
9Ret
}
public liquidated_size(Arg0: &SessionSummary): u64 {
B0:
0MoveLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[18](SessionSummary.base_liquidated: u256)
2ReadRef
3LdU256(1000000000)
4Call ifixed::to_balance(u256, u256): u64
5Ret
}
public liquidation_mark_price(Arg0: &SessionSummary): u256 {
B0:
0CopyLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[17](SessionSummary.quote_liquidated: u256)
2ReadRef
3MoveLoc[0](Arg0: &SessionSummary)
4ImmBorrowField[18](SessionSummary.base_liquidated: u256)
5ReadRef
6Call ifixed::div(u256, u256): u256
7Ret
}
public liquidation_mark_price_b9(Arg0: &SessionSummary): u64 {
B0:
0CopyLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[17](SessionSummary.quote_liquidated: u256)
2ReadRef
3MoveLoc[0](Arg0: &SessionSummary)
4ImmBorrowField[18](SessionSummary.base_liquidated: u256)
5ReadRef
6Call ifixed::div(u256, u256): u256
7LdU256(1000000000)
8Call ifixed::to_balance(u256, u256): u64
9Ret
}
public liquidation_bad_debt(Arg0: &SessionSummary): u256 {
B0:
0MoveLoc[0](Arg0: &SessionSummary)
1ImmBorrowField[27](SessionSummary.bad_debt: u256)
2ReadRef
3Ret
}
create_session_summary(): SessionSummary {
B0:
0LdU256(0)
1LdU256(0)
2LdU256(0)
3LdU256(0)
4LdU256(0)
5LdU256(0)
6LdU64(0)
7LdU256(0)
8LdU256(0)
9LdTrue
10LdU256(0)
11Pack[6](SessionSummary)
12Ret
}
public create_orderbook<Ty0, Ty1>(Arg0: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg1: &Registry, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: u64, Arg7: u64, Arg8: &mut TxContext): Orderbook {
B0:
0CopyLoc[1](Arg1: &Registry)
1Call registry::assert_package_version(&Registry)
2MoveLoc[1](Arg1: &Registry)
3MoveLoc[0](Arg0: &AuthorityCap<VENDOR<Ty0>, Ty1>)
4Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
5MoveLoc[2](Arg2: u64)
6MoveLoc[3](Arg3: u64)
7MoveLoc[4](Arg4: u64)
8MoveLoc[5](Arg5: u64)
9MoveLoc[6](Arg6: u64)
10MoveLoc[7](Arg7: u64)
11MoveLoc[8](Arg8: &mut TxContext)
12Call orderbook::create_orderbook(u64, u64, u64, u64, u64, u64, &mut TxContext): Orderbook
13Ret
}
public create_clearing_house<Ty0, Ty1, Ty2>(Arg0: Orderbook, Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>, Arg2: &mut Registry, Arg3: &CoinMetadata<Ty0>, Arg4: &Clock, Arg5: &PriceFeedStorage, Arg6: &PriceFeedStorage, Arg7: u16, Arg8: u16, Arg9: u256, Arg10: u256, Arg11: u64, Arg12: u64, Arg13: u64, Arg14: u64, Arg15: u64, Arg16: u64, Arg17: u256, Arg18: u256, Arg19: u256, Arg20: u256, Arg21: u64, Arg22: u64, Arg23: &mut TxContext): ClearingHouse<Ty0> {
B0:
0MoveLoc[0](Arg0: Orderbook)
1MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
2MoveLoc[2](Arg2: &mut Registry)
3MoveLoc[4](Arg4: &Clock)
4MoveLoc[5](Arg5: &PriceFeedStorage)
5MoveLoc[6](Arg6: &PriceFeedStorage)
6MoveLoc[7](Arg7: u16)
7MoveLoc[8](Arg8: u16)
8MoveLoc[3](Arg3: &CoinMetadata<Ty0>)
9Call coin::get_decimals<Ty0>(&CoinMetadata<Ty0>): u8
10CastU64
11MoveLoc[9](Arg9: u256)
12MoveLoc[10](Arg10: u256)
13MoveLoc[11](Arg11: u64)
14MoveLoc[12](Arg12: u64)
15MoveLoc[13](Arg13: u64)
16MoveLoc[14](Arg14: u64)
17MoveLoc[15](Arg15: u64)
18MoveLoc[16](Arg16: u64)
19MoveLoc[17](Arg17: u256)
20MoveLoc[18](Arg18: u256)
21MoveLoc[19](Arg19: u256)
22MoveLoc[20](Arg20: u256)
23MoveLoc[21](Arg21: u64)
24MoveLoc[22](Arg22: u64)
25MoveLoc[23](Arg23: &mut TxContext)
26Call create_clearing_house_<Ty0, Ty1, Ty2>(Orderbook, &AuthorityCap<VENDOR<Ty1>, Ty2>, &mut Registry, &Clock, &PriceFeedStorage, &PriceFeedStorage, u16, u16, u64, u256, u256, u64, u64, u64, u64, u64, u64, u256, u256, u256, u256, u64, u64, &mut TxContext): ClearingHouse<Ty0>
27Ret
}
public create_clearing_house_with_currency<Ty0, Ty1, Ty2>(Arg0: Orderbook, Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>, Arg2: &mut Registry, Arg3: &Currency<Ty0>, Arg4: &Clock, Arg5: &PriceFeedStorage, Arg6: &PriceFeedStorage, Arg7: u16, Arg8: u16, Arg9: u256, Arg10: u256, Arg11: u64, Arg12: u64, Arg13: u64, Arg14: u64, Arg15: u64, Arg16: u64, Arg17: u256, Arg18: u256, Arg19: u256, Arg20: u256, Arg21: u64, Arg22: u64, Arg23: &mut TxContext): ClearingHouse<Ty0> {
B0:
0MoveLoc[0](Arg0: Orderbook)
1MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
2MoveLoc[2](Arg2: &mut Registry)
3MoveLoc[4](Arg4: &Clock)
4MoveLoc[5](Arg5: &PriceFeedStorage)
5MoveLoc[6](Arg6: &PriceFeedStorage)
6MoveLoc[7](Arg7: u16)
7MoveLoc[8](Arg8: u16)
8MoveLoc[3](Arg3: &Currency<Ty0>)
9Call coin_registry::decimals<Ty0>(&Currency<Ty0>): u8
10CastU64
11MoveLoc[9](Arg9: u256)
12MoveLoc[10](Arg10: u256)
13MoveLoc[11](Arg11: u64)
14MoveLoc[12](Arg12: u64)
15MoveLoc[13](Arg13: u64)
16MoveLoc[14](Arg14: u64)
17MoveLoc[15](Arg15: u64)
18MoveLoc[16](Arg16: u64)
19MoveLoc[17](Arg17: u256)
20MoveLoc[18](Arg18: u256)
21MoveLoc[19](Arg19: u256)
22MoveLoc[20](Arg20: u256)
23MoveLoc[21](Arg21: u64)
24MoveLoc[22](Arg22: u64)
25MoveLoc[23](Arg23: &mut TxContext)
26Call create_clearing_house_<Ty0, Ty1, Ty2>(Orderbook, &AuthorityCap<VENDOR<Ty1>, Ty2>, &mut Registry, &Clock, &PriceFeedStorage, &PriceFeedStorage, u16, u16, u64, u256, u256, u64, u64, u64, u64, u64, u64, u256, u256, u256, u256, u64, u64, &mut TxContext): ClearingHouse<Ty0>
27Ret
}
B0:
0MoveLoc[0](Arg0: ClearingHouse<Ty0>)
1Call transfer::share_object<ClearingHouse<Ty0>>(ClearingHouse<Ty0>)
2Ret
}
public admin_pause_market<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<PACKAGE, PAUSE_GUARDIAN>, Arg2: &Registry, Arg3: u8) {
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5MoveLoc[2](Arg2: &Registry)
6MoveLoc[1](Arg1: &AuthorityCap<PACKAGE, PAUSE_GUARDIAN>)
7Call registry::assert_authority_cap_is_authorized<PACKAGE, PAUSE_GUARDIAN>(&Registry, &AuthorityCap<PACKAGE, PAUSE_GUARDIAN>)
8CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
9FreezeRef
10Call assert_market_is_not_closed<Ty0>(&ClearingHouse<Ty0>)
11CopyLoc[3](Arg3: u8)
12Call assert_valid_pause_mode(u8)
13MoveLoc[3](Arg3: u8)
14MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
15MutBorrowFieldGeneric[4](ClearingHouse.paused: u8)
16WriteRef
17Ret
}
public admin_resume_market<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<PACKAGE, Ty1>, Arg2: &Registry) {
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
6FreezeRef
7Call assert_market_is_not_closed<Ty0>(&ClearingHouse<Ty0>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<PACKAGE, Ty1>)
10Call registry::assert_admin_or_authorized_assistant_authority_cap<PACKAGE, Ty1>(&Registry, &AuthorityCap<PACKAGE, Ty1>)
11LdU8(0)
12MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
13MutBorrowFieldGeneric[4](ClearingHouse.paused: u8)
14WriteRef
15Ret
}
entry upgrade_version<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &Registry, Arg2: &AuthorityCap<PACKAGE, Ty1>) {
B0:
0MoveLoc[1](Arg1: &Registry)
1MoveLoc[2](Arg2: &AuthorityCap<PACKAGE, Ty1>)
2Call registry::assert_admin_or_authorized_assistant_authority_cap<PACKAGE, Ty1>(&Registry, &AuthorityCap<PACKAGE, Ty1>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4ImmBorrowFieldGeneric[0](ClearingHouse.version: u64)
5ReadRef
6LdU64(1)
7Lt
8BrFalse(10)
B1:
9Branch(14)
B2:
10MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11Pop
12LdU64(2)
13Abort
B3:
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
15ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
16Call object::uid_to_inner(&UID): ID
17LdU64(1)
18Call events::e05(ID, u64)
19LdU64(1)
20MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
21MutBorrowFieldGeneric[0](ClearingHouse.version: u64)
22WriteRef
23Ret
}
public unfreeze_clearing_house<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<PACKAGE, ADMIN>) {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call is_frozen<Ty0>(&ClearingHouse<Ty0>): bool
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
6Pop
7LdU64(55)
8Abort
B3:
9CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
10MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
11Call keys::frozen_version(): FrozenVersionKey
12Call dynamic_field::remove<FrozenVersionKey, u64>(&mut UID, FrozenVersionKey): u64
13StLoc[2](loc0: u64)
14CopyLoc[2](loc0: u64)
15LdU64(1)
16Le
17BrFalse(19)
B4:
18Branch(23)
B5:
19MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
20Pop
21LdU64(56)
22Abort
B6:
23CopyLoc[2](loc0: u64)
24CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
25MutBorrowFieldGeneric[0](ClearingHouse.version: u64)
26WriteRef
27MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
28ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
29Call object::uid_to_inner(&UID): ID
30MoveLoc[2](loc0: u64)
31Call events::e08(ID, u64)
32Ret
}
public freeze_clearing_house<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &Registry, Arg2: &AuthorityCap<PACKAGE, FREEZE_GUARDIAN>) {
L3: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3MoveLoc[1](Arg1: &Registry)
4CopyLoc[2](Arg2: &AuthorityCap<PACKAGE, FREEZE_GUARDIAN>)
5Call registry::assert_authority_cap_is_authorized<PACKAGE, FREEZE_GUARDIAN>(&Registry, &AuthorityCap<PACKAGE, FREEZE_GUARDIAN>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7ImmBorrowFieldGeneric[0](ClearingHouse.version: u64)
8ReadRef
9StLoc[3](loc0: u64)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
12Call keys::frozen_version(): FrozenVersionKey
13CopyLoc[3](loc0: u64)
14Call dynamic_field::add<FrozenVersionKey, u64>(&mut UID, FrozenVersionKey, u64)
15LdU64(18446744073709551615)
16CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
17MutBorrowFieldGeneric[0](ClearingHouse.version: u64)
18WriteRef
19MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
20ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
21Call object::uid_to_inner(&UID): ID
22MoveLoc[3](loc0: u64)
23MoveLoc[2](Arg2: &AuthorityCap<PACKAGE, FREEZE_GUARDIAN>)
24Call object::id<AuthorityCap<PACKAGE, FREEZE_GUARDIAN>>(&AuthorityCap<PACKAGE, FREEZE_GUARDIAN>): ID
25Call events::e07(ID, u64, ID)
26Ret
}
public pause_market<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>, Arg2: &Registry, Arg3: u8) {
L4: loc0: TypeName
L5: loc1: TypeName
L6: loc2: TypeName
L7: loc3: bool
L8: loc4: TypeName
L9: loc5: TypeName
L10: loc6: TypeName
L11: loc7: TypeName
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
6FreezeRef
7Call assert_market_is_not_closed<Ty0>(&ClearingHouse<Ty0>)
8CopyLoc[2](Arg2: &Registry)
9CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty1, Ty2>(&Registry, &AuthorityCap<VENDOR<Ty1>, Ty2>, &ID)
14Call type_name::with_defining_ids<Ty2>(): TypeName
15StLoc[11](loc7: TypeName)
16CopyLoc[11](loc7: TypeName)
17StLoc[4](loc0: TypeName)
18Call type_name::with_defining_ids<ADMIN>(): TypeName
19StLoc[8](loc4: TypeName)
20MoveLoc[4](loc0: TypeName)
21MoveLoc[8](loc4: TypeName)
22Eq
23BrFalse(27)
B1:
24LdTrue
25StLoc[7](loc3: bool)
26Branch(46)
B2:
27CopyLoc[11](loc7: TypeName)
28StLoc[5](loc1: TypeName)
29Call type_name::with_defining_ids<ASSISTANT>(): TypeName
30StLoc[9](loc5: TypeName)
31MoveLoc[5](loc1: TypeName)
32MoveLoc[9](loc5: TypeName)
33Eq
34BrFalse(38)
B3:
35LdTrue
36StLoc[7](loc3: bool)
37Branch(46)
B4:
38MoveLoc[11](loc7: TypeName)
39StLoc[6](loc2: TypeName)
40Call type_name::with_defining_ids<PAUSE_GUARDIAN>(): TypeName
41StLoc[10](loc6: TypeName)
42MoveLoc[6](loc2: TypeName)
43MoveLoc[10](loc6: TypeName)
44Eq
45StLoc[7](loc3: bool)
B5:
46MoveLoc[7](loc3: bool)
47BrFalse(49)
B6:
48Branch(57)
B7:
49MoveLoc[2](Arg2: &Registry)
50Pop
51MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
52Pop
53MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
54Pop
55LdU64(50)
56Abort
B8:
57MoveLoc[2](Arg2: &Registry)
58MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
59Call registry::assert_authority_cap_is_authorized<VENDOR<Ty1>, Ty2>(&Registry, &AuthorityCap<VENDOR<Ty1>, Ty2>)
60CopyLoc[3](Arg3: u8)
61Call assert_valid_pause_mode(u8)
62MoveLoc[3](Arg3: u8)
63MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
64MutBorrowFieldGeneric[4](ClearingHouse.paused: u8)
65WriteRef
66Ret
}
public resume_market<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>, Arg2: &Registry) {
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
6FreezeRef
7Call assert_market_is_not_closed<Ty0>(&ClearingHouse<Ty0>)
8CopyLoc[2](Arg2: &Registry)
9CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
10Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty1>, Ty2>(&Registry, &AuthorityCap<VENDOR<Ty1>, Ty2>)
11MoveLoc[2](Arg2: &Registry)
12MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
13CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
14ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
15Call object::uid_as_inner(&UID): &ID
16Call registry::assert_vendor_has_ownership_over_clearing_house<Ty1, Ty2>(&Registry, &AuthorityCap<VENDOR<Ty1>, Ty2>, &ID)
17LdU8(0)
18MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
19MutBorrowFieldGeneric[4](ClearingHouse.paused: u8)
20WriteRef
21Ret
}
public register_market<Ty0, Ty1, Ty2>(Arg0: &mut Registry, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &ClearingHouse<Ty2>) {
L3: loc0: &MarketParams
B0:
0CopyLoc[2](Arg2: &ClearingHouse<Ty2>)
1Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
2CopyLoc[0](Arg0: &mut Registry)
3FreezeRef
4Call registry::assert_package_version(&Registry)
5CopyLoc[0](Arg0: &mut Registry)
6FreezeRef
7CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
8Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
9CopyLoc[0](Arg0: &mut Registry)
10FreezeRef
11MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
12CopyLoc[2](Arg2: &ClearingHouse<Ty2>)
13ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
14Call object::uid_as_inner(&UID): &ID
15Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
16CopyLoc[2](Arg2: &ClearingHouse<Ty2>)
17Call market_params<Ty2>(&ClearingHouse<Ty2>): &MarketParams
18StLoc[3](loc0: &MarketParams)
19MoveLoc[0](Arg0: &mut Registry)
20CopyLoc[3](loc0: &MarketParams)
21Call market::base_storage_id(&MarketParams): u32
22CopyLoc[3](loc0: &MarketParams)
23Call market::base_source_id(&MarketParams): u16
24CopyLoc[3](loc0: &MarketParams)
25Call market::collateral_storage_id(&MarketParams): u32
26CopyLoc[3](loc0: &MarketParams)
27Call market::collateral_source_id(&MarketParams): u16
28MoveLoc[3](loc0: &MarketParams)
29Call market::scaling_factor(&MarketParams): u256
30MoveLoc[2](Arg2: &ClearingHouse<Ty2>)
31ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
32Call object::uid_to_inner(&UID): ID
33Call registry::register_market<Ty2>(&mut Registry, u32, u16, u32, u16, u256, ID)
34Ret
}
public remove_registered_market<Ty0, Ty1, Ty2>(Arg0: &mut Registry, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &ClearingHouse<Ty2>) {
B0:
0CopyLoc[2](Arg2: &ClearingHouse<Ty2>)
1Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
2CopyLoc[0](Arg0: &mut Registry)
3FreezeRef
4Call registry::assert_package_version(&Registry)
5CopyLoc[0](Arg0: &mut Registry)
6FreezeRef
7CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
8Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
9CopyLoc[0](Arg0: &mut Registry)
10FreezeRef
11MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
12CopyLoc[2](Arg2: &ClearingHouse<Ty2>)
13ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
14Call object::uid_as_inner(&UID): &ID
15Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
16MoveLoc[0](Arg0: &mut Registry)
17MoveLoc[2](Arg2: &ClearingHouse<Ty2>)
18ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
19Call object::uid_to_inner(&UID): ID
20Call registry::remove_registered_market<Ty2>(&mut Registry, ID)
21Ret
}
public close_market<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry, Arg3: &Clock) {
L4: loc0: ID
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
15FreezeRef
16Call assert_market_is_not_closed<Ty2>(&ClearingHouse<Ty2>)
17LdU8(1)
18CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
19MutBorrowFieldGeneric[13](ClearingHouse.paused: u8)
20WriteRef
21CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
22ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
23Call object::uid_to_inner(&UID): ID
24StLoc[4](loc0: ID)
25CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
26ImmBorrowFieldGeneric[14](ClearingHouse.market_params: MarketParams)
27CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
28MutBorrowFieldGeneric[15](ClearingHouse.market_state: MarketState)
29MoveLoc[3](Arg3: &Clock)
30Call clock::timestamp_ms(&Clock): u64
31ImmBorrowLoc[4](loc0: ID)
32Call market::try_update_fundings(&MarketParams, &mut MarketState, u64, &ID)
33CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
34MutBorrowFieldGeneric[12](ClearingHouse.id: UID)
35Call keys::settlement_prices(): SettlementPricesKey
36Call option::none<u256>(): Option<u256>
37Call option::none<u256>(): Option<u256>
38LdFalse
39Pack[3](SettlementPrices)
40Call dynamic_field::add<SettlementPricesKey, SettlementPrices>(&mut UID, SettlementPricesKey, SettlementPrices)
41MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
42ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
43Call object::uid_to_inner(&UID): ID
44Call events::e09(ID)
45Ret
}
public set_settlement_prices<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry, Arg3: u256, Arg4: u256) {
L5: loc0: ID
L6: loc1: &mut SettlementPrices
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
15FreezeRef
16Call assert_market_is_closed<Ty2>(&ClearingHouse<Ty2>)
17CopyLoc[3](Arg3: u256)
18CopyLoc[4](Arg4: u256)
19Call assert_settlement_prices(u256, u256)
20CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
21FreezeRef
22Call settlement_prices<Ty2>(&ClearingHouse<Ty2>): &SettlementPrices
23ImmBorrowField[5](SettlementPrices.enabled: bool)
24ReadRef
25Not
26BrFalse(28)
B1:
27Branch(32)
B2:
28MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
29Pop
30LdU64(12)
31Abort
B3:
32CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
33ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
34Call object::uid_to_inner(&UID): ID
35StLoc[5](loc0: ID)
36MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
37Call borrow_mut_settlement_prices<Ty2>(&mut ClearingHouse<Ty2>): &mut SettlementPrices
38StLoc[6](loc1: &mut SettlementPrices)
39CopyLoc[3](Arg3: u256)
40Call option::some<u256>(u256): Option<u256>
41CopyLoc[6](loc1: &mut SettlementPrices)
42MutBorrowField[6](SettlementPrices.base_price: Option<u256>)
43WriteRef
44CopyLoc[4](Arg4: u256)
45Call option::some<u256>(u256): Option<u256>
46MoveLoc[6](loc1: &mut SettlementPrices)
47MutBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
48WriteRef
49MoveLoc[5](loc0: ID)
50MoveLoc[3](Arg3: u256)
51MoveLoc[4](Arg4: u256)
52LdFalse
53Call events::e10(ID, u256, u256, bool)
54Ret
}
public enable_settlement<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry) {
L3: loc0: bool
L4: loc1: ID
L5: loc2: &mut SettlementPrices
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
15FreezeRef
16Call assert_market_is_closed<Ty2>(&ClearingHouse<Ty2>)
17CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
18ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
19Call object::uid_to_inner(&UID): ID
20StLoc[4](loc1: ID)
21MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
22Call borrow_mut_settlement_prices<Ty2>(&mut ClearingHouse<Ty2>): &mut SettlementPrices
23StLoc[5](loc2: &mut SettlementPrices)
24CopyLoc[5](loc2: &mut SettlementPrices)
25ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
26Call option::is_some<u256>(&Option<u256>): bool
27BrFalse(33)
B1:
28CopyLoc[5](loc2: &mut SettlementPrices)
29ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
30Call option::is_some<u256>(&Option<u256>): bool
31StLoc[3](loc0: bool)
32Branch(35)
B2:
33LdFalse
34StLoc[3](loc0: bool)
B3:
35MoveLoc[3](loc0: bool)
36BrFalse(38)
B4:
37Branch(42)
B5:
38MoveLoc[5](loc2: &mut SettlementPrices)
39Pop
40LdU64(7)
41Abort
B6:
42LdTrue
43CopyLoc[5](loc2: &mut SettlementPrices)
44MutBorrowField[5](SettlementPrices.enabled: bool)
45WriteRef
46MoveLoc[4](loc1: ID)
47CopyLoc[5](loc2: &mut SettlementPrices)
48ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
49Call option::borrow<u256>(&Option<u256>): &u256
50ReadRef
51MoveLoc[5](loc2: &mut SettlementPrices)
52ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
53Call option::borrow<u256>(&Option<u256>): &u256
54ReadRef
55LdTrue
56Call events::e10(ID, u256, u256, bool)
57Ret
}
public set_fee_params<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry, Arg3: Option<u256>, Arg4: Option<u256>, Arg5: Option<u256>, Arg6: Option<u256>, Arg7: Option<Option<u256>>) {
L8: loc0: ID
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8CopyLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
15ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
16Call object::uid_to_inner(&UID): ID
17StLoc[8](loc0: ID)
18MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
19Call borrow_mut_market_params<Ty2>(&mut ClearingHouse<Ty2>): &mut MarketParams
20MoveLoc[2](Arg2: &Registry)
21Call registry::config(&Registry): &Config
22ImmBorrowLoc[8](loc0: ID)
23MoveLoc[3](Arg3: Option<u256>)
24MoveLoc[4](Arg4: Option<u256>)
25MoveLoc[5](Arg5: Option<u256>)
26MoveLoc[6](Arg6: Option<u256>)
27MoveLoc[7](Arg7: Option<Option<u256>>)
28Call market::set_fee_params(&mut MarketParams, &Config, &ID, Option<u256>, Option<u256>, Option<u256>, Option<u256>, Option<Option<u256>>)
29Ret
}
public set_twap_params<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry, Arg3: Option<u64>, Arg4: Option<u64>, Arg5: Option<u64>, Arg6: Option<u64>, Arg7: Option<u64>, Arg8: Option<u64>, Arg9: &Clock) {
L10: loc0: ID
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
4FreezeRef
5Call assert_market_is_not_paused<Ty2>(&ClearingHouse<Ty2>)
6CopyLoc[2](Arg2: &Registry)
7Call registry::assert_package_version(&Registry)
8CopyLoc[2](Arg2: &Registry)
9CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10Call registry::assert_admin_or_authorized_assistant_or_maintenance_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
11CopyLoc[2](Arg2: &Registry)
12MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
13CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
14ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
15Call object::uid_as_inner(&UID): &ID
16Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
17CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
18ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
19Call object::uid_to_inner(&UID): ID
20StLoc[10](loc0: ID)
21CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
22ImmBorrowFieldGeneric[14](ClearingHouse.market_params: MarketParams)
23CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
24MutBorrowFieldGeneric[15](ClearingHouse.market_state: MarketState)
25MoveLoc[9](Arg9: &Clock)
26Call clock::timestamp_ms(&Clock): u64
27ImmBorrowLoc[10](loc0: ID)
28Call market::try_update_fundings(&MarketParams, &mut MarketState, u64, &ID)
29MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
30Call borrow_mut_market_params<Ty2>(&mut ClearingHouse<Ty2>): &mut MarketParams
31MoveLoc[2](Arg2: &Registry)
32Call registry::config(&Registry): &Config
33ImmBorrowLoc[10](loc0: ID)
34MoveLoc[3](Arg3: Option<u64>)
35MoveLoc[4](Arg4: Option<u64>)
36MoveLoc[5](Arg5: Option<u64>)
37MoveLoc[6](Arg6: Option<u64>)
38MoveLoc[7](Arg7: Option<u64>)
39MoveLoc[8](Arg8: Option<u64>)
40Call market::set_twap_params(&mut MarketParams, &Config, &ID, Option<u64>, Option<u64>, Option<u64>, Option<u64>, Option<u64>, Option<u64>)
41Ret
}
public set_core_params<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry, Arg3: Option<u64>, Arg4: Option<u64>, Arg5: Option<u256>) {
L6: loc0: ID
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
15ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
16Call object::uid_to_inner(&UID): ID
17StLoc[6](loc0: ID)
18MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
19Call borrow_mut_market_params<Ty2>(&mut ClearingHouse<Ty2>): &mut MarketParams
20ImmBorrowLoc[6](loc0: ID)
21MoveLoc[3](Arg3: Option<u64>)
22MoveLoc[4](Arg4: Option<u64>)
23MoveLoc[5](Arg5: Option<u256>)
24Call market::set_core_params(&mut MarketParams, &ID, Option<u64>, Option<u64>, Option<u256>)
25Ret
}
public set_risk_limit_params<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry, Arg3: Option<u256>, Arg4: Option<u64>, Arg5: Option<u256>, Arg6: Option<u256>, Arg7: Option<u256>, Arg8: Option<u256>, Arg9: Option<u256>, Arg10: Option<u256>, Arg11: Option<u256>) {
L12: loc0: ID
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8CopyLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
15ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
16Call object::uid_to_inner(&UID): ID
17StLoc[12](loc0: ID)
18MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
19Call borrow_mut_market_params<Ty2>(&mut ClearingHouse<Ty2>): &mut MarketParams
20MoveLoc[2](Arg2: &Registry)
21Call registry::config(&Registry): &Config
22ImmBorrowLoc[12](loc0: ID)
23MoveLoc[3](Arg3: Option<u256>)
24MoveLoc[4](Arg4: Option<u64>)
25MoveLoc[5](Arg5: Option<u256>)
26MoveLoc[6](Arg6: Option<u256>)
27MoveLoc[7](Arg7: Option<u256>)
28MoveLoc[8](Arg8: Option<u256>)
29MoveLoc[9](Arg9: Option<u256>)
30MoveLoc[10](Arg10: Option<u256>)
31MoveLoc[11](Arg11: Option<u256>)
32Call market::set_risk_limit_params(&mut MarketParams, &Config, &ID, Option<u256>, Option<u64>, Option<u256>, Option<u256>, Option<u256>, Option<u256>, Option<u256>, Option<u256>, Option<u256>)
33Ret
}
public set_base_oracle_params<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &mut Registry, Arg3: &PriceFeedStorage, Arg4: Option<u16>, Arg5: Option<u64>) {
L6: loc0: u16
L7: loc1: ID
L8: loc2: u16
L9: loc3: u32
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &mut Registry)
4FreezeRef
5Call registry::assert_package_version(&Registry)
6CopyLoc[2](Arg2: &mut Registry)
7FreezeRef
8CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
9Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[2](Arg2: &mut Registry)
11FreezeRef
12MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
13CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
14ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
15Call object::uid_as_inner(&UID): &ID
16Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
17CopyLoc[3](Arg3: &PriceFeedStorage)
18Call price_feed_storage::storage_id(&PriceFeedStorage): u32
19StLoc[9](loc3: u32)
20ImmBorrowLoc[4](Arg4: Option<u16>)
21Call option::is_some<u16>(&Option<u16>): bool
22BrFalse(28)
B1:
23ImmBorrowLoc[4](Arg4: Option<u16>)
24Call option::borrow<u16>(&Option<u16>): &u16
25ReadRef
26StLoc[6](loc0: u16)
27Branch(33)
B2:
28CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
29FreezeRef
30Call market_params<Ty2>(&ClearingHouse<Ty2>): &MarketParams
31Call market::base_source_id(&MarketParams): u16
32StLoc[6](loc0: u16)
B3:
33MoveLoc[6](loc0: u16)
34StLoc[8](loc2: u16)
35MoveLoc[3](Arg3: &PriceFeedStorage)
36CopyLoc[8](loc2: u16)
37Call price_feed_storage::contains(&PriceFeedStorage, u16): bool
38BrFalse(40)
B4:
39Branch(46)
B5:
40MoveLoc[2](Arg2: &mut Registry)
41Pop
42MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
43Pop
44LdU64(17)
45Abort
B6:
46CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
47ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
48Call object::uid_to_inner(&UID): ID
49StLoc[7](loc1: ID)
50MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
51Call borrow_mut_market_params<Ty2>(&mut ClearingHouse<Ty2>): &mut MarketParams
52CopyLoc[2](Arg2: &mut Registry)
53FreezeRef
54Call registry::config(&Registry): &Config
55ImmBorrowLoc[7](loc1: ID)
56CopyLoc[9](loc3: u32)
57CopyLoc[8](loc2: u16)
58Call option::some<u16>(u16): Option<u16>
59MoveLoc[5](Arg5: Option<u64>)
60Call market::set_base_oracle_params(&mut MarketParams, &Config, &ID, u32, Option<u16>, Option<u64>)
61MoveLoc[2](Arg2: &mut Registry)
62MoveLoc[7](loc1: ID)
63MoveLoc[9](loc3: u32)
64MoveLoc[8](loc2: u16)
65Call registry::set_base_oracle_params_<Ty2>(&mut Registry, ID, u32, u16)
66Ret
}
public set_collateral_oracle_params<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<PACKAGE, Ty1>, Arg2: &mut Registry, Arg3: &PriceFeedStorage, Arg4: Option<u16>, Arg5: Option<u64>) {
L6: loc0: u16
L7: loc1: ID
L8: loc2: u16
L9: loc3: u32
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &mut Registry)
4FreezeRef
5Call registry::assert_package_version(&Registry)
6CopyLoc[2](Arg2: &mut Registry)
7FreezeRef
8MoveLoc[1](Arg1: &AuthorityCap<PACKAGE, Ty1>)
9Call registry::assert_admin_or_authorized_assistant_authority_cap<PACKAGE, Ty1>(&Registry, &AuthorityCap<PACKAGE, Ty1>)
10CopyLoc[3](Arg3: &PriceFeedStorage)
11Call price_feed_storage::storage_id(&PriceFeedStorage): u32
12StLoc[9](loc3: u32)
13ImmBorrowLoc[4](Arg4: Option<u16>)
14Call option::is_some<u16>(&Option<u16>): bool
15BrFalse(21)
B1:
16ImmBorrowLoc[4](Arg4: Option<u16>)
17Call option::borrow<u16>(&Option<u16>): &u16
18ReadRef
19StLoc[6](loc0: u16)
20Branch(26)
B2:
21CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
22FreezeRef
23Call market_params<Ty0>(&ClearingHouse<Ty0>): &MarketParams
24Call market::collateral_source_id(&MarketParams): u16
25StLoc[6](loc0: u16)
B3:
26MoveLoc[6](loc0: u16)
27StLoc[8](loc2: u16)
28MoveLoc[3](Arg3: &PriceFeedStorage)
29CopyLoc[8](loc2: u16)
30Call price_feed_storage::contains(&PriceFeedStorage, u16): bool
31BrFalse(33)
B4:
32Branch(39)
B5:
33MoveLoc[2](Arg2: &mut Registry)
34Pop
35MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
36Pop
37LdU64(17)
38Abort
B6:
39CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
40ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
41Call object::uid_to_inner(&UID): ID
42StLoc[7](loc1: ID)
43MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
44Call borrow_mut_market_params<Ty0>(&mut ClearingHouse<Ty0>): &mut MarketParams
45CopyLoc[2](Arg2: &mut Registry)
46FreezeRef
47Call registry::config(&Registry): &Config
48ImmBorrowLoc[7](loc1: ID)
49CopyLoc[9](loc3: u32)
50CopyLoc[8](loc2: u16)
51Call option::some<u16>(u16): Option<u16>
52MoveLoc[5](Arg5: Option<u64>)
53Call market::set_collateral_oracle_params(&mut MarketParams, &Config, &ID, u32, Option<u16>, Option<u64>)
54MoveLoc[2](Arg2: &mut Registry)
55MoveLoc[7](loc1: ID)
56MoveLoc[9](loc3: u32)
57MoveLoc[8](loc2: u16)
58Call registry::set_collateral_oracle_params_<Ty0>(&mut Registry, ID, u32, u16)
59Ret
}
public create_margin_ratios_proposal<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry, Arg3: u64, Arg4: u256, Arg5: u256, Arg6: &Clock) {
L7: loc0: bool
L8: loc1: u256
L9: loc2: u256
L10: loc3: MarginRatioProposal
L11: loc4: &Config
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8CopyLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
15ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
16Call keys::margin_ratio_proposal(): MarginRatioProposalKey
17Call dynamic_field::exists<MarginRatioProposalKey>(&UID, MarginRatioProposalKey): bool
18Not
19BrFalse(21)
B1:
20Branch(29)
B2:
21MoveLoc[2](Arg2: &Registry)
22Pop
23MoveLoc[6](Arg6: &Clock)
24Pop
25MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
26Pop
27LdU64(25)
28Abort
B3:
29MoveLoc[2](Arg2: &Registry)
30Call registry::config(&Registry): &Config
31StLoc[11](loc4: &Config)
32CopyLoc[11](loc4: &Config)
33Call registry::min_proposal_delay_ms(&Config): u64
34CopyLoc[3](Arg3: u64)
35Le
36BrFalse(43)
B4:
37CopyLoc[3](Arg3: u64)
38MoveLoc[11](loc4: &Config)
39Call registry::max_proposal_delay_ms(&Config): u64
40Le
41StLoc[7](loc0: bool)
42Branch(47)
B5:
43MoveLoc[11](loc4: &Config)
44Pop
45LdFalse
46StLoc[7](loc0: bool)
B6:
47MoveLoc[7](loc0: bool)
48BrFalse(50)
B7:
49Branch(56)
B8:
50MoveLoc[6](Arg6: &Clock)
51Pop
52MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
53Pop
54LdU64(27)
55Abort
B9:
56CopyLoc[4](Arg4: u256)
57CopyLoc[5](Arg5: u256)
58Call market::assert_margin_ratios(u256, u256)
59CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
60ImmBorrowFieldGeneric[14](ClearingHouse.market_params: MarketParams)
61Call market::liquidation_fee_rates(&MarketParams): u256 * u256
62StLoc[8](loc1: u256)
63StLoc[9](loc2: u256)
64CopyLoc[5](Arg5: u256)
65MoveLoc[9](loc2: u256)
66MoveLoc[8](loc1: u256)
67Call market::assert_liquidation_fees_against_mmr(u256, u256, u256)
68MoveLoc[6](Arg6: &Clock)
69Call clock::timestamp_ms(&Clock): u64
70MoveLoc[3](Arg3: u64)
71Add
72MoveLoc[4](Arg4: u256)
73MoveLoc[5](Arg5: u256)
74Pack[2](MarginRatioProposal)
75StLoc[10](loc3: MarginRatioProposal)
76MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
77MutBorrowFieldGeneric[12](ClearingHouse.id: UID)
78Call keys::margin_ratio_proposal(): MarginRatioProposalKey
79MoveLoc[10](loc3: MarginRatioProposal)
80Call dynamic_field::add<MarginRatioProposalKey, MarginRatioProposal>(&mut UID, MarginRatioProposalKey, MarginRatioProposal)
81Ret
}
public delete_margin_ratios_proposal<Ty0, Ty1, Ty2>(Arg0: &mut ClearingHouse<Ty2>, Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>, Arg2: &Registry) {
L3: loc0: MarginRatioProposalKey
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
1FreezeRef
2Call assert_package_version<Ty2>(&ClearingHouse<Ty2>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
7Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty0>, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty0>, Ty1>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
11ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty0, Ty1>(&Registry, &AuthorityCap<VENDOR<Ty0>, Ty1>, &ID)
14Call keys::margin_ratio_proposal(): MarginRatioProposalKey
15StLoc[3](loc0: MarginRatioProposalKey)
16CopyLoc[0](Arg0: &mut ClearingHouse<Ty2>)
17ImmBorrowFieldGeneric[12](ClearingHouse.id: UID)
18CopyLoc[3](loc0: MarginRatioProposalKey)
19Call dynamic_field::exists<MarginRatioProposalKey>(&UID, MarginRatioProposalKey): bool
20BrFalse(22)
B1:
21Branch(26)
B2:
22MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
23Pop
24LdU64(28)
25Abort
B3:
26MoveLoc[0](Arg0: &mut ClearingHouse<Ty2>)
27MutBorrowFieldGeneric[12](ClearingHouse.id: UID)
28MoveLoc[3](loc0: MarginRatioProposalKey)
29Call dynamic_field::remove<MarginRatioProposalKey, MarginRatioProposal>(&mut UID, MarginRatioProposalKey): MarginRatioProposal
30Unpack[2](MarginRatioProposal)
31Pop
32Pop
33Pop
34Ret
}
public commit_margin_ratios_proposal<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &Clock) {
L2: loc0: MarginRatioProposalKey
L3: loc1: u256
L4: loc2: u256
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
6Call keys::margin_ratio_proposal(): MarginRatioProposalKey
7StLoc[2](loc0: MarginRatioProposalKey)
8CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
9ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
10CopyLoc[2](loc0: MarginRatioProposalKey)
11Call dynamic_field::exists<MarginRatioProposalKey>(&UID, MarginRatioProposalKey): bool
12BrFalse(14)
B1:
13Branch(20)
B2:
14MoveLoc[1](Arg1: &Clock)
15Pop
16MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
17Pop
18LdU64(28)
19Abort
B3:
20CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
21MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
22MoveLoc[2](loc0: MarginRatioProposalKey)
23Call dynamic_field::remove<MarginRatioProposalKey, MarginRatioProposal>(&mut UID, MarginRatioProposalKey): MarginRatioProposal
24Unpack[2](MarginRatioProposal)
25StLoc[4](loc2: u256)
26StLoc[3](loc1: u256)
27MoveLoc[1](Arg1: &Clock)
28Call clock::timestamp_ms(&Clock): u64
29Le
30BrFalse(32)
B4:
31Branch(36)
B5:
32MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
33Pop
34LdU64(26)
35Abort
B6:
36CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
37MutBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
38CopyLoc[3](loc1: u256)
39CopyLoc[4](loc2: u256)
40Call market::update_margin_ratios(&mut MarketParams, u256, u256)
41MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
42ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
43Call object::uid_to_inner(&UID): ID
44MoveLoc[3](loc1: u256)
45MoveLoc[4](loc2: u256)
46Call events::e43(ID, u256, u256)
47Ret
}
public donate_to_insurance_fund<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: Coin<Ty0>, Arg2: &mut TxContext) {
L3: loc0: u64
L4: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3ImmBorrowLoc[1](Arg1: Coin<Ty0>)
4Call coin::value<Ty0>(&Coin<Ty0>): u64
5StLoc[3](loc0: u64)
6CopyLoc[3](loc0: u64)
7LdU64(0)
8Neq
9BrFalse(11)
B1:
10Branch(17)
B2:
11MoveLoc[2](Arg2: &mut TxContext)
12Pop
13MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
14Pop
15LdU64(0)
16Abort
B3:
17CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
18Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
19MutBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
20MoveLoc[1](Arg1: Coin<Ty0>)
21Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
22Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
23StLoc[4](loc1: u64)
24MoveLoc[2](Arg2: &mut TxContext)
25FreezeRef
26Call tx_context::sender(&TxContext): address
27MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
28ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
29Call object::uid_to_inner(&UID): ID
30MoveLoc[3](loc0: u64)
31MoveLoc[4](loc1: u64)
32Call events::e50(address, ID, u64, u64)
33Ret
}
public update_funding<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &PriceFeedStorage, Arg2: &Clock) {
L3: loc0: Option<u256>
L4: loc1: ID
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
8Call object::uid_to_inner(&UID): ID
9StLoc[4](loc1: ID)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11FreezeRef
12Call book_price<Ty0>(&ClearingHouse<Ty0>): Option<u256>
13StLoc[3](loc0: Option<u256>)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
15ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
16MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
17MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
18MoveLoc[1](Arg1: &PriceFeedStorage)
19MoveLoc[2](Arg2: &Clock)
20ImmBorrowLoc[4](loc1: ID)
21MoveLoc[3](loc0: Option<u256>)
22Call market::try_update_funding(&MarketParams, &mut MarketState, &PriceFeedStorage, &Clock, &ID, Option<u256>)
23Ret
}
public update_twaps<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &PriceFeedStorage, Arg2: &Clock) {
L3: loc0: Option<u256>
L4: loc1: ID
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
8Call object::uid_to_inner(&UID): ID
9StLoc[4](loc1: ID)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11FreezeRef
12Call book_price<Ty0>(&ClearingHouse<Ty0>): Option<u256>
13StLoc[3](loc0: Option<u256>)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
15ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
16MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
17MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
18MoveLoc[1](Arg1: &PriceFeedStorage)
19MoveLoc[2](Arg2: &Clock)
20ImmBorrowLoc[4](loc1: ID)
21MoveLoc[3](loc0: Option<u256>)
22Call market::try_update_twaps(&MarketParams, &mut MarketState, &PriceFeedStorage, &Clock, &ID, Option<u256>)
23Ret
}
public settle_position_funding<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &PriceFeedStorage, Arg2: u64, Arg3: &Clock) {
L4: loc0: ID
L5: loc1: u256
L6: loc2: u256
L7: loc3: u256
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
8MoveLoc[1](Arg1: &PriceFeedStorage)
9MoveLoc[3](Arg3: &Clock)
10Call market::collateral_oracle_price(&MarketParams, &PriceFeedStorage, &Clock): u256
11StLoc[5](loc1: u256)
12CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
13ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
14Call market::cum_funding_rates(&MarketState): u256 * u256
15StLoc[7](loc3: u256)
16StLoc[6](loc2: u256)
17CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
18ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
19Call object::uid_to_inner(&UID): ID
20StLoc[4](loc0: ID)
21MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
22CopyLoc[2](Arg2: u64)
23Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
24MoveLoc[5](loc1: u256)
25MoveLoc[6](loc2: u256)
26MoveLoc[7](loc3: u256)
27ImmBorrowLoc[4](loc0: ID)
28MoveLoc[2](Arg2: u64)
29Call settle_position_funding_and_emit(&mut Position, u256, u256, u256, &ID, u64)
30Ret
}
public withdraw_fees<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<VENDOR<Ty1>, TREASURY>, Arg2: &Registry, Arg3: &mut TxContext): Coin<Ty0> {
L4: loc0: ID
L5: loc1: Coin<Ty0>
L6: loc2: u64
L7: loc3: u256
L8: loc4: &mut Vault<Ty0>
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, TREASURY>)
7Call registry::assert_authority_cap_is_authorized<VENDOR<Ty1>, TREASURY>(&Registry, &AuthorityCap<VENDOR<Ty1>, TREASURY>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, TREASURY>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty1, TREASURY>(&Registry, &AuthorityCap<VENDOR<Ty1>, TREASURY>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
15ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
16Call market::scaling_factor(&MarketParams): u256
17StLoc[7](loc3: u256)
18CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
19ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
20Call market::fees_accrued(&MarketState): u256
21CopyLoc[7](loc3: u256)
22Call ifixed::to_balance(u256, u256): u64
23StLoc[6](loc2: u64)
24CopyLoc[6](loc2: u64)
25LdU64(0)
26Eq
27BrFalse(33)
B1:
28MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
29Pop
30MoveLoc[3](Arg3: &mut TxContext)
31Call coin::zero<Ty0>(&mut TxContext): Coin<Ty0>
32Ret
B2:
33CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
34MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
35CopyLoc[6](loc2: u64)
36MoveLoc[7](loc3: u256)
37Call ifixed::from_balance(u64, u256): u256
38Call market::sub_fees_accrued(&mut MarketState, u256)
39CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
40ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
41Call object::uid_to_inner(&UID): ID
42StLoc[4](loc0: ID)
43MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
44Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
45StLoc[8](loc4: &mut Vault<Ty0>)
46CopyLoc[8](loc4: &mut Vault<Ty0>)
47MutBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
48CopyLoc[6](loc2: u64)
49CopyLoc[3](Arg3: &mut TxContext)
50Call coin::take<Ty0>(&mut Balance<Ty0>, u64, &mut TxContext): Coin<Ty0>
51StLoc[5](loc1: Coin<Ty0>)
52MoveLoc[3](Arg3: &mut TxContext)
53FreezeRef
54Call tx_context::sender(&TxContext): address
55MoveLoc[4](loc0: ID)
56MoveLoc[6](loc2: u64)
57MoveLoc[8](loc4: &mut Vault<Ty0>)
58ImmBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
59Call balance::value<Ty0>(&Balance<Ty0>): u64
60Call events::e51(address, ID, u64, u64)
61MoveLoc[5](loc1: Coin<Ty0>)
62Ret
}
public withdraw_insurance_fund<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<VENDOR<Ty1>, TREASURY>, Arg2: &Registry, Arg3: &PriceFeedStorage, Arg4: &PriceFeedStorage, Arg5: &Clock, Arg6: u64, Arg7: &mut TxContext): Coin<Ty0> {
L8: loc0: bool
L9: loc1: u256
L10: loc2: u256
L11: loc3: Coin<Ty0>
L12: loc4: u256
L13: loc5: u256
L14: loc6: u256
L15: loc7: u256
L16: loc8: u256
L17: loc9: u64
L18: loc10: u256
L19: loc11: u64
L20: loc12: u256
L21: loc13: u256
L22: loc14: &MarketParams
L23: loc15: u256
L24: loc16: u256
L25: loc17: &SettlementPrices
L26: loc18: &mut Vault<Ty0>
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, TREASURY>)
7Call registry::assert_authority_cap_is_authorized<VENDOR<Ty1>, TREASURY>(&Registry, &AuthorityCap<VENDOR<Ty1>, TREASURY>)
8CopyLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, TREASURY>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty1, TREASURY>(&Registry, &AuthorityCap<VENDOR<Ty1>, TREASURY>, &ID)
14CopyLoc[6](Arg6: u64)
15LdU64(0)
16Eq
17BrFalse(31)
B1:
18MoveLoc[2](Arg2: &Registry)
19Pop
20MoveLoc[4](Arg4: &PriceFeedStorage)
21Pop
22MoveLoc[5](Arg5: &Clock)
23Pop
24MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
25Pop
26MoveLoc[3](Arg3: &PriceFeedStorage)
27Pop
28MoveLoc[7](Arg7: &mut TxContext)
29Call coin::zero<Ty0>(&mut TxContext): Coin<Ty0>
30Ret
B2:
31CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
32ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
33StLoc[22](loc14: &MarketParams)
34CopyLoc[22](loc14: &MarketParams)
35Call market::scaling_factor(&MarketParams): u256
36StLoc[24](loc16: u256)
37CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
38ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
39Call keys::settlement_prices(): SettlementPricesKey
40Call dynamic_field::exists<SettlementPricesKey>(&UID, SettlementPricesKey): bool
41BrFalse(89)
B3:
42MoveLoc[22](loc14: &MarketParams)
43Pop
44MoveLoc[4](Arg4: &PriceFeedStorage)
45Pop
46MoveLoc[5](Arg5: &Clock)
47Pop
48MoveLoc[3](Arg3: &PriceFeedStorage)
49Pop
50CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
51FreezeRef
52Call settlement_prices<Ty0>(&ClearingHouse<Ty0>): &SettlementPrices
53StLoc[25](loc17: &SettlementPrices)
54CopyLoc[25](loc17: &SettlementPrices)
55ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
56Call option::is_some<u256>(&Option<u256>): bool
57BrFalse(63)
B4:
58CopyLoc[25](loc17: &SettlementPrices)
59ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
60Call option::is_some<u256>(&Option<u256>): bool
61StLoc[8](loc0: bool)
62Branch(65)
B5:
63LdFalse
64StLoc[8](loc0: bool)
B6:
65MoveLoc[8](loc0: bool)
66BrFalse(68)
B7:
67Branch(78)
B8:
68MoveLoc[25](loc17: &SettlementPrices)
69Pop
70MoveLoc[2](Arg2: &Registry)
71Pop
72MoveLoc[7](Arg7: &mut TxContext)
73Pop
74MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
75Pop
76LdU64(7)
77Abort
B9:
78CopyLoc[25](loc17: &SettlementPrices)
79ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
80Call option::borrow<u256>(&Option<u256>): &u256
81ReadRef
82MoveLoc[25](loc17: &SettlementPrices)
83ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
84Call option::borrow<u256>(&Option<u256>): &u256
85ReadRef
86StLoc[10](loc2: u256)
87StLoc[9](loc1: u256)
88Branch(108)
B10:
89CopyLoc[22](loc14: &MarketParams)
90MoveLoc[4](Arg4: &PriceFeedStorage)
91CopyLoc[5](Arg5: &Clock)
92Call market::collateral_oracle_price(&MarketParams, &PriceFeedStorage, &Clock): u256
93StLoc[12](loc4: u256)
94CopyLoc[22](loc14: &MarketParams)
95MoveLoc[3](Arg3: &PriceFeedStorage)
96MoveLoc[5](Arg5: &Clock)
97Call market::base_oracle_price_and_twap_price(&MarketParams, &PriceFeedStorage, &Clock): u256 * u256
98StLoc[16](loc8: u256)
99StLoc[14](loc6: u256)
100MoveLoc[22](loc14: &MarketParams)
101CopyLoc[14](loc6: u256)
102MoveLoc[16](loc8: u256)
103Call market::assert_index_twap_divergence_within_limit(&MarketParams, u256, u256)
104MoveLoc[14](loc6: u256)
105MoveLoc[12](loc4: u256)
106StLoc[10](loc2: u256)
107StLoc[9](loc1: u256)
B11:
108MoveLoc[9](loc1: u256)
109MoveLoc[10](loc2: u256)
110StLoc[13](loc5: u256)
111StLoc[15](loc7: u256)
112CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
113ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
114Call market::open_interest(&MarketState): u256
115Call ifixed::abs(u256): u256
116MoveLoc[15](loc7: u256)
117Call ifixed::mul(u256, u256): u256
118StLoc[23](loc15: u256)
119CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
120Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
121StLoc[26](loc18: &mut Vault<Ty0>)
122CopyLoc[26](loc18: &mut Vault<Ty0>)
123ImmBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
124Call balance::value<Ty0>(&Balance<Ty0>): u64
125CopyLoc[24](loc16: u256)
126Call ifixed::from_balance(u64, u256): u256
127CopyLoc[13](loc5: u256)
128Call ifixed::mul(u256, u256): u256
129StLoc[18](loc10: u256)
130MoveLoc[2](Arg2: &Registry)
131Call registry::config(&Registry): &Config
132Call registry::insurance_open_interest_fraction(&Config): u256
133MoveLoc[23](loc15: u256)
134Call ifixed::mul(u256, u256): u256
135StLoc[21](loc13: u256)
136MoveLoc[18](loc10: u256)
137MoveLoc[21](loc13: u256)
138Call ifixed::sub(u256, u256): u256
139StLoc[20](loc12: u256)
140CopyLoc[20](loc12: u256)
141Call ifixed::is_neg(u256): bool
142Not
143BrFalse(145)
B12:
144Branch(153)
B13:
145MoveLoc[26](loc18: &mut Vault<Ty0>)
146Pop
147MoveLoc[7](Arg7: &mut TxContext)
148Pop
149MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
150Pop
151LdU64(0)
152Abort
B14:
153MoveLoc[20](loc12: u256)
154MoveLoc[13](loc5: u256)
155Call ifixed::div(u256, u256): u256
156MoveLoc[24](loc16: u256)
157Call ifixed::to_balance(u256, u256): u64
158StLoc[19](loc11: u64)
159CopyLoc[6](Arg6: u64)
160MoveLoc[19](loc11: u64)
161Le
162BrFalse(164)
B15:
163Branch(172)
B16:
164MoveLoc[26](loc18: &mut Vault<Ty0>)
165Pop
166MoveLoc[7](Arg7: &mut TxContext)
167Pop
168MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
169Pop
170LdU64(29)
171Abort
B17:
172CopyLoc[26](loc18: &mut Vault<Ty0>)
173MutBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
174CopyLoc[6](Arg6: u64)
175CopyLoc[7](Arg7: &mut TxContext)
176Call coin::take<Ty0>(&mut Balance<Ty0>, u64, &mut TxContext): Coin<Ty0>
177StLoc[11](loc3: Coin<Ty0>)
178MoveLoc[26](loc18: &mut Vault<Ty0>)
179ImmBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
180Call balance::value<Ty0>(&Balance<Ty0>): u64
181StLoc[17](loc9: u64)
182MoveLoc[7](Arg7: &mut TxContext)
183FreezeRef
184Call tx_context::sender(&TxContext): address
185MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
186ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
187Call object::uid_to_inner(&UID): ID
188MoveLoc[6](Arg6: u64)
189MoveLoc[17](loc9: u64)
190Call events::e52(address, ID, u64, u64)
191MoveLoc[11](loc3: Coin<Ty0>)
192Ret
}
public try_cancel_stale_orders<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<VENDOR<Ty1>, MAINTENANCE>, Arg2: &Registry, Arg3: u64, Arg4: &vector<u128>, Arg5: &Clock): vector<bool> {
L6: loc0: u256
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &Registry)
4Call registry::assert_package_version(&Registry)
5CopyLoc[2](Arg2: &Registry)
6CopyLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, MAINTENANCE>)
7Call registry::assert_authority_cap_is_authorized<VENDOR<Ty1>, MAINTENANCE>(&Registry, &AuthorityCap<VENDOR<Ty1>, MAINTENANCE>)
8MoveLoc[2](Arg2: &Registry)
9MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, MAINTENANCE>)
10CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
12Call object::uid_as_inner(&UID): &ID
13Call registry::assert_vendor_has_ownership_over_clearing_house<Ty1, MAINTENANCE>(&Registry, &AuthorityCap<VENDOR<Ty1>, MAINTENANCE>, &ID)
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
15FreezeRef
16CopyLoc[3](Arg3: u64)
17Call position<Ty0>(&ClearingHouse<Ty0>, u64): &Position
18Call position::base_and_quote_amounts(&Position): u256 * u256
19Pop
20StLoc[6](loc0: u256)
21MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
22MoveLoc[3](Arg3: u64)
23MoveLoc[4](Arg4: &vector<u128>)
24MoveLoc[5](Arg5: &Clock)
25Call clock::timestamp_ms(&Clock): u64
26Call option::some<u64>(u64): Option<u64>
27MoveLoc[6](loc0: u256)
28Call try_cancel_orders_<Ty0>(&mut ClearingHouse<Ty0>, u64, &vector<u128>, Option<u64>, u256): vector<bool>
29Ret
}
public allocate_collateral<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &mut Account<Ty0>, Arg3: u64) {
L4: loc0: Balance<Ty0>
L5: loc1: u256
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[2](Arg2: &mut Account<Ty0>)
7FreezeRef
8MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
9Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
10CopyLoc[3](Arg3: u64)
11LdU64(0)
12Neq
13BrFalse(15)
B1:
14Branch(21)
B2:
15MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
16Pop
17MoveLoc[2](Arg2: &mut Account<Ty0>)
18Pop
19LdU64(0)
20Abort
B3:
21CopyLoc[2](Arg2: &mut Account<Ty0>)
22Call account::borrow_mut_collateral<Ty0>(&mut Account<Ty0>): &mut Balance<Ty0>
23CopyLoc[3](Arg3: u64)
24Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
25StLoc[4](loc0: Balance<Ty0>)
26CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
27Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
28MutBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
29MoveLoc[4](loc0: Balance<Ty0>)
30Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
31Pop
32CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
33ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
34Call market::scaling_factor(&MarketParams): u256
35StLoc[5](loc1: u256)
36CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
37CopyLoc[2](Arg2: &mut Account<Ty0>)
38FreezeRef
39Call account::account_id<Ty0>(&Account<Ty0>): u64
40Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
41CopyLoc[3](Arg3: u64)
42MoveLoc[5](loc1: u256)
43Call ifixed::from_balance(u64, u256): u256
44Call position::add_to_collateral(&mut Position, u256)
45MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
46ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
47Call object::uid_to_inner(&UID): ID
48MoveLoc[2](Arg2: &mut Account<Ty0>)
49FreezeRef
50Call account::account_id<Ty0>(&Account<Ty0>): u64
51MoveLoc[3](Arg3: u64)
52Call events::e03(ID, u64, u64)
53Ret
}
public deallocate_collateral<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &mut Account<Ty0>, Arg3: &PriceFeedStorage, Arg4: &PriceFeedStorage, Arg5: u64, Arg6: &Clock): u64 {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
2MoveLoc[2](Arg2: &mut Account<Ty0>)
3MoveLoc[3](Arg3: &PriceFeedStorage)
4MoveLoc[4](Arg4: &PriceFeedStorage)
5MoveLoc[5](Arg5: u64)
6Call option::some<u64>(u64): Option<u64>
7MoveLoc[6](Arg6: &Clock)
8Call deallocate_collateral_<Ty0, Ty1>(&mut ClearingHouse<Ty0>, &AuthorityCap<ACCOUNT, Ty1>, &mut Account<Ty0>, &PriceFeedStorage, &PriceFeedStorage, Option<u64>, &Clock): u64
9Ret
}
public deallocate_free_collateral<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &mut Account<Ty0>, Arg3: &PriceFeedStorage, Arg4: &PriceFeedStorage, Arg5: &Clock): u64 {
B0:
0MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
2MoveLoc[2](Arg2: &mut Account<Ty0>)
3MoveLoc[3](Arg3: &PriceFeedStorage)
4MoveLoc[4](Arg4: &PriceFeedStorage)
5Call option::none<u64>(): Option<u64>
6MoveLoc[5](Arg5: &Clock)
7Call deallocate_collateral_<Ty0, Ty1>(&mut ClearingHouse<Ty0>, &AuthorityCap<ACCOUNT, Ty1>, &mut Account<Ty0>, &PriceFeedStorage, &PriceFeedStorage, Option<u64>, &Clock): u64
8Ret
}
public create_market_position<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &Account<Ty0>) {
L3: loc0: u64
L4: loc1: u256
L5: loc2: u256
B0:
0CopyLoc[2](Arg2: &Account<Ty0>)
1MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
2Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7FreezeRef
8Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
9CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
10ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
11Call market::cum_funding_rates(&MarketState): u256 * u256
12StLoc[5](loc2: u256)
13StLoc[4](loc1: u256)
14MoveLoc[2](Arg2: &Account<Ty0>)
15Call account::account_id<Ty0>(&Account<Ty0>): u64
16StLoc[3](loc0: u64)
17CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
18CopyLoc[3](loc0: u64)
19CopyLoc[4](loc1: u256)
20CopyLoc[5](loc2: u256)
21Call position::create_position(u256, u256): Position
22Call add_position<Ty0>(&mut ClearingHouse<Ty0>, u64, Position)
23MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
24ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
25Call object::uid_to_inner(&UID): ID
26MoveLoc[3](loc0: u64)
27MoveLoc[4](loc1: u256)
28MoveLoc[5](loc2: u256)
29Call events::e30(ID, u64, u256, u256)
30Ret
}
public set_position_initial_margin_ratio<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &Account<Ty0>, Arg3: u256) {
L4: loc0: u64
L5: loc1: ID
L6: loc2: u256
B0:
0CopyLoc[2](Arg2: &Account<Ty0>)
1MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
2Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7FreezeRef
8Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
9CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
10FreezeRef
11Call market_objects<Ty0>(&ClearingHouse<Ty0>): &MarketParams * &MarketState
12Pop
13Call market::margin_ratio_initial(&MarketParams): u256
14StLoc[6](loc2: u256)
15MoveLoc[2](Arg2: &Account<Ty0>)
16Call account::account_id<Ty0>(&Account<Ty0>): u64
17StLoc[4](loc0: u64)
18CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
19ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
20Call object::uid_to_inner(&UID): ID
21StLoc[5](loc1: ID)
22MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
23CopyLoc[4](loc0: u64)
24Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
25CopyLoc[3](Arg3: u256)
26MoveLoc[6](loc2: u256)
27Call position::set_initial_margin_ratio(&mut Position, u256, u256)
28MoveLoc[5](loc1: ID)
29MoveLoc[4](loc0: u64)
30MoveLoc[3](Arg3: u256)
31Call events::e16(ID, u64, u256)
32Ret
}
public cancel_orders<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &Account<Ty0>, Arg3: vector<u128>) {
L4: loc0: &vector<u128>
L5: loc1: u64
L6: loc2: &mut ClearingHouse<Ty0>
B0:
0CopyLoc[2](Arg2: &Account<Ty0>)
1MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
2Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7FreezeRef
8Call assert_market_allows_order_cancellation<Ty0>(&ClearingHouse<Ty0>)
9MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
10StLoc[6](loc2: &mut ClearingHouse<Ty0>)
11MoveLoc[2](Arg2: &Account<Ty0>)
12Call account::account_id<Ty0>(&Account<Ty0>): u64
13StLoc[5](loc1: u64)
14ImmBorrowLoc[3](Arg3: vector<u128>)
15StLoc[4](loc0: &vector<u128>)
16MoveLoc[6](loc2: &mut ClearingHouse<Ty0>)
17MoveLoc[5](loc1: u64)
18MoveLoc[4](loc0: &vector<u128>)
19LdU8(0)
20Call cancel_orders_<Ty0>(&mut ClearingHouse<Ty0>, u64, &vector<u128>, u8)
21Ret
}
public try_cancel_orders<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &Account<Ty0>, Arg3: &vector<u128>): vector<bool> {
B0:
0CopyLoc[2](Arg2: &Account<Ty0>)
1MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
2Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7FreezeRef
8Call assert_market_allows_order_cancellation<Ty0>(&ClearingHouse<Ty0>)
9MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
10MoveLoc[2](Arg2: &Account<Ty0>)
11Call account::account_id<Ty0>(&Account<Ty0>): u64
12MoveLoc[3](Arg3: &vector<u128>)
13Call option::none<u64>(): Option<u64>
14LdU256(0)
15Call try_cancel_orders_<Ty0>(&mut ClearingHouse<Ty0>, u64, &vector<u128>, Option<u64>, u256): vector<bool>
16Ret
}
public close_position_at_settlement_prices<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &mut Account<Ty0>, Arg2: &vector<u128>) {
L3: loc0: &vector<u128>
L4: loc1: u64
L5: loc2: &mut ClearingHouse<Ty0>
L6: loc3: bool
L7: loc4: u256
L8: loc5: u64
L9: loc6: u256
L10: loc7: u256
L11: loc8: u256
L12: loc9: ID
L13: loc10: u256
L14: loc11: u256
L15: loc12: Balance<Ty0>
L16: loc13: u64
L17: loc14: bool
L18: loc15: u256
L19: loc16: u256
L20: loc17: u256
L21: loc18: u256
L22: loc19: u64
L23: loc20: u256
L24: loc21: &mut Position
L25: loc22: u256
L26: loc23: u256
L27: loc24: &SettlementPrices
L28: loc25: &mut Vault<Ty0>
L29: loc26: &mut Vault<Ty0>
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_market_is_paused<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7FreezeRef
8Call assert_market_is_closed<Ty0>(&ClearingHouse<Ty0>)
9CopyLoc[1](Arg1: &mut Account<Ty0>)
10FreezeRef
11Call account::account_id<Ty0>(&Account<Ty0>): u64
12StLoc[8](loc5: u64)
13CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
14ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
15Call object::uid_to_inner(&UID): ID
16StLoc[12](loc9: ID)
17CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
18FreezeRef
19Call settlement_prices<Ty0>(&ClearingHouse<Ty0>): &SettlementPrices
20StLoc[27](loc24: &SettlementPrices)
21CopyLoc[27](loc24: &SettlementPrices)
22ImmBorrowField[5](SettlementPrices.enabled: bool)
23ReadRef
24BrFalse(26)
B1:
25Branch(36)
B2:
26MoveLoc[27](loc24: &SettlementPrices)
27Pop
28MoveLoc[2](Arg2: &vector<u128>)
29Pop
30MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
31Pop
32MoveLoc[1](Arg1: &mut Account<Ty0>)
33Pop
34LdU64(36)
35Abort
B3:
36CopyLoc[27](loc24: &SettlementPrices)
37ImmBorrowField[6](SettlementPrices.base_price: Option<u256>)
38Call option::borrow<u256>(&Option<u256>): &u256
39ReadRef
40StLoc[11](loc8: u256)
41MoveLoc[27](loc24: &SettlementPrices)
42ImmBorrowField[7](SettlementPrices.collateral_price: Option<u256>)
43Call option::borrow<u256>(&Option<u256>): &u256
44ReadRef
45StLoc[13](loc10: u256)
46CopyLoc[2](Arg2: &vector<u128>)
47Call vector::is_empty<u128>(&vector<u128>): bool
48Not
49BrFalse(62)
B4:
50CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
51StLoc[5](loc2: &mut ClearingHouse<Ty0>)
52CopyLoc[8](loc5: u64)
53StLoc[4](loc1: u64)
54MoveLoc[2](Arg2: &vector<u128>)
55StLoc[3](loc0: &vector<u128>)
56MoveLoc[5](loc2: &mut ClearingHouse<Ty0>)
57MoveLoc[4](loc1: u64)
58MoveLoc[3](loc0: &vector<u128>)
59LdU8(3)
60Call cancel_orders_<Ty0>(&mut ClearingHouse<Ty0>, u64, &vector<u128>, u8)
61Branch(64)
B5:
62MoveLoc[2](Arg2: &vector<u128>)
63Pop
B6:
64CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
65ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
66Call market::cum_funding_rates(&MarketState): u256 * u256
67StLoc[19](loc16: u256)
68StLoc[18](loc15: u256)
69CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
70ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
71Call market::scaling_factor(&MarketParams): u256
72StLoc[26](loc23: u256)
73CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
74CopyLoc[8](loc5: u64)
75Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
76StLoc[24](loc21: &mut Position)
77CopyLoc[24](loc21: &mut Position)
78FreezeRef
79Call position::pending_base_amounts_by_side(&Position): u256 * u256
80StLoc[21](loc18: u256)
81StLoc[20](loc17: u256)
82CopyLoc[24](loc21: &mut Position)
83FreezeRef
84Call position::pending_order_count(&Position): u64
85StLoc[22](loc19: u64)
86MoveLoc[20](loc17: u256)
87LdU256(0)
88Eq
89BrFalse(102)
B7:
90MoveLoc[21](loc18: u256)
91LdU256(0)
92Eq
93BrFalse(99)
B8:
94MoveLoc[22](loc19: u64)
95LdU64(0)
96Eq
97StLoc[6](loc3: bool)
98Branch(104)
B9:
99LdFalse
100StLoc[6](loc3: bool)
101Branch(104)
B10:
102LdFalse
103StLoc[6](loc3: bool)
B11:
104MoveLoc[6](loc3: bool)
105BrFalse(107)
B12:
106Branch(115)
B13:
107MoveLoc[24](loc21: &mut Position)
108Pop
109MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
110Pop
111MoveLoc[1](Arg1: &mut Account<Ty0>)
112Pop
113LdU64(48)
114Abort
B14:
115CopyLoc[24](loc21: &mut Position)
116CopyLoc[13](loc10: u256)
117MoveLoc[18](loc15: u256)
118MoveLoc[19](loc16: u256)
119ImmBorrowLoc[12](loc9: ID)
120CopyLoc[8](loc5: u64)
121Call settle_position_funding_and_emit(&mut Position, u256, u256, u256, &ID, u64)
122CopyLoc[24](loc21: &mut Position)
123FreezeRef
124Call position::base_and_quote_amounts(&Position): u256 * u256
125StLoc[25](loc22: u256)
126StLoc[10](loc7: u256)
127CopyLoc[10](loc7: u256)
128Call ifixed::is_neg(u256): bool
129StLoc[17](loc14: bool)
130LdU256(0)
131StLoc[9](loc6: u256)
132LdU256(0)
133StLoc[23](loc20: u256)
134CopyLoc[10](loc7: u256)
135LdU256(0)
136Neq
137BrFalse(156)
B15:
138CopyLoc[10](loc7: u256)
139Call ifixed::abs(u256): u256
140StLoc[7](loc4: u256)
141CopyLoc[24](loc21: &mut Position)
142MoveLoc[17](loc14: bool)
143Not
144CopyLoc[7](loc4: u256)
145MoveLoc[7](loc4: u256)
146MoveLoc[11](loc8: u256)
147Call ifixed::mul(u256, u256): u256
148Call position::add_base_to_position(&mut Position, bool, u256, u256): u256 * u256
149Pop
150StLoc[23](loc20: u256)
151CopyLoc[24](loc21: &mut Position)
152CopyLoc[23](loc20: u256)
153MoveLoc[13](loc10: u256)
154Call position::add_to_collateral_usd(&mut Position, u256, u256): u256
155Pop
B16:
156CopyLoc[24](loc21: &mut Position)
157FreezeRef
158Call position::collateral(&Position): u256
159Call ifixed::is_neg(u256): bool
160BrFalse(164)
B17:
161CopyLoc[24](loc21: &mut Position)
162Call position::reset_collateral(&mut Position): u256
163StLoc[9](loc6: u256)
B18:
164CopyLoc[24](loc21: &mut Position)
165FreezeRef
166Call position::collateral(&Position): u256
167StLoc[14](loc11: u256)
168CopyLoc[14](loc11: u256)
169CopyLoc[26](loc23: u256)
170Call ifixed::to_balance(u256, u256): u64
171StLoc[16](loc13: u64)
172MoveLoc[24](loc21: &mut Position)
173MoveLoc[14](loc11: u256)
174Call position::sub_from_collateral(&mut Position, u256)
175CopyLoc[9](loc6: u256)
176LdU256(0)
177Neq
178BrFalse(203)
B19:
179CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
180Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
181StLoc[28](loc25: &mut Vault<Ty0>)
182CopyLoc[28](loc25: &mut Vault<Ty0>)
183ImmBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
184Call balance::value<Ty0>(&Balance<Ty0>): u64
185CopyLoc[26](loc23: u256)
186Call ifixed::from_balance(u64, u256): u256
187CopyLoc[9](loc6: u256)
188Call ifixed::greater_than_eq(u256, u256): bool
189BrFalse(191)
B20:
190Branch(199)
B21:
191MoveLoc[28](loc25: &mut Vault<Ty0>)
192Pop
193MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
194Pop
195MoveLoc[1](Arg1: &mut Account<Ty0>)
196Pop
197LdU64(31)
198Abort
B22:
199MoveLoc[28](loc25: &mut Vault<Ty0>)
200CopyLoc[9](loc6: u256)
201MoveLoc[26](loc23: u256)
202Call transfer_from_insurance_fund_to_vault<Ty0>(&mut Vault<Ty0>, u256, u256)
B23:
203CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
204Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
205StLoc[29](loc26: &mut Vault<Ty0>)
206CopyLoc[29](loc26: &mut Vault<Ty0>)
207ImmBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
208Call balance::value<Ty0>(&Balance<Ty0>): u64
209CopyLoc[16](loc13: u64)
210Ge
211BrFalse(213)
B24:
212Branch(221)
B25:
213MoveLoc[29](loc26: &mut Vault<Ty0>)
214Pop
215MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
216Pop
217MoveLoc[1](Arg1: &mut Account<Ty0>)
218Pop
219LdU64(23)
220Abort
B26:
221MoveLoc[29](loc26: &mut Vault<Ty0>)
222MutBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
223CopyLoc[16](loc13: u64)
224Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
225StLoc[15](loc12: Balance<Ty0>)
226MoveLoc[1](Arg1: &mut Account<Ty0>)
227Call account::borrow_mut_collateral<Ty0>(&mut Account<Ty0>): &mut Balance<Ty0>
228MoveLoc[15](loc12: Balance<Ty0>)
229Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
230Pop
231MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
232MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
233CopyLoc[10](loc7: u256)
234LdU256(0)
235Call ifixed::max(u256, u256): u256
236Call ifixed::neg(u256): u256
237Call market::add_to_open_interest(&mut MarketState, u256)
238MoveLoc[12](loc9: ID)
239MoveLoc[8](loc5: u64)
240MoveLoc[23](loc20: u256)
241MoveLoc[10](loc7: u256)
242MoveLoc[25](loc22: u256)
243MoveLoc[16](loc13: u64)
244MoveLoc[9](loc6: u256)
245Call events::e21(ID, u64, u256, u256, u256, u64, u256)
246Ret
}
public start_session<Ty0, Ty1>(Arg0: ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &mut Account<Ty0>, Arg3: &PriceFeedStorage, Arg4: &PriceFeedStorage, Arg5: Option<IntegratorInfo>, Arg6: &Clock, Arg7: &TxContext): SessionHotPotato<Ty0> {
B0:
0CopyLoc[2](Arg2: &mut Account<Ty0>)
1FreezeRef
2MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
3Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
4ImmBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
5Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
6ImmBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
7Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
8MoveLoc[0](Arg0: ClearingHouse<Ty0>)
9MoveLoc[2](Arg2: &mut Account<Ty0>)
10FreezeRef
11Call account::account_id<Ty0>(&Account<Ty0>): u64
12MoveLoc[3](Arg3: &PriceFeedStorage)
13MoveLoc[4](Arg4: &PriceFeedStorage)
14CopyLoc[7](Arg7: &TxContext)
15Call tx_context::gas_price(&TxContext): u64
16MoveLoc[7](Arg7: &TxContext)
17Call tx_context::reference_gas_price(&TxContext): u64
18Gt
19MoveLoc[5](Arg5: Option<IntegratorInfo>)
20MoveLoc[6](Arg6: &Clock)
21Call start_session_<Ty0>(ClearingHouse<Ty0>, u64, &PriceFeedStorage, &PriceFeedStorage, bool, Option<IntegratorInfo>, &Clock): SessionHotPotato<Ty0>
22Ret
}
public place_limit_order<Ty0>(Arg0: &mut SessionHotPotato<Ty0>, Arg1: bool, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: Option<u64>, Arg6: bool, Arg7: Option<u64>): Option<u128> {
L8: loc0: bool
L9: loc1: u64
L10: loc2: u256
L11: loc3: Option<u128>
L12: loc4: u64
L13: loc5: u64
L14: loc6: u64
B0:
0CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[3](Arg3: u64)
4LdU64(0)
5Neq
6BrFalse(12)
B1:
7CopyLoc[3](Arg3: u64)
8LdU64(9223372036854775808)
9Lt
10StLoc[8](loc0: bool)
11Branch(14)
B2:
12LdFalse
13StLoc[8](loc0: bool)
B3:
14MoveLoc[8](loc0: bool)
15BrFalse(17)
B4:
16Branch(21)
B5:
17MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
18Pop
19LdU64(3900)
20Abort
B6:
21CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
22ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
23ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
24Call market::tick_size(&MarketParams): u64
25StLoc[14](loc6: u64)
26CopyLoc[3](Arg3: u64)
27MoveLoc[14](loc6: u64)
28Mod
29LdU64(0)
30Eq
31BrFalse(33)
B7:
32Branch(37)
B8:
33MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
34Pop
35LdU64(20)
36Abort
B9:
37CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
38FreezeRef
39CopyLoc[1](Arg1: bool)
40MoveLoc[2](Arg2: u64)
41CopyLoc[6](Arg6: bool)
42Call assert_reduce_only<Ty0>(&SessionHotPotato<Ty0>, bool, u64, bool): u64
43StLoc[12](loc4: u64)
44CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
45ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
46ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
47Call market::lot_size(&MarketParams): u64
48StLoc[9](loc1: u64)
49CopyLoc[12](loc4: u64)
50MoveLoc[9](loc1: u64)
51Mod
52LdU64(0)
53Eq
54BrFalse(56)
B10:
55Branch(60)
B11:
56MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
57Pop
58LdU64(19)
59Abort
B12:
60CopyLoc[12](loc4: u64)
61LdU64(0)
62Neq
63BrFalse(65)
B13:
64Branch(69)
B14:
65MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
66Pop
67LdU64(1)
68Abort
B15:
69CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
70MoveLoc[1](Arg1: bool)
71CopyLoc[12](loc4: u64)
72MoveLoc[3](Arg3: u64)
73MoveLoc[4](Arg4: u64)
74MoveLoc[5](Arg5: Option<u64>)
75MoveLoc[6](Arg6: bool)
76MoveLoc[7](Arg7: Option<u64>)
77Call execute_limit_order<Ty0>(&mut SessionHotPotato<Ty0>, bool, u64, u64, u64, Option<u64>, bool, Option<u64>): u64 * Option<u128>
78StLoc[11](loc3: Option<u128>)
79StLoc[13](loc5: u64)
80CopyLoc[13](loc5: u64)
81MoveLoc[12](loc4: u64)
82Eq
83BrFalse(96)
B16:
84CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
85ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
86ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
87Call market::min_order_usd_value(&MarketParams): u256
88StLoc[10](loc2: u256)
89MoveLoc[13](loc5: u64)
90MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
91ImmBorrowFieldGeneric[10](SessionHotPotato.mark_price: u256)
92ReadRef
93MoveLoc[10](loc2: u256)
94Call assert_order_value(u64, u256, u256)
95Branch(98)
B17:
96MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
97Pop
B18:
98MoveLoc[11](loc3: Option<u128>)
99Ret
}
public place_market_order<Ty0>(Arg0: &mut SessionHotPotato<Ty0>, Arg1: bool, Arg2: u64, Arg3: bool) {
L4: loc0: u64
L5: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
4FreezeRef
5CopyLoc[1](Arg1: bool)
6MoveLoc[2](Arg2: u64)
7MoveLoc[3](Arg3: bool)
8Call assert_reduce_only<Ty0>(&SessionHotPotato<Ty0>, bool, u64, bool): u64
9StLoc[5](loc1: u64)
10CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
11ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
12ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
13Call market::lot_size(&MarketParams): u64
14StLoc[4](loc0: u64)
15CopyLoc[5](loc1: u64)
16MoveLoc[4](loc0: u64)
17Mod
18LdU64(0)
19Eq
20BrFalse(22)
B1:
21Branch(26)
B2:
22MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
23Pop
24LdU64(19)
25Abort
B3:
26CopyLoc[5](loc1: u64)
27LdU64(0)
28Neq
29BrFalse(31)
B4:
30Branch(35)
B5:
31MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
32Pop
33LdU64(1)
34Abort
B6:
35MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
36MoveLoc[1](Arg1: bool)
37MoveLoc[5](loc1: u64)
38Call execute_market_order<Ty0>(&mut SessionHotPotato<Ty0>, bool, u64)
39Ret
}
public liquidate<Ty0>(Arg0: &mut SessionHotPotato<Ty0>, Arg1: u64, Arg2: &vector<u128>) {
L3: loc0: u128
L4: loc1: u64
L5: loc2: bool
L6: loc3: ID
L7: loc4: &vector<u128>
L8: loc5: u64
L9: loc6: &mut Orderbook
L10: loc7: u128
L11: loc8: u128
L12: loc9: u128
L13: loc10: ID
L14: loc11: &vector<FilledMakerOrder>
L15: loc12: &mut Orderbook
L16: loc13: u64
L17: loc14: &SessionSummary
B0:
0CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
4ImmBorrowFieldGeneric[8](SessionHotPotato.account_id: u64)
5ReadRef
6CopyLoc[1](Arg1: u64)
7Neq
8BrFalse(10)
B1:
9Branch(16)
B2:
10MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
11Pop
12MoveLoc[2](Arg2: &vector<u128>)
13Pop
14LdU64(8)
15Abort
B3:
16CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
17ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
18ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
19Call object::uid_to_inner(&UID): ID
20StLoc[13](loc10: ID)
21CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
22MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
23MutBorrowFieldGeneric[7](ClearingHouse.orderbook: Orderbook)
24CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
25ImmBorrowFieldGeneric[16](SessionHotPotato.maker_events: vector<FilledMakerOrder>)
26CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
27ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
28StLoc[17](loc14: &SessionSummary)
29StLoc[14](loc11: &vector<FilledMakerOrder>)
30StLoc[15](loc12: &mut Orderbook)
31MoveLoc[14](loc11: &vector<FilledMakerOrder>)
32VecLen(160)
33LdU64(0)
34Eq
35BrFalse(50)
B4:
36MoveLoc[17](loc14: &SessionSummary)
37ImmBorrowField[19](SessionSummary.posted_orders: u64)
38ReadRef
39LdU64(0)
40Eq
41BrFalse(47)
B5:
42CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
43ImmBorrowFieldGeneric[17](SessionHotPotato.liqee_account_id: Option<u64>)
44Call option::is_none<u64>(&Option<u64>): bool
45StLoc[5](loc2: bool)
46Branch(54)
B6:
47LdFalse
48StLoc[5](loc2: bool)
49Branch(54)
B7:
50MoveLoc[17](loc14: &SessionSummary)
51Pop
52LdFalse
53StLoc[5](loc2: bool)
B8:
54MoveLoc[5](loc2: bool)
55BrFalse(57)
B9:
56Branch(65)
B10:
57MoveLoc[15](loc12: &mut Orderbook)
58Pop
59MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
60Pop
61MoveLoc[2](Arg2: &vector<u128>)
62Pop
63LdU64(5)
64Abort
B11:
65CopyLoc[2](Arg2: &vector<u128>)
66VecLen(119)
67LdU64(0)
68Neq
69BrFalse(88)
B12:
70MoveLoc[15](loc12: &mut Orderbook)
71StLoc[9](loc6: &mut Orderbook)
72CopyLoc[1](Arg1: u64)
73StLoc[8](loc5: u64)
74MoveLoc[2](Arg2: &vector<u128>)
75StLoc[7](loc4: &vector<u128>)
76MoveLoc[13](loc10: ID)
77StLoc[6](loc3: ID)
78MoveLoc[9](loc6: &mut Orderbook)
79MoveLoc[8](loc5: u64)
80MoveLoc[7](loc4: &vector<u128>)
81MoveLoc[6](loc3: ID)
82LdU8(1)
83Call force_cancel_orders(&mut Orderbook, u64, &vector<u128>, ID, u8): u128 * u128 * u64
84StLoc[4](loc1: u64)
85StLoc[3](loc0: u128)
86StLoc[10](loc7: u128)
87Branch(98)
B13:
88MoveLoc[15](loc12: &mut Orderbook)
89Pop
90MoveLoc[2](Arg2: &vector<u128>)
91Pop
92LdU128(0)
93LdU128(0)
94LdU64(0)
95StLoc[4](loc1: u64)
96StLoc[3](loc0: u128)
97StLoc[10](loc7: u128)
B14:
98MoveLoc[10](loc7: u128)
99MoveLoc[3](loc0: u128)
100MoveLoc[4](loc1: u64)
101StLoc[16](loc13: u64)
102StLoc[12](loc9: u128)
103StLoc[11](loc8: u128)
104MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
105MoveLoc[1](Arg1: u64)
106MoveLoc[11](loc8: u128)
107MoveLoc[12](loc9: u128)
108MoveLoc[16](loc13: u64)
109Call execute_liquidation<Ty0>(&mut SessionHotPotato<Ty0>, u64, u128, u128, u64)
110Ret
}
public end_session<Ty0, Ty1>(Arg0: SessionHotPotato<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &mut Account<Ty0>, Arg3: bool, Arg4: bool): ClearingHouse<Ty0> * SessionSummary {
B0:
0ImmBorrowLoc[0](Arg0: SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[2](Arg2: &mut Account<Ty0>)
4FreezeRef
5MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
6Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
7MoveLoc[0](Arg0: SessionHotPotato<Ty0>)
8MoveLoc[2](Arg2: &mut Account<Ty0>)
9MoveLoc[3](Arg3: bool)
10MoveLoc[4](Arg4: bool)
11LdFalse
12Call end_session_<Ty0>(SessionHotPotato<Ty0>, &mut Account<Ty0>, bool, bool, bool): ClearingHouse<Ty0> * SessionSummary
13Ret
}
public(friend) end_session_<Ty0>(Arg0: SessionHotPotato<Ty0>, Arg1: &mut Account<Ty0>, Arg2: bool, Arg3: bool, Arg4: bool): ClearingHouse<Ty0> * SessionSummary {
L5: loc0: u256
L6: loc1: u256
L7: loc2: bool
L8: loc3: u64
L9: loc4: bool
L10: loc5: u64
L11: loc6: bool
L12: loc7: bool
L13: loc8: u64
L14: loc9: bool
L15: loc10: bool
L16: loc11: bool
L17: loc12: bool
L18: loc13: Option<u64>
L19: loc14: u256
L20: loc15: u256
L21: loc16: u256
L22: loc17: u256
L23: loc18: u256
L24: loc19: u64
L25: loc20: &mut Balance<Ty0>
L26: loc21: u256
L27: loc22: u256
L28: loc23: bool
L29: loc24: u256
L30: loc25: u256
L31: loc26: ID
L32: loc27: ClearingHouse<Ty0>
L33: loc28: u64
L34: loc29: u256
L35: loc30: bool
L36: loc31: u256
L37: loc32: u256
L38: loc33: u64
L39: loc34: u256
L40: loc35: &IntegratorInfo
L41: loc36: u256
L42: loc37: Option<u32>
L43: loc38: Option<IntegratorInfo>
L44: loc39: Option<u64>
L45: loc40: bool
L46: loc41: u256
L47: loc42: u256
L48: loc43: Option<u64>
L49: loc44: vector<FilledMakerOrder>
L50: loc45: u256
L51: loc46: u256
L52: loc47: u256
L53: loc48: u256
L54: loc49: u256
L55: loc50: u256
L56: loc51: &MarketParams
L57: loc52: &MarketState
L58: loc53: &mut MarketState
L59: loc54: bool
L60: loc55: u256
L61: loc56: u256
L62: loc57: u256
L63: loc58: u64
L64: loc59: u256
L65: loc60: u256
L66: loc61: u256
L67: loc62: u64
L68: loc63: u256
L69: loc64: u256
L70: loc65: u256
L71: loc66: u256
L72: loc67: u256
L73: loc68: &mut Position
L74: loc69: u256
L75: loc70: u256
L76: loc71: u256
L77: loc72: u256
L78: loc73: Option<u256>
L79: loc74: u256
L80: loc75: bool
L81: loc76: SessionSummary
L82: loc77: u256
L83: loc78: u256
L84: loc79: u256
L85: loc80: u256
L86: loc81: bool
L87: loc82: u256
L88: loc83: u256
L89: loc84: bool
B0:
0ImmBorrowLoc[0](Arg0: SessionHotPotato<Ty0>)
1Call account_id<Ty0>(&SessionHotPotato<Ty0>): u64
2CopyLoc[1](Arg1: &mut Account<Ty0>)
3FreezeRef
4Call account::account_id<Ty0>(&Account<Ty0>): u64
5Eq
6BrFalse(8)
B1:
7Branch(12)
B2:
8MoveLoc[1](Arg1: &mut Account<Ty0>)
9Pop
10LdU64(18)
11Abort
B3:
12MoveLoc[0](Arg0: SessionHotPotato<Ty0>)
13UnpackGeneric[0](SessionHotPotato<Ty0>)
14StLoc[81](loc76: SessionSummary)
15StLoc[46](loc41: u256)
16StLoc[44](loc39: Option<u64>)
17StLoc[43](loc38: Option<IntegratorInfo>)
18StLoc[49](loc44: vector<FilledMakerOrder>)
19StLoc[86](loc81: bool)
20StLoc[87](loc82: u256)
21StLoc[88](loc83: u256)
22StLoc[75](loc70: u256)
23StLoc[64](loc59: u256)
24StLoc[50](loc45: u256)
25StLoc[89](loc84: bool)
26StLoc[53](loc48: u256)
27StLoc[36](loc31: u256)
28Pop
29StLoc[24](loc19: u64)
30StLoc[32](loc27: ClearingHouse<Ty0>)
31ImmBorrowLoc[32](loc27: ClearingHouse<Ty0>)
32ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
33Call object::uid_to_inner(&UID): ID
34StLoc[31](loc26: ID)
35ImmBorrowLoc[49](loc44: vector<FilledMakerOrder>)
36Call vector::is_empty<FilledMakerOrder>(&vector<FilledMakerOrder>): bool
37Not
38StLoc[59](loc54: bool)
39ImmBorrowLoc[44](loc39: Option<u64>)
40Call option::is_some<u64>(&Option<u64>): bool
41StLoc[45](loc40: bool)
42ImmBorrowLoc[81](loc76: SessionSummary)
43ImmBorrowLoc[49](loc44: vector<FilledMakerOrder>)
44ImmBorrowLoc[44](loc39: Option<u64>)
45Call session_has_activity(&SessionSummary, &vector<FilledMakerOrder>, &Option<u64>): bool
46StLoc[80](loc75: bool)
47MoveLoc[4](Arg4: bool)
48BrFalse(52)
B4:
49LdTrue
50StLoc[11](loc6: bool)
51Branch(54)
B5:
52MoveLoc[80](loc75: bool)
53StLoc[11](loc6: bool)
B6:
54MoveLoc[11](loc6: bool)
55BrFalse(57)
B7:
56Branch(61)
B8:
57MoveLoc[1](Arg1: &mut Account<Ty0>)
58Pop
59LdU64(11)
60Abort
B9:
61CopyLoc[59](loc54: bool)
62BrFalse(68)
B10:
63ImmBorrowLoc[32](loc27: ClearingHouse<Ty0>)
64ImmBorrowFieldGeneric[7](ClearingHouse.orderbook: Orderbook)
65Call orderbook::book_price(&Orderbook): Option<u64>
66StLoc[18](loc13: Option<u64>)
67Branch(70)
B11:
68Call option::none<u64>(): Option<u64>
69StLoc[18](loc13: Option<u64>)
B12:
70MoveLoc[18](loc13: Option<u64>)
71StLoc[48](loc43: Option<u64>)
72ImmBorrowLoc[32](loc27: ClearingHouse<Ty0>)
73Call market_objects<Ty0>(&ClearingHouse<Ty0>): &MarketParams * &MarketState
74StLoc[57](loc52: &MarketState)
75StLoc[56](loc51: &MarketParams)
76CopyLoc[56](loc51: &MarketParams)
77Call market::margin_ratio_initial(&MarketParams): u256
78StLoc[54](loc49: u256)
79CopyLoc[56](loc51: &MarketParams)
80Call market::margin_ratio_maintenance(&MarketParams): u256
81StLoc[55](loc50: u256)
82CopyLoc[56](loc51: &MarketParams)
83Call market::collateral_haircut(&MarketParams): u256
84StLoc[34](loc29: u256)
85CopyLoc[56](loc51: &MarketParams)
86Call market::taker_fee(&MarketParams): u256
87StLoc[82](loc77: u256)
88CopyLoc[56](loc51: &MarketParams)
89Call market::priority_taker_fee(&MarketParams): Option<u256>
90StLoc[78](loc73: Option<u256>)
91CopyLoc[56](loc51: &MarketParams)
92Call market::max_pending_orders(&MarketParams): u64
93StLoc[63](loc58: u64)
94CopyLoc[56](loc51: &MarketParams)
95Call market::scaling_factor(&MarketParams): u256
96StLoc[79](loc74: u256)
97CopyLoc[56](loc51: &MarketParams)
98Call market::max_open_interest(&MarketParams): u256
99StLoc[60](loc55: u256)
100MoveLoc[56](loc51: &MarketParams)
101Call market::max_open_interest_position_params(&MarketParams): u256 * u256
102StLoc[61](loc56: u256)
103StLoc[62](loc57: u256)
104CopyLoc[57](loc52: &MarketState)
105Call market::open_interest(&MarketState): u256
106StLoc[71](loc66: u256)
107ImmBorrowLoc[81](loc76: SessionSummary)
108ImmBorrowField[27](SessionSummary.bad_debt: u256)
109ReadRef
110LdU256(0)
111Neq
112StLoc[28](loc23: bool)
113CopyLoc[28](loc23: bool)
114BrFalse(120)
B13:
115MoveLoc[57](loc52: &MarketState)
116Call market::cum_funding_rates(&MarketState): u256 * u256
117StLoc[20](loc15: u256)
118StLoc[19](loc14: u256)
119Branch(126)
B14:
120MoveLoc[57](loc52: &MarketState)
121Pop
122LdU256(0)
123LdU256(0)
124StLoc[20](loc15: u256)
125StLoc[19](loc14: u256)
B15:
126MoveLoc[19](loc14: u256)
127MoveLoc[20](loc15: u256)
128StLoc[27](loc22: u256)
129StLoc[26](loc21: u256)
130MutBorrowLoc[32](loc27: ClearingHouse<Ty0>)
131CopyLoc[24](loc19: u64)
132Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
133StLoc[73](loc68: &mut Position)
134CopyLoc[75](loc70: u256)
135StLoc[76](loc71: u256)
136CopyLoc[45](loc40: bool)
137BrFalse(222)
B16:
138CopyLoc[73](loc68: &mut Position)
139FreezeRef
140Call position::base_and_quote_amounts(&Position): u256 * u256
141Pop
142StLoc[30](loc25: u256)
143MoveLoc[28](loc23: bool)
144BrFalse(152)
B17:
145CopyLoc[73](loc68: &mut Position)
146CopyLoc[36](loc31: u256)
147MoveLoc[26](loc21: u256)
148MoveLoc[27](loc22: u256)
149ImmBorrowLoc[31](loc26: ID)
150CopyLoc[24](loc19: u64)
151Call settle_position_funding_and_emit(&mut Position, u256, u256, u256, &ID, u64)
B18:
152ImmBorrowLoc[81](loc76: SessionSummary)
153ImmBorrowField[18](SessionSummary.base_liquidated: u256)
154ReadRef
155LdU256(0)
156Neq
157BrFalse(173)
B19:
158CopyLoc[73](loc68: &mut Position)
159ImmBorrowLoc[81](loc76: SessionSummary)
160ImmBorrowField[26](SessionSummary.is_liqee_long: bool)
161ReadRef
162Not
163ImmBorrowLoc[81](loc76: SessionSummary)
164ImmBorrowField[18](SessionSummary.base_liquidated: u256)
165ReadRef
166ImmBorrowLoc[81](loc76: SessionSummary)
167ImmBorrowField[17](SessionSummary.quote_liquidated: u256)
168ReadRef
169Call position::add_base_to_position(&mut Position, bool, u256, u256): u256 * u256
170StLoc[22](loc17: u256)
171StLoc[21](loc16: u256)
172Branch(177)
B20:
173LdU256(0)
174LdU256(0)
175StLoc[22](loc17: u256)
176StLoc[21](loc16: u256)
B21:
177MoveLoc[21](loc16: u256)
178MoveLoc[22](loc17: u256)
179Pop
180StLoc[47](loc42: u256)
181CopyLoc[73](loc68: &mut Position)
182CopyLoc[47](loc42: u256)
183CopyLoc[46](loc41: u256)
184Call ifixed::add(u256, u256): u256
185CopyLoc[36](loc31: u256)
186Call position::add_to_collateral_usd(&mut Position, u256, u256): u256
187Pop
188CopyLoc[73](loc68: &mut Position)
189FreezeRef
190Call position::base_and_quote_amounts(&Position): u256 * u256
191Pop
192StLoc[29](loc24: u256)
193CopyLoc[29](loc24: u256)
194StLoc[76](loc71: u256)
195MoveLoc[88](loc83: u256)
196MoveLoc[29](loc24: u256)
197LdU256(0)
198Call ifixed::max(u256, u256): u256
199MoveLoc[30](loc25: u256)
200LdU256(0)
201Call ifixed::max(u256, u256): u256
202Call ifixed::sub(u256, u256): u256
203Call ifixed::add(u256, u256): u256
204StLoc[88](loc83: u256)
205CopyLoc[31](loc26: ID)
206MoveLoc[44](loc39: Option<u64>)
207Call option::destroy_some<u64>(Option<u64>): u64
208CopyLoc[24](loc19: u64)
209ImmBorrowLoc[81](loc76: SessionSummary)
210ImmBorrowField[26](SessionSummary.is_liqee_long: bool)
211ReadRef
212ImmBorrowLoc[81](loc76: SessionSummary)
213ImmBorrowField[18](SessionSummary.base_liquidated: u256)
214ReadRef
215ImmBorrowLoc[81](loc76: SessionSummary)
216ImmBorrowField[17](SessionSummary.quote_liquidated: u256)
217ReadRef
218MoveLoc[47](loc42: u256)
219MoveLoc[46](loc41: u256)
220CopyLoc[53](loc48: u256)
221Call events::e24(ID, u64, u64, bool, u256, u256, u256, u256, u256)
B22:
222MoveLoc[59](loc54: bool)
223BrFalse(227)
B23:
224MoveLoc[49](loc44: vector<FilledMakerOrder>)
225MoveLoc[48](loc43: Option<u64>)
226Call events::e18(vector<FilledMakerOrder>, Option<u64>)
B24:
227ImmBorrowLoc[81](loc76: SessionSummary)
228ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
229ReadRef
230LdU256(0)
231Neq
232BrFalse(234)
B25:
233Branch(248)
B26:
234ImmBorrowLoc[81](loc76: SessionSummary)
235ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
236ReadRef
237LdU256(0)
238Neq
239BrFalse(241)
B27:
240Branch(248)
B28:
241LdU256(0)
242StLoc[83](loc78: u256)
243LdU256(0)
244StLoc[85](loc80: u256)
245LdU256(0)
246StLoc[84](loc79: u256)
247Branch(322)
B29:
248MoveLoc[82](loc77: u256)
249StLoc[37](loc32: u256)
250MoveLoc[89](loc84: bool)
251BrFalse(263)
B30:
252MoveLoc[78](loc73: Option<u256>)
253Call market::resolve_priority_taker_fee(Option<u256>): u256
254StLoc[77](loc72: u256)
255CopyLoc[77](loc72: u256)
256LdU256(0)
257Neq
258BrFalse(263)
B31:
259MoveLoc[37](loc32: u256)
260MoveLoc[77](loc72: u256)
261Call ifixed::add(u256, u256): u256
262StLoc[37](loc32: u256)
B32:
263ImmBorrowLoc[43](loc38: Option<IntegratorInfo>)
264Call option::is_some<IntegratorInfo>(&Option<IntegratorInfo>): bool
265BrFalse(277)
B33:
266ImmBorrowLoc[43](loc38: Option<IntegratorInfo>)
267Call option::borrow<IntegratorInfo>(&Option<IntegratorInfo>): &IntegratorInfo
268StLoc[40](loc35: &IntegratorInfo)
269CopyLoc[40](loc35: &IntegratorInfo)
270Call account::integrator_fee(&IntegratorInfo): u256
271StLoc[41](loc36: u256)
272MoveLoc[40](loc35: &IntegratorInfo)
273Call account::integrator_id(&IntegratorInfo): u32
274Call option::some<u32>(u32): Option<u32>
275StLoc[42](loc37: Option<u32>)
276Branch(281)
B34:
277LdU256(0)
278StLoc[41](loc36: u256)
279Call option::none<u32>(): Option<u32>
280StLoc[42](loc37: Option<u32>)
B35:
281CopyLoc[73](loc68: &mut Position)
282CopyLoc[36](loc31: u256)
283ImmBorrowLoc[81](loc76: SessionSummary)
284ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
285ReadRef
286ImmBorrowLoc[81](loc76: SessionSummary)
287ImmBorrowField[21](SessionSummary.quote_filled_ask: u256)
288ReadRef
289ImmBorrowLoc[81](loc76: SessionSummary)
290ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
291ReadRef
292ImmBorrowLoc[81](loc76: SessionSummary)
293ImmBorrowField[23](SessionSummary.quote_filled_bid: u256)
294ReadRef
295MoveLoc[37](loc32: u256)
296MoveLoc[41](loc36: u256)
297Call position::apply_taker_fills_and_settle(&mut Position, u256, u256, u256, u256, u256, u256, u256): u256 * u256 * u256 * u256
298StLoc[85](loc80: u256)
299StLoc[84](loc79: u256)
300StLoc[83](loc78: u256)
301StLoc[72](loc67: u256)
302CopyLoc[31](loc26: ID)
303CopyLoc[24](loc19: u64)
304MoveLoc[72](loc67: u256)
305CopyLoc[83](loc78: u256)
306MoveLoc[42](loc37: Option<u32>)
307CopyLoc[84](loc79: u256)
308ImmBorrowLoc[81](loc76: SessionSummary)
309ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
310ReadRef
311ImmBorrowLoc[81](loc76: SessionSummary)
312ImmBorrowField[21](SessionSummary.quote_filled_ask: u256)
313ReadRef
314ImmBorrowLoc[81](loc76: SessionSummary)
315ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
316ReadRef
317ImmBorrowLoc[81](loc76: SessionSummary)
318ImmBorrowField[23](SessionSummary.quote_filled_bid: u256)
319ReadRef
320CopyLoc[53](loc48: u256)
321Call events::e20(ID, u64, u256, u256, Option<u32>, u256, u256, u256, u256, u256, u256)
B36:
322CopyLoc[73](loc68: &mut Position)
323MoveLoc[63](loc58: u64)
324ImmBorrowLoc[81](loc76: SessionSummary)
325Call process_post(&mut Position, u64, &SessionSummary)
326CopyLoc[73](loc68: &mut Position)
327FreezeRef
328MoveLoc[54](loc49: u256)
329Call position::effective_initial_margin_ratio(&Position, u256): u256
330StLoc[52](loc47: u256)
331CopyLoc[73](loc68: &mut Position)
332FreezeRef
333Call position::base_and_quote_amounts(&Position): u256 * u256
334Pop
335StLoc[74](loc69: u256)
336CopyLoc[3](Arg3: bool)
337BrFalse(349)
B37:
338CopyLoc[73](loc68: &mut Position)
339FreezeRef
340CopyLoc[36](loc31: u256)
341CopyLoc[53](loc48: u256)
342MoveLoc[52](loc47: u256)
343CopyLoc[34](loc29: u256)
344Call position::compute_margin_and_free_collateral(&Position, u256, u256, u256, u256): u256 * u256 * u256
345StLoc[6](loc1: u256)
346StLoc[5](loc0: u256)
347StLoc[23](loc18: u256)
348Branch(360)
B38:
349CopyLoc[73](loc68: &mut Position)
350FreezeRef
351CopyLoc[36](loc31: u256)
352CopyLoc[53](loc48: u256)
353MoveLoc[52](loc47: u256)
354CopyLoc[34](loc29: u256)
355Call position::compute_margin_and_requirement(&Position, u256, u256, u256, u256): u256 * u256
356LdU256(0)
357StLoc[6](loc1: u256)
358StLoc[5](loc0: u256)
359StLoc[23](loc18: u256)
B39:
360MoveLoc[23](loc18: u256)
361MoveLoc[5](loc0: u256)
362MoveLoc[6](loc1: u256)
363StLoc[39](loc34: u256)
364StLoc[65](loc60: u256)
365StLoc[51](loc46: u256)
366CopyLoc[65](loc60: u256)
367CopyLoc[51](loc46: u256)
368Call ifixed::greater_than(u256, u256): bool
369BrFalse(477)
B40:
370MoveLoc[2](Arg2: bool)
371BrFalse(415)
B41:
372CopyLoc[73](loc68: &mut Position)
373FreezeRef
374Call position::collateral(&Position): u256
375CopyLoc[36](loc31: u256)
376MoveLoc[34](loc29: u256)
377MoveLoc[65](loc60: u256)
378MoveLoc[51](loc46: u256)
379Call ifixed::sub(u256, u256): u256
380Call collateral_for_margin_increase(u256, u256, u256, u256): u256
381StLoc[66](loc61: u256)
382MoveLoc[50](loc45: u256)
383Call ifixed::is_neg(u256): bool
384Not
385BrFalse(387)
B42:
386Branch(393)
B43:
387MoveLoc[73](loc68: &mut Position)
388Pop
389MoveLoc[1](Arg1: &mut Account<Ty0>)
390Pop
391LdU64(39)
392Abort
B44:
393MoveLoc[66](loc61: u256)
394CopyLoc[79](loc74: u256)
395Add
396LdU256(1)
397Sub
398CopyLoc[79](loc74: u256)
399Div
400CastU64
401StLoc[67](loc62: u64)
402CopyLoc[67](loc62: u64)
403CastU256
404MoveLoc[79](loc74: u256)
405Mul
406StLoc[68](loc63: u256)
407MoveLoc[73](loc68: &mut Position)
408MoveLoc[68](loc63: u256)
409Call position::add_to_collateral(&mut Position, u256)
410MoveLoc[67](loc62: u64)
411LdTrue
412StLoc[9](loc4: bool)
413StLoc[8](loc3: u64)
414Branch(472)
B45:
415MoveLoc[45](loc40: bool)
416Not
417BrFalse(419)
B46:
418Branch(425)
B47:
419MoveLoc[73](loc68: &mut Position)
420Pop
421MoveLoc[1](Arg1: &mut Account<Ty0>)
422Pop
423LdU64(52)
424Abort
B48:
425MoveLoc[86](loc81: bool)
426Not
427BrFalse(429)
B49:
428Branch(435)
B50:
429MoveLoc[73](loc68: &mut Position)
430Pop
431MoveLoc[1](Arg1: &mut Account<Ty0>)
432Pop
433LdU64(54)
434Abort
B51:
435ImmBorrowLoc[81](loc76: SessionSummary)
436ImmBorrowField[19](SessionSummary.posted_orders: u64)
437ReadRef
438LdU64(0)
439Eq
440BrFalse(446)
B52:
441MoveLoc[73](loc68: &mut Position)
442Pop
443LdTrue
444StLoc[7](loc2: bool)
445Branch(454)
B53:
446CopyLoc[51](loc46: u256)
447MoveLoc[73](loc68: &mut Position)
448FreezeRef
449MoveLoc[53](loc48: u256)
450MoveLoc[55](loc50: u256)
451Call position::margin_requirement(&Position, u256, u256): u256
452Call ifixed::greater_than_eq(u256, u256): bool
453StLoc[7](loc2: bool)
B54:
454MoveLoc[7](loc2: bool)
455BrFalse(457)
B55:
456Branch(461)
B56:
457MoveLoc[1](Arg1: &mut Account<Ty0>)
458Pop
459LdU64(57)
460Abort
B57:
461MoveLoc[50](loc45: u256)
462MoveLoc[64](loc59: u256)
463MoveLoc[51](loc46: u256)
464MoveLoc[65](loc60: u256)
465MoveLoc[75](loc70: u256)
466CopyLoc[74](loc69: u256)
467Call position::ensure_margin_requirements(u256, u256, u256, u256, u256, u256)
468LdU64(0)
469LdFalse
470StLoc[9](loc4: bool)
471StLoc[8](loc3: u64)
B58:
472MoveLoc[8](loc3: u64)
473MoveLoc[9](loc4: bool)
474StLoc[14](loc9: bool)
475StLoc[13](loc8: u64)
476Branch(508)
B59:
477MoveLoc[3](Arg3: bool)
478BrFalse(498)
B60:
479CopyLoc[39](loc34: u256)
480MoveLoc[79](loc74: u256)
481Call ifixed::to_balance(u256, u256): u64
482StLoc[38](loc33: u64)
483CopyLoc[39](loc34: u256)
484LdU256(0)
485Neq
486BrFalse(491)
B61:
487MoveLoc[73](loc68: &mut Position)
488MoveLoc[39](loc34: u256)
489Call position::sub_from_collateral(&mut Position, u256)
490Branch(493)
B62:
491MoveLoc[73](loc68: &mut Position)
492Pop
B63:
493MoveLoc[38](loc33: u64)
494LdFalse
495StLoc[12](loc7: bool)
496StLoc[10](loc5: u64)
497Branch(504)
B64:
498MoveLoc[73](loc68: &mut Position)
499Pop
500LdU64(0)
501LdFalse
502StLoc[12](loc7: bool)
503StLoc[10](loc5: u64)
B65:
504MoveLoc[10](loc5: u64)
505MoveLoc[12](loc7: bool)
506StLoc[14](loc9: bool)
507StLoc[13](loc8: u64)
B66:
508MoveLoc[13](loc8: u64)
509MoveLoc[14](loc9: bool)
510StLoc[35](loc30: bool)
511StLoc[33](loc28: u64)
512CopyLoc[33](loc28: u64)
513LdU64(0)
514Neq
515BrFalse(557)
B67:
516MoveLoc[35](loc30: bool)
517BrFalse(547)
B68:
518CopyLoc[1](Arg1: &mut Account<Ty0>)
519Call account::borrow_mut_collateral<Ty0>(&mut Account<Ty0>): &mut Balance<Ty0>
520StLoc[25](loc20: &mut Balance<Ty0>)
521CopyLoc[33](loc28: u64)
522CopyLoc[25](loc20: &mut Balance<Ty0>)
523FreezeRef
524Call balance::value<Ty0>(&Balance<Ty0>): u64
525Le
526BrFalse(528)
B69:
527Branch(534)
B70:
528MoveLoc[25](loc20: &mut Balance<Ty0>)
529Pop
530MoveLoc[1](Arg1: &mut Account<Ty0>)
531Pop
532LdU64(30)
533Abort
B71:
534MutBorrowLoc[32](loc27: ClearingHouse<Ty0>)
535Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
536MutBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
537MoveLoc[25](loc20: &mut Balance<Ty0>)
538CopyLoc[33](loc28: u64)
539Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
540Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
541Pop
542CopyLoc[31](loc26: ID)
543MoveLoc[24](loc19: u64)
544MoveLoc[33](loc28: u64)
545Call events::e03(ID, u64, u64)
546Branch(557)
B72:
547MutBorrowLoc[32](loc27: ClearingHouse<Ty0>)
548Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
549CopyLoc[1](Arg1: &mut Account<Ty0>)
550Call account::borrow_mut_collateral<Ty0>(&mut Account<Ty0>): &mut Balance<Ty0>
551CopyLoc[33](loc28: u64)
552Call withdraw_vault_collateral<Ty0>(&mut Vault<Ty0>, &mut Balance<Ty0>, u64)
553CopyLoc[31](loc26: ID)
554MoveLoc[24](loc19: u64)
555MoveLoc[33](loc28: u64)
556Call events::e29(ID, u64, u64)
B73:
557ImmBorrowLoc[43](loc38: Option<IntegratorInfo>)
558Call option::is_some<IntegratorInfo>(&Option<IntegratorInfo>): bool
559BrFalse(567)
B74:
560MoveLoc[1](Arg1: &mut Account<Ty0>)
561FreezeRef
562ImmBorrowLoc[43](loc38: Option<IntegratorInfo>)
563Call option::borrow<IntegratorInfo>(&Option<IntegratorInfo>): &IntegratorInfo
564Call account::validate_session_integrator_info<Ty0>(&Account<Ty0>, &IntegratorInfo): u32
565Pop
566Branch(569)
B75:
567MoveLoc[1](Arg1: &mut Account<Ty0>)
568Pop
B76:
569MoveLoc[87](loc82: u256)
570MoveLoc[83](loc78: u256)
571MoveLoc[84](loc79: u256)
572Call ifixed::add(u256, u256): u256
573Call ifixed::add(u256, u256): u256
574StLoc[87](loc82: u256)
575MoveLoc[88](loc83: u256)
576MoveLoc[85](loc80: u256)
577Call ifixed::add(u256, u256): u256
578StLoc[88](loc83: u256)
579CopyLoc[87](loc82: u256)
580Call ifixed::is_neg(u256): bool
581Not
582BrFalse(584)
B77:
583Branch(586)
B78:
584LdU64(13)
585Abort
B79:
586CopyLoc[71](loc66: u256)
587CopyLoc[88](loc83: u256)
588Call ifixed::add(u256, u256): u256
589StLoc[70](loc65: u256)
590CopyLoc[87](loc82: u256)
591LdU256(0)
592Neq
593BrFalse(597)
B80:
594LdTrue
595StLoc[15](loc10: bool)
596Branch(601)
B81:
597CopyLoc[88](loc83: u256)
598LdU256(0)
599Neq
600StLoc[15](loc10: bool)
B82:
601MoveLoc[15](loc10: bool)
602BrFalse(639)
B83:
603MutBorrowLoc[32](loc27: ClearingHouse<Ty0>)
604Call borrow_mut_market_state<Ty0>(&mut ClearingHouse<Ty0>): &mut MarketState
605StLoc[58](loc53: &mut MarketState)
606CopyLoc[58](loc53: &mut MarketState)
607MoveLoc[87](loc82: u256)
608MoveLoc[36](loc31: u256)
609Call market::add_fees_accrued_usd(&mut MarketState, u256, u256)
610CopyLoc[58](loc53: &mut MarketState)
611MoveLoc[88](loc83: u256)
612Call market::add_to_open_interest(&mut MarketState, u256)
613CopyLoc[70](loc65: u256)
614MoveLoc[60](loc55: u256)
615Call ifixed::less_than_eq(u256, u256): bool
616BrFalse(620)
B84:
617LdTrue
618StLoc[16](loc11: bool)
619Branch(624)
B85:
620CopyLoc[70](loc65: u256)
621MoveLoc[71](loc66: u256)
622Call ifixed::less_than_eq(u256, u256): bool
623StLoc[16](loc11: bool)
B86:
624MoveLoc[16](loc11: bool)
625BrFalse(627)
B87:
626Branch(631)
B88:
627MoveLoc[58](loc53: &mut MarketState)
628Pop
629LdU64(15)
630Abort
B89:
631MoveLoc[58](loc53: &mut MarketState)
632FreezeRef
633Call market::fees_accrued(&MarketState): u256
634StLoc[69](loc64: u256)
635MoveLoc[31](loc26: ID)
636CopyLoc[70](loc65: u256)
637MoveLoc[69](loc64: u256)
638Call events::e53(ID, u256, u256)
B90:
639CopyLoc[70](loc65: u256)
640MoveLoc[62](loc57: u256)
641Call ifixed::greater_than(u256, u256): bool
642BrFalse(650)
B91:
643CopyLoc[74](loc69: u256)
644Call ifixed::abs(u256): u256
645MoveLoc[76](loc71: u256)
646Call ifixed::abs(u256): u256
647Call ifixed::greater_than(u256, u256): bool
648StLoc[17](loc12: bool)
649Branch(652)
B92:
650LdFalse
651StLoc[17](loc12: bool)
B93:
652MoveLoc[17](loc12: bool)
653BrFalse(664)
B94:
654MoveLoc[74](loc69: u256)
655Call ifixed::abs(u256): u256
656MoveLoc[70](loc65: u256)
657Call ifixed::div(u256, u256): u256
658MoveLoc[61](loc56: u256)
659Call ifixed::less_than_eq(u256, u256): bool
660BrFalse(662)
B95:
661Branch(664)
B96:
662LdU64(16)
663Abort
B97:
664MoveLoc[32](loc27: ClearingHouse<Ty0>)
665MoveLoc[81](loc76: SessionSummary)
666Ret
}
execute_limit_order<Ty0>(Arg0: &mut SessionHotPotato<Ty0>, Arg1: bool, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: Option<u64>, Arg6: bool, Arg7: Option<u64>): u64 * Option<u128> {
L8: loc0: u128
L9: loc1: bool
L10: loc2: bool
L11: loc3: u64
L12: loc4: Option<u64>
L13: loc5: Option<u32>
L14: loc6: u32
L15: loc7: bool
L16: loc8: &mut Map<Order>
L17: loc9: u128
L18: loc10: Option<u64>
L19: loc11: ID
L20: loc12: &mut UID
L21: loc13: u256
L22: loc14: u256
L23: loc15: u64
L24: loc16: u256
L25: loc17: u64
L26: loc18: bool
L27: loc19: &IntegratorInfo
L28: loc20: u64
L29: loc21: u128
L30: loc22: &mut Leaf<Order>
L31: loc23: u256
L32: loc24: FilledMakerOrder
L33: loc25: &mut vector<FilledMakerOrder>
L34: loc26: u256
L35: loc27: u256
L36: loc28: u256
L37: loc29: &mut Map<Order>
L38: loc30: u256
L39: loc31: &MarketParams
L40: loc32: &MarketState
L41: loc33: bool
L42: loc34: u256
L43: loc35: u256
L44: loc36: u256
L45: loc37: u256
L46: loc38: u64
L47: loc39: u256
L48: loc40: &mut Order
L49: loc41: bool
L50: loc42: u128
L51: loc43: &mut Orderbook
L52: loc44: u32
L53: loc45: Option<u32>
L54: loc46: u128
L55: loc47: Option<u128>
L56: loc48: u256
L57: loc49: &mut SessionSummary
L58: loc50: bool
L59: loc51: u64
L60: loc52: u128
L61: loc53: bool
L62: loc54: &mut bool
L63: loc55: u64
L64: loc56: u64
L65: loc57: bool
L66: loc58: u64
B0:
0CopyLoc[4](Arg4: u64)
1LdU64(4)
2Lt
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
6Pop
7LdU64(44)
8Abort
B3:
9CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
10ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
11ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
12Call object::uid_to_inner(&UID): ID
13StLoc[19](loc11: ID)
14CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
15ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
16ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
17StLoc[39](loc31: &MarketParams)
18CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
19ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
20ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
21StLoc[40](loc32: &MarketState)
22CopyLoc[39](loc31: &MarketParams)
23Call market::maker_fee(&MarketParams): u256
24StLoc[34](loc26: u256)
25CopyLoc[39](loc31: &MarketParams)
26Call market::liquidation_fee_rates(&MarketParams): u256 * u256
27Pop
28StLoc[31](loc23: u256)
29CopyLoc[39](loc31: &MarketParams)
30Call market::collateral_haircut(&MarketParams): u256
31StLoc[21](loc13: u256)
32CopyLoc[40](loc32: &MarketState)
33Call market::cum_funding_rates(&MarketState): u256 * u256
34StLoc[45](loc37: u256)
35StLoc[44](loc36: u256)
36MoveLoc[40](loc32: &MarketState)
37Call market::open_interest(&MarketState): u256
38StLoc[24](loc16: u256)
39MoveLoc[39](loc31: &MarketParams)
40Call market::max_open_interest_position_params(&MarketParams): u256 * u256
41StLoc[42](loc34: u256)
42StLoc[43](loc35: u256)
43CopyLoc[1](Arg1: bool)
44StLoc[58](loc50: bool)
45CopyLoc[58](loc50: bool)
46BrFalse(50)
B4:
47LdFalse
48StLoc[15](loc7: bool)
49Branch(52)
B5:
50LdTrue
51StLoc[15](loc7: bool)
B6:
52MoveLoc[15](loc7: bool)
53StLoc[41](loc33: bool)
54CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
55MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
56MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
57CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
58MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
59MutBorrowFieldGeneric[7](ClearingHouse.orderbook: Orderbook)
60CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
61MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
62CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
63MutBorrowFieldGeneric[18](SessionHotPotato.taker_pending_cancelled: bool)
64CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
65MutBorrowFieldGeneric[16](SessionHotPotato.maker_events: vector<FilledMakerOrder>)
66CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
67ImmBorrowFieldGeneric[8](SessionHotPotato.account_id: u64)
68ReadRef
69CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
70ImmBorrowFieldGeneric[19](SessionHotPotato.timestamp_ms: u64)
71ReadRef
72CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
73ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
74ReadRef
75CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
76ImmBorrowFieldGeneric[10](SessionHotPotato.mark_price: u256)
77ReadRef
78StLoc[38](loc30: u256)
79StLoc[22](loc14: u256)
80StLoc[64](loc56: u64)
81StLoc[59](loc51: u64)
82StLoc[33](loc25: &mut vector<FilledMakerOrder>)
83StLoc[62](loc54: &mut bool)
84StLoc[57](loc49: &mut SessionSummary)
85StLoc[51](loc43: &mut Orderbook)
86StLoc[20](loc12: &mut UID)
87ImmBorrowLoc[7](Arg7: Option<u64>)
88LdU64(18446744073709551615)
89Call option::get_with_default<u64>(&Option<u64>, u64): u64
90CopyLoc[64](loc56: u64)
91Gt
92BrFalse(94)
B7:
93Branch(108)
B8:
94MoveLoc[62](loc54: &mut bool)
95Pop
96MoveLoc[57](loc49: &mut SessionSummary)
97Pop
98MoveLoc[51](loc43: &mut Orderbook)
99Pop
100MoveLoc[33](loc25: &mut vector<FilledMakerOrder>)
101Pop
102MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
103Pop
104MoveLoc[20](loc12: &mut UID)
105Pop
106LdU64(14)
107Abort
B9:
108MoveLoc[58](loc50: bool)
109BrFalse(119)
B10:
110CopyLoc[51](loc43: &mut Orderbook)
111Call orderbook::borrow_mut_bids(&mut Orderbook): &mut Map<Order>
112CopyLoc[3](Arg3: u64)
113LdU64(18446744073709551615)
114Xor
115CastU128
116StLoc[8](loc0: u128)
117StLoc[16](loc8: &mut Map<Order>)
118Branch(125)
B11:
119CopyLoc[51](loc43: &mut Orderbook)
120Call orderbook::borrow_mut_asks(&mut Orderbook): &mut Map<Order>
121CopyLoc[3](Arg3: u64)
122CastU128
123StLoc[8](loc0: u128)
124StLoc[16](loc8: &mut Map<Order>)
B12:
125MoveLoc[16](loc8: &mut Map<Order>)
126MoveLoc[8](loc0: u128)
127StLoc[60](loc52: u128)
128StLoc[37](loc29: &mut Map<Order>)
129LdU128(0)
130StLoc[29](loc21: u128)
131LdTrue
132StLoc[26](loc18: bool)
133LdFalse
134StLoc[61](loc53: bool)
135LdU64(0)
136StLoc[66](loc58: u64)
137LdFalse
138StLoc[65](loc57: bool)
139CopyLoc[2](Arg2: u64)
140StLoc[28](loc20: u64)
141CopyLoc[37](loc29: &mut Map<Order>)
142FreezeRef
143Call ordered_map::first_leaf_ptr<Order>(&Map<Order>): u64
144StLoc[23](loc15: u64)
B13:
145CopyLoc[23](loc15: u64)
146LdU64(0)
147Neq
148BrFalse(295)
B14:
149CopyLoc[37](loc29: &mut Map<Order>)
150MoveLoc[23](loc15: u64)
151Call ordered_map::get_leaf_mut<Order>(&mut Map<Order>, u64): &mut Leaf<Order>
152StLoc[30](loc22: &mut Leaf<Order>)
153CopyLoc[30](loc22: &mut Leaf<Order>)
154FreezeRef
155Call ordered_map::next<Order>(&Leaf<Order>): u64
156StLoc[23](loc15: u64)
157LdU64(0)
158StLoc[25](loc17: u64)
159CopyLoc[30](loc22: &mut Leaf<Order>)
160FreezeRef
161Call ordered_map::size<Order>(&Leaf<Order>): u64
162StLoc[46](loc38: u64)
B15:
163CopyLoc[25](loc17: u64)
164CopyLoc[46](loc38: u64)
165Lt
166BrFalse(270)
B16:
167CopyLoc[30](loc22: &mut Leaf<Order>)
168CopyLoc[25](loc17: u64)
169Call ordered_map::elem_mut<Order>(&mut Leaf<Order>, u64): u128 * &mut Order
170StLoc[48](loc40: &mut Order)
171StLoc[50](loc42: u128)
172CopyLoc[50](loc42: u128)
173LdU8(64)
174Shr
175CopyLoc[60](loc52: u128)
176Gt
177BrFalse(185)
B17:
178MoveLoc[48](loc40: &mut Order)
179Pop
180MoveLoc[30](loc22: &mut Leaf<Order>)
181Pop
182LdTrue
183StLoc[61](loc53: bool)
184Branch(270)
B18:
185CopyLoc[50](loc42: u128)
186StLoc[29](loc21: u128)
187CopyLoc[57](loc49: &mut SessionSummary)
188CopyLoc[20](loc12: &mut UID)
189MoveLoc[50](loc42: u128)
190MoveLoc[48](loc40: &mut Order)
191CopyLoc[64](loc56: u64)
192CopyLoc[22](loc14: u256)
193CopyLoc[38](loc30: u256)
194CopyLoc[34](loc26: u256)
195CopyLoc[31](loc23: u256)
196CopyLoc[21](loc13: u256)
197CopyLoc[44](loc36: u256)
198CopyLoc[45](loc37: u256)
199CopyLoc[24](loc16: u256)
200CopyLoc[43](loc35: u256)
201CopyLoc[42](loc34: u256)
202CopyLoc[59](loc51: u64)
203CopyLoc[2](Arg2: u64)
204CopyLoc[62](loc54: &mut bool)
205Call process_fill_maker(&mut SessionSummary, &mut UID, u128, &mut Order, u64, u256, u256, u256, u256, u256, u256, u256, u256, u256, u256, u64, u64, &mut bool): u64 * bool * FilledMakerOrder * u256
206StLoc[47](loc39: u256)
207StLoc[32](loc24: FilledMakerOrder)
208StLoc[49](loc41: bool)
209StLoc[63](loc55: u64)
210MoveLoc[2](Arg2: u64)
211CopyLoc[63](loc55: u64)
212Sub
213StLoc[2](Arg2: u64)
214MoveLoc[49](loc41: bool)
215StLoc[26](loc18: bool)
216ImmBorrowLoc[32](loc24: FilledMakerOrder)
217Call events::e54(&FilledMakerOrder): u256 * u256
218StLoc[36](loc28: u256)
219StLoc[35](loc27: u256)
220CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
221ImmBorrowFieldGeneric[21](SessionHotPotato.total_fees: u256)
222ReadRef
223MoveLoc[35](loc27: u256)
224MoveLoc[36](loc28: u256)
225Call ifixed::add(u256, u256): u256
226Call ifixed::add(u256, u256): u256
227CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
228MutBorrowFieldGeneric[21](SessionHotPotato.total_fees: u256)
229WriteRef
230CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
231ImmBorrowFieldGeneric[22](SessionHotPotato.total_open_interest: u256)
232ReadRef
233MoveLoc[47](loc39: u256)
234Call ifixed::add(u256, u256): u256
235CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
236MutBorrowFieldGeneric[22](SessionHotPotato.total_open_interest: u256)
237WriteRef
238CopyLoc[33](loc25: &mut vector<FilledMakerOrder>)
239MoveLoc[32](loc24: FilledMakerOrder)
240VecPushBack(160)
241CopyLoc[2](Arg2: u64)
242LdU64(0)
243Eq
244BrFalse(248)
B19:
245MoveLoc[30](loc22: &mut Leaf<Order>)
246Pop
247Branch(270)
B20:
248MoveLoc[63](loc55: u64)
249LdU64(0)
250Eq
251BrFalse(265)
B21:
252MoveLoc[66](loc58: u64)
253LdU64(1)
254Add
255StLoc[66](loc58: u64)
256CopyLoc[66](loc58: u64)
257LdU64(200)
258Eq
259BrFalse(265)
B22:
260MoveLoc[30](loc22: &mut Leaf<Order>)
261Pop
262LdTrue
263StLoc[65](loc57: bool)
264Branch(270)
B23:
265MoveLoc[25](loc17: u64)
266LdU64(1)
267Add
268StLoc[25](loc17: u64)
269Branch(163)
B24:
270CopyLoc[61](loc53: bool)
271BrFalse(275)
B25:
272LdTrue
273StLoc[9](loc1: bool)
274Branch(284)
B26:
275CopyLoc[65](loc57: bool)
276BrFalse(280)
B27:
277LdTrue
278StLoc[9](loc1: bool)
279Branch(284)
B28:
280CopyLoc[2](Arg2: u64)
281LdU64(0)
282Eq
283StLoc[9](loc1: bool)
B29:
284MoveLoc[9](loc1: bool)
285BrFalse(145)
B30:
286Branch(287)
B31:
287MoveLoc[62](loc54: &mut bool)
288Pop
289MoveLoc[57](loc49: &mut SessionSummary)
290Pop
291MoveLoc[33](loc25: &mut vector<FilledMakerOrder>)
292Pop
293MoveLoc[20](loc12: &mut UID)
294Pop
B32:
295CopyLoc[4](Arg4: u64)
296LdU64(1)
297Eq
298BrFalse(312)
B33:
299CopyLoc[2](Arg2: u64)
300LdU64(0)
301Eq
302BrFalse(304)
B34:
303Branch(312)
B35:
304MoveLoc[51](loc43: &mut Orderbook)
305Pop
306MoveLoc[37](loc29: &mut Map<Order>)
307Pop
308MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
309Pop
310LdU64(46)
311Abort
B36:
312CopyLoc[4](Arg4: u64)
313LdU64(2)
314Eq
315BrFalse(329)
B37:
316CopyLoc[2](Arg2: u64)
317MoveLoc[28](loc20: u64)
318Eq
319BrFalse(321)
B38:
320Branch(329)
B39:
321MoveLoc[51](loc43: &mut Orderbook)
322Pop
323MoveLoc[37](loc29: &mut Map<Order>)
324Pop
325MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
326Pop
327LdU64(47)
328Abort
B40:
329MoveLoc[4](Arg4: u64)
330LdU64(3)
331Eq
332BrFalse(336)
B41:
333LdTrue
334StLoc[10](loc2: bool)
335Branch(338)
B42:
336MoveLoc[65](loc57: bool)
337StLoc[10](loc2: bool)
B43:
338MoveLoc[10](loc2: bool)
339BrFalse(342)
B44:
340LdU64(0)
341StLoc[2](Arg2: u64)
B45:
342CopyLoc[29](loc21: u128)
343LdU128(0)
344Gt
345BrFalse(388)
B46:
346CopyLoc[37](loc29: &mut Map<Order>)
347MoveLoc[29](loc21: u128)
348MoveLoc[26](loc18: bool)
349Call ordered_map::batch_drop<Order>(&mut Map<Order>, u128, bool)
350CopyLoc[37](loc29: &mut Map<Order>)
351FreezeRef
352Call ordered_map::is_empty<Order>(&Map<Order>): bool
353BrFalse(359)
B47:
354MoveLoc[37](loc29: &mut Map<Order>)
355Pop
356Call option::none<u64>(): Option<u64>
357StLoc[12](loc4: Option<u64>)
358Branch(381)
B48:
359MoveLoc[37](loc29: &mut Map<Order>)
360FreezeRef
361Call ordered_map::min_key<Order>(&Map<Order>): u128
362StLoc[17](loc9: u128)
363CopyLoc[41](loc33: bool)
364BrFalse(371)
B49:
365MoveLoc[17](loc9: u128)
366LdU8(64)
367Shr
368CastU64
369StLoc[11](loc3: u64)
370Branch(378)
B50:
371MoveLoc[17](loc9: u128)
372LdU8(64)
373Shr
374CastU64
375LdU64(18446744073709551615)
376Xor
377StLoc[11](loc3: u64)
B51:
378MoveLoc[11](loc3: u64)
379Call option::some<u64>(u64): Option<u64>
380StLoc[12](loc4: Option<u64>)
B52:
381MoveLoc[12](loc4: Option<u64>)
382StLoc[18](loc10: Option<u64>)
383CopyLoc[51](loc43: &mut Orderbook)
384MoveLoc[41](loc33: bool)
385MoveLoc[18](loc10: Option<u64>)
386Call orderbook::set_best_price(&mut Orderbook, bool, Option<u64>)
387Branch(390)
B53:
388MoveLoc[37](loc29: &mut Map<Order>)
389Pop
B54:
390Call option::none<u128>(): Option<u128>
391StLoc[55](loc47: Option<u128>)
392CopyLoc[2](Arg2: u64)
393LdU64(0)
394Neq
395BrFalse(488)
B55:
396CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
397ImmBorrowFieldGeneric[23](SessionHotPotato.integrator_info: Option<IntegratorInfo>)
398Call option::is_some<IntegratorInfo>(&Option<IntegratorInfo>): bool
399BrFalse(412)
B56:
400CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
401ImmBorrowFieldGeneric[23](SessionHotPotato.integrator_info: Option<IntegratorInfo>)
402Call option::borrow<IntegratorInfo>(&Option<IntegratorInfo>): &IntegratorInfo
403StLoc[27](loc19: &IntegratorInfo)
404CopyLoc[27](loc19: &IntegratorInfo)
405Call account::integrator_id(&IntegratorInfo): u32
406Call option::some<u32>(u32): Option<u32>
407MoveLoc[27](loc19: &IntegratorInfo)
408Call account::integrator_fee_b9(&IntegratorInfo): u32
409StLoc[14](loc6: u32)
410StLoc[13](loc5: Option<u32>)
411Branch(416)
B57:
412Call option::none<u32>(): Option<u32>
413LdU32(0)
414StLoc[14](loc6: u32)
415StLoc[13](loc5: Option<u32>)
B58:
416MoveLoc[13](loc5: Option<u32>)
417MoveLoc[14](loc6: u32)
418StLoc[52](loc44: u32)
419StLoc[53](loc45: Option<u32>)
420CopyLoc[51](loc43: &mut Orderbook)
421CopyLoc[59](loc51: u64)
422CopyLoc[1](Arg1: bool)
423CopyLoc[2](Arg2: u64)
424MoveLoc[3](Arg3: u64)
425CopyLoc[5](Arg5: Option<u64>)
426CopyLoc[6](Arg6: bool)
427CopyLoc[7](Arg7: Option<u64>)
428CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
429ImmBorrowFieldGeneric[23](SessionHotPotato.integrator_info: Option<IntegratorInfo>)
430ReadRef
431Call orderbook::post_order(&mut Orderbook, u64, bool, u64, u64, Option<u64>, bool, Option<u64>, Option<IntegratorInfo>): u128
432StLoc[54](loc46: u128)
433CopyLoc[54](loc46: u128)
434Call option::some<u128>(u128): Option<u128>
435StLoc[55](loc47: Option<u128>)
436MoveLoc[19](loc11: ID)
437MoveLoc[59](loc51: u64)
438MoveLoc[54](loc46: u128)
439MoveLoc[5](Arg5: Option<u64>)
440CopyLoc[2](Arg2: u64)
441MoveLoc[6](Arg6: bool)
442MoveLoc[7](Arg7: Option<u64>)
443MoveLoc[53](loc45: Option<u32>)
444MoveLoc[52](loc44: u32)
445MoveLoc[38](loc30: u256)
446MoveLoc[51](loc43: &mut Orderbook)
447FreezeRef
448Call orderbook::book_price(&Orderbook): Option<u64>
449Call events::e17(ID, u64, u128, Option<u64>, u64, bool, Option<u64>, Option<u32>, u32, u256, Option<u64>)
450CopyLoc[2](Arg2: u64)
451LdU256(1000000000)
452Call ifixed::from_balance(u64, u256): u256
453StLoc[56](loc48: u256)
454CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
455ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
456ImmBorrowField[19](SessionSummary.posted_orders: u64)
457ReadRef
458LdU64(1)
459Add
460CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
461MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
462MutBorrowField[19](SessionSummary.posted_orders: u64)
463WriteRef
464MoveLoc[1](Arg1: bool)
465BrFalse(477)
B59:
466CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
467ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
468ImmBorrowField[24](SessionSummary.base_posted_ask: u256)
469ReadRef
470MoveLoc[56](loc48: u256)
471Call ifixed::add(u256, u256): u256
472MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
473MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
474MutBorrowField[24](SessionSummary.base_posted_ask: u256)
475WriteRef
476Branch(492)
B60:
477CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
478ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
479ImmBorrowField[25](SessionSummary.base_posted_bid: u256)
480ReadRef
481MoveLoc[56](loc48: u256)
482Call ifixed::add(u256, u256): u256
483MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
484MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
485MutBorrowField[25](SessionSummary.base_posted_bid: u256)
486WriteRef
487Branch(492)
B61:
488MoveLoc[51](loc43: &mut Orderbook)
489Pop
490MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
491Pop
B62:
492MoveLoc[2](Arg2: u64)
493MoveLoc[55](loc47: Option<u128>)
494Ret
}
execute_market_order<Ty0>(Arg0: &mut SessionHotPotato<Ty0>, Arg1: bool, Arg2: u64) {
L3: loc0: u64
L4: loc1: Option<u64>
L5: loc2: bool
L6: loc3: &mut Map<Order>
L7: loc4: u128
L8: loc5: Option<u64>
L9: loc6: &mut UID
L10: loc7: u256
L11: loc8: u256
L12: loc9: u64
L13: loc10: u256
L14: loc11: u64
L15: loc12: bool
L16: loc13: u128
L17: loc14: &mut Leaf<Order>
L18: loc15: u256
L19: loc16: FilledMakerOrder
L20: loc17: &mut vector<FilledMakerOrder>
L21: loc18: u256
L22: loc19: u256
L23: loc20: u256
L24: loc21: &mut Map<Order>
L25: loc22: u256
L26: loc23: &MarketParams
L27: loc24: &MarketState
L28: loc25: bool
L29: loc26: u256
L30: loc27: u256
L31: loc28: u256
L32: loc29: u256
L33: loc30: u64
L34: loc31: u256
L35: loc32: &mut Order
L36: loc33: bool
L37: loc34: u128
L38: loc35: &mut Orderbook
L39: loc36: &mut SessionSummary
L40: loc37: bool
L41: loc38: u64
L42: loc39: &mut bool
L43: loc40: u64
L44: loc41: u64
B0:
0CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
3StLoc[26](loc23: &MarketParams)
4CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
5ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
6ImmBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
7StLoc[27](loc24: &MarketState)
8CopyLoc[26](loc23: &MarketParams)
9Call market::maker_fee(&MarketParams): u256
10StLoc[21](loc18: u256)
11CopyLoc[26](loc23: &MarketParams)
12Call market::liquidation_fee_rates(&MarketParams): u256 * u256
13Pop
14StLoc[18](loc15: u256)
15CopyLoc[26](loc23: &MarketParams)
16Call market::collateral_haircut(&MarketParams): u256
17StLoc[10](loc7: u256)
18CopyLoc[27](loc24: &MarketState)
19Call market::cum_funding_rates(&MarketState): u256 * u256
20StLoc[32](loc29: u256)
21StLoc[31](loc28: u256)
22MoveLoc[27](loc24: &MarketState)
23Call market::open_interest(&MarketState): u256
24StLoc[13](loc10: u256)
25MoveLoc[26](loc23: &MarketParams)
26Call market::max_open_interest_position_params(&MarketParams): u256 * u256
27StLoc[29](loc26: u256)
28StLoc[30](loc27: u256)
29MoveLoc[1](Arg1: bool)
30StLoc[40](loc37: bool)
31CopyLoc[40](loc37: bool)
32BrFalse(36)
B1:
33LdFalse
34StLoc[5](loc2: bool)
35Branch(38)
B2:
36LdTrue
37StLoc[5](loc2: bool)
B3:
38MoveLoc[5](loc2: bool)
39StLoc[28](loc25: bool)
40CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
41MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
42MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
43CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
44MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
45MutBorrowFieldGeneric[7](ClearingHouse.orderbook: Orderbook)
46CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
47MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
48CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
49MutBorrowFieldGeneric[18](SessionHotPotato.taker_pending_cancelled: bool)
50CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
51MutBorrowFieldGeneric[16](SessionHotPotato.maker_events: vector<FilledMakerOrder>)
52CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
53ImmBorrowFieldGeneric[8](SessionHotPotato.account_id: u64)
54ReadRef
55CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
56ImmBorrowFieldGeneric[19](SessionHotPotato.timestamp_ms: u64)
57ReadRef
58CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
59ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
60ReadRef
61CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
62ImmBorrowFieldGeneric[10](SessionHotPotato.mark_price: u256)
63ReadRef
64StLoc[25](loc22: u256)
65StLoc[11](loc8: u256)
66StLoc[44](loc41: u64)
67StLoc[41](loc38: u64)
68StLoc[20](loc17: &mut vector<FilledMakerOrder>)
69StLoc[42](loc39: &mut bool)
70StLoc[39](loc36: &mut SessionSummary)
71StLoc[38](loc35: &mut Orderbook)
72StLoc[9](loc6: &mut UID)
73MoveLoc[40](loc37: bool)
74BrFalse(79)
B4:
75CopyLoc[38](loc35: &mut Orderbook)
76Call orderbook::borrow_mut_bids(&mut Orderbook): &mut Map<Order>
77StLoc[6](loc3: &mut Map<Order>)
78Branch(82)
B5:
79CopyLoc[38](loc35: &mut Orderbook)
80Call orderbook::borrow_mut_asks(&mut Orderbook): &mut Map<Order>
81StLoc[6](loc3: &mut Map<Order>)
B6:
82MoveLoc[6](loc3: &mut Map<Order>)
83StLoc[24](loc21: &mut Map<Order>)
84LdU128(0)
85StLoc[16](loc13: u128)
86LdTrue
87StLoc[15](loc12: bool)
88CopyLoc[24](loc21: &mut Map<Order>)
89FreezeRef
90Call ordered_map::first_leaf_ptr<Order>(&Map<Order>): u64
91StLoc[12](loc9: u64)
B7:
92CopyLoc[12](loc9: u64)
93LdU64(0)
94Neq
95BrFalse(202)
B8:
96CopyLoc[24](loc21: &mut Map<Order>)
97MoveLoc[12](loc9: u64)
98Call ordered_map::get_leaf_mut<Order>(&mut Map<Order>, u64): &mut Leaf<Order>
99StLoc[17](loc14: &mut Leaf<Order>)
100CopyLoc[17](loc14: &mut Leaf<Order>)
101FreezeRef
102Call ordered_map::next<Order>(&Leaf<Order>): u64
103StLoc[12](loc9: u64)
104LdU64(0)
105StLoc[14](loc11: u64)
106CopyLoc[17](loc14: &mut Leaf<Order>)
107FreezeRef
108Call ordered_map::size<Order>(&Leaf<Order>): u64
109StLoc[33](loc30: u64)
B9:
110CopyLoc[14](loc11: u64)
111CopyLoc[33](loc30: u64)
112Lt
113BrFalse(187)
B10:
114CopyLoc[17](loc14: &mut Leaf<Order>)
115CopyLoc[14](loc11: u64)
116Call ordered_map::elem_mut<Order>(&mut Leaf<Order>, u64): u128 * &mut Order
117StLoc[35](loc32: &mut Order)
118StLoc[37](loc34: u128)
119CopyLoc[37](loc34: u128)
120StLoc[16](loc13: u128)
121CopyLoc[39](loc36: &mut SessionSummary)
122CopyLoc[9](loc6: &mut UID)
123MoveLoc[37](loc34: u128)
124MoveLoc[35](loc32: &mut Order)
125CopyLoc[44](loc41: u64)
126CopyLoc[11](loc8: u256)
127CopyLoc[25](loc22: u256)
128CopyLoc[21](loc18: u256)
129CopyLoc[18](loc15: u256)
130CopyLoc[10](loc7: u256)
131CopyLoc[31](loc28: u256)
132CopyLoc[32](loc29: u256)
133CopyLoc[13](loc10: u256)
134CopyLoc[30](loc27: u256)
135CopyLoc[29](loc26: u256)
136CopyLoc[41](loc38: u64)
137CopyLoc[2](Arg2: u64)
138CopyLoc[42](loc39: &mut bool)
139Call process_fill_maker(&mut SessionSummary, &mut UID, u128, &mut Order, u64, u256, u256, u256, u256, u256, u256, u256, u256, u256, u256, u64, u64, &mut bool): u64 * bool * FilledMakerOrder * u256
140StLoc[34](loc31: u256)
141StLoc[19](loc16: FilledMakerOrder)
142StLoc[36](loc33: bool)
143StLoc[43](loc40: u64)
144MoveLoc[2](Arg2: u64)
145MoveLoc[43](loc40: u64)
146Sub
147StLoc[2](Arg2: u64)
148MoveLoc[36](loc33: bool)
149StLoc[15](loc12: bool)
150ImmBorrowLoc[19](loc16: FilledMakerOrder)
151Call events::e54(&FilledMakerOrder): u256 * u256
152StLoc[23](loc20: u256)
153StLoc[22](loc19: u256)
154CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
155ImmBorrowFieldGeneric[21](SessionHotPotato.total_fees: u256)
156ReadRef
157MoveLoc[22](loc19: u256)
158MoveLoc[23](loc20: u256)
159Call ifixed::add(u256, u256): u256
160Call ifixed::add(u256, u256): u256
161CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
162MutBorrowFieldGeneric[21](SessionHotPotato.total_fees: u256)
163WriteRef
164CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
165ImmBorrowFieldGeneric[22](SessionHotPotato.total_open_interest: u256)
166ReadRef
167MoveLoc[34](loc31: u256)
168Call ifixed::add(u256, u256): u256
169CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
170MutBorrowFieldGeneric[22](SessionHotPotato.total_open_interest: u256)
171WriteRef
172CopyLoc[20](loc17: &mut vector<FilledMakerOrder>)
173MoveLoc[19](loc16: FilledMakerOrder)
174VecPushBack(160)
175CopyLoc[2](Arg2: u64)
176LdU64(0)
177Eq
178BrFalse(182)
B11:
179MoveLoc[17](loc14: &mut Leaf<Order>)
180Pop
181Branch(187)
B12:
182MoveLoc[14](loc11: u64)
183LdU64(1)
184Add
185StLoc[14](loc11: u64)
186Branch(110)
B13:
187CopyLoc[2](Arg2: u64)
188LdU64(0)
189Eq
190BrFalse(92)
B14:
191Branch(192)
B15:
192MoveLoc[42](loc39: &mut bool)
193Pop
194MoveLoc[39](loc36: &mut SessionSummary)
195Pop
196MoveLoc[20](loc17: &mut vector<FilledMakerOrder>)
197Pop
198MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
199Pop
200MoveLoc[9](loc6: &mut UID)
201Pop
B16:
202MoveLoc[2](Arg2: u64)
203LdU64(0)
204Eq
205BrFalse(207)
B17:
206Branch(213)
B18:
207MoveLoc[38](loc35: &mut Orderbook)
208Pop
209MoveLoc[24](loc21: &mut Map<Order>)
210Pop
211LdU64(45)
212Abort
B19:
213CopyLoc[16](loc13: u128)
214LdU128(0)
215Gt
216BrFalse(259)
B20:
217CopyLoc[24](loc21: &mut Map<Order>)
218MoveLoc[16](loc13: u128)
219MoveLoc[15](loc12: bool)
220Call ordered_map::batch_drop<Order>(&mut Map<Order>, u128, bool)
221CopyLoc[24](loc21: &mut Map<Order>)
222FreezeRef
223Call ordered_map::is_empty<Order>(&Map<Order>): bool
224BrFalse(230)
B21:
225MoveLoc[24](loc21: &mut Map<Order>)
226Pop
227Call option::none<u64>(): Option<u64>
228StLoc[4](loc1: Option<u64>)
229Branch(252)
B22:
230MoveLoc[24](loc21: &mut Map<Order>)
231FreezeRef
232Call ordered_map::min_key<Order>(&Map<Order>): u128
233StLoc[7](loc4: u128)
234CopyLoc[28](loc25: bool)
235BrFalse(242)
B23:
236MoveLoc[7](loc4: u128)
237LdU8(64)
238Shr
239CastU64
240StLoc[3](loc0: u64)
241Branch(249)
B24:
242MoveLoc[7](loc4: u128)
243LdU8(64)
244Shr
245CastU64
246LdU64(18446744073709551615)
247Xor
248StLoc[3](loc0: u64)
B25:
249MoveLoc[3](loc0: u64)
250Call option::some<u64>(u64): Option<u64>
251StLoc[4](loc1: Option<u64>)
B26:
252MoveLoc[4](loc1: Option<u64>)
253StLoc[8](loc5: Option<u64>)
254MoveLoc[38](loc35: &mut Orderbook)
255MoveLoc[28](loc25: bool)
256MoveLoc[8](loc5: Option<u64>)
257Call orderbook::set_best_price(&mut Orderbook, bool, Option<u64>)
258Branch(263)
B27:
259MoveLoc[38](loc35: &mut Orderbook)
260Pop
261MoveLoc[24](loc21: &mut Map<Order>)
262Pop
B28:
263Ret
}
process_fill_maker(Arg0: &mut SessionSummary, Arg1: &mut UID, Arg2: u128, Arg3: &mut Order, Arg4: u64, Arg5: u256, Arg6: u256, Arg7: u256, Arg8: u256, Arg9: u256, Arg10: u256, Arg11: u256, Arg12: u256, Arg13: u256, Arg14: u256, Arg15: u64, Arg16: u64, Arg17: &mut bool): u64 * bool * FilledMakerOrder * u256 {
L18: loc0: u64
L19: loc1: u64
L20: loc2: u64
L21: loc3: bool
L22: loc4: u64
L23: loc5: Option<u256>
L24: loc6: Option<u32>
L25: loc7: u256
L26: loc8: u256
L27: loc9: u256
L28: loc10: u256
L29: loc11: bool
L30: loc12: u256
L31: loc13: Option<u32>
L32: loc14: u256
L33: loc15: u256
L34: loc16: u256
L35: loc17: u256
L36: loc18: u256
L37: loc19: u256
L38: loc20: Option<u32>
L39: loc21: u256
L40: loc22: bool
L41: loc23: u256
L42: loc24: u64
L43: loc25: u64
L44: loc26: bool
L45: loc27: &mut Position
L46: loc28: bool
L47: loc29: u64
L48: loc30: u64
L49: loc31: bool
L50: loc32: u256
L51: loc33: bool
L52: loc34: u64
L53: loc35: u256
L54: loc36: u64
L55: loc37: u256
L56: loc38: u256
L57: loc39: u256
L58: loc40: u256
L59: loc41: u256
L60: loc42: Option<u8>
L61: loc43: ID
L62: loc44: u256
L63: loc45: bool
L64: loc46: &IntegratorInfo
L65: loc47: u256
L66: loc48: u256
L67: loc49: u64
L68: loc50: Option<u64>
L69: loc51: FilledMakerOrder
L70: loc52: Option<u64>
L71: loc53: u256
L72: loc54: u256
L73: loc55: Option<u32>
L74: loc56: Option<u32>
L75: loc57: Option<IntegratorInfo>
L76: loc58: bool
L77: loc59: u64
L78: loc60: Option<u256>
L79: loc61: u256
L80: loc62: u256
L81: loc63: bool
L82: loc64: u64
L83: loc65: u64
L84: loc66: Option<u8>
L85: loc67: u256
L86: loc68: &mut Position
L87: loc69: u256
L88: loc70: u256
L89: loc71: u256
L90: loc72: u256
L91: loc73: u64
B0:
0CopyLoc[1](Arg1: &mut UID)
1FreezeRef
2Call object::uid_to_inner(&UID): ID
3StLoc[61](loc43: ID)
4CopyLoc[3](Arg3: &mut Order)
5FreezeRef
6Call orderbook::order_snapshot(&Order): u64 * Option<u64> * u64 * bool * Option<u64> * Option<IntegratorInfo>
7StLoc[75](loc57: Option<IntegratorInfo>)
8StLoc[70](loc52: Option<u64>)
9StLoc[76](loc58: bool)
10StLoc[82](loc64: u64)
11StLoc[68](loc50: Option<u64>)
12StLoc[67](loc49: u64)
13MoveLoc[1](Arg1: &mut UID)
14CopyLoc[67](loc49: u64)
15Call borrow_mut_position_from_id(&mut UID, u64): &mut Position
16StLoc[86](loc68: &mut Position)
17CopyLoc[86](loc68: &mut Position)
18CopyLoc[5](Arg5: u256)
19MoveLoc[10](Arg10: u256)
20MoveLoc[11](Arg11: u256)
21ImmBorrowLoc[61](loc43: ID)
22CopyLoc[67](loc49: u64)
23Call settle_position_funding_and_emit(&mut Position, u256, u256, u256, &ID, u64)
24CopyLoc[86](loc68: &mut Position)
25FreezeRef
26Call position::base_and_quote_amounts(&Position): u256 * u256
27Pop
28StLoc[59](loc41: u256)
29CopyLoc[2](Arg2: u128)
30LdU128(170141183460469231731687303715884105728)
31Lt
32StLoc[81](loc63: bool)
33Call option::none<u8>(): Option<u8>
34StLoc[84](loc66: Option<u8>)
35Call option::none<u8>(): Option<u8>
36StLoc[60](loc42: Option<u8>)
37MoveLoc[76](loc58: bool)
38BrFalse(106)
B1:
39LdU8(4)
40Call option::some<u8>(u8): Option<u8>
41StLoc[84](loc66: Option<u8>)
42CopyLoc[59](loc41: u256)
43LdU256(0)
44Neq
45BrFalse(74)
B2:
46CopyLoc[81](loc63: bool)
47BrFalse(53)
B3:
48CopyLoc[59](loc41: u256)
49Call ifixed::is_neg(u256): bool
50Not
51StLoc[51](loc33: bool)
52Branch(55)
B4:
53LdFalse
54StLoc[51](loc33: bool)
B5:
55MoveLoc[51](loc33: bool)
56BrFalse(60)
B6:
57LdTrue
58StLoc[40](loc22: bool)
59Branch(71)
B7:
60CopyLoc[81](loc63: bool)
61Not
62BrFalse(67)
B8:
63CopyLoc[59](loc41: u256)
64Call ifixed::is_neg(u256): bool
65StLoc[49](loc31: bool)
66Branch(69)
B9:
67LdFalse
68StLoc[49](loc31: bool)
B10:
69MoveLoc[49](loc31: bool)
70StLoc[40](loc22: bool)
B11:
71MoveLoc[40](loc22: bool)
72StLoc[29](loc11: bool)
73Branch(76)
B12:
74LdFalse
75StLoc[29](loc11: bool)
B13:
76MoveLoc[29](loc11: bool)
77BrFalse(101)
B14:
78CopyLoc[59](loc41: u256)
79Call ifixed::abs(u256): u256
80StLoc[55](loc37: u256)
81CopyLoc[55](loc37: u256)
82StLoc[53](loc35: u256)
83CopyLoc[82](loc64: u64)
84StLoc[52](loc34: u64)
85MoveLoc[53](loc35: u256)
86MoveLoc[52](loc34: u64)
87LdU256(1000000000)
88Call ifixed::from_balance(u64, u256): u256
89Call ifixed::greater_than_eq(u256, u256): bool
90BrFalse(94)
B15:
91CopyLoc[82](loc64: u64)
92StLoc[18](loc0: u64)
93Branch(98)
B16:
94MoveLoc[55](loc37: u256)
95LdU256(1000000000)
96Call ifixed::to_balance(u256, u256): u64
97StLoc[18](loc0: u64)
B17:
98MoveLoc[18](loc0: u64)
99StLoc[19](loc1: u64)
100Branch(103)
B18:
101LdU64(0)
102StLoc[19](loc1: u64)
B19:
103MoveLoc[19](loc1: u64)
104StLoc[20](loc2: u64)
105Branch(108)
B20:
106CopyLoc[82](loc64: u64)
107StLoc[20](loc2: u64)
B21:
108MoveLoc[20](loc2: u64)
109StLoc[54](loc36: u64)
110MoveLoc[4](Arg4: u64)
111MoveLoc[70](loc52: Option<u64>)
112LdU64(18446744073709551615)
113Call option::destroy_with_default<u64>(Option<u64>, u64): u64
114Ge
115BrFalse(122)
B22:
116LdU64(0)
117StLoc[54](loc36: u64)
118LdU8(5)
119Call option::some<u8>(u8): Option<u8>
120StLoc[84](loc66: Option<u8>)
121Branch(131)
B23:
122CopyLoc[15](Arg15: u64)
123CopyLoc[67](loc49: u64)
124Eq
125BrFalse(131)
B24:
126LdU64(0)
127StLoc[54](loc36: u64)
128LdU8(6)
129Call option::some<u8>(u8): Option<u8>
130StLoc[84](loc66: Option<u8>)
B25:
131CopyLoc[54](loc36: u64)
132LdU64(0)
133Neq
134BrFalse(140)
B26:
135CopyLoc[16](Arg16: u64)
136LdU64(0)
137Neq
138StLoc[21](loc3: bool)
139Branch(142)
B27:
140LdFalse
141StLoc[21](loc3: bool)
B28:
142MoveLoc[21](loc3: bool)
143BrFalse(281)
B29:
144CopyLoc[54](loc36: u64)
145CopyLoc[16](Arg16: u64)
146Call u64::min(u64, u64): u64
147StLoc[77](loc59: u64)
148CopyLoc[2](Arg2: u128)
149LdU128(170141183460469231731687303715884105728)
150Lt
151BrFalse(158)
B30:
152CopyLoc[2](Arg2: u128)
153LdU8(64)
154Shr
155CastU64
156StLoc[22](loc4: u64)
157Branch(165)
B31:
158CopyLoc[2](Arg2: u128)
159LdU8(64)
160Shr
161CastU64
162LdU64(18446744073709551615)
163Xor
164StLoc[22](loc4: u64)
B32:
165MoveLoc[22](loc4: u64)
166MoveLoc[77](loc59: u64)
167Call fill_base_and_quote_deltas(u64, u64): u256 * u256
168StLoc[89](loc71: u256)
169StLoc[57](loc39: u256)
170MoveLoc[12](Arg12: u256)
171CopyLoc[57](loc39: u256)
172Call ifixed::add(u256, u256): u256
173StLoc[62](loc44: u256)
174CopyLoc[62](loc44: u256)
175MoveLoc[13](Arg13: u256)
176Call ifixed::greater_than(u256, u256): bool
177BrFalse(184)
B33:
178MoveLoc[62](loc44: u256)
179MoveLoc[14](Arg14: u256)
180Call ifixed::mul(u256, u256): u256
181Call option::some<u256>(u256): Option<u256>
182StLoc[23](loc5: Option<u256>)
183Branch(186)
B34:
184Call option::none<u256>(): Option<u256>
185StLoc[23](loc5: Option<u256>)
B35:
186MoveLoc[23](loc5: Option<u256>)
187StLoc[78](loc60: Option<u256>)
188MoveLoc[7](Arg7: u256)
189CopyLoc[89](loc71: u256)
190Call ifixed::mul_toward_zero(u256, u256): u256
191StLoc[71](loc53: u256)
192ImmBorrowLoc[75](loc57: Option<IntegratorInfo>)
193Call option::is_some<IntegratorInfo>(&Option<IntegratorInfo>): bool
194BrFalse(208)
B36:
195ImmBorrowLoc[75](loc57: Option<IntegratorInfo>)
196Call option::borrow<IntegratorInfo>(&Option<IntegratorInfo>): &IntegratorInfo
197StLoc[64](loc46: &IntegratorInfo)
198CopyLoc[64](loc46: &IntegratorInfo)
199Call account::integrator_id(&IntegratorInfo): u32
200Call option::some<u32>(u32): Option<u32>
201MoveLoc[64](loc46: &IntegratorInfo)
202Call account::integrator_fee(&IntegratorInfo): u256
203CopyLoc[89](loc71: u256)
204Call ifixed::mul(u256, u256): u256
205StLoc[25](loc7: u256)
206StLoc[24](loc6: Option<u32>)
207Branch(212)
B37:
208Call option::none<u32>(): Option<u32>
209LdU256(0)
210StLoc[25](loc7: u256)
211StLoc[24](loc6: Option<u32>)
B38:
212MoveLoc[24](loc6: Option<u32>)
213MoveLoc[25](loc7: u256)
214StLoc[65](loc47: u256)
215StLoc[73](loc55: Option<u32>)
216CopyLoc[86](loc68: &mut Position)
217CopyLoc[81](loc63: bool)
218CopyLoc[57](loc39: u256)
219CopyLoc[89](loc71: u256)
220CopyLoc[71](loc53: u256)
221CopyLoc[65](loc47: u256)
222Call ifixed::add(u256, u256): u256
223MoveLoc[8](Arg8: u256)
224MoveLoc[5](Arg5: u256)
225CopyLoc[6](Arg6: u256)
226MoveLoc[9](Arg9: u256)
227MoveLoc[78](loc60: Option<u256>)
228Call position::apply_maker_fill_or_restore_if_bad_debt(&mut Position, bool, u256, u256, u256, u256, u256, u256, u256, Option<u256>): bool * u256 * u256
229StLoc[87](loc69: u256)
230StLoc[88](loc70: u256)
231BrFalse(247)
B39:
232MoveLoc[57](loc39: u256)
233MoveLoc[89](loc71: u256)
234MoveLoc[88](loc70: u256)
235MoveLoc[71](loc53: u256)
236MoveLoc[73](loc55: Option<u32>)
237MoveLoc[65](loc47: u256)
238MoveLoc[87](loc69: u256)
239StLoc[33](loc15: u256)
240StLoc[32](loc14: u256)
241StLoc[31](loc13: Option<u32>)
242StLoc[30](loc12: u256)
243StLoc[28](loc10: u256)
244StLoc[27](loc9: u256)
245StLoc[26](loc8: u256)
246Branch(266)
B40:
247LdU64(0)
248StLoc[54](loc36: u64)
249LdU8(7)
250Call option::some<u8>(u8): Option<u8>
251StLoc[84](loc66: Option<u8>)
252LdU256(0)
253LdU256(0)
254LdU256(0)
255LdU256(0)
256Call option::none<u32>(): Option<u32>
257LdU256(0)
258CopyLoc[59](loc41: u256)
259StLoc[33](loc15: u256)
260StLoc[32](loc14: u256)
261StLoc[31](loc13: Option<u32>)
262StLoc[30](loc12: u256)
263StLoc[28](loc10: u256)
264StLoc[27](loc9: u256)
265StLoc[26](loc8: u256)
B41:
266MoveLoc[26](loc8: u256)
267MoveLoc[27](loc9: u256)
268MoveLoc[28](loc10: u256)
269MoveLoc[30](loc12: u256)
270MoveLoc[31](loc13: Option<u32>)
271MoveLoc[32](loc14: u256)
272MoveLoc[33](loc15: u256)
273StLoc[41](loc23: u256)
274StLoc[39](loc21: u256)
275StLoc[38](loc20: Option<u32>)
276StLoc[37](loc19: u256)
277StLoc[36](loc18: u256)
278StLoc[35](loc17: u256)
279StLoc[34](loc16: u256)
280Branch(295)
B42:
281LdU256(0)
282LdU256(0)
283LdU256(0)
284LdU256(0)
285Call option::none<u32>(): Option<u32>
286LdU256(0)
287CopyLoc[59](loc41: u256)
288StLoc[41](loc23: u256)
289StLoc[39](loc21: u256)
290StLoc[38](loc20: Option<u32>)
291StLoc[37](loc19: u256)
292StLoc[36](loc18: u256)
293StLoc[35](loc17: u256)
294StLoc[34](loc16: u256)
B43:
295MoveLoc[34](loc16: u256)
296MoveLoc[35](loc17: u256)
297MoveLoc[36](loc18: u256)
298MoveLoc[37](loc19: u256)
299MoveLoc[38](loc20: Option<u32>)
300MoveLoc[39](loc21: u256)
301MoveLoc[41](loc23: u256)
302StLoc[56](loc38: u256)
303StLoc[66](loc48: u256)
304StLoc[74](loc56: Option<u32>)
305StLoc[72](loc54: u256)
306StLoc[85](loc67: u256)
307StLoc[90](loc72: u256)
308StLoc[58](loc40: u256)
309LdU64(0)
310StLoc[83](loc65: u64)
311LdTrue
312StLoc[63](loc45: bool)
313CopyLoc[54](loc36: u64)
314CopyLoc[82](loc64: u64)
315Eq
316BrFalse(338)
B44:
317MoveLoc[17](Arg17: &mut bool)
318Pop
319CopyLoc[16](Arg16: u64)
320CopyLoc[54](loc36: u64)
321Ge
322BrFalse(328)
B45:
323MoveLoc[3](Arg3: &mut Order)
324Pop
325MoveLoc[54](loc36: u64)
326StLoc[42](loc24: u64)
327Branch(335)
B46:
328MoveLoc[3](Arg3: &mut Order)
329CopyLoc[16](Arg16: u64)
330Call orderbook::reduce_order_size(&mut Order, u64)
331LdFalse
332StLoc[63](loc45: bool)
333MoveLoc[16](Arg16: u64)
334StLoc[42](loc24: u64)
B47:
335MoveLoc[42](loc24: u64)
336StLoc[48](loc30: u64)
337Branch(395)
B48:
338CopyLoc[16](Arg16: u64)
339CopyLoc[54](loc36: u64)
340Ge
341BrFalse(384)
B49:
342MoveLoc[3](Arg3: &mut Order)
343Pop
344CopyLoc[82](loc64: u64)
345CopyLoc[54](loc36: u64)
346Sub
347StLoc[83](loc65: u64)
348MoveLoc[84](loc66: Option<u8>)
349StLoc[60](loc42: Option<u8>)
350CopyLoc[86](loc68: &mut Position)
351StLoc[45](loc27: &mut Position)
352CopyLoc[81](loc63: bool)
353StLoc[44](loc26: bool)
354CopyLoc[83](loc65: u64)
355StLoc[43](loc25: u64)
356MoveLoc[45](loc27: &mut Position)
357MoveLoc[44](loc26: bool)
358MoveLoc[43](loc25: u64)
359LdU256(1000000000)
360Call ifixed::from_balance(u64, u256): u256
361Call position::sub_from_pending_amount(&mut Position, bool, u256)
362CopyLoc[15](Arg15: u64)
363CopyLoc[67](loc49: u64)
364Eq
365BrFalse(371)
B50:
366CopyLoc[83](loc65: u64)
367LdU64(0)
368Neq
369StLoc[46](loc28: bool)
370Branch(373)
B51:
371LdFalse
372StLoc[46](loc28: bool)
B52:
373MoveLoc[46](loc28: bool)
374BrFalse(379)
B53:
375LdTrue
376MoveLoc[17](Arg17: &mut bool)
377WriteRef
378Branch(381)
B54:
379MoveLoc[17](Arg17: &mut bool)
380Pop
B55:
381MoveLoc[54](loc36: u64)
382StLoc[47](loc29: u64)
383Branch(393)
B56:
384MoveLoc[17](Arg17: &mut bool)
385Pop
386MoveLoc[3](Arg3: &mut Order)
387CopyLoc[16](Arg16: u64)
388Call orderbook::reduce_order_size(&mut Order, u64)
389LdFalse
390StLoc[63](loc45: bool)
391MoveLoc[16](Arg16: u64)
392StLoc[47](loc29: u64)
B57:
393MoveLoc[47](loc29: u64)
394StLoc[48](loc30: u64)
B58:
395MoveLoc[48](loc30: u64)
396StLoc[91](loc73: u64)
397CopyLoc[63](loc45: bool)
398BrFalse(403)
B59:
399CopyLoc[86](loc68: &mut Position)
400LdFalse
401LdU64(1)
402Call position::update_pending_orders(&mut Position, bool, u64)
B60:
403CopyLoc[91](loc73: u64)
404LdU64(0)
405Neq
406BrFalse(479)
B61:
407MoveLoc[86](loc68: &mut Position)
408CopyLoc[81](loc63: bool)
409CopyLoc[58](loc40: u256)
410Call position::sub_from_pending_amount(&mut Position, bool, u256)
411MoveLoc[56](loc38: u256)
412LdU256(0)
413Call ifixed::max(u256, u256): u256
414MoveLoc[59](loc41: u256)
415LdU256(0)
416Call ifixed::max(u256, u256): u256
417Call ifixed::sub(u256, u256): u256
418StLoc[79](loc61: u256)
419MoveLoc[81](loc63: bool)
420BrFalse(449)
B62:
421CopyLoc[0](Arg0: &mut SessionSummary)
422ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
423ReadRef
424LdU256(0)
425Eq
426BrFalse(428)
B63:
427Branch(432)
B64:
428MoveLoc[0](Arg0: &mut SessionSummary)
429Pop
430LdU64(51)
431Abort
B65:
432CopyLoc[0](Arg0: &mut SessionSummary)
433ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
434ReadRef
435MoveLoc[58](loc40: u256)
436Call ifixed::add(u256, u256): u256
437CopyLoc[0](Arg0: &mut SessionSummary)
438MutBorrowField[22](SessionSummary.base_filled_bid: u256)
439WriteRef
440CopyLoc[0](Arg0: &mut SessionSummary)
441ImmBorrowField[23](SessionSummary.quote_filled_bid: u256)
442ReadRef
443MoveLoc[90](loc72: u256)
444Call ifixed::add(u256, u256): u256
445MoveLoc[0](Arg0: &mut SessionSummary)
446MutBorrowField[23](SessionSummary.quote_filled_bid: u256)
447WriteRef
448Branch(476)
B66:
449CopyLoc[0](Arg0: &mut SessionSummary)
450ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
451ReadRef
452LdU256(0)
453Eq
454BrFalse(456)
B67:
455Branch(460)
B68:
456MoveLoc[0](Arg0: &mut SessionSummary)
457Pop
458LdU64(51)
459Abort
B69:
460CopyLoc[0](Arg0: &mut SessionSummary)
461ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
462ReadRef
463MoveLoc[58](loc40: u256)
464Call ifixed::add(u256, u256): u256
465CopyLoc[0](Arg0: &mut SessionSummary)
466MutBorrowField[20](SessionSummary.base_filled_ask: u256)
467WriteRef
468CopyLoc[0](Arg0: &mut SessionSummary)
469ImmBorrowField[21](SessionSummary.quote_filled_ask: u256)
470ReadRef
471MoveLoc[90](loc72: u256)
472Call ifixed::add(u256, u256): u256
473MoveLoc[0](Arg0: &mut SessionSummary)
474MutBorrowField[21](SessionSummary.quote_filled_ask: u256)
475WriteRef
B70:
476MoveLoc[79](loc61: u256)
477StLoc[50](loc32: u256)
478Branch(485)
B71:
479MoveLoc[0](Arg0: &mut SessionSummary)
480Pop
481MoveLoc[86](loc68: &mut Position)
482Pop
483LdU256(0)
484StLoc[50](loc32: u256)
B72:
485MoveLoc[50](loc32: u256)
486StLoc[80](loc62: u256)
487MoveLoc[61](loc43: ID)
488MoveLoc[67](loc49: u64)
489MoveLoc[15](Arg15: u64)
490MoveLoc[2](Arg2: u128)
491MoveLoc[68](loc50: Option<u64>)
492CopyLoc[91](loc73: u64)
493MoveLoc[82](loc64: u64)
494CopyLoc[91](loc73: u64)
495Sub
496CopyLoc[83](loc65: u64)
497Sub
498MoveLoc[83](loc65: u64)
499MoveLoc[60](loc42: Option<u8>)
500MoveLoc[85](loc67: u256)
501MoveLoc[72](loc54: u256)
502MoveLoc[6](Arg6: u256)
503MoveLoc[74](loc56: Option<u32>)
504MoveLoc[66](loc48: u256)
505Call events::e19(ID, u64, u64, u128, Option<u64>, u64, u64, u64, Option<u8>, u256, u256, u256, Option<u32>, u256): FilledMakerOrder
506StLoc[69](loc51: FilledMakerOrder)
507MoveLoc[91](loc73: u64)
508MoveLoc[63](loc45: bool)
509MoveLoc[69](loc51: FilledMakerOrder)
510MoveLoc[80](loc62: u256)
511Ret
}
process_post(Arg0: &mut Position, Arg1: u64, Arg2: &SessionSummary) {
B0:
0CopyLoc[2](Arg2: &SessionSummary)
1ImmBorrowField[19](SessionSummary.posted_orders: u64)
2ReadRef
3LdU64(0)
4Eq
5BrFalse(11)
B1:
6MoveLoc[2](Arg2: &SessionSummary)
7Pop
8MoveLoc[0](Arg0: &mut Position)
9Pop
10Ret
B2:
11CopyLoc[0](Arg0: &mut Position)
12LdTrue
13CopyLoc[2](Arg2: &SessionSummary)
14ImmBorrowField[19](SessionSummary.posted_orders: u64)
15ReadRef
16Call position::update_pending_orders(&mut Position, bool, u64)
17CopyLoc[0](Arg0: &mut Position)
18FreezeRef
19Call position::pending_order_count(&Position): u64
20MoveLoc[1](Arg1: u64)
21Le
22BrFalse(24)
B3:
23Branch(30)
B4:
24MoveLoc[2](Arg2: &SessionSummary)
25Pop
26MoveLoc[0](Arg0: &mut Position)
27Pop
28LdU64(37)
29Abort
B5:
30CopyLoc[2](Arg2: &SessionSummary)
31ImmBorrowField[24](SessionSummary.base_posted_ask: u256)
32ReadRef
33LdU256(0)
34Neq
35BrFalse(42)
B6:
36CopyLoc[0](Arg0: &mut Position)
37LdTrue
38CopyLoc[2](Arg2: &SessionSummary)
39ImmBorrowField[24](SessionSummary.base_posted_ask: u256)
40ReadRef
41Call position::add_to_pending_amount(&mut Position, bool, u256)
B7:
42CopyLoc[2](Arg2: &SessionSummary)
43ImmBorrowField[25](SessionSummary.base_posted_bid: u256)
44ReadRef
45LdU256(0)
46Neq
47BrFalse(55)
B8:
48MoveLoc[0](Arg0: &mut Position)
49LdFalse
50MoveLoc[2](Arg2: &SessionSummary)
51ImmBorrowField[25](SessionSummary.base_posted_bid: u256)
52ReadRef
53Call position::add_to_pending_amount(&mut Position, bool, u256)
54Branch(59)
B9:
55MoveLoc[2](Arg2: &SessionSummary)
56Pop
57MoveLoc[0](Arg0: &mut Position)
58Pop
B10:
59Ret
}
public(friend) withdraw_free_collateral_to_account_balance<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &mut Balance<Ty0>, Arg2: u64, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u64, Arg7: Option<u64>): u64 {
L8: loc0: u64
L9: loc1: ID
L10: loc2: u256
L11: loc3: u64
L12: loc4: u256
L13: loc5: u256
L14: loc6: u256
L15: loc7: u256
L16: loc8: &MarketParams
L17: loc9: &MarketState
L18: loc10: u256
L19: loc11: u256
L20: loc12: u64
L21: loc13: &mut Position
L22: loc14: u256
L23: loc15: u256
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call object::uid_to_inner(&UID): ID
3StLoc[9](loc1: ID)
4CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
5FreezeRef
6Call market_objects<Ty0>(&ClearingHouse<Ty0>): &MarketParams * &MarketState
7StLoc[17](loc9: &MarketState)
8StLoc[16](loc8: &MarketParams)
9CopyLoc[16](loc8: &MarketParams)
10Call market::scaling_factor(&MarketParams): u256
11StLoc[22](loc14: u256)
12CopyLoc[16](loc8: &MarketParams)
13Call market::collateral_haircut(&MarketParams): u256
14StLoc[10](loc2: u256)
15CopyLoc[17](loc9: &MarketState)
16CopyLoc[16](loc8: &MarketParams)
17MoveLoc[4](Arg4: u256)
18MoveLoc[5](Arg5: u256)
19MoveLoc[2](Arg2: u64)
20Call market::calculate_mark_price(&MarketState, &MarketParams, u256, u256, u64): u256
21StLoc[14](loc6: u256)
22MoveLoc[16](loc8: &MarketParams)
23Call market::margin_ratio_initial(&MarketParams): u256
24StLoc[15](loc7: u256)
25MoveLoc[17](loc9: &MarketState)
26Call market::cum_funding_rates(&MarketState): u256 * u256
27StLoc[19](loc11: u256)
28StLoc[18](loc10: u256)
29CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
30CopyLoc[6](Arg6: u64)
31Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
32StLoc[21](loc13: &mut Position)
33CopyLoc[21](loc13: &mut Position)
34FreezeRef
35MoveLoc[15](loc7: u256)
36Call position::effective_initial_margin_ratio(&Position, u256): u256
37StLoc[13](loc5: u256)
38CopyLoc[21](loc13: &mut Position)
39CopyLoc[3](Arg3: u256)
40MoveLoc[18](loc10: u256)
41MoveLoc[19](loc11: u256)
42ImmBorrowLoc[9](loc1: ID)
43MoveLoc[6](Arg6: u64)
44Call settle_position_funding_and_emit(&mut Position, u256, u256, u256, &ID, u64)
45CopyLoc[21](loc13: &mut Position)
46FreezeRef
47MoveLoc[3](Arg3: u256)
48MoveLoc[14](loc6: u256)
49MoveLoc[13](loc5: u256)
50MoveLoc[10](loc2: u256)
51Call position::compute_free_collateral(&Position, u256, u256, u256, u256): u256
52StLoc[12](loc4: u256)
53CopyLoc[12](loc4: u256)
54CopyLoc[22](loc14: u256)
55Call ifixed::to_balance(u256, u256): u64
56StLoc[11](loc3: u64)
57ImmBorrowLoc[7](Arg7: Option<u64>)
58Call option::is_some<u64>(&Option<u64>): bool
59BrFalse(96)
B1:
60MoveLoc[7](Arg7: Option<u64>)
61Call option::destroy_some<u64>(Option<u64>): u64
62StLoc[8](loc0: u64)
63CopyLoc[8](loc0: u64)
64LdU64(0)
65Neq
66BrFalse(68)
B2:
67Branch(76)
B3:
68MoveLoc[21](loc13: &mut Position)
69Pop
70MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
71Pop
72MoveLoc[1](Arg1: &mut Balance<Ty0>)
73Pop
74LdU64(0)
75Abort
B4:
76MoveLoc[11](loc3: u64)
77CopyLoc[8](loc0: u64)
78Ge
79BrFalse(81)
B5:
80Branch(89)
B6:
81MoveLoc[21](loc13: &mut Position)
82Pop
83MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
84Pop
85MoveLoc[1](Arg1: &mut Balance<Ty0>)
86Pop
87LdU64(40)
88Abort
B7:
89CopyLoc[8](loc0: u64)
90StLoc[20](loc12: u64)
91MoveLoc[8](loc0: u64)
92MoveLoc[22](loc14: u256)
93Call ifixed::from_balance(u64, u256): u256
94StLoc[23](loc15: u256)
95Branch(112)
B8:
96CopyLoc[12](loc4: u256)
97LdU256(0)
98Eq
99BrFalse(108)
B9:
100MoveLoc[21](loc13: &mut Position)
101Pop
102MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
103Pop
104MoveLoc[1](Arg1: &mut Balance<Ty0>)
105Pop
106LdU64(0)
107Ret
B10:
108MoveLoc[11](loc3: u64)
109StLoc[20](loc12: u64)
110MoveLoc[12](loc4: u256)
111StLoc[23](loc15: u256)
B11:
112MoveLoc[21](loc13: &mut Position)
113MoveLoc[23](loc15: u256)
114Call position::sub_from_collateral(&mut Position, u256)
115MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
116Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
117MoveLoc[1](Arg1: &mut Balance<Ty0>)
118CopyLoc[20](loc12: u64)
119Call withdraw_vault_collateral<Ty0>(&mut Vault<Ty0>, &mut Balance<Ty0>, u64)
120MoveLoc[20](loc12: u64)
121Ret
}
withdraw_vault_collateral<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: &mut Balance<Ty0>, Arg2: u64) {
L3: loc0: Balance<Ty0>
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3CopyLoc[2](Arg2: u64)
4Ge
5BrFalse(7)
B1:
6Branch(13)
B2:
7MoveLoc[0](Arg0: &mut Vault<Ty0>)
8Pop
9MoveLoc[1](Arg1: &mut Balance<Ty0>)
10Pop
11LdU64(23)
12Abort
B3:
13MoveLoc[0](Arg0: &mut Vault<Ty0>)
14MutBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
15MoveLoc[2](Arg2: u64)
16Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
17StLoc[3](loc0: Balance<Ty0>)
18MoveLoc[1](Arg1: &mut Balance<Ty0>)
19MoveLoc[3](loc0: Balance<Ty0>)
20Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
21Pop
22Ret
}
execute_liquidation<Ty0>(Arg0: &mut SessionHotPotato<Ty0>, Arg1: u64, Arg2: u128, Arg3: u128, Arg4: u64) {
L5: loc0: ID
L6: loc1: &ID
B0:
0CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
3Call object::uid_to_inner(&UID): ID
4StLoc[5](loc0: ID)
5ImmBorrowLoc[5](loc0: ID)
6StLoc[6](loc1: &ID)
7CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
8MoveLoc[1](Arg1: u64)
9MoveLoc[2](Arg2: u128)
10MoveLoc[3](Arg3: u128)
11MoveLoc[4](Arg4: u64)
12CopyLoc[6](loc1: &ID)
13Call settle_liquidated_position<Ty0>(&mut SessionHotPotato<Ty0>, u64, u128, u128, u64, &ID)
14CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
15ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
16ImmBorrowField[27](SessionSummary.bad_debt: u256)
17ReadRef
18LdU256(0)
19Neq
20BrFalse(41)
B1:
21CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
22MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
23CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
24ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
25ImmBorrowField[27](SessionSummary.bad_debt: u256)
26ReadRef
27CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
28ImmBorrowFieldGeneric[10](SessionHotPotato.mark_price: u256)
29ReadRef
30CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
31ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
32ReadRef
33MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
34ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
35ImmBorrowField[26](SessionSummary.is_liqee_long: bool)
36ReadRef
37MoveLoc[6](loc1: &ID)
38Call option::none<u256>(): Option<u256>
39Call handle_bad_debt<Ty0>(&mut ClearingHouse<Ty0>, u256, u256, u256, bool, &ID, Option<u256>)
40Branch(45)
B2:
41MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
42Pop
43MoveLoc[6](loc1: &ID)
44Pop
B3:
45Ret
}
settle_liquidated_position<Ty0>(Arg0: &mut SessionHotPotato<Ty0>, Arg1: u64, Arg2: u128, Arg3: u128, Arg4: u64, Arg5: &ID) {
L6: loc0: &mut Position
L7: loc1: bool
L8: loc2: u128
L9: loc3: u256
L10: loc4: &mut Position
L11: loc5: u128
L12: loc6: &mut Position
L13: loc7: u128
L14: loc8: u256
L15: loc9: u256
L16: loc10: u256
L17: loc11: u256
L18: loc12: u256
L19: loc13: bool
L20: loc14: u256
L21: loc15: u256
L22: loc16: bool
L23: loc17: u256
L24: loc18: u256
L25: loc19: u64
L26: loc20: u256
L27: loc21: u256
L28: loc22: u256
L29: loc23: &MarketParams
L30: loc24: &MarketState
L31: loc25: u256
L32: loc26: u256
L33: loc27: u256
L34: loc28: u256
L35: loc29: u256
L36: loc30: u256
L37: loc31: u256
L38: loc32: u256
L39: loc33: u256
L40: loc34: u256
L41: loc35: u256
L42: loc36: u256
L43: loc37: u64
L44: loc38: u256
L45: loc39: &mut Position
L46: loc40: u256
L47: loc41: u256
L48: loc42: u256
L49: loc43: u128
B0:
0CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
1ImmBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
2Call market_objects<Ty0>(&ClearingHouse<Ty0>): &MarketParams * &MarketState
3StLoc[30](loc24: &MarketState)
4StLoc[29](loc23: &MarketParams)
5CopyLoc[29](loc23: &MarketParams)
6Call market::liquidation_fee_rates(&MarketParams): u256 * u256
7StLoc[20](loc14: u256)
8StLoc[23](loc17: u256)
9CopyLoc[29](loc23: &MarketParams)
10Call market::lot_size(&MarketParams): u64
11StLoc[25](loc19: u64)
12CopyLoc[29](loc23: &MarketParams)
13Call market::scaling_factor(&MarketParams): u256
14StLoc[47](loc41: u256)
15CopyLoc[29](loc23: &MarketParams)
16Call market::margin_ratio_initial(&MarketParams): u256
17StLoc[26](loc20: u256)
18CopyLoc[29](loc23: &MarketParams)
19Call market::margin_ratio_maintenance(&MarketParams): u256
20StLoc[27](loc21: u256)
21MoveLoc[29](loc23: &MarketParams)
22Call market::collateral_haircut(&MarketParams): u256
23StLoc[18](loc12: u256)
24MoveLoc[30](loc24: &MarketState)
25Call market::cum_funding_rates(&MarketState): u256 * u256
26StLoc[32](loc26: u256)
27StLoc[31](loc25: u256)
28CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
29ImmBorrowFieldGeneric[10](SessionHotPotato.mark_price: u256)
30ReadRef
31StLoc[28](loc22: u256)
32CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
33MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
34CopyLoc[1](Arg1: u64)
35Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
36StLoc[45](loc39: &mut Position)
37CopyLoc[45](loc39: &mut Position)
38CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
39ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
40ReadRef
41MoveLoc[31](loc25: u256)
42MoveLoc[32](loc26: u256)
43CopyLoc[5](Arg5: &ID)
44CopyLoc[1](Arg1: u64)
45Call settle_position_funding_and_emit(&mut Position, u256, u256, u256, &ID, u64)
46CopyLoc[45](loc39: &mut Position)
47FreezeRef
48CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
49ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
50ReadRef
51CopyLoc[28](loc22: u256)
52MoveLoc[27](loc21: u256)
53CopyLoc[18](loc12: u256)
54Call position::compute_margin_and_requirement(&Position, u256, u256, u256, u256): u256 * u256
55Call ifixed::less_than(u256, u256): bool
56BrFalse(58)
B1:
57Branch(66)
B2:
58MoveLoc[45](loc39: &mut Position)
59Pop
60MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
61Pop
62MoveLoc[5](Arg5: &ID)
63Pop
64LdU64(38)
65Abort
B3:
66CopyLoc[45](loc39: &mut Position)
67StLoc[12](loc6: &mut Position)
68MoveLoc[2](Arg2: u128)
69StLoc[11](loc5: u128)
70MoveLoc[12](loc6: &mut Position)
71LdTrue
72MoveLoc[11](loc5: u128)
73LdU256(1000000000)
74Call ifixed::from_u128balance(u128, u256): u256
75Call position::sub_from_pending_amount(&mut Position, bool, u256)
76CopyLoc[45](loc39: &mut Position)
77StLoc[6](loc0: &mut Position)
78MoveLoc[3](Arg3: u128)
79StLoc[13](loc7: u128)
80MoveLoc[6](loc0: &mut Position)
81LdFalse
82MoveLoc[13](loc7: u128)
83LdU256(1000000000)
84Call ifixed::from_u128balance(u128, u256): u256
85Call position::sub_from_pending_amount(&mut Position, bool, u256)
86CopyLoc[45](loc39: &mut Position)
87LdFalse
88MoveLoc[4](Arg4: u64)
89Call position::update_pending_orders(&mut Position, bool, u64)
90CopyLoc[45](loc39: &mut Position)
91FreezeRef
92Call position::pending_base_amounts_by_side(&Position): u256 * u256
93StLoc[42](loc36: u256)
94StLoc[41](loc35: u256)
95CopyLoc[45](loc39: &mut Position)
96FreezeRef
97Call position::pending_order_count(&Position): u64
98StLoc[43](loc37: u64)
99MoveLoc[41](loc35: u256)
100LdU256(0)
101Eq
102BrFalse(115)
B4:
103MoveLoc[42](loc36: u256)
104LdU256(0)
105Eq
106BrFalse(112)
B5:
107MoveLoc[43](loc37: u64)
108LdU64(0)
109Eq
110StLoc[7](loc1: bool)
111Branch(117)
B6:
112LdFalse
113StLoc[7](loc1: bool)
114Branch(117)
B7:
115LdFalse
116StLoc[7](loc1: bool)
B8:
117MoveLoc[7](loc1: bool)
118BrFalse(120)
B9:
119Branch(128)
B10:
120MoveLoc[45](loc39: &mut Position)
121Pop
122MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
123Pop
124MoveLoc[5](Arg5: &ID)
125Pop
126LdU64(4)
127Abort
B11:
128CopyLoc[45](loc39: &mut Position)
129FreezeRef
130CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
131ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
132ReadRef
133CopyLoc[28](loc22: u256)
134CopyLoc[26](loc20: u256)
135CopyLoc[23](loc17: u256)
136CopyLoc[20](loc14: u256)
137CopyLoc[18](loc12: u256)
138Call compute_liquidation_size_and_mode(&Position, u256, u256, u256, u256, u256, u256): u256 * bool
139StLoc[19](loc13: bool)
140StLoc[48](loc42: u256)
141CopyLoc[45](loc39: &mut Position)
142FreezeRef
143Call position::base_and_quote_amounts(&Position): u256 * u256
144Pop
145StLoc[15](loc9: u256)
146MoveLoc[19](loc13: bool)
147BrFalse(151)
B12:
148LdU128(0)
149StLoc[8](loc2: u128)
150Branch(156)
B13:
151MoveLoc[48](loc42: u256)
152MoveLoc[15](loc9: u256)
153MoveLoc[25](loc19: u64)
154Call clip_size_to_liquidate(u256, u256, u64): u128
155StLoc[8](loc2: u128)
B14:
156MoveLoc[8](loc2: u128)
157StLoc[49](loc43: u128)
158CopyLoc[45](loc39: &mut Position)
159MoveLoc[49](loc43: u128)
160CopyLoc[28](loc22: u256)
161CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
162ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
163ReadRef
164CopyLoc[20](loc14: u256)
165CopyLoc[23](loc17: u256)
166CopyLoc[26](loc20: u256)
167CopyLoc[18](loc12: u256)
168Call reduce_liquidated_position(&mut Position, u128, u256, u256, u256, u256, u256, u256): u256 * u256 * bool * u256 * u256 * u256 * u256 * u256 * u256 * u256
169StLoc[40](loc34: u256)
170StLoc[14](loc8: u256)
171StLoc[21](loc15: u256)
172StLoc[24](loc18: u256)
173StLoc[44](loc38: u256)
174StLoc[46](loc40: u256)
175StLoc[17](loc11: u256)
176StLoc[22](loc16: bool)
177Call ifixed::less_than(u256, u256): bool
178BrFalse(241)
B15:
179CopyLoc[45](loc39: &mut Position)
180FreezeRef
181Call position::base_and_quote_amounts(&Position): u256 * u256
182Pop
183StLoc[16](loc10: u256)
184MoveLoc[45](loc39: &mut Position)
185StLoc[10](loc4: &mut Position)
186MoveLoc[16](loc10: u256)
187Call ifixed::abs(u256): u256
188StLoc[9](loc3: u256)
189MoveLoc[10](loc4: &mut Position)
190MoveLoc[9](loc3: u256)
191LdU256(1000000000)
192Call ifixed::to_u128balance(u256, u256): u128
193CopyLoc[28](loc22: u256)
194CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
195ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
196ReadRef
197MoveLoc[20](loc14: u256)
198MoveLoc[23](loc17: u256)
199MoveLoc[26](loc20: u256)
200MoveLoc[18](loc12: u256)
201Call reduce_liquidated_position(&mut Position, u128, u256, u256, u256, u256, u256, u256): u256 * u256 * bool * u256 * u256 * u256 * u256 * u256 * u256 * u256
202StLoc[37](loc31: u256)
203StLoc[33](loc27: u256)
204StLoc[35](loc29: u256)
205StLoc[36](loc30: u256)
206StLoc[38](loc32: u256)
207StLoc[39](loc33: u256)
208StLoc[34](loc28: u256)
209Pop
210Pop
211Pop
212MoveLoc[17](loc11: u256)
213MoveLoc[34](loc28: u256)
214Call ifixed::add(u256, u256): u256
215StLoc[17](loc11: u256)
216MoveLoc[46](loc40: u256)
217MoveLoc[39](loc33: u256)
218Call ifixed::add(u256, u256): u256
219StLoc[46](loc40: u256)
220MoveLoc[44](loc38: u256)
221MoveLoc[38](loc32: u256)
222Call ifixed::add(u256, u256): u256
223StLoc[44](loc38: u256)
224MoveLoc[24](loc18: u256)
225MoveLoc[36](loc30: u256)
226Call ifixed::add(u256, u256): u256
227StLoc[24](loc18: u256)
228MoveLoc[21](loc15: u256)
229MoveLoc[35](loc29: u256)
230Call ifixed::add(u256, u256): u256
231StLoc[21](loc15: u256)
232MoveLoc[14](loc8: u256)
233MoveLoc[33](loc27: u256)
234Call ifixed::add(u256, u256): u256
235StLoc[14](loc8: u256)
236MoveLoc[40](loc34: u256)
237MoveLoc[37](loc31: u256)
238Call ifixed::add(u256, u256): u256
239StLoc[40](loc34: u256)
240Branch(243)
B16:
241MoveLoc[45](loc39: &mut Position)
242Pop
B17:
243CopyLoc[21](loc15: u256)
244LdU256(0)
245Neq
246BrFalse(257)
B18:
247CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
248MutBorrowFieldGeneric[9](SessionHotPotato.clearing_house: ClearingHouse<Ty0>)
249Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
250CopyLoc[21](loc15: u256)
251CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
252ImmBorrowFieldGeneric[20](SessionHotPotato.collateral_price: u256)
253ReadRef
254Call ifixed::div(u256, u256): u256
255MoveLoc[47](loc41: u256)
256Call transfer_from_vault_to_insurance_fund<Ty0>(&mut Vault<Ty0>, u256, u256)
B19:
257MoveLoc[5](Arg5: &ID)
258ReadRef
259CopyLoc[1](Arg1: u64)
260CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
261ImmBorrowFieldGeneric[8](SessionHotPotato.account_id: u64)
262ReadRef
263CopyLoc[22](loc16: bool)
264CopyLoc[17](loc11: u256)
265CopyLoc[46](loc40: u256)
266MoveLoc[44](loc38: u256)
267CopyLoc[24](loc18: u256)
268MoveLoc[21](loc15: u256)
269CopyLoc[14](loc8: u256)
270MoveLoc[28](loc22: u256)
271Call events::e23(ID, u64, u64, bool, u256, u256, u256, u256, u256, u256, u256)
272CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
273ImmBorrowFieldGeneric[22](SessionHotPotato.total_open_interest: u256)
274ReadRef
275MoveLoc[40](loc34: u256)
276Call ifixed::add(u256, u256): u256
277CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
278MutBorrowFieldGeneric[22](SessionHotPotato.total_open_interest: u256)
279WriteRef
280MoveLoc[1](Arg1: u64)
281Call option::some<u64>(u64): Option<u64>
282CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
283MutBorrowFieldGeneric[17](SessionHotPotato.liqee_account_id: Option<u64>)
284WriteRef
285MoveLoc[24](loc18: u256)
286CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
287MutBorrowFieldGeneric[24](SessionHotPotato.liquidator_fees: u256)
288WriteRef
289MoveLoc[17](loc11: u256)
290CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
291MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
292MutBorrowField[18](SessionSummary.base_liquidated: u256)
293WriteRef
294MoveLoc[46](loc40: u256)
295CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
296MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
297MutBorrowField[17](SessionSummary.quote_liquidated: u256)
298WriteRef
299MoveLoc[22](loc16: bool)
300CopyLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
301MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
302MutBorrowField[26](SessionSummary.is_liqee_long: bool)
303WriteRef
304MoveLoc[14](loc8: u256)
305MoveLoc[0](Arg0: &mut SessionHotPotato<Ty0>)
306MutBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
307MutBorrowField[27](SessionSummary.bad_debt: u256)
308WriteRef
309Ret
}
public(friend) reduce_liquidated_position(Arg0: &mut Position, Arg1: u128, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256, Arg7: u256): u256 * u256 * bool * u256 * u256 * u256 * u256 * u256 * u256 * u256 {
L8: loc0: u256
L9: loc1: u256
L10: loc2: u256
L11: loc3: u256
L12: loc4: u256
L13: loc5: bool
L14: loc6: bool
L15: loc7: u256
L16: loc8: u256
L17: loc9: u256
L18: loc10: u256
L19: loc11: u256
L20: loc12: u256
L21: loc13: u256
L22: loc14: u256
L23: loc15: u256
L24: loc16: u256
L25: loc17: bool
L26: loc18: u256
L27: loc19: u256
L28: loc20: bool
L29: loc21: u256
L30: loc22: u256
L31: loc23: u256
L32: loc24: u256
L33: loc25: u256
L34: loc26: u256
L35: loc27: u256
L36: loc28: u256
B0:
0CopyLoc[0](Arg0: &mut Position)
1FreezeRef
2Call position::base_and_quote_amounts(&Position): u256 * u256
3Pop
4StLoc[18](loc10: u256)
5CopyLoc[1](Arg1: u128)
6LdU256(1000000000)
7Call ifixed::from_u128balance(u128, u256): u256
8StLoc[19](loc11: u256)
9CopyLoc[19](loc11: u256)
10CopyLoc[2](Arg2: u256)
11Call ifixed::mul(u256, u256): u256
12StLoc[36](loc28: u256)
13CopyLoc[18](loc10: u256)
14Call ifixed::is_neg(u256): bool
15Not
16StLoc[28](loc20: bool)
17MoveLoc[1](Arg1: u128)
18LdU128(0)
19Neq
20BrFalse(45)
B1:
21CopyLoc[0](Arg0: &mut Position)
22CopyLoc[28](loc20: bool)
23CopyLoc[19](loc11: u256)
24CopyLoc[36](loc28: u256)
25Call position::add_base_to_position(&mut Position, bool, u256, u256): u256 * u256
26StLoc[31](loc23: u256)
27StLoc[34](loc26: u256)
28CopyLoc[28](loc20: bool)
29BrFalse(34)
B2:
30CopyLoc[19](loc11: u256)
31Call ifixed::neg(u256): u256
32StLoc[9](loc1: u256)
33Branch(36)
B3:
34LdU256(0)
35StLoc[9](loc1: u256)
B4:
36MoveLoc[9](loc1: u256)
37StLoc[32](loc24: u256)
38MoveLoc[34](loc26: u256)
39MoveLoc[32](loc24: u256)
40MoveLoc[31](loc23: u256)
41StLoc[12](loc4: u256)
42StLoc[11](loc3: u256)
43StLoc[10](loc2: u256)
44Branch(51)
B5:
45LdU256(0)
46LdU256(0)
47MoveLoc[18](loc10: u256)
48StLoc[12](loc4: u256)
49StLoc[11](loc3: u256)
50StLoc[10](loc2: u256)
B6:
51MoveLoc[10](loc2: u256)
52MoveLoc[11](loc3: u256)
53MoveLoc[12](loc4: u256)
54StLoc[17](loc9: u256)
55StLoc[33](loc25: u256)
56StLoc[35](loc27: u256)
57MoveLoc[4](Arg4: u256)
58CopyLoc[36](loc28: u256)
59Call ifixed::mul(u256, u256): u256
60StLoc[30](loc22: u256)
61MoveLoc[5](Arg5: u256)
62CopyLoc[36](loc28: u256)
63Call ifixed::mul(u256, u256): u256
64StLoc[29](loc21: u256)
65CopyLoc[35](loc27: u256)
66CopyLoc[29](loc21: u256)
67Call ifixed::sub(u256, u256): u256
68StLoc[22](loc14: u256)
69CopyLoc[0](Arg0: &mut Position)
70FreezeRef
71Call position::collateral(&Position): u256
72CopyLoc[22](loc14: u256)
73CopyLoc[3](Arg3: u256)
74Call ifixed::div(u256, u256): u256
75Call ifixed::add(u256, u256): u256
76StLoc[20](loc12: u256)
77CopyLoc[20](loc12: u256)
78CopyLoc[3](Arg3: u256)
79Call ifixed::mul(u256, u256): u256
80StLoc[23](loc15: u256)
81CopyLoc[23](loc15: u256)
82CopyLoc[0](Arg0: &mut Position)
83FreezeRef
84CopyLoc[2](Arg2: u256)
85Call position::unrealized_pnl(&Position, u256): u256
86Call ifixed::add(u256, u256): u256
87StLoc[24](loc16: u256)
88LdU256(0)
89StLoc[16](loc8: u256)
90MoveLoc[17](loc9: u256)
91LdU256(0)
92Eq
93BrFalse(98)
B7:
94CopyLoc[20](loc12: u256)
95Call ifixed::is_neg(u256): bool
96StLoc[13](loc5: bool)
97Branch(100)
B8:
98LdFalse
99StLoc[13](loc5: bool)
B9:
100MoveLoc[13](loc5: bool)
101StLoc[25](loc17: bool)
102CopyLoc[25](loc17: bool)
103Not
104BrFalse(117)
B10:
105CopyLoc[24](loc16: u256)
106LdU256(0)
107Call ifixed::greater_than(u256, u256): bool
108BrFalse(114)
B11:
109MoveLoc[20](loc12: u256)
110Call ifixed::is_neg(u256): bool
111Not
112StLoc[14](loc6: bool)
113Branch(119)
B12:
114LdFalse
115StLoc[14](loc6: bool)
116Branch(119)
B13:
117LdFalse
118StLoc[14](loc6: bool)
B14:
119MoveLoc[14](loc6: bool)
120BrFalse(126)
B15:
121MoveLoc[23](loc15: u256)
122MoveLoc[24](loc16: u256)
123Call ifixed::min(u256, u256): u256
124StLoc[15](loc7: u256)
125Branch(128)
B16:
126LdU256(0)
127StLoc[15](loc7: u256)
B17:
128MoveLoc[15](loc7: u256)
129StLoc[26](loc18: u256)
130CopyLoc[30](loc22: u256)
131CopyLoc[26](loc18: u256)
132Call ifixed::less_than_eq(u256, u256): bool
133BrFalse(137)
B18:
134MoveLoc[30](loc22: u256)
135StLoc[8](loc0: u256)
136Branch(139)
B19:
137MoveLoc[26](loc18: u256)
138StLoc[8](loc0: u256)
B20:
139MoveLoc[8](loc0: u256)
140StLoc[27](loc19: u256)
141MoveLoc[22](loc14: u256)
142CopyLoc[27](loc19: u256)
143Call ifixed::sub(u256, u256): u256
144StLoc[21](loc13: u256)
145CopyLoc[0](Arg0: &mut Position)
146MoveLoc[21](loc13: u256)
147CopyLoc[3](Arg3: u256)
148Call position::add_to_collateral_usd(&mut Position, u256, u256): u256
149Pop
150MoveLoc[25](loc17: bool)
151BrFalse(155)
B21:
152CopyLoc[0](Arg0: &mut Position)
153Call position::reset_collateral(&mut Position): u256
154StLoc[16](loc8: u256)
B22:
155MoveLoc[0](Arg0: &mut Position)
156FreezeRef
157MoveLoc[3](Arg3: u256)
158MoveLoc[2](Arg2: u256)
159MoveLoc[6](Arg6: u256)
160MoveLoc[7](Arg7: u256)
161Call position::compute_margin_and_requirement(&Position, u256, u256, u256, u256): u256 * u256
162MoveLoc[28](loc20: bool)
163MoveLoc[19](loc11: u256)
164MoveLoc[36](loc28: u256)
165MoveLoc[35](loc27: u256)
166MoveLoc[29](loc21: u256)
167MoveLoc[27](loc19: u256)
168MoveLoc[16](loc8: u256)
169MoveLoc[33](loc25: u256)
170Ret
}
public(friend) force_cancel_orders(Arg0: &mut Orderbook, Arg1: u64, Arg2: &vector<u128>, Arg3: ID, Arg4: u8): u128 * u128 * u64 {
L5: loc0: u128
L6: loc1: u128
L7: loc2: Option<u64>
L8: loc3: u64
L9: loc4: u64
L10: loc5: u128
L11: loc6: u64
L12: loc7: u64
B0:
0LdU64(0)
1StLoc[8](loc3: u64)
2LdU128(0)
3StLoc[5](loc0: u128)
4LdU128(0)
5StLoc[6](loc1: u128)
6LdU64(0)
7StLoc[11](loc6: u64)
8CopyLoc[2](Arg2: &vector<u128>)
9VecLen(119)
10StLoc[9](loc4: u64)
B1:
11CopyLoc[8](loc3: u64)
12CopyLoc[9](loc4: u64)
13Lt
14BrFalse(62)
B2:
15Branch(16)
B3:
16CopyLoc[2](Arg2: &vector<u128>)
17CopyLoc[8](loc3: u64)
18VecImmBorrow(119)
19ReadRef
20StLoc[10](loc5: u128)
21CopyLoc[0](Arg0: &mut Orderbook)
22CopyLoc[1](Arg1: u64)
23CopyLoc[10](loc5: u128)
24Call orderbook::try_cancel_limit_order(&mut Orderbook, u64, u128): bool * u64 * Option<u64>
25StLoc[7](loc2: Option<u64>)
26StLoc[12](loc7: u64)
27BrFalse(57)
B4:
28MoveLoc[11](loc6: u64)
29LdU64(1)
30Add
31StLoc[11](loc6: u64)
32CopyLoc[3](Arg3: ID)
33CopyLoc[1](Arg1: u64)
34CopyLoc[10](loc5: u128)
35MoveLoc[7](loc2: Option<u64>)
36CopyLoc[12](loc7: u64)
37CopyLoc[4](Arg4: u8)
38CopyLoc[0](Arg0: &mut Orderbook)
39FreezeRef
40Call orderbook::book_price(&Orderbook): Option<u64>
41Call events::e22(ID, u64, u128, Option<u64>, u64, u8, Option<u64>)
42MoveLoc[10](loc5: u128)
43LdU128(170141183460469231731687303715884105728)
44Lt
45BrFalse(52)
B5:
46MoveLoc[5](loc0: u128)
47MoveLoc[12](loc7: u64)
48CastU128
49Add
50StLoc[5](loc0: u128)
51Branch(57)
B6:
52MoveLoc[6](loc1: u128)
53MoveLoc[12](loc7: u64)
54CastU128
55Add
56StLoc[6](loc1: u128)
B7:
57MoveLoc[8](loc3: u64)
58LdU64(1)
59Add
60StLoc[8](loc3: u64)
61Branch(11)
B8:
62MoveLoc[0](Arg0: &mut Orderbook)
63Pop
64MoveLoc[2](Arg2: &vector<u128>)
65Pop
66MoveLoc[5](loc0: u128)
67MoveLoc[6](loc1: u128)
68MoveLoc[11](loc6: u64)
69Ret
}
transfer_from_vault_to_insurance_fund<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: u256, Arg2: u256) {
L3: loc0: Balance<Ty0>
L4: loc1: u64
B0:
0MoveLoc[1](Arg1: u256)
1MoveLoc[2](Arg2: u256)
2Call ifixed::to_balance(u256, u256): u64
3StLoc[4](loc1: u64)
4CopyLoc[0](Arg0: &mut Vault<Ty0>)
5ImmBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
6Call balance::value<Ty0>(&Balance<Ty0>): u64
7CopyLoc[4](loc1: u64)
8Ge
9BrFalse(11)
B1:
10Branch(15)
B2:
11MoveLoc[0](Arg0: &mut Vault<Ty0>)
12Pop
13LdU64(23)
14Abort
B3:
15CopyLoc[0](Arg0: &mut Vault<Ty0>)
16MutBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
17MoveLoc[4](loc1: u64)
18Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
19StLoc[3](loc0: Balance<Ty0>)
20MoveLoc[0](Arg0: &mut Vault<Ty0>)
21MutBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
22MoveLoc[3](loc0: Balance<Ty0>)
23Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
24Pop
25Ret
}
transfer_from_insurance_fund_to_vault<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: u256, Arg2: u256) {
L3: loc0: u64
L4: loc1: Balance<Ty0>
L5: loc2: u64
L6: loc3: u64
B0:
0CopyLoc[1](Arg1: u256)
1CopyLoc[2](Arg2: u256)
2Call ifixed::to_balance(u256, u256): u64
3StLoc[6](loc3: u64)
4CopyLoc[6](loc3: u64)
5MoveLoc[2](Arg2: u256)
6Call ifixed::from_balance(u64, u256): u256
7MoveLoc[1](Arg1: u256)
8Eq
9BrFalse(13)
B1:
10MoveLoc[6](loc3: u64)
11StLoc[3](loc0: u64)
12Branch(17)
B2:
13MoveLoc[6](loc3: u64)
14LdU64(1)
15Add
16StLoc[3](loc0: u64)
B3:
17MoveLoc[3](loc0: u64)
18StLoc[5](loc2: u64)
19CopyLoc[0](Arg0: &mut Vault<Ty0>)
20MutBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
21MoveLoc[5](loc2: u64)
22Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
23StLoc[4](loc1: Balance<Ty0>)
24MoveLoc[0](Arg0: &mut Vault<Ty0>)
25MutBorrowFieldGeneric[5](Vault.collateral_balance: Balance<Ty0>)
26MoveLoc[4](loc1: Balance<Ty0>)
27Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
28Pop
29Ret
}
handle_bad_debt<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: bool, Arg5: &ID, Arg6: Option<u256>) {
L7: loc0: u256
L8: loc1: u256
L9: loc2: u256
L10: loc3: u256
L11: loc4: u256
L12: loc5: &mut Vault<Ty0>
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
2Call market::scaling_factor(&MarketParams): u256
3StLoc[11](loc4: u256)
4CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
5ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
6Call market::max_bad_debt_thresholds(&MarketParams): u256 * u256
7StLoc[10](loc3: u256)
8StLoc[9](loc2: u256)
9CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
10Call borrow_mut_market_vault<Ty0>(&mut ClearingHouse<Ty0>): &mut Vault<Ty0>
11StLoc[12](loc5: &mut Vault<Ty0>)
12CopyLoc[12](loc5: &mut Vault<Ty0>)
13ImmBorrowFieldGeneric[6](Vault.insurance_fund_balance: Balance<Ty0>)
14Call balance::value<Ty0>(&Balance<Ty0>): u64
15CopyLoc[11](loc4: u256)
16Call ifixed::from_balance(u64, u256): u256
17StLoc[8](loc1: u256)
18CopyLoc[8](loc1: u256)
19CopyLoc[1](Arg1: u256)
20Call ifixed::greater_than_eq(u256, u256): bool
21BrFalse(31)
B1:
22MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
23Pop
24MoveLoc[5](Arg5: &ID)
25Pop
26MoveLoc[12](loc5: &mut Vault<Ty0>)
27MoveLoc[1](Arg1: u256)
28MoveLoc[11](loc4: u256)
29Call transfer_from_insurance_fund_to_vault<Ty0>(&mut Vault<Ty0>, u256, u256)
30Branch(51)
B2:
31MoveLoc[1](Arg1: u256)
32CopyLoc[8](loc1: u256)
33Call ifixed::sub(u256, u256): u256
34MoveLoc[3](Arg3: u256)
35Call ifixed::mul(u256, u256): u256
36StLoc[7](loc0: u256)
37MoveLoc[12](loc5: &mut Vault<Ty0>)
38MoveLoc[8](loc1: u256)
39MoveLoc[11](loc4: u256)
40Call transfer_from_insurance_fund_to_vault<Ty0>(&mut Vault<Ty0>, u256, u256)
41MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
42MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
43MoveLoc[2](Arg2: u256)
44MoveLoc[4](Arg4: bool)
45MoveLoc[7](loc0: u256)
46MoveLoc[9](loc2: u256)
47MoveLoc[10](loc3: u256)
48MoveLoc[5](Arg5: &ID)
49MoveLoc[6](Arg6: Option<u256>)
50Call try_socialize_bad_debt(&mut MarketState, u256, bool, u256, u256, u256, &ID, Option<u256>)
B3:
51Ret
}
try_socialize_bad_debt(Arg0: &mut MarketState, Arg1: u256, Arg2: bool, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: &ID, Arg7: Option<u256>) {
L8: loc0: u256
L9: loc1: u256
B0:
0ImmBorrowLoc[7](Arg7: Option<u256>)
1Call option::is_some<u256>(&Option<u256>): bool
2BrFalse(7)
B1:
3MoveLoc[7](Arg7: Option<u256>)
4Call option::destroy_some<u256>(Option<u256>): u256
5StLoc[8](loc0: u256)
6Branch(11)
B2:
7CopyLoc[0](Arg0: &mut MarketState)
8FreezeRef
9Call market::open_interest(&MarketState): u256
10StLoc[8](loc0: u256)
B3:
11CopyLoc[8](loc0: u256)
12LdU256(0)
13Neq
14BrFalse(16)
B4:
15Branch(22)
B5:
16MoveLoc[0](Arg0: &mut MarketState)
17Pop
18MoveLoc[6](Arg6: &ID)
19Pop
20LdU64(21)
21Abort
B6:
22CopyLoc[3](Arg3: u256)
23MoveLoc[8](loc0: u256)
24Call ifixed::div_up(u256, u256): u256
25StLoc[9](loc1: u256)
26CopyLoc[3](Arg3: u256)
27MoveLoc[4](Arg4: u256)
28Call ifixed::less_than_eq(u256, u256): bool
29BrFalse(31)
B7:
30Branch(37)
B8:
31MoveLoc[0](Arg0: &mut MarketState)
32Pop
33MoveLoc[6](Arg6: &ID)
34Pop
35LdU64(22)
36Abort
B9:
37CopyLoc[9](loc1: u256)
38MoveLoc[1](Arg1: u256)
39Call ifixed::div(u256, u256): u256
40MoveLoc[5](Arg5: u256)
41Call ifixed::less_than_eq(u256, u256): bool
42BrFalse(44)
B10:
43Branch(50)
B11:
44MoveLoc[0](Arg0: &mut MarketState)
45Pop
46MoveLoc[6](Arg6: &ID)
47Pop
48LdU64(24)
49Abort
B12:
50MoveLoc[0](Arg0: &mut MarketState)
51MoveLoc[6](Arg6: &ID)
52MoveLoc[2](Arg2: bool)
53Not
54MoveLoc[3](Arg3: u256)
55MoveLoc[9](loc1: u256)
56Call market::add_bad_debt_to_market(&mut MarketState, &ID, bool, u256, u256)
57Ret
}
public compute_liquidation_size_and_mode(Arg0: &Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256): u256 * bool {
L7: loc0: u256
L8: loc1: u256
L9: loc2: u256
L10: loc3: u256
L11: loc4: u256
L12: loc5: u256
L13: loc6: u256
B0:
0CopyLoc[0](Arg0: &Position)
1Call position::base_and_quote_amounts(&Position): u256 * u256
2StLoc[13](loc6: u256)
3StLoc[8](loc1: u256)
4CopyLoc[0](Arg0: &Position)
5Call position::collateral(&Position): u256
6StLoc[9](loc2: u256)
7CopyLoc[8](loc1: u256)
8Call ifixed::abs(u256): u256
9StLoc[7](loc0: u256)
10CopyLoc[7](loc0: u256)
11CopyLoc[2](Arg2: u256)
12Call ifixed::mul(u256, u256): u256
13CopyLoc[3](Arg3: u256)
14Call ifixed::mul(u256, u256): u256
15StLoc[11](loc4: u256)
16MoveLoc[0](Arg0: &Position)
17CopyLoc[1](Arg1: u256)
18CopyLoc[2](Arg2: u256)
19MoveLoc[3](Arg3: u256)
20CopyLoc[6](Arg6: u256)
21Call position::compute_margin_and_requirement(&Position, u256, u256, u256, u256): u256 * u256
22StLoc[12](loc5: u256)
23StLoc[10](loc3: u256)
24CopyLoc[6](Arg6: u256)
25LdU256(0)
26Eq
27BrFalse(41)
B1:
28MoveLoc[8](loc1: u256)
29MoveLoc[13](loc6: u256)
30MoveLoc[9](loc2: u256)
31MoveLoc[7](loc0: u256)
32MoveLoc[1](Arg1: u256)
33MoveLoc[2](Arg2: u256)
34MoveLoc[4](Arg4: u256)
35MoveLoc[5](Arg5: u256)
36MoveLoc[11](loc4: u256)
37MoveLoc[10](loc3: u256)
38MoveLoc[12](loc5: u256)
39Call compute_liquidation_size_no_haircut(u256, u256, u256, u256, u256, u256, u256, u256, u256, u256, u256): u256 * bool
40Ret
B2:
41MoveLoc[8](loc1: u256)
42MoveLoc[13](loc6: u256)
43MoveLoc[9](loc2: u256)
44MoveLoc[7](loc0: u256)
45MoveLoc[1](Arg1: u256)
46MoveLoc[2](Arg2: u256)
47MoveLoc[4](Arg4: u256)
48MoveLoc[5](Arg5: u256)
49MoveLoc[6](Arg6: u256)
50MoveLoc[11](loc4: u256)
51MoveLoc[10](loc3: u256)
52MoveLoc[12](loc5: u256)
53Call compute_liquidation_size_with_haircut(u256, u256, u256, u256, u256, u256, u256, u256, u256, u256, u256, u256): u256 * bool
54Ret
}
compute_liquidation_size_no_haircut(Arg0: u256, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256, Arg7: u256, Arg8: u256, Arg9: u256, Arg10: u256): u256 * bool {
L11: loc0: u256
L12: loc1: u256
L13: loc2: u256
L14: loc3: u256
L15: loc4: u256
L16: loc5: u256
L17: loc6: u256
L18: loc7: u256
B0:
0CopyLoc[9](Arg9: u256)
1MoveLoc[10](Arg10: u256)
2Call ifixed::greater_than_eq(u256, u256): bool
3BrFalse(7)
B1:
4LdU256(0)
5LdTrue
6Ret
B2:
7MoveLoc[9](Arg9: u256)
8LdU256(0)
9Call ifixed::less_than_eq(u256, u256): bool
10BrFalse(14)
B3:
11MoveLoc[3](Arg3: u256)
12LdFalse
13Ret
B4:
14CopyLoc[5](Arg5: u256)
15MoveLoc[0](Arg0: u256)
16Call ifixed::mul(u256, u256): u256
17MoveLoc[1](Arg1: u256)
18Call ifixed::sub(u256, u256): u256
19StLoc[17](loc6: u256)
20CopyLoc[4](Arg4: u256)
21MoveLoc[2](Arg2: u256)
22Call ifixed::mul(u256, u256): u256
23StLoc[12](loc1: u256)
24MoveLoc[5](Arg5: u256)
25CopyLoc[3](Arg3: u256)
26Call ifixed::mul(u256, u256): u256
27StLoc[14](loc3: u256)
28MoveLoc[4](Arg4: u256)
29Call liquidation_collateral_rounding_cushion(u256): u256
30StLoc[16](loc5: u256)
31CopyLoc[8](Arg8: u256)
32MoveLoc[16](loc5: u256)
33Call ifixed::add(u256, u256): u256
34CopyLoc[17](loc6: u256)
35CopyLoc[12](loc1: u256)
36Call ifixed::add(u256, u256): u256
37Call ifixed::sub(u256, u256): u256
38StLoc[15](loc4: u256)
39CopyLoc[15](loc4: u256)
40CopyLoc[8](Arg8: u256)
41MoveLoc[12](loc1: u256)
42MoveLoc[17](loc6: u256)
43CopyLoc[6](Arg6: u256)
44CopyLoc[14](loc3: u256)
45Call ifixed::mul(u256, u256): u256
46Call waived_fee_liquidation_alpha(u256, u256, u256, u256, u256): bool * u256
47StLoc[18](loc7: u256)
48BrFalse(54)
B5:
49MoveLoc[18](loc7: u256)
50MoveLoc[3](Arg3: u256)
51Call ifixed::mul(u256, u256): u256
52LdFalse
53Ret
B6:
54MoveLoc[8](Arg8: u256)
55MoveLoc[6](Arg6: u256)
56MoveLoc[7](Arg7: u256)
57Call ifixed::add(u256, u256): u256
58MoveLoc[14](loc3: u256)
59Call ifixed::mul(u256, u256): u256
60Call ifixed::sub(u256, u256): u256
61StLoc[13](loc2: u256)
62MoveLoc[15](loc4: u256)
63MoveLoc[13](loc2: u256)
64Call ifixed::div_up(u256, u256): u256
65StLoc[11](loc0: u256)
66CopyLoc[11](loc0: u256)
67Call valid_liquidation_alpha(u256): bool
68Not
69BrFalse(73)
B7:
70MoveLoc[3](Arg3: u256)
71LdFalse
72Ret
B8:
73MoveLoc[11](loc0: u256)
74MoveLoc[3](Arg3: u256)
75Call ifixed::mul(u256, u256): u256
76LdFalse
77Ret
}
waived_fee_liquidation_alpha(Arg0: u256, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256): bool * u256 {
L5: loc0: bool
L6: loc1: u256
L7: loc2: u256
L8: loc3: u256
B0:
0MoveLoc[1](Arg1: u256)
1CopyLoc[4](Arg4: u256)
2Call ifixed::sub(u256, u256): u256
3StLoc[8](loc3: u256)
4CopyLoc[8](loc3: u256)
5LdU256(0)
6Call ifixed::greater_than(u256, u256): bool
7Not
8BrFalse(12)
B1:
9LdFalse
10LdU256(0)
11Ret
B2:
12MoveLoc[0](Arg0: u256)
13MoveLoc[8](loc3: u256)
14Call ifixed::div_up(u256, u256): u256
15StLoc[6](loc1: u256)
16MoveLoc[2](Arg2: u256)
17CopyLoc[6](loc1: u256)
18MoveLoc[3](Arg3: u256)
19MoveLoc[4](Arg4: u256)
20Call ifixed::sub(u256, u256): u256
21Call ifixed::mul(u256, u256): u256
22Call ifixed::add(u256, u256): u256
23StLoc[7](loc2: u256)
24CopyLoc[6](loc1: u256)
25Call valid_liquidation_alpha(u256): bool
26BrFalse(33)
B3:
27MoveLoc[7](loc2: u256)
28LdU256(0)
29Call ifixed::greater_than(u256, u256): bool
30Not
31StLoc[5](loc0: bool)
32Branch(35)
B4:
33LdFalse
34StLoc[5](loc0: bool)
B5:
35MoveLoc[5](loc0: bool)
36MoveLoc[6](loc1: u256)
37Ret
}
compute_liquidation_size_with_haircut(Arg0: u256, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256, Arg7: u256, Arg8: u256, Arg9: u256, Arg10: u256, Arg11: u256): u256 * bool {
L12: loc0: bool
L13: loc1: bool
L14: loc2: u256
L15: loc3: u256
L16: loc4: u256
L17: loc5: u256
L18: loc6: u256
L19: loc7: u256
L20: loc8: u256
L21: loc9: u256
L22: loc10: bool
L23: loc11: u256
L24: loc12: u256
L25: loc13: u256
L26: loc14: u256
B0:
0LdU256(1000000000000000000)
1CopyLoc[8](Arg8: u256)
2Call ifixed::sub(u256, u256): u256
3StLoc[17](loc5: u256)
4CopyLoc[5](Arg5: u256)
5MoveLoc[0](Arg0: u256)
6Call ifixed::mul(u256, u256): u256
7MoveLoc[1](Arg1: u256)
8Call ifixed::sub(u256, u256): u256
9StLoc[25](loc13: u256)
10CopyLoc[6](Arg6: u256)
11MoveLoc[7](Arg7: u256)
12Call ifixed::add(u256, u256): u256
13CopyLoc[5](Arg5: u256)
14CopyLoc[3](Arg3: u256)
15Call ifixed::mul(u256, u256): u256
16Call ifixed::mul(u256, u256): u256
17StLoc[19](loc7: u256)
18CopyLoc[4](Arg4: u256)
19MoveLoc[2](Arg2: u256)
20Call ifixed::mul(u256, u256): u256
21StLoc[18](loc6: u256)
22CopyLoc[18](loc6: u256)
23CopyLoc[25](loc13: u256)
24Call ifixed::add(u256, u256): u256
25StLoc[24](loc12: u256)
26MoveLoc[4](Arg4: u256)
27Call liquidation_collateral_rounding_cushion(u256): u256
28StLoc[23](loc11: u256)
29MoveLoc[10](Arg10: u256)
30MoveLoc[11](Arg11: u256)
31Call ifixed::greater_than_eq(u256, u256): bool
32BrFalse(36)
B1:
33LdU256(0)
34LdTrue
35Ret
B2:
36CopyLoc[24](loc12: u256)
37LdU256(0)
38Call ifixed::less_than_eq(u256, u256): bool
39BrFalse(43)
B3:
40MoveLoc[3](Arg3: u256)
41LdFalse
42Ret
B4:
43CopyLoc[25](loc13: u256)
44CopyLoc[19](loc7: u256)
45Call ifixed::sub(u256, u256): u256
46StLoc[16](loc4: u256)
47LdU256(0)
48StLoc[14](loc2: u256)
49LdFalse
50StLoc[22](loc10: bool)
51CopyLoc[9](Arg9: u256)
52CopyLoc[23](loc11: u256)
53Call ifixed::add(u256, u256): u256
54MoveLoc[24](loc12: u256)
55Call ifixed::sub(u256, u256): u256
56CopyLoc[9](Arg9: u256)
57CopyLoc[18](loc6: u256)
58CopyLoc[25](loc13: u256)
59MoveLoc[6](Arg6: u256)
60MoveLoc[5](Arg5: u256)
61CopyLoc[3](Arg3: u256)
62Call ifixed::mul(u256, u256): u256
63Call ifixed::mul(u256, u256): u256
64Call waived_fee_liquidation_alpha(u256, u256, u256, u256, u256): bool * u256
65StLoc[26](loc14: u256)
66BrFalse(71)
B5:
67MoveLoc[26](loc14: u256)
68StLoc[14](loc2: u256)
69LdTrue
70StLoc[22](loc10: bool)
B6:
71CopyLoc[9](Arg9: u256)
72MoveLoc[8](Arg8: u256)
73CopyLoc[25](loc13: u256)
74Call ifixed::mul(u256, u256): u256
75Call ifixed::sub(u256, u256): u256
76MoveLoc[19](loc7: u256)
77CopyLoc[17](loc5: u256)
78Call ifixed::mul(u256, u256): u256
79Call ifixed::sub(u256, u256): u256
80StLoc[21](loc9: u256)
81CopyLoc[21](loc9: u256)
82LdU256(0)
83Call ifixed::greater_than(u256, u256): bool
84BrFalse(134)
B7:
85MoveLoc[9](Arg9: u256)
86MoveLoc[23](loc11: u256)
87Call ifixed::add(u256, u256): u256
88MoveLoc[25](loc13: u256)
89CopyLoc[18](loc6: u256)
90MoveLoc[17](loc5: u256)
91Call ifixed::mul(u256, u256): u256
92Call ifixed::add(u256, u256): u256
93Call ifixed::sub(u256, u256): u256
94MoveLoc[21](loc9: u256)
95Call ifixed::div_up(u256, u256): u256
96StLoc[20](loc8: u256)
97MoveLoc[18](loc6: u256)
98CopyLoc[20](loc8: u256)
99MoveLoc[16](loc4: u256)
100Call ifixed::mul(u256, u256): u256
101Call ifixed::add(u256, u256): u256
102StLoc[15](loc3: u256)
103CopyLoc[20](loc8: u256)
104Call valid_liquidation_alpha(u256): bool
105BrFalse(126)
B8:
106MoveLoc[15](loc3: u256)
107Call ifixed::is_neg(u256): bool
108Not
109BrFalse(123)
B9:
110CopyLoc[22](loc10: bool)
111Not
112BrFalse(116)
B10:
113LdTrue
114StLoc[13](loc1: bool)
115Branch(120)
B11:
116CopyLoc[20](loc8: u256)
117CopyLoc[14](loc2: u256)
118Call ifixed::less_than(u256, u256): bool
119StLoc[13](loc1: bool)
B12:
120MoveLoc[13](loc1: bool)
121StLoc[12](loc0: bool)
122Branch(128)
B13:
123LdFalse
124StLoc[12](loc0: bool)
125Branch(128)
B14:
126LdFalse
127StLoc[12](loc0: bool)
B15:
128MoveLoc[12](loc0: bool)
129BrFalse(134)
B16:
130MoveLoc[20](loc8: u256)
131StLoc[14](loc2: u256)
132LdTrue
133StLoc[22](loc10: bool)
B17:
134MoveLoc[22](loc10: bool)
135Not
136BrFalse(140)
B18:
137MoveLoc[3](Arg3: u256)
138LdFalse
139Ret
B19:
140MoveLoc[14](loc2: u256)
141MoveLoc[3](Arg3: u256)
142Call ifixed::mul(u256, u256): u256
143LdFalse
144Ret
}
liquidation_collateral_rounding_cushion(Arg0: u256): u256 {
B0:
0MoveLoc[0](Arg0: u256)
1LdU256(999999999999999999)
2Add
3LdU256(1000000000000000000)
4Div
5Ret
}
valid_liquidation_alpha(Arg0: u256): bool {
L1: loc0: bool
B0:
0CopyLoc[0](Arg0: u256)
1LdU256(0)
2Call ifixed::less_than(u256, u256): bool
3Not
4BrFalse(11)
B1:
5MoveLoc[0](Arg0: u256)
6LdU256(1000000000000000000)
7Call ifixed::greater_than(u256, u256): bool
8Not
9StLoc[1](loc0: bool)
10Branch(13)
B2:
11LdFalse
12StLoc[1](loc0: bool)
B3:
13MoveLoc[1](loc0: bool)
14Ret
}
collateral_for_margin_increase(Arg0: u256, Arg1: u256, Arg2: u256, Arg3: u256): u256 {
L4: loc0: u256
L5: loc1: u256
L6: loc2: u256
L7: loc3: u256
L8: loc4: u256
B0:
0CopyLoc[2](Arg2: u256)
1LdU256(0)
2Eq
3BrFalse(8)
B1:
4MoveLoc[3](Arg3: u256)
5MoveLoc[1](Arg1: u256)
6Call ifixed::div_up(u256, u256): u256
7Ret
B2:
8MoveLoc[0](Arg0: u256)
9CopyLoc[1](Arg1: u256)
10Call ifixed::mul(u256, u256): u256
11StLoc[7](loc3: u256)
12LdU256(1000000000000000000)
13MoveLoc[2](Arg2: u256)
14Call ifixed::sub(u256, u256): u256
15StLoc[6](loc2: u256)
16CopyLoc[7](loc3: u256)
17Call ifixed::is_neg(u256): bool
18BrFalse(40)
B3:
19MoveLoc[7](loc3: u256)
20Call ifixed::neg(u256): u256
21StLoc[8](loc4: u256)
22CopyLoc[3](Arg3: u256)
23CopyLoc[8](loc4: u256)
24Call ifixed::less_than_eq(u256, u256): bool
25BrFalse(29)
B4:
26MoveLoc[3](Arg3: u256)
27StLoc[4](loc0: u256)
28Branch(37)
B5:
29CopyLoc[8](loc4: u256)
30MoveLoc[3](Arg3: u256)
31MoveLoc[8](loc4: u256)
32Call ifixed::sub(u256, u256): u256
33MoveLoc[6](loc2: u256)
34Call ifixed::div_up(u256, u256): u256
35Call ifixed::add(u256, u256): u256
36StLoc[4](loc0: u256)
B6:
37MoveLoc[4](loc0: u256)
38StLoc[5](loc1: u256)
39Branch(44)
B7:
40MoveLoc[3](Arg3: u256)
41MoveLoc[6](loc2: u256)
42Call ifixed::div_up(u256, u256): u256
43StLoc[5](loc1: u256)
B8:
44MoveLoc[5](loc1: u256)
45MoveLoc[1](Arg1: u256)
46Call ifixed::div_up(u256, u256): u256
47Ret
}
public clip_size_to_liquidate(Arg0: u256, Arg1: u256, Arg2: u64): u128 {
L3: loc0: u128
L4: loc1: u128
L5: loc2: u128
B0:
0MoveLoc[0](Arg0: u256)
1Call ifixed::abs(u256): u256
2LdU256(1000000000)
3Call ifixed::to_u128balance(u256, u256): u128
4LdU128(1)
5Add
6StLoc[5](loc2: u128)
7MoveLoc[1](Arg1: u256)
8Call ifixed::abs(u256): u256
9LdU256(1000000000)
10Call ifixed::to_u128balance(u256, u256): u128
11StLoc[4](loc1: u128)
12CopyLoc[2](Arg2: u64)
13LdU64(1)
14Neq
15BrFalse(27)
B1:
16MoveLoc[5](loc2: u128)
17CopyLoc[2](Arg2: u64)
18CastU128
19Call u128::div_ceil(u128, u128): u128
20MoveLoc[2](Arg2: u64)
21CastU128
22Mul
23MoveLoc[4](loc1: u128)
24Call u128::min(u128, u128): u128
25StLoc[3](loc0: u128)
26Branch(31)
B2:
27MoveLoc[5](loc2: u128)
28MoveLoc[4](loc1: u128)
29Call u128::min(u128, u128): u128
30StLoc[3](loc0: u128)
B3:
31MoveLoc[3](loc0: u128)
32Ret
}
collateral_symbol<Ty0>(): String {
B0:
0Call type_name::with_defining_ids<Ty0>(): TypeName
1Call type_name::into_string(TypeName): String
2Call ascii::into_bytes(String): vector<u8>
3Call string::utf8(vector<u8>): String
4Ret
}
public fill_base_and_quote_deltas(Arg0: u64, Arg1: u64): u256 * u256 {
L2: loc0: u256
L3: loc1: u256
B0:
0CopyLoc[1](Arg1: u64)
1LdU256(1000000000)
2Call ifixed::from_balance(u64, u256): u256
3StLoc[2](loc0: u256)
4MoveLoc[1](Arg1: u64)
5CastU256
6MoveLoc[0](Arg0: u64)
7CastU256
8Mul
9StLoc[3](loc1: u256)
10MoveLoc[2](loc0: u256)
11MoveLoc[3](loc1: u256)
12Ret
}
deallocate_collateral_<Ty0, Ty1>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &AuthorityCap<ACCOUNT, Ty1>, Arg2: &mut Account<Ty0>, Arg3: &PriceFeedStorage, Arg4: &PriceFeedStorage, Arg5: Option<u64>, Arg6: &Clock): u64 {
B0:
0CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
1FreezeRef
2Call assert_package_version<Ty0>(&ClearingHouse<Ty0>)
3CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
4FreezeRef
5Call assert_market_is_not_paused<Ty0>(&ClearingHouse<Ty0>)
6CopyLoc[2](Arg2: &mut Account<Ty0>)
7FreezeRef
8MoveLoc[1](Arg1: &AuthorityCap<ACCOUNT, Ty1>)
9Call account::assert_authority_cap_is_valid<Ty0, Ty1>(&Account<Ty0>, &AuthorityCap<ACCOUNT, Ty1>)
10MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11MoveLoc[2](Arg2: &mut Account<Ty0>)
12MoveLoc[3](Arg3: &PriceFeedStorage)
13MoveLoc[4](Arg4: &PriceFeedStorage)
14MoveLoc[5](Arg5: Option<u64>)
15MoveLoc[6](Arg6: &Clock)
16Call deallocate_collateral_internal<Ty0>(&mut ClearingHouse<Ty0>, &mut Account<Ty0>, &PriceFeedStorage, &PriceFeedStorage, Option<u64>, &Clock): u64
17Ret
}
public(friend) deallocate_collateral_internal<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: &mut Account<Ty0>, Arg2: &PriceFeedStorage, Arg3: &PriceFeedStorage, Arg4: Option<u64>, Arg5: &Clock): u64 {
L6: loc0: u64
L7: loc1: u256
L8: loc2: ID
L9: loc3: u256
L10: loc4: u64
L11: loc5: u256
L12: loc6: u256
L13: loc7: &MarketParams
L14: loc8: u64
B0:
0CopyLoc[1](Arg1: &mut Account<Ty0>)
1FreezeRef
2Call account::account_id<Ty0>(&Account<Ty0>): u64
3StLoc[6](loc0: u64)
4CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
5ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
6Call object::uid_to_inner(&UID): ID
7StLoc[8](loc2: ID)
8CopyLoc[5](Arg5: &Clock)
9Call clock::timestamp_ms(&Clock): u64
10StLoc[14](loc8: u64)
11CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
12FreezeRef
13Call market_params<Ty0>(&ClearingHouse<Ty0>): &MarketParams
14StLoc[13](loc7: &MarketParams)
15CopyLoc[13](loc7: &MarketParams)
16MoveLoc[3](Arg3: &PriceFeedStorage)
17CopyLoc[5](Arg5: &Clock)
18Call market::collateral_oracle_price(&MarketParams, &PriceFeedStorage, &Clock): u256
19StLoc[9](loc3: u256)
20CopyLoc[13](loc7: &MarketParams)
21MoveLoc[2](Arg2: &PriceFeedStorage)
22MoveLoc[5](Arg5: &Clock)
23Call market::base_oracle_price_and_twap_price(&MarketParams, &PriceFeedStorage, &Clock): u256 * u256
24StLoc[12](loc6: u256)
25StLoc[11](loc5: u256)
26MoveLoc[13](loc7: &MarketParams)
27CopyLoc[11](loc5: u256)
28CopyLoc[12](loc6: u256)
29Call market::assert_index_twap_divergence_within_limit(&MarketParams, u256, u256)
30CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
31FreezeRef
32Call orderbook<Ty0>(&ClearingHouse<Ty0>): &Orderbook
33CopyLoc[11](loc5: u256)
34Call orderbook::book_price_or_index(&Orderbook, u256): u256
35StLoc[7](loc1: u256)
36CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
37ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
38CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
39MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
40CopyLoc[14](loc8: u64)
41MoveLoc[11](loc5: u256)
42CopyLoc[7](loc1: u256)
43ImmBorrowLoc[8](loc2: ID)
44Call market::try_update_fundings_and_twaps(&MarketParams, &mut MarketState, u64, u256, u256, &ID)
45MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
46MoveLoc[1](Arg1: &mut Account<Ty0>)
47Call account::borrow_mut_collateral<Ty0>(&mut Account<Ty0>): &mut Balance<Ty0>
48MoveLoc[14](loc8: u64)
49MoveLoc[9](loc3: u256)
50MoveLoc[12](loc6: u256)
51MoveLoc[7](loc1: u256)
52CopyLoc[6](loc0: u64)
53MoveLoc[4](Arg4: Option<u64>)
54Call withdraw_free_collateral_to_account_balance<Ty0>(&mut ClearingHouse<Ty0>, &mut Balance<Ty0>, u64, u256, u256, u256, u64, Option<u64>): u64
55StLoc[10](loc4: u64)
56CopyLoc[10](loc4: u64)
57LdU64(0)
58Neq
59BrFalse(64)
B1:
60MoveLoc[8](loc2: ID)
61MoveLoc[6](loc0: u64)
62CopyLoc[10](loc4: u64)
63Call events::e29(ID, u64, u64)
B2:
64MoveLoc[10](loc4: u64)
65Ret
}
public(friend) start_session_<Ty0>(Arg0: ClearingHouse<Ty0>, Arg1: u64, Arg2: &PriceFeedStorage, Arg3: &PriceFeedStorage, Arg4: bool, Arg5: Option<IntegratorInfo>, Arg6: &Clock): SessionHotPotato<Ty0> {
L7: loc0: u256
L8: loc1: ID
L9: loc2: u256
L10: loc3: u256
L11: loc4: u256
L12: loc5: u256
L13: loc6: u256
L14: loc7: u256
L15: loc8: u256
L16: loc9: u256
L17: loc10: u256
L18: loc11: u256
L19: loc12: u256
L20: loc13: &MarketParams
L21: loc14: &MarketParams
L22: loc15: &MarketState
L23: loc16: u256
L24: loc17: u256
L25: loc18: u256
L26: loc19: &mut Position
L27: loc20: u256
L28: loc21: u64
B0:
0ImmBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call object::uid_to_inner(&UID): ID
3StLoc[8](loc1: ID)
4CopyLoc[6](Arg6: &Clock)
5Call clock::timestamp_ms(&Clock): u64
6StLoc[28](loc21: u64)
7ImmBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
8Call market_params<Ty0>(&ClearingHouse<Ty0>): &MarketParams
9StLoc[20](loc13: &MarketParams)
10CopyLoc[20](loc13: &MarketParams)
11MoveLoc[3](Arg3: &PriceFeedStorage)
12CopyLoc[6](Arg6: &Clock)
13Call market::collateral_oracle_price(&MarketParams, &PriceFeedStorage, &Clock): u256
14StLoc[10](loc3: u256)
15CopyLoc[20](loc13: &MarketParams)
16MoveLoc[2](Arg2: &PriceFeedStorage)
17MoveLoc[6](Arg6: &Clock)
18Call market::base_oracle_price_and_twap_price(&MarketParams, &PriceFeedStorage, &Clock): u256 * u256
19StLoc[14](loc7: u256)
20StLoc[12](loc5: u256)
21MoveLoc[20](loc13: &MarketParams)
22CopyLoc[12](loc5: u256)
23CopyLoc[14](loc7: u256)
24Call market::assert_index_twap_divergence_within_limit(&MarketParams, u256, u256)
25MoveLoc[10](loc3: u256)
26MoveLoc[12](loc5: u256)
27MoveLoc[14](loc7: u256)
28StLoc[15](loc8: u256)
29StLoc[13](loc6: u256)
30StLoc[11](loc4: u256)
31ImmBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
32ImmBorrowFieldGeneric[7](ClearingHouse.orderbook: Orderbook)
33CopyLoc[13](loc6: u256)
34Call orderbook::book_price_or_index(&Orderbook, u256): u256
35StLoc[7](loc0: u256)
36ImmBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
37ImmBorrowFieldGeneric[2](ClearingHouse.market_params: MarketParams)
38MutBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
39MutBorrowFieldGeneric[3](ClearingHouse.market_state: MarketState)
40CopyLoc[28](loc21: u64)
41MoveLoc[13](loc6: u256)
42CopyLoc[7](loc0: u256)
43ImmBorrowLoc[8](loc1: ID)
44Call market::try_update_fundings_and_twaps(&MarketParams, &mut MarketState, u64, u256, u256, &ID)
45ImmBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
46Call market_objects<Ty0>(&ClearingHouse<Ty0>): &MarketParams * &MarketState
47StLoc[22](loc15: &MarketState)
48StLoc[21](loc14: &MarketParams)
49CopyLoc[21](loc14: &MarketParams)
50Call market::margin_ratio_initial(&MarketParams): u256
51StLoc[19](loc12: u256)
52CopyLoc[21](loc14: &MarketParams)
53Call market::collateral_haircut(&MarketParams): u256
54StLoc[9](loc2: u256)
55CopyLoc[22](loc15: &MarketState)
56Call market::cum_funding_rates(&MarketState): u256 * u256
57StLoc[25](loc18: u256)
58StLoc[24](loc17: u256)
59MoveLoc[22](loc15: &MarketState)
60MoveLoc[21](loc14: &MarketParams)
61MoveLoc[15](loc8: u256)
62MoveLoc[7](loc0: u256)
63CopyLoc[28](loc21: u64)
64Call market::calculate_mark_price(&MarketState, &MarketParams, u256, u256, u64): u256
65StLoc[18](loc11: u256)
66MutBorrowLoc[0](Arg0: ClearingHouse<Ty0>)
67CopyLoc[1](Arg1: u64)
68Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
69StLoc[26](loc19: &mut Position)
70CopyLoc[26](loc19: &mut Position)
71FreezeRef
72MoveLoc[19](loc12: u256)
73Call position::effective_initial_margin_ratio(&Position, u256): u256
74StLoc[17](loc10: u256)
75CopyLoc[26](loc19: &mut Position)
76FreezeRef
77Call position::base_and_quote_amounts(&Position): u256 * u256
78Pop
79StLoc[27](loc20: u256)
80CopyLoc[26](loc19: &mut Position)
81CopyLoc[11](loc4: u256)
82MoveLoc[24](loc17: u256)
83MoveLoc[25](loc18: u256)
84ImmBorrowLoc[8](loc1: ID)
85CopyLoc[1](Arg1: u64)
86Call settle_position_funding_and_emit(&mut Position, u256, u256, u256, &ID, u64)
87MoveLoc[26](loc19: &mut Position)
88FreezeRef
89CopyLoc[11](loc4: u256)
90CopyLoc[18](loc11: u256)
91MoveLoc[17](loc10: u256)
92MoveLoc[9](loc2: u256)
93Call position::compute_margin_and_requirement(&Position, u256, u256, u256, u256): u256 * u256
94StLoc[23](loc16: u256)
95StLoc[16](loc9: u256)
96MoveLoc[0](Arg0: ClearingHouse<Ty0>)
97MoveLoc[1](Arg1: u64)
98MoveLoc[28](loc21: u64)
99MoveLoc[11](loc4: u256)
100MoveLoc[18](loc11: u256)
101MoveLoc[4](Arg4: bool)
102MoveLoc[16](loc9: u256)
103MoveLoc[23](loc16: u256)
104MoveLoc[27](loc20: u256)
105LdU256(0)
106LdU256(0)
107LdFalse
108VecPack(160, 0)
109MoveLoc[5](Arg5: Option<IntegratorInfo>)
110Call option::none<u64>(): Option<u64>
111LdU256(0)
112Call create_session_summary(): SessionSummary
113PackGeneric[0](SessionHotPotato<Ty0>)
114Ret
}
cancel_orders_<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: u64, Arg2: &vector<u128>, Arg3: u8) {
L4: loc0: u64
L5: loc1: u128
L6: loc2: u128
L7: loc3: ID
L8: loc4: Option<u64>
L9: loc5: u256
L10: loc6: u256
L11: loc7: u64
L12: loc8: u64
L13: loc9: u128
L14: loc10: &mut Orderbook
L15: loc11: u64
L16: loc12: &mut Position
L17: loc13: u64
L18: loc14: u64
L19: loc15: &vector<u128>
B0:
0CopyLoc[2](Arg2: &vector<u128>)
1VecLen(119)
2StLoc[15](loc11: u64)
3CopyLoc[15](loc11: u64)
4LdU64(0)
5Neq
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[2](Arg2: &vector<u128>)
9Pop
10MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
11Pop
12LdU64(6)
13Abort
B3:
14CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
15ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
16Call object::uid_to_inner(&UID): ID
17StLoc[7](loc3: ID)
18CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
19Call borrow_mut_orderbook<Ty0>(&mut ClearingHouse<Ty0>): &mut Orderbook
20StLoc[14](loc10: &mut Orderbook)
21LdU128(0)
22StLoc[5](loc1: u128)
23LdU128(0)
24StLoc[6](loc2: u128)
25MoveLoc[2](Arg2: &vector<u128>)
26StLoc[19](loc15: &vector<u128>)
27CopyLoc[19](loc15: &vector<u128>)
28VecLen(119)
29StLoc[4](loc0: u64)
30LdU64(0)
31StLoc[12](loc8: u64)
32MoveLoc[4](loc0: u64)
33StLoc[18](loc14: u64)
B4:
34CopyLoc[12](loc8: u64)
35CopyLoc[18](loc14: u64)
36Lt
37BrFalse(81)
B5:
38CopyLoc[12](loc8: u64)
39StLoc[11](loc7: u64)
40CopyLoc[19](loc15: &vector<u128>)
41MoveLoc[11](loc7: u64)
42VecImmBorrow(119)
43ReadRef
44StLoc[13](loc9: u128)
45CopyLoc[14](loc10: &mut Orderbook)
46CopyLoc[1](Arg1: u64)
47CopyLoc[13](loc9: u128)
48Call orderbook::cancel_limit_order(&mut Orderbook, u64, u128): u64 * Option<u64>
49StLoc[8](loc4: Option<u64>)
50StLoc[17](loc13: u64)
51CopyLoc[13](loc9: u128)
52LdU128(170141183460469231731687303715884105728)
53Lt
54BrFalse(61)
B6:
55MoveLoc[5](loc1: u128)
56CopyLoc[17](loc13: u64)
57CastU128
58Add
59StLoc[5](loc1: u128)
60Branch(66)
B7:
61MoveLoc[6](loc2: u128)
62CopyLoc[17](loc13: u64)
63CastU128
64Add
65StLoc[6](loc2: u128)
B8:
66CopyLoc[7](loc3: ID)
67CopyLoc[1](Arg1: u64)
68MoveLoc[13](loc9: u128)
69MoveLoc[8](loc4: Option<u64>)
70MoveLoc[17](loc13: u64)
71CopyLoc[3](Arg3: u8)
72CopyLoc[14](loc10: &mut Orderbook)
73FreezeRef
74Call orderbook::book_price(&Orderbook): Option<u64>
75Call events::e22(ID, u64, u128, Option<u64>, u64, u8, Option<u64>)
76MoveLoc[12](loc8: u64)
77LdU64(1)
78Add
79StLoc[12](loc8: u64)
80Branch(34)
B9:
81MoveLoc[19](loc15: &vector<u128>)
82Pop
83MoveLoc[14](loc10: &mut Orderbook)
84Pop
85MoveLoc[5](loc1: u128)
86LdU256(1000000000)
87Call ifixed::from_u128balance(u128, u256): u256
88StLoc[9](loc5: u256)
89MoveLoc[6](loc2: u128)
90LdU256(1000000000)
91Call ifixed::from_u128balance(u128, u256): u256
92StLoc[10](loc6: u256)
93MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
94MoveLoc[1](Arg1: u64)
95Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
96StLoc[16](loc12: &mut Position)
97CopyLoc[16](loc12: &mut Position)
98LdTrue
99MoveLoc[9](loc5: u256)
100Call position::sub_from_pending_amount(&mut Position, bool, u256)
101CopyLoc[16](loc12: &mut Position)
102LdFalse
103MoveLoc[10](loc6: u256)
104Call position::sub_from_pending_amount(&mut Position, bool, u256)
105MoveLoc[16](loc12: &mut Position)
106LdFalse
107MoveLoc[15](loc11: u64)
108Call position::update_pending_orders(&mut Position, bool, u64)
109Ret
}
try_cancel_orders_<Ty0>(Arg0: &mut ClearingHouse<Ty0>, Arg1: u64, Arg2: &vector<u128>, Arg3: Option<u64>, Arg4: u256): vector<bool> {
L5: loc0: u64
L6: loc1: bool
L7: loc2: bool
L8: loc3: u64
L9: loc4: Option<u64>
L10: loc5: u8
L11: loc6: u8
L12: loc7: Option<u64>
L13: loc8: u64
L14: loc9: bool
L15: loc10: Option<u64>
L16: loc11: u64
L17: loc12: u128
L18: loc13: u128
L19: loc14: u8
L20: loc15: u64
L21: loc16: ID
L22: loc17: Option<u64>
L23: loc18: Option<u64>
L24: loc19: Option<u64>
L25: loc20: u256
L26: loc21: u256
L27: loc22: u64
L28: loc23: u64
L29: loc24: bool
L30: loc25: u128
L31: loc26: &mut Orderbook
L32: loc27: &mut Position
L33: loc28: vector<bool>
L34: loc29: u64
L35: loc30: u64
L36: loc31: u64
L37: loc32: u64
L38: loc33: &vector<u128>
L39: loc34: bool
B0:
0LdConst[0](vector<bool>: 00)
1StLoc[33](loc28: vector<bool>)
2CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
3ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
4Call object::uid_to_inner(&UID): ID
5StLoc[21](loc16: ID)
6CopyLoc[0](Arg0: &mut ClearingHouse<Ty0>)
7Call borrow_mut_orderbook<Ty0>(&mut ClearingHouse<Ty0>): &mut Orderbook
8StLoc[31](loc26: &mut Orderbook)
9LdU128(0)
10StLoc[17](loc12: u128)
11LdU128(0)
12StLoc[18](loc13: u128)
13LdU64(0)
14StLoc[20](loc15: u64)
15MoveLoc[2](Arg2: &vector<u128>)
16StLoc[38](loc33: &vector<u128>)
17CopyLoc[38](loc33: &vector<u128>)
18VecLen(119)
19StLoc[5](loc0: u64)
20LdU64(0)
21StLoc[27](loc22: u64)
22MoveLoc[5](loc0: u64)
23StLoc[37](loc32: u64)
B1:
24CopyLoc[27](loc22: u64)
25CopyLoc[37](loc32: u64)
26Lt
27BrFalse(137)
B2:
28CopyLoc[27](loc22: u64)
29StLoc[28](loc23: u64)
30CopyLoc[38](loc33: &vector<u128>)
31MoveLoc[28](loc23: u64)
32VecImmBorrow(119)
33ReadRef
34StLoc[30](loc25: u128)
35ImmBorrowLoc[3](Arg3: Option<u64>)
36Call option::is_some<u64>(&Option<u64>): bool
37BrFalse(71)
B3:
38CopyLoc[31](loc26: &mut Orderbook)
39CopyLoc[1](Arg1: u64)
40CopyLoc[30](loc25: u128)
41ImmBorrowLoc[3](Arg3: Option<u64>)
42Call option::borrow<u64>(&Option<u64>): &u64
43ReadRef
44CopyLoc[4](Arg4: u256)
45Call orderbook::try_cancel_stale_limit_order(&mut Orderbook, u64, u128, u64, u256): bool * bool * u64 * Option<u64>
46StLoc[22](loc17: Option<u64>)
47StLoc[34](loc29: u64)
48StLoc[29](loc24: bool)
49StLoc[14](loc9: bool)
50MoveLoc[34](loc29: u64)
51StLoc[13](loc8: u64)
52MoveLoc[22](loc17: Option<u64>)
53StLoc[12](loc7: Option<u64>)
54MoveLoc[29](loc24: bool)
55BrFalse(59)
B4:
56LdU8(5)
57StLoc[11](loc6: u8)
58Branch(62)
B5:
59LdU8(4)
60StLoc[11](loc6: u8)
61Branch(62)
B6:
62MoveLoc[14](loc9: bool)
63MoveLoc[13](loc8: u64)
64MoveLoc[12](loc7: Option<u64>)
65MoveLoc[11](loc6: u8)
66StLoc[10](loc5: u8)
67StLoc[9](loc4: Option<u64>)
68StLoc[8](loc3: u64)
69StLoc[7](loc2: bool)
70Branch(90)
B7:
71CopyLoc[31](loc26: &mut Orderbook)
72CopyLoc[1](Arg1: u64)
73CopyLoc[30](loc25: u128)
74Call orderbook::try_cancel_limit_order(&mut Orderbook, u64, u128): bool * u64 * Option<u64>
75StLoc[23](loc18: Option<u64>)
76StLoc[35](loc30: u64)
77StLoc[6](loc1: bool)
78MoveLoc[35](loc30: u64)
79StLoc[16](loc11: u64)
80MoveLoc[23](loc18: Option<u64>)
81StLoc[15](loc10: Option<u64>)
82MoveLoc[6](loc1: bool)
83MoveLoc[16](loc11: u64)
84MoveLoc[15](loc10: Option<u64>)
85LdU8(0)
86StLoc[10](loc5: u8)
87StLoc[9](loc4: Option<u64>)
88StLoc[8](loc3: u64)
89StLoc[7](loc2: bool)
B8:
90MoveLoc[7](loc2: bool)
91MoveLoc[8](loc3: u64)
92MoveLoc[9](loc4: Option<u64>)
93MoveLoc[10](loc5: u8)
94StLoc[19](loc14: u8)
95StLoc[24](loc19: Option<u64>)
96StLoc[36](loc31: u64)
97StLoc[39](loc34: bool)
98MutBorrowLoc[33](loc28: vector<bool>)
99CopyLoc[39](loc34: bool)
100VecPushBack(2)
101MoveLoc[39](loc34: bool)
102BrFalse(132)
B9:
103MoveLoc[20](loc15: u64)
104LdU64(1)
105Add
106StLoc[20](loc15: u64)
107CopyLoc[30](loc25: u128)
108LdU128(170141183460469231731687303715884105728)
109Lt
110BrFalse(117)
B10:
111MoveLoc[17](loc12: u128)
112CopyLoc[36](loc31: u64)
113CastU128
114Add
115StLoc[17](loc12: u128)
116Branch(122)
B11:
117MoveLoc[18](loc13: u128)
118CopyLoc[36](loc31: u64)
119CastU128
120Add
121StLoc[18](loc13: u128)
B12:
122CopyLoc[21](loc16: ID)
123CopyLoc[1](Arg1: u64)
124MoveLoc[30](loc25: u128)
125MoveLoc[24](loc19: Option<u64>)
126MoveLoc[36](loc31: u64)
127MoveLoc[19](loc14: u8)
128CopyLoc[31](loc26: &mut Orderbook)
129FreezeRef
130Call orderbook::book_price(&Orderbook): Option<u64>
131Call events::e22(ID, u64, u128, Option<u64>, u64, u8, Option<u64>)
B13:
132MoveLoc[27](loc22: u64)
133LdU64(1)
134Add
135StLoc[27](loc22: u64)
136Branch(24)
B14:
137MoveLoc[38](loc33: &vector<u128>)
138Pop
139MoveLoc[31](loc26: &mut Orderbook)
140Pop
141CopyLoc[20](loc15: u64)
142LdU64(0)
143Neq
144BrFalse(170)
B15:
145MoveLoc[17](loc12: u128)
146LdU256(1000000000)
147Call ifixed::from_u128balance(u128, u256): u256
148StLoc[25](loc20: u256)
149MoveLoc[18](loc13: u128)
150LdU256(1000000000)
151Call ifixed::from_u128balance(u128, u256): u256
152StLoc[26](loc21: u256)
153MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
154MoveLoc[1](Arg1: u64)
155Call borrow_mut_position<Ty0>(&mut ClearingHouse<Ty0>, u64): &mut Position
156StLoc[32](loc27: &mut Position)
157CopyLoc[32](loc27: &mut Position)
158LdTrue
159MoveLoc[25](loc20: u256)
160Call position::sub_from_pending_amount(&mut Position, bool, u256)
161CopyLoc[32](loc27: &mut Position)
162LdFalse
163MoveLoc[26](loc21: u256)
164Call position::sub_from_pending_amount(&mut Position, bool, u256)
165MoveLoc[32](loc27: &mut Position)
166LdFalse
167MoveLoc[20](loc15: u64)
168Call position::update_pending_orders(&mut Position, bool, u64)
169Branch(172)
B16:
170MoveLoc[0](Arg0: &mut ClearingHouse<Ty0>)
171Pop
B17:
172MoveLoc[33](loc28: vector<bool>)
173Ret
}
create_clearing_house_<Ty0, Ty1, Ty2>(Arg0: Orderbook, Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>, Arg2: &mut Registry, Arg3: &Clock, Arg4: &PriceFeedStorage, Arg5: &PriceFeedStorage, Arg6: u16, Arg7: u16, Arg8: u64, Arg9: u256, Arg10: u256, Arg11: u64, Arg12: u64, Arg13: u64, Arg14: u64, Arg15: u64, Arg16: u64, Arg17: u256, Arg18: u256, Arg19: u256, Arg20: u256, Arg21: u64, Arg22: u64, Arg23: &mut TxContext): ClearingHouse<Ty0> {
L24: loc0: u64
L25: loc1: UID
L26: loc2: u32
L27: loc3: ClearingHouse<Ty0>
L28: loc4: ID
L29: loc5: u32
L30: loc6: MarketParams
L31: loc7: MarketState
L32: loc8: Vault<Ty0>
B0:
0CopyLoc[2](Arg2: &mut Registry)
1FreezeRef
2Call registry::assert_package_version(&Registry)
3CopyLoc[2](Arg2: &mut Registry)
4FreezeRef
5MoveLoc[1](Arg1: &AuthorityCap<VENDOR<Ty1>, Ty2>)
6Call registry::assert_admin_or_authorized_assistant_authority_cap<VENDOR<Ty1>, Ty2>(&Registry, &AuthorityCap<VENDOR<Ty1>, Ty2>)
7CopyLoc[4](Arg4: &PriceFeedStorage)
8CopyLoc[6](Arg6: u16)
9Call price_feed_storage::contains(&PriceFeedStorage, u16): bool
10BrFalse(12)
B1:
11Branch(24)
B2:
12MoveLoc[2](Arg2: &mut Registry)
13Pop
14MoveLoc[23](Arg23: &mut TxContext)
15Pop
16MoveLoc[5](Arg5: &PriceFeedStorage)
17Pop
18MoveLoc[3](Arg3: &Clock)
19Pop
20MoveLoc[4](Arg4: &PriceFeedStorage)
21Pop
22LdU64(17)
23Abort
B3:
24CopyLoc[5](Arg5: &PriceFeedStorage)
25CopyLoc[7](Arg7: u16)
26Call price_feed_storage::contains(&PriceFeedStorage, u16): bool
27BrFalse(29)
B4:
28Branch(41)
B5:
29MoveLoc[2](Arg2: &mut Registry)
30Pop
31MoveLoc[23](Arg23: &mut TxContext)
32Pop
33MoveLoc[5](Arg5: &PriceFeedStorage)
34Pop
35MoveLoc[3](Arg3: &Clock)
36Pop
37MoveLoc[4](Arg4: &PriceFeedStorage)
38Pop
39LdU64(17)
40Abort
B6:
41MoveLoc[4](Arg4: &PriceFeedStorage)
42Call price_feed_storage::storage_id(&PriceFeedStorage): u32
43StLoc[26](loc2: u32)
44MoveLoc[5](Arg5: &PriceFeedStorage)
45Call price_feed_storage::storage_id(&PriceFeedStorage): u32
46StLoc[29](loc5: u32)
47Call balance::zero<Ty0>(): Balance<Ty0>
48Call balance::zero<Ty0>(): Balance<Ty0>
49PackGeneric[1](Vault<Ty0>)
50StLoc[32](loc8: Vault<Ty0>)
51CopyLoc[2](Arg2: &mut Registry)
52FreezeRef
53Call registry::config(&Registry): &Config
54MoveLoc[3](Arg3: &Clock)
55CopyLoc[9](Arg9: u256)
56CopyLoc[10](Arg10: u256)
57CopyLoc[26](loc2: u32)
58CopyLoc[29](loc5: u32)
59CopyLoc[6](Arg6: u16)
60CopyLoc[7](Arg7: u16)
61CopyLoc[11](Arg11: u64)
62CopyLoc[12](Arg12: u64)
63CopyLoc[13](Arg13: u64)
64CopyLoc[14](Arg14: u64)
65CopyLoc[15](Arg15: u64)
66CopyLoc[16](Arg16: u64)
67CopyLoc[17](Arg17: u256)
68CopyLoc[18](Arg18: u256)
69CopyLoc[19](Arg19: u256)
70CopyLoc[20](Arg20: u256)
71CopyLoc[21](Arg21: u64)
72CopyLoc[22](Arg22: u64)
73CopyLoc[8](Arg8: u64)
74Call ifixed::decimal_scalar_from_decimals(u64): u64
75CastU256
76Call market::create_market_objects(&Config, &Clock, u256, u256, u32, u32, u16, u16, u64, u64, u64, u64, u64, u64, u256, u256, u256, u256, u64, u64, u256): MarketParams * MarketState
77StLoc[31](loc7: MarketState)
78StLoc[30](loc6: MarketParams)
79MoveLoc[23](Arg23: &mut TxContext)
80Call object::new(&mut TxContext): UID
81StLoc[25](loc1: UID)
82CopyLoc[2](Arg2: &mut Registry)
83FreezeRef
84Call registry::version(&Registry): u64
85StLoc[24](loc0: u64)
86MoveLoc[25](loc1: UID)
87MoveLoc[24](loc0: u64)
88LdU8(0)
89MoveLoc[30](loc6: MarketParams)
90MoveLoc[31](loc7: MarketState)
91MoveLoc[0](Arg0: Orderbook)
92PackGeneric[2](ClearingHouse<Ty0>)
93StLoc[27](loc3: ClearingHouse<Ty0>)
94MutBorrowLoc[27](loc3: ClearingHouse<Ty0>)
95MutBorrowFieldGeneric[1](ClearingHouse.id: UID)
96Call keys::market_vault(): MarketVaultKey
97MoveLoc[32](loc8: Vault<Ty0>)
98Call dynamic_field::add<MarketVaultKey, Vault<Ty0>>(&mut UID, MarketVaultKey, Vault<Ty0>)
99ImmBorrowLoc[27](loc3: ClearingHouse<Ty0>)
100ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
101Call object::uid_to_inner(&UID): ID
102StLoc[28](loc4: ID)
103CopyLoc[28](loc4: ID)
104Call collateral_symbol<Ty0>(): String
105MoveLoc[8](Arg8: u64)
106MoveLoc[9](Arg9: u256)
107MoveLoc[10](Arg10: u256)
108MoveLoc[26](loc2: u32)
109MoveLoc[6](Arg6: u16)
110MoveLoc[29](loc5: u32)
111MoveLoc[7](Arg7: u16)
112MoveLoc[11](Arg11: u64)
113MoveLoc[12](Arg12: u64)
114MoveLoc[13](Arg13: u64)
115MoveLoc[14](Arg14: u64)
116MoveLoc[15](Arg15: u64)
117MoveLoc[16](Arg16: u64)
118MoveLoc[17](Arg17: u256)
119MoveLoc[18](Arg18: u256)
120MoveLoc[19](Arg19: u256)
121MoveLoc[20](Arg20: u256)
122MoveLoc[21](Arg21: u64)
123MoveLoc[22](Arg22: u64)
124Call events::e04(ID, String, u64, u256, u256, u32, u16, u32, u16, u64, u64, u64, u64, u64, u64, u256, u256, u256, u256, u64, u64)
125MoveLoc[2](Arg2: &mut Registry)
126Call registry::borrow_mut_id(&mut Registry): &mut UID
127Call keys::vendor_clearing_house_key<Ty1>(): VendorClearingHouseKey<Ty1>
128Call dynamic_field::borrow_mut<VendorClearingHouseKey<Ty1>, vector<ID>>(&mut UID, VendorClearingHouseKey<Ty1>): &mut vector<ID>
129MoveLoc[28](loc4: ID)
130VecPushBack(172)
131MoveLoc[27](loc3: ClearingHouse<Ty0>)
132Ret
}
public(friend) assert_package_version<Ty0>(Arg0: &ClearingHouse<Ty0>) {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[0](ClearingHouse.version: u64)
2ReadRef
3LdU64(1)
4Le
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdU64(10)
8Abort
B3:
9Ret
}
assert_market_is_paused<Ty0>(Arg0: &ClearingHouse<Ty0>) {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1Call is_market_paused<Ty0>(&ClearingHouse<Ty0>): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdU64(33)
5Abort
B3:
6Ret
}
public(friend) assert_market_is_not_paused<Ty0>(Arg0: &ClearingHouse<Ty0>) {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[4](ClearingHouse.paused: u8)
2ReadRef
3LdU8(0)
4Eq
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdU64(32)
8Abort
B3:
9Ret
}
assert_market_allows_order_cancellation<Ty0>(Arg0: &ClearingHouse<Ty0>) {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[4](ClearingHouse.paused: u8)
2ReadRef
3LdU8(1)
4Neq
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdU64(32)
8Abort
B3:
9Ret
}
assert_valid_pause_mode(Arg0: u8) {
L1: loc0: bool
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(1)
2Eq
3BrFalse(7)
B1:
4LdTrue
5StLoc[1](loc0: bool)
6Branch(11)
B2:
7MoveLoc[0](Arg0: u8)
8LdU8(2)
9Eq
10StLoc[1](loc0: bool)
B3:
11MoveLoc[1](loc0: bool)
12BrFalse(14)
B4:
13Branch(16)
B5:
14LdU64(53)
15Abort
B6:
16Ret
}
assert_market_is_closed<Ty0>(Arg0: &ClearingHouse<Ty0>) {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::settlement_prices(): SettlementPricesKey
3Call dynamic_field::exists<SettlementPricesKey>(&UID, SettlementPricesKey): bool
4BrFalse(6)
B1:
5Branch(8)
B2:
6LdU64(34)
7Abort
B3:
8Ret
}
public(friend) assert_market_is_not_closed<Ty0>(Arg0: &ClearingHouse<Ty0>) {
B0:
0MoveLoc[0](Arg0: &ClearingHouse<Ty0>)
1ImmBorrowFieldGeneric[1](ClearingHouse.id: UID)
2Call keys::settlement_prices(): SettlementPricesKey
3Call dynamic_field::exists<SettlementPricesKey>(&UID, SettlementPricesKey): bool
4Not
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdU64(35)
8Abort
B3:
9Ret
}
assert_order_value(Arg0: u64, Arg1: u256, Arg2: u256) {
B0:
0MoveLoc[0](Arg0: u64)
1LdU256(1000000000)
2Call ifixed::from_balance(u64, u256): u256
3MoveLoc[1](Arg1: u256)
4Call ifixed::mul(u256, u256): u256
5MoveLoc[2](Arg2: u256)
6Ge
7BrFalse(9)
B1:
8Branch(11)
B2:
9LdU64(3)
10Abort
B3:
11Ret
}
assert_settlement_prices(Arg0: u256, Arg1: u256) {
L2: loc0: bool
B0:
0MoveLoc[0](Arg0: u256)
1LdU256(0)
2Call ifixed::greater_than(u256, u256): bool
3BrFalse(9)
B1:
4MoveLoc[1](Arg1: u256)
5LdU256(0)
6Call ifixed::greater_than(u256, u256): bool
7StLoc[2](loc0: bool)
8Branch(11)
B2:
9LdFalse
10StLoc[2](loc0: bool)
B3:
11MoveLoc[2](loc0: bool)
12BrFalse(14)
B4:
13Branch(16)
B5:
14LdU64(49)
15Abort
B6:
16Ret
}
assert_reduce_only<Ty0>(Arg0: &SessionHotPotato<Ty0>, Arg1: bool, Arg2: u64, Arg3: bool): u64 {
L4: loc0: u256
L5: loc1: u64
L6: loc2: u64
L7: loc3: u256
L8: loc4: bool
L9: loc5: u64
L10: loc6: u256
L11: loc7: u256
L12: loc8: u256
L13: loc9: u256
L14: loc10: bool
B0:
0MoveLoc[3](Arg3: bool)
1BrFalse(91)
B1:
2CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
3ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
4ImmBorrowField[18](SessionSummary.base_liquidated: u256)
5ReadRef
6LdU256(0)
7Eq
8BrFalse(12)
B2:
9LdU256(0)
10StLoc[7](loc3: u256)
11Branch(31)
B3:
12CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
13ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
14ImmBorrowField[26](SessionSummary.is_liqee_long: bool)
15ReadRef
16BrFalse(23)
B4:
17CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
18ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
19ImmBorrowField[18](SessionSummary.base_liquidated: u256)
20ReadRef
21StLoc[4](loc0: u256)
22Branch(29)
B5:
23CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
24ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
25ImmBorrowField[18](SessionSummary.base_liquidated: u256)
26ReadRef
27Call ifixed::neg(u256): u256
28StLoc[4](loc0: u256)
B6:
29MoveLoc[4](loc0: u256)
30StLoc[7](loc3: u256)
B7:
31MoveLoc[7](loc3: u256)
32StLoc[11](loc7: u256)
33CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
34ImmBorrowFieldGeneric[25](SessionHotPotato.position_base_before: u256)
35ReadRef
36MoveLoc[11](loc7: u256)
37Call ifixed::add(u256, u256): u256
38CopyLoc[0](Arg0: &SessionHotPotato<Ty0>)
39ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
40ImmBorrowField[22](SessionSummary.base_filled_bid: u256)
41ReadRef
42MoveLoc[0](Arg0: &SessionHotPotato<Ty0>)
43ImmBorrowFieldGeneric[11](SessionHotPotato.session_summary: SessionSummary)
44ImmBorrowField[20](SessionSummary.base_filled_ask: u256)
45ReadRef
46Call ifixed::sub(u256, u256): u256
47Call ifixed::add(u256, u256): u256
48StLoc[13](loc9: u256)
49CopyLoc[13](loc9: u256)
50Call ifixed::is_neg(u256): bool
51StLoc[14](loc10: bool)
52CopyLoc[13](loc9: u256)
53LdU256(0)
54Neq
55BrFalse(61)
B8:
56MoveLoc[14](loc10: bool)
57MoveLoc[1](Arg1: bool)
58Neq
59StLoc[8](loc4: bool)
60Branch(63)
B9:
61LdFalse
62StLoc[8](loc4: bool)
B10:
63MoveLoc[8](loc4: bool)
64BrFalse(66)
B11:
65Branch(68)
B12:
66LdU64(9)
67Abort
B13:
68MoveLoc[13](loc9: u256)
69Call ifixed::abs(u256): u256
70StLoc[12](loc8: u256)
71CopyLoc[12](loc8: u256)
72StLoc[10](loc6: u256)
73CopyLoc[2](Arg2: u64)
74StLoc[9](loc5: u64)
75MoveLoc[10](loc6: u256)
76MoveLoc[9](loc5: u64)
77LdU256(1000000000)
78Call ifixed::from_balance(u64, u256): u256
79Call ifixed::greater_than_eq(u256, u256): bool
80BrFalse(84)
B14:
81MoveLoc[2](Arg2: u64)
82StLoc[5](loc1: u64)
83Branch(88)
B15:
84MoveLoc[12](loc8: u256)
85LdU256(1000000000)
86Call ifixed::to_balance(u256, u256): u64
87StLoc[5](loc1: u64)
B16:
88MoveLoc[5](loc1: u64)
89StLoc[6](loc2: u64)
90Branch(95)
B17:
91MoveLoc[0](Arg0: &SessionHotPotato<Ty0>)
92Pop
93MoveLoc[2](Arg2: u64)
94StLoc[6](loc2: u64)
B18:
95MoveLoc[6](loc2: u64)
96Ret
}
Constants [
0 => vector<bool>: 00
]
}