clob
Module0x0000…dee9
- Move path
- 0x0000…dee9::clob
- Functions
- 2419 public, 0 entry
- Structs
- 9
- Friend modules
- None
Bytecode1278 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module dee9.clob {
use 000000000000000000000000000000000000000000000000000000000000dee9::critbit;
use 000000000000000000000000000000000000000000000000000000000000dee9::custodian;
use 000000000000000000000000000000000000000000000000000000000000dee9::math;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::linked_table;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::sui;
use 0000000000000000000000000000000000000000000000000000000000000002::table;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct PoolCreated has copy, drop, store {
pool_id: ID,
base_asset: TypeName,
quote_asset: TypeName,
taker_fee_rate: u64,
maker_rebate_rate: u64,
tick_size: u64,
lot_size: u64
}
struct OrderPlacedV2<phantom Ty0, phantom Ty1> has copy, drop, store {
pool_id: ID,
order_id: u64,
is_bid: bool,
owner: ID,
base_asset_quantity_placed: u64,
price: u64,
expire_timestamp: u64
}
struct OrderCanceled<phantom Ty0, phantom Ty1> has copy, drop, store {
pool_id: ID,
order_id: u64,
is_bid: bool,
owner: ID,
base_asset_quantity_canceled: u64,
price: u64
}
struct OrderFilledV2<phantom Ty0, phantom Ty1> has copy, drop, store {
pool_id: ID,
order_id: u64,
is_bid: bool,
owner: ID,
total_quantity: u64,
base_asset_quantity_filled: u64,
base_asset_quantity_remaining: u64,
price: u64,
taker_commission: u64,
maker_rebates: u64
}
struct Order has drop, store {
order_id: u64,
price: u64,
quantity: u64,
is_bid: bool,
owner: ID,
expire_timestamp: u64
}
struct TickLevel has store {
price: u64,
open_orders: LinkedTable<u64, Order>
}
struct Pool<phantom Ty0, phantom Ty1> has key {
id: UID,
bids: CritbitTree<TickLevel>,
asks: CritbitTree<TickLevel>,
next_bid_order_id: u64,
next_ask_order_id: u64,
usr_open_orders: Table<ID, LinkedTable<u64, u64>>,
taker_fee_rate: u64,
maker_rebate_rate: u64,
tick_size: u64,
lot_size: u64,
base_custodian: Custodian<Ty0>,
quote_custodian: Custodian<Ty1>,
creation_fee: Balance<SUI>,
base_asset_trading_fees: Balance<Ty0>,
quote_asset_trading_fees: Balance<Ty1>
}
struct OrderPlaced<phantom Ty0, phantom Ty1> has copy, drop, store {
pool_id: ID,
order_id: u64,
is_bid: bool,
owner: ID,
base_asset_quantity_placed: u64,
price: u64
}
struct OrderFilled<phantom Ty0, phantom Ty1> has copy, drop, store {
pool_id: ID,
order_id: u64,
is_bid: bool,
owner: ID,
total_quantity: u64,
base_asset_quantity_filled: u64,
base_asset_quantity_remaining: u64,
price: u64
}
destroy_empty_level(Arg0: TickLevel) {
L1: loc0: LinkedTable<u64, Order>
B0:
0MoveLoc[0](Arg0: TickLevel)
1Unpack[5](TickLevel)
2StLoc[1](loc0: LinkedTable<u64, Order>)
3Pop
4MoveLoc[1](loc0: LinkedTable<u64, Order>)
5Call linked_table::destroy_empty<u64, Order>(LinkedTable<u64, Order>)
6Ret
}
public create_account(Arg0: &mut TxContext): AccountCap {
B0:
0LdConst[0](u64: 0)
1Abort
}
public create_pool<Ty0, Ty1>(Arg0: u64, Arg1: u64, Arg2: Coin<SUI>, Arg3: &mut TxContext) {
B0:
0LdConst[0](u64: 0)
1Abort
}
public deposit_base<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: Coin<Ty0>, Arg2: &AccountCap) {
B0:
0LdU64(1337)
1Abort
}
public deposit_quote<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: Coin<Ty1>, Arg2: &AccountCap) {
B0:
0LdU64(1337)
1Abort
}
public withdraw_base<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: &AccountCap, Arg3: &mut TxContext): Coin<Ty0> {
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(13)
B2:
5MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
6Pop
7MoveLoc[3](Arg3: &mut TxContext)
8Pop
9MoveLoc[2](Arg2: &AccountCap)
10Pop
11LdConst[3](u64: 6)
12Abort
B3:
13MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
14MutBorrowFieldGeneric[0](Pool.base_custodian: Custodian<Ty0>)
15MoveLoc[1](Arg1: u64)
16MoveLoc[2](Arg2: &AccountCap)
17MoveLoc[3](Arg3: &mut TxContext)
18Call custodian::withdraw_asset<Ty0>(&mut Custodian<Ty0>, u64, &AccountCap, &mut TxContext): Coin<Ty0>
19Ret
}
public withdraw_quote<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: &AccountCap, Arg3: &mut TxContext): Coin<Ty1> {
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(13)
B2:
5MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
6Pop
7MoveLoc[3](Arg3: &mut TxContext)
8Pop
9MoveLoc[2](Arg2: &AccountCap)
10Pop
11LdConst[3](u64: 6)
12Abort
B3:
13MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
14MutBorrowFieldGeneric[1](Pool.quote_custodian: Custodian<Ty1>)
15MoveLoc[1](Arg1: u64)
16MoveLoc[2](Arg2: &AccountCap)
17MoveLoc[3](Arg3: &mut TxContext)
18Call custodian::withdraw_asset<Ty1>(&mut Custodian<Ty1>, u64, &AccountCap, &mut TxContext): Coin<Ty1>
19Ret
}
public swap_exact_base_for_quote<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: Coin<Ty0>, Arg3: Coin<Ty1>, Arg4: &Clock, Arg5: &mut TxContext): Coin<Ty0> * Coin<Ty1> * u64 {
B0:
0LdU64(1337)
1Abort
}
public swap_exact_quote_for_base<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: &Clock, Arg3: Coin<Ty1>, Arg4: &mut TxContext): Coin<Ty0> * Coin<Ty1> * u64 {
B0:
0LdU64(1337)
1Abort
}
public place_market_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: bool, Arg3: Coin<Ty0>, Arg4: Coin<Ty1>, Arg5: &Clock, Arg6: &mut TxContext): Coin<Ty0> * Coin<Ty1> {
B0:
0LdU64(1337)
1Abort
}
public place_limit_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64, Arg3: bool, Arg4: u64, Arg5: u8, Arg6: &Clock, Arg7: &AccountCap, Arg8: &mut TxContext): u64 * u64 * bool * u64 {
B0:
0LdU64(1337)
1Abort
}
order_is_bid(Arg0: u64): bool {
B0:
0MoveLoc[0](Arg0: u64)
1LdConst[6](u64: 9223..)
2Lt
3Ret
}
emit_order_canceled<Ty0, Ty1>(Arg0: ID, Arg1: &Order) {
B0:
0MoveLoc[0](Arg0: ID)
1CopyLoc[1](Arg1: &Order)
2ImmBorrowField[2](Order.order_id: u64)
3ReadRef
4CopyLoc[1](Arg1: &Order)
5ImmBorrowField[3](Order.is_bid: bool)
6ReadRef
7CopyLoc[1](Arg1: &Order)
8ImmBorrowField[4](Order.owner: ID)
9ReadRef
10CopyLoc[1](Arg1: &Order)
11ImmBorrowField[5](Order.quantity: u64)
12ReadRef
13MoveLoc[1](Arg1: &Order)
14ImmBorrowField[6](Order.price: u64)
15ReadRef
16PackGeneric[0](OrderCanceled<Ty0, Ty1>)
17Call event::emit<OrderCanceled<Ty0, Ty1>>(OrderCanceled<Ty0, Ty1>)
18Ret
}
public cancel_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: &AccountCap) {
L3: loc0: &CritbitTree<TickLevel>
L4: loc1: &mut CritbitTree<TickLevel>
L5: loc2: u64
L6: loc3: bool
L7: loc4: Order
L8: loc5: u64
L9: loc6: u64
L10: loc7: ID
L11: loc8: &mut LinkedTable<u64, u64>
B0:
0MoveLoc[2](Arg2: &AccountCap)
1Call object::id<AccountCap>(&AccountCap): ID
2StLoc[10](loc7: ID)
3CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
4ImmBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
5CopyLoc[10](loc7: ID)
6Call table::contains<ID, LinkedTable<u64, u64>>(&Table<ID, LinkedTable<u64, u64>>, ID): bool
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
10Pop
11LdConst[5](u64: 12)
12Abort
B3:
13CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
14MutBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
15CopyLoc[10](loc7: ID)
16Call table::borrow_mut<ID, LinkedTable<u64, u64>>(&mut Table<ID, LinkedTable<u64, u64>>, ID): &mut LinkedTable<u64, u64>
17StLoc[11](loc8: &mut LinkedTable<u64, u64>)
18CopyLoc[11](loc8: &mut LinkedTable<u64, u64>)
19FreezeRef
20CopyLoc[1](Arg1: u64)
21Call linked_table::contains<u64, u64>(&LinkedTable<u64, u64>, u64): bool
22BrFalse(24)
B4:
23Branch(30)
B5:
24MoveLoc[11](loc8: &mut LinkedTable<u64, u64>)
25Pop
26MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
27Pop
28LdConst[1](u64: 3)
29Abort
B6:
30CopyLoc[11](loc8: &mut LinkedTable<u64, u64>)
31FreezeRef
32CopyLoc[1](Arg1: u64)
33Call linked_table::borrow<u64, u64>(&LinkedTable<u64, u64>, u64): &u64
34ReadRef
35StLoc[9](loc6: u64)
36CopyLoc[1](Arg1: u64)
37Call order_is_bid(u64): bool
38StLoc[6](loc3: bool)
39CopyLoc[6](loc3: bool)
40BrFalse(45)
B7:
41CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
42ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
43StLoc[3](loc0: &CritbitTree<TickLevel>)
44Branch(48)
B8:
45CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
46ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
47StLoc[3](loc0: &CritbitTree<TickLevel>)
B9:
48MoveLoc[3](loc0: &CritbitTree<TickLevel>)
49MoveLoc[9](loc6: u64)
50Call critbit::find_leaf<TickLevel>(&CritbitTree<TickLevel>, u64): bool * u64
51StLoc[8](loc5: u64)
52BrFalse(54)
B10:
53Branch(60)
B11:
54MoveLoc[11](loc8: &mut LinkedTable<u64, u64>)
55Pop
56MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
57Pop
58LdConst[1](u64: 3)
59Abort
B12:
60CopyLoc[6](loc3: bool)
61BrFalse(66)
B13:
62CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
63MutBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
64StLoc[4](loc1: &mut CritbitTree<TickLevel>)
65Branch(69)
B14:
66CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
67MutBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
68StLoc[4](loc1: &mut CritbitTree<TickLevel>)
B15:
69MoveLoc[4](loc1: &mut CritbitTree<TickLevel>)
70MoveLoc[11](loc8: &mut LinkedTable<u64, u64>)
71MoveLoc[8](loc5: u64)
72MoveLoc[1](Arg1: u64)
73CopyLoc[10](loc7: ID)
74Call remove_order(&mut CritbitTree<TickLevel>, &mut LinkedTable<u64, u64>, u64, u64, ID): Order
75StLoc[7](loc4: Order)
76MoveLoc[6](loc3: bool)
77BrFalse(92)
B16:
78ImmBorrowLoc[7](loc4: Order)
79ImmBorrowField[5](Order.quantity: u64)
80ReadRef
81ImmBorrowLoc[7](loc4: Order)
82ImmBorrowField[6](Order.price: u64)
83ReadRef
84Call math::mul(u64, u64): u64
85StLoc[5](loc2: u64)
86CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
87MutBorrowFieldGeneric[1](Pool.quote_custodian: Custodian<Ty1>)
88MoveLoc[10](loc7: ID)
89MoveLoc[5](loc2: u64)
90Call custodian::unlock_balance<Ty1>(&mut Custodian<Ty1>, ID, u64)
91Branch(99)
B17:
92CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
93MutBorrowFieldGeneric[0](Pool.base_custodian: Custodian<Ty0>)
94MoveLoc[10](loc7: ID)
95ImmBorrowLoc[7](loc4: Order)
96ImmBorrowField[5](Order.quantity: u64)
97ReadRef
98Call custodian::unlock_balance<Ty0>(&mut Custodian<Ty0>, ID, u64)
B18:
99MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
100ImmBorrowFieldGeneric[5](Pool.id: UID)
101Call object::uid_as_inner(&UID): &ID
102ReadRef
103ImmBorrowLoc[7](loc4: Order)
104Call emit_order_canceled<Ty0, Ty1>(ID, &Order)
105Ret
}
remove_order(Arg0: &mut CritbitTree<TickLevel>, Arg1: &mut LinkedTable<u64, u64>, Arg2: u64, Arg3: u64, Arg4: ID): Order {
L5: loc0: &mut TickLevel
L6: loc1: Order
B0:
0MoveLoc[1](Arg1: &mut LinkedTable<u64, u64>)
1CopyLoc[3](Arg3: u64)
2Call linked_table::remove<u64, u64>(&mut LinkedTable<u64, u64>, u64): u64
3Pop
4CopyLoc[0](Arg0: &mut CritbitTree<TickLevel>)
5FreezeRef
6CopyLoc[2](Arg2: u64)
7Call critbit::borrow_leaf_by_index<TickLevel>(&CritbitTree<TickLevel>, u64): &TickLevel
8ImmBorrowField[11](TickLevel.open_orders: LinkedTable<u64, Order>)
9CopyLoc[3](Arg3: u64)
10Call linked_table::contains<u64, Order>(&LinkedTable<u64, Order>, u64): bool
11BrFalse(13)
B1:
12Branch(17)
B2:
13MoveLoc[0](Arg0: &mut CritbitTree<TickLevel>)
14Pop
15LdConst[1](u64: 3)
16Abort
B3:
17CopyLoc[0](Arg0: &mut CritbitTree<TickLevel>)
18CopyLoc[2](Arg2: u64)
19Call critbit::borrow_mut_leaf_by_index<TickLevel>(&mut CritbitTree<TickLevel>, u64): &mut TickLevel
20StLoc[5](loc0: &mut TickLevel)
21CopyLoc[5](loc0: &mut TickLevel)
22MutBorrowField[11](TickLevel.open_orders: LinkedTable<u64, Order>)
23MoveLoc[3](Arg3: u64)
24Call linked_table::remove<u64, Order>(&mut LinkedTable<u64, Order>, u64): Order
25StLoc[6](loc1: Order)
26ImmBorrowLoc[6](loc1: Order)
27ImmBorrowField[4](Order.owner: ID)
28ReadRef
29MoveLoc[4](Arg4: ID)
30Eq
31BrFalse(33)
B4:
32Branch(39)
B5:
33MoveLoc[0](Arg0: &mut CritbitTree<TickLevel>)
34Pop
35MoveLoc[5](loc0: &mut TickLevel)
36Pop
37LdConst[2](u64: 4)
38Abort
B6:
39MoveLoc[5](loc0: &mut TickLevel)
40ImmBorrowField[11](TickLevel.open_orders: LinkedTable<u64, Order>)
41Call linked_table::is_empty<u64, Order>(&LinkedTable<u64, Order>): bool
42BrFalse(48)
B7:
43MoveLoc[0](Arg0: &mut CritbitTree<TickLevel>)
44MoveLoc[2](Arg2: u64)
45Call critbit::remove_leaf_by_index<TickLevel>(&mut CritbitTree<TickLevel>, u64): TickLevel
46Call destroy_empty_level(TickLevel)
47Branch(50)
B8:
48MoveLoc[0](Arg0: &mut CritbitTree<TickLevel>)
49Pop
B9:
50MoveLoc[6](loc1: Order)
51Ret
}
public cancel_all_orders<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &AccountCap) {
L2: loc0: &mut CritbitTree<TickLevel>
L3: loc1: u64
L4: loc2: bool
L5: loc3: &mut CritbitTree<TickLevel>
L6: loc4: Order
L7: loc5: u64
L8: loc6: u64
L9: loc7: ID
L10: loc8: u64
L11: loc9: ID
L12: loc10: &mut LinkedTable<u64, u64>
B0:
0CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1ImmBorrowFieldGeneric[5](Pool.id: UID)
2Call object::uid_as_inner(&UID): &ID
3ReadRef
4StLoc[9](loc7: ID)
5MoveLoc[1](Arg1: &AccountCap)
6Call object::id<AccountCap>(&AccountCap): ID
7StLoc[11](loc9: ID)
8CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
9ImmBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
10CopyLoc[11](loc9: ID)
11Call table::contains<ID, LinkedTable<u64, u64>>(&Table<ID, LinkedTable<u64, u64>>, ID): bool
12BrFalse(14)
B1:
13Branch(18)
B2:
14MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
15Pop
16LdConst[5](u64: 12)
17Abort
B3:
18CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
19MutBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
20CopyLoc[11](loc9: ID)
21Call table::borrow_mut<ID, LinkedTable<u64, u64>>(&mut Table<ID, LinkedTable<u64, u64>>, ID): &mut LinkedTable<u64, u64>
22StLoc[12](loc10: &mut LinkedTable<u64, u64>)
B4:
23CopyLoc[12](loc10: &mut LinkedTable<u64, u64>)
24FreezeRef
25Call linked_table::is_empty<u64, u64>(&LinkedTable<u64, u64>): bool
26Not
27BrFalse(95)
B5:
28CopyLoc[12](loc10: &mut LinkedTable<u64, u64>)
29FreezeRef
30Call linked_table::back<u64, u64>(&LinkedTable<u64, u64>): &Option<u64>
31Call option::borrow<u64>(&Option<u64>): &u64
32ReadRef
33StLoc[7](loc5: u64)
34CopyLoc[12](loc10: &mut LinkedTable<u64, u64>)
35FreezeRef
36CopyLoc[7](loc5: u64)
37Call linked_table::borrow<u64, u64>(&LinkedTable<u64, u64>, u64): &u64
38ReadRef
39StLoc[8](loc6: u64)
40CopyLoc[7](loc5: u64)
41Call order_is_bid(u64): bool
42StLoc[4](loc2: bool)
43CopyLoc[4](loc2: bool)
44BrFalse(50)
B6:
45Branch(46)
B7:
46CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
47MutBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
48StLoc[2](loc0: &mut CritbitTree<TickLevel>)
49Branch(53)
B8:
50CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
51MutBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
52StLoc[2](loc0: &mut CritbitTree<TickLevel>)
B9:
53MoveLoc[2](loc0: &mut CritbitTree<TickLevel>)
54StLoc[5](loc3: &mut CritbitTree<TickLevel>)
55CopyLoc[5](loc3: &mut CritbitTree<TickLevel>)
56FreezeRef
57MoveLoc[8](loc6: u64)
58Call critbit::find_leaf<TickLevel>(&CritbitTree<TickLevel>, u64): bool * u64
59StLoc[10](loc8: u64)
60Pop
61MoveLoc[5](loc3: &mut CritbitTree<TickLevel>)
62CopyLoc[12](loc10: &mut LinkedTable<u64, u64>)
63MoveLoc[10](loc8: u64)
64MoveLoc[7](loc5: u64)
65CopyLoc[11](loc9: ID)
66Call remove_order(&mut CritbitTree<TickLevel>, &mut LinkedTable<u64, u64>, u64, u64, ID): Order
67StLoc[6](loc4: Order)
68MoveLoc[4](loc2: bool)
69BrFalse(84)
B10:
70ImmBorrowLoc[6](loc4: Order)
71ImmBorrowField[5](Order.quantity: u64)
72ReadRef
73ImmBorrowLoc[6](loc4: Order)
74ImmBorrowField[6](Order.price: u64)
75ReadRef
76Call math::mul(u64, u64): u64
77StLoc[3](loc1: u64)
78CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
79MutBorrowFieldGeneric[1](Pool.quote_custodian: Custodian<Ty1>)
80CopyLoc[11](loc9: ID)
81MoveLoc[3](loc1: u64)
82Call custodian::unlock_balance<Ty1>(&mut Custodian<Ty1>, ID, u64)
83Branch(91)
B11:
84CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
85MutBorrowFieldGeneric[0](Pool.base_custodian: Custodian<Ty0>)
86CopyLoc[11](loc9: ID)
87ImmBorrowLoc[6](loc4: Order)
88ImmBorrowField[5](Order.quantity: u64)
89ReadRef
90Call custodian::unlock_balance<Ty0>(&mut Custodian<Ty0>, ID, u64)
B12:
91CopyLoc[9](loc7: ID)
92ImmBorrowLoc[6](loc4: Order)
93Call emit_order_canceled<Ty0, Ty1>(ID, &Order)
94Branch(23)
B13:
95MoveLoc[12](loc10: &mut LinkedTable<u64, u64>)
96Pop
97MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
98Pop
99Ret
}
public batch_cancel_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: vector<u64>, Arg2: &AccountCap) {
L3: loc0: &CritbitTree<TickLevel>
L4: loc1: &mut CritbitTree<TickLevel>
L5: loc2: u64
L6: loc3: u64
L7: loc4: bool
L8: loc5: u64
L9: loc6: u64
L10: loc7: u64
L11: loc8: Order
L12: loc9: u64
L13: loc10: ID
L14: loc11: u64
L15: loc12: u64
L16: loc13: ID
L17: loc14: &mut LinkedTable<u64, u64>
B0:
0CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1ImmBorrowFieldGeneric[5](Pool.id: UID)
2Call object::uid_as_inner(&UID): &ID
3ReadRef
4StLoc[13](loc10: ID)
5MoveLoc[2](Arg2: &AccountCap)
6Call object::id<AccountCap>(&AccountCap): ID
7StLoc[16](loc13: ID)
8CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
9ImmBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
10CopyLoc[16](loc13: ID)
11Call table::contains<ID, LinkedTable<u64, u64>>(&Table<ID, LinkedTable<u64, u64>>, ID): bool
12BrFalse(14)
B1:
13Branch(18)
B2:
14MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
15Pop
16LdU64(0)
17Abort
B3:
18LdU64(0)
19StLoc[14](loc11: u64)
20LdU64(0)
21StLoc[15](loc12: u64)
22ImmBorrowLoc[1](Arg1: vector<u64>)
23VecLen(17)
24StLoc[8](loc5: u64)
25LdU64(0)
26StLoc[6](loc3: u64)
27CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
28MutBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
29CopyLoc[16](loc13: ID)
30Call table::borrow_mut<ID, LinkedTable<u64, u64>>(&mut Table<ID, LinkedTable<u64, u64>>, ID): &mut LinkedTable<u64, u64>
31StLoc[17](loc14: &mut LinkedTable<u64, u64>)
B4:
32CopyLoc[6](loc3: u64)
33CopyLoc[8](loc5: u64)
34Lt
35BrFalse(138)
B5:
36ImmBorrowLoc[1](Arg1: vector<u64>)
37CopyLoc[6](loc3: u64)
38VecImmBorrow(17)
39ReadRef
40StLoc[12](loc9: u64)
41CopyLoc[17](loc14: &mut LinkedTable<u64, u64>)
42FreezeRef
43CopyLoc[12](loc9: u64)
44Call linked_table::contains<u64, u64>(&LinkedTable<u64, u64>, u64): bool
45BrFalse(47)
B6:
46Branch(53)
B7:
47MoveLoc[17](loc14: &mut LinkedTable<u64, u64>)
48Pop
49MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
50Pop
51LdConst[1](u64: 3)
52Abort
B8:
53CopyLoc[17](loc14: &mut LinkedTable<u64, u64>)
54FreezeRef
55CopyLoc[12](loc9: u64)
56Call linked_table::borrow<u64, u64>(&LinkedTable<u64, u64>, u64): &u64
57ReadRef
58StLoc[10](loc7: u64)
59CopyLoc[12](loc9: u64)
60Call order_is_bid(u64): bool
61StLoc[7](loc4: bool)
62CopyLoc[10](loc7: u64)
63CopyLoc[15](loc12: u64)
64Neq
65BrFalse(91)
B9:
66MoveLoc[10](loc7: u64)
67StLoc[15](loc12: u64)
68CopyLoc[7](loc4: bool)
69BrFalse(74)
B10:
70CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
71ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
72StLoc[3](loc0: &CritbitTree<TickLevel>)
73Branch(77)
B11:
74CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
75ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
76StLoc[3](loc0: &CritbitTree<TickLevel>)
B12:
77MoveLoc[3](loc0: &CritbitTree<TickLevel>)
78CopyLoc[15](loc12: u64)
79Call critbit::find_leaf<TickLevel>(&CritbitTree<TickLevel>, u64): bool * u64
80StLoc[9](loc6: u64)
81BrFalse(83)
B13:
82Branch(89)
B14:
83MoveLoc[17](loc14: &mut LinkedTable<u64, u64>)
84Pop
85MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
86Pop
87LdConst[4](u64: 11)
88Abort
B15:
89MoveLoc[9](loc6: u64)
90StLoc[14](loc11: u64)
B16:
91CopyLoc[7](loc4: bool)
92BrFalse(97)
B17:
93CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
94MutBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
95StLoc[4](loc1: &mut CritbitTree<TickLevel>)
96Branch(100)
B18:
97CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
98MutBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
99StLoc[4](loc1: &mut CritbitTree<TickLevel>)
B19:
100MoveLoc[4](loc1: &mut CritbitTree<TickLevel>)
101CopyLoc[17](loc14: &mut LinkedTable<u64, u64>)
102CopyLoc[14](loc11: u64)
103MoveLoc[12](loc9: u64)
104CopyLoc[16](loc13: ID)
105Call remove_order(&mut CritbitTree<TickLevel>, &mut LinkedTable<u64, u64>, u64, u64, ID): Order
106StLoc[11](loc8: Order)
107MoveLoc[7](loc4: bool)
108BrFalse(123)
B20:
109ImmBorrowLoc[11](loc8: Order)
110ImmBorrowField[5](Order.quantity: u64)
111ReadRef
112ImmBorrowLoc[11](loc8: Order)
113ImmBorrowField[6](Order.price: u64)
114ReadRef
115Call math::mul(u64, u64): u64
116StLoc[5](loc2: u64)
117CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
118MutBorrowFieldGeneric[1](Pool.quote_custodian: Custodian<Ty1>)
119CopyLoc[16](loc13: ID)
120MoveLoc[5](loc2: u64)
121Call custodian::unlock_balance<Ty1>(&mut Custodian<Ty1>, ID, u64)
122Branch(130)
B21:
123CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
124MutBorrowFieldGeneric[0](Pool.base_custodian: Custodian<Ty0>)
125CopyLoc[16](loc13: ID)
126ImmBorrowLoc[11](loc8: Order)
127ImmBorrowField[5](Order.quantity: u64)
128ReadRef
129Call custodian::unlock_balance<Ty0>(&mut Custodian<Ty0>, ID, u64)
B22:
130CopyLoc[13](loc10: ID)
131ImmBorrowLoc[11](loc8: Order)
132Call emit_order_canceled<Ty0, Ty1>(ID, &Order)
133MoveLoc[6](loc3: u64)
134LdU64(1)
135Add
136StLoc[6](loc3: u64)
137Branch(32)
B23:
138MoveLoc[17](loc14: &mut LinkedTable<u64, u64>)
139Pop
140MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
141Pop
142Ret
}
public list_open_orders<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: &AccountCap): vector<Order> {
L2: loc0: &TickLevel
L3: loc1: vector<Order>
L4: loc2: &Order
L5: loc3: &Option<u64>
L6: loc4: u64
L7: loc5: ID
L8: loc6: &LinkedTable<u64, u64>
B0:
0MoveLoc[1](Arg1: &AccountCap)
1Call object::id<AccountCap>(&AccountCap): ID
2StLoc[7](loc5: ID)
3CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
4ImmBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
5MoveLoc[7](loc5: ID)
6Call table::borrow<ID, LinkedTable<u64, u64>>(&Table<ID, LinkedTable<u64, u64>>, ID): &LinkedTable<u64, u64>
7StLoc[8](loc6: &LinkedTable<u64, u64>)
8VecPack(22, 0)
9StLoc[3](loc1: vector<Order>)
10CopyLoc[8](loc6: &LinkedTable<u64, u64>)
11Call linked_table::front<u64, u64>(&LinkedTable<u64, u64>): &Option<u64>
12StLoc[5](loc3: &Option<u64>)
B1:
13CopyLoc[5](loc3: &Option<u64>)
14Call option::is_none<u64>(&Option<u64>): bool
15Not
16BrFalse(76)
B2:
17Branch(18)
B3:
18CopyLoc[8](loc6: &LinkedTable<u64, u64>)
19CopyLoc[5](loc3: &Option<u64>)
20Call option::borrow<u64>(&Option<u64>): &u64
21ReadRef
22Call linked_table::borrow<u64, u64>(&LinkedTable<u64, u64>, u64): &u64
23ReadRef
24StLoc[6](loc4: u64)
25CopyLoc[5](loc3: &Option<u64>)
26Call option::borrow<u64>(&Option<u64>): &u64
27ReadRef
28Call order_is_bid(u64): bool
29BrFalse(36)
B4:
30CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
31ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
32MoveLoc[6](loc4: u64)
33Call critbit::borrow_leaf_by_key<TickLevel>(&CritbitTree<TickLevel>, u64): &TickLevel
34StLoc[2](loc0: &TickLevel)
35Branch(41)
B5:
36CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
37ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
38MoveLoc[6](loc4: u64)
39Call critbit::borrow_leaf_by_key<TickLevel>(&CritbitTree<TickLevel>, u64): &TickLevel
40StLoc[2](loc0: &TickLevel)
B6:
41MoveLoc[2](loc0: &TickLevel)
42ImmBorrowField[11](TickLevel.open_orders: LinkedTable<u64, Order>)
43CopyLoc[5](loc3: &Option<u64>)
44Call option::borrow<u64>(&Option<u64>): &u64
45ReadRef
46Call linked_table::borrow<u64, Order>(&LinkedTable<u64, Order>, u64): &Order
47StLoc[4](loc2: &Order)
48MutBorrowLoc[3](loc1: vector<Order>)
49CopyLoc[4](loc2: &Order)
50ImmBorrowField[2](Order.order_id: u64)
51ReadRef
52CopyLoc[4](loc2: &Order)
53ImmBorrowField[6](Order.price: u64)
54ReadRef
55CopyLoc[4](loc2: &Order)
56ImmBorrowField[5](Order.quantity: u64)
57ReadRef
58CopyLoc[4](loc2: &Order)
59ImmBorrowField[3](Order.is_bid: bool)
60ReadRef
61CopyLoc[4](loc2: &Order)
62ImmBorrowField[4](Order.owner: ID)
63ReadRef
64MoveLoc[4](loc2: &Order)
65ImmBorrowField[12](Order.expire_timestamp: u64)
66ReadRef
67Pack[4](Order)
68VecPushBack(22)
69CopyLoc[8](loc6: &LinkedTable<u64, u64>)
70MoveLoc[5](loc3: &Option<u64>)
71Call option::borrow<u64>(&Option<u64>): &u64
72ReadRef
73Call linked_table::next<u64, u64>(&LinkedTable<u64, u64>, u64): &Option<u64>
74StLoc[5](loc3: &Option<u64>)
75Branch(13)
B7:
76MoveLoc[8](loc6: &LinkedTable<u64, u64>)
77Pop
78MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
79Pop
80MoveLoc[5](loc3: &Option<u64>)
81Pop
82MoveLoc[3](loc1: vector<Order>)
83Ret
}
public account_balance<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: &AccountCap): u64 * u64 * u64 * u64 {
L2: loc0: u64
L3: loc1: u64
L4: loc2: u64
L5: loc3: u64
L6: loc4: ID
B0:
0MoveLoc[1](Arg1: &AccountCap)
1Call object::id<AccountCap>(&AccountCap): ID
2StLoc[6](loc4: ID)
3CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
4ImmBorrowFieldGeneric[0](Pool.base_custodian: Custodian<Ty0>)
5CopyLoc[6](loc4: ID)
6Call custodian::account_balance<Ty0>(&Custodian<Ty0>, ID): u64 * u64
7StLoc[3](loc1: u64)
8StLoc[2](loc0: u64)
9MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
10ImmBorrowFieldGeneric[1](Pool.quote_custodian: Custodian<Ty1>)
11MoveLoc[6](loc4: ID)
12Call custodian::account_balance<Ty1>(&Custodian<Ty1>, ID): u64 * u64
13StLoc[5](loc3: u64)
14StLoc[4](loc2: u64)
15MoveLoc[2](loc0: u64)
16MoveLoc[3](loc1: u64)
17MoveLoc[4](loc2: u64)
18MoveLoc[5](loc3: u64)
19Ret
}
public get_market_price<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): u64 * u64 {
L1: loc0: u64
L2: loc1: u64
B0:
0CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
2Call critbit::max_leaf<TickLevel>(&CritbitTree<TickLevel>): u64 * u64
3Pop
4StLoc[2](loc1: u64)
5MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
6ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
7Call critbit::min_leaf<TickLevel>(&CritbitTree<TickLevel>): u64 * u64
8Pop
9StLoc[1](loc0: u64)
10MoveLoc[2](loc1: u64)
11MoveLoc[1](loc0: u64)
12Ret
}
public get_level2_book_status_bid_side<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64, Arg3: &Clock): vector<u64> * vector<u64> {
L4: loc0: u64
L5: loc1: vector<u64>
L6: loc2: u64
L7: loc3: u64
L8: loc4: u64
L9: loc5: vector<u64>
B0:
0CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
2Call critbit::min_leaf<TickLevel>(&CritbitTree<TickLevel>): u64 * u64
3Pop
4StLoc[8](loc4: u64)
5CopyLoc[1](Arg1: u64)
6CopyLoc[8](loc4: u64)
7Lt
8BrFalse(11)
B1:
9MoveLoc[8](loc4: u64)
10StLoc[1](Arg1: u64)
B2:
11CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
12ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
13Call critbit::max_leaf<TickLevel>(&CritbitTree<TickLevel>): u64 * u64
14Pop
15StLoc[7](loc3: u64)
16CopyLoc[2](Arg2: u64)
17CopyLoc[7](loc3: u64)
18Gt
19BrFalse(22)
B3:
20MoveLoc[7](loc3: u64)
21StLoc[2](Arg2: u64)
B4:
22CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
23ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
24MoveLoc[1](Arg1: u64)
25Call critbit::find_closest_key<TickLevel>(&CritbitTree<TickLevel>, u64): u64
26StLoc[1](Arg1: u64)
27CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
28ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
29MoveLoc[2](Arg2: u64)
30Call critbit::find_closest_key<TickLevel>(&CritbitTree<TickLevel>, u64): u64
31StLoc[2](Arg2: u64)
32LdConst[7](vector<u64>: 00)
33StLoc[9](loc5: vector<u64>)
34LdConst[7](vector<u64>: 00)
35StLoc[5](loc1: vector<u64>)
36CopyLoc[1](Arg1: u64)
37LdU64(0)
38Eq
39BrFalse(47)
B5:
40MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
41Pop
42MoveLoc[3](Arg3: &Clock)
43Pop
44MoveLoc[9](loc5: vector<u64>)
45MoveLoc[5](loc1: vector<u64>)
46Ret
B6:
47CopyLoc[1](Arg1: u64)
48CopyLoc[2](Arg2: u64)
49Le
50BrFalse(82)
B7:
51CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
52ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
53CopyLoc[1](Arg1: u64)
54CopyLoc[3](Arg3: &Clock)
55Call clock::timestamp_ms(&Clock): u64
56Call get_level2_book_status(&CritbitTree<TickLevel>, u64, u64): u64
57StLoc[4](loc0: u64)
58MutBorrowLoc[9](loc5: vector<u64>)
59CopyLoc[1](Arg1: u64)
60VecPushBack(17)
61MutBorrowLoc[5](loc1: vector<u64>)
62MoveLoc[4](loc0: u64)
63VecPushBack(17)
64CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
65ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
66MoveLoc[1](Arg1: u64)
67Call critbit::next_leaf<TickLevel>(&CritbitTree<TickLevel>, u64): u64 * u64
68Pop
69StLoc[6](loc2: u64)
70CopyLoc[6](loc2: u64)
71LdU64(0)
72Eq
73BrFalse(79)
B8:
74MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
75Pop
76MoveLoc[3](Arg3: &Clock)
77Pop
78Branch(82)
B9:
79MoveLoc[6](loc2: u64)
80StLoc[1](Arg1: u64)
81Branch(47)
B10:
82MoveLoc[9](loc5: vector<u64>)
83MoveLoc[5](loc1: vector<u64>)
84Ret
}
public get_level2_book_status_ask_side<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64, Arg3: &Clock): vector<u64> * vector<u64> {
L4: loc0: u64
L5: loc1: vector<u64>
L6: loc2: u64
L7: loc3: u64
L8: loc4: u64
L9: loc5: vector<u64>
B0:
0CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
2Call critbit::min_leaf<TickLevel>(&CritbitTree<TickLevel>): u64 * u64
3Pop
4StLoc[8](loc4: u64)
5CopyLoc[1](Arg1: u64)
6CopyLoc[8](loc4: u64)
7Lt
8BrFalse(11)
B1:
9MoveLoc[8](loc4: u64)
10StLoc[1](Arg1: u64)
B2:
11CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
12ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
13Call critbit::max_leaf<TickLevel>(&CritbitTree<TickLevel>): u64 * u64
14Pop
15StLoc[7](loc3: u64)
16CopyLoc[2](Arg2: u64)
17CopyLoc[7](loc3: u64)
18Gt
19BrFalse(22)
B3:
20MoveLoc[7](loc3: u64)
21StLoc[2](Arg2: u64)
B4:
22CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
23ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
24MoveLoc[1](Arg1: u64)
25Call critbit::find_closest_key<TickLevel>(&CritbitTree<TickLevel>, u64): u64
26StLoc[1](Arg1: u64)
27CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
28ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
29MoveLoc[2](Arg2: u64)
30Call critbit::find_closest_key<TickLevel>(&CritbitTree<TickLevel>, u64): u64
31StLoc[2](Arg2: u64)
32LdConst[7](vector<u64>: 00)
33StLoc[9](loc5: vector<u64>)
34LdConst[7](vector<u64>: 00)
35StLoc[5](loc1: vector<u64>)
36CopyLoc[1](Arg1: u64)
37LdU64(0)
38Eq
39BrFalse(47)
B5:
40MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
41Pop
42MoveLoc[3](Arg3: &Clock)
43Pop
44MoveLoc[9](loc5: vector<u64>)
45MoveLoc[5](loc1: vector<u64>)
46Ret
B6:
47CopyLoc[1](Arg1: u64)
48CopyLoc[2](Arg2: u64)
49Le
50BrFalse(82)
B7:
51CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
52ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
53CopyLoc[1](Arg1: u64)
54CopyLoc[3](Arg3: &Clock)
55Call clock::timestamp_ms(&Clock): u64
56Call get_level2_book_status(&CritbitTree<TickLevel>, u64, u64): u64
57StLoc[4](loc0: u64)
58MutBorrowLoc[9](loc5: vector<u64>)
59CopyLoc[1](Arg1: u64)
60VecPushBack(17)
61MutBorrowLoc[5](loc1: vector<u64>)
62MoveLoc[4](loc0: u64)
63VecPushBack(17)
64CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
65ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
66MoveLoc[1](Arg1: u64)
67Call critbit::next_leaf<TickLevel>(&CritbitTree<TickLevel>, u64): u64 * u64
68Pop
69StLoc[6](loc2: u64)
70CopyLoc[6](loc2: u64)
71LdU64(0)
72Eq
73BrFalse(79)
B8:
74MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
75Pop
76MoveLoc[3](Arg3: &Clock)
77Pop
78Branch(82)
B9:
79MoveLoc[6](loc2: u64)
80StLoc[1](Arg1: u64)
81Branch(47)
B10:
82MoveLoc[9](loc5: vector<u64>)
83MoveLoc[5](loc1: vector<u64>)
84Ret
}
get_level2_book_status(Arg0: &CritbitTree<TickLevel>, Arg1: u64, Arg2: u64): u64 {
L3: loc0: u64
L4: loc1: &Order
L5: loc2: &Option<u64>
L6: loc3: &LinkedTable<u64, Order>
B0:
0MoveLoc[0](Arg0: &CritbitTree<TickLevel>)
1MoveLoc[1](Arg1: u64)
2Call critbit::borrow_leaf_by_key<TickLevel>(&CritbitTree<TickLevel>, u64): &TickLevel
3ImmBorrowField[11](TickLevel.open_orders: LinkedTable<u64, Order>)
4StLoc[6](loc3: &LinkedTable<u64, Order>)
5LdU64(0)
6StLoc[3](loc0: u64)
7CopyLoc[6](loc3: &LinkedTable<u64, Order>)
8Call linked_table::front<u64, Order>(&LinkedTable<u64, Order>): &Option<u64>
9StLoc[5](loc2: &Option<u64>)
B1:
10CopyLoc[5](loc2: &Option<u64>)
11Call option::is_none<u64>(&Option<u64>): bool
12Not
13BrFalse(43)
B2:
14Branch(15)
B3:
15CopyLoc[6](loc3: &LinkedTable<u64, Order>)
16CopyLoc[5](loc2: &Option<u64>)
17Call option::borrow<u64>(&Option<u64>): &u64
18ReadRef
19Call linked_table::borrow<u64, Order>(&LinkedTable<u64, Order>, u64): &Order
20StLoc[4](loc1: &Order)
21CopyLoc[4](loc1: &Order)
22ImmBorrowField[12](Order.expire_timestamp: u64)
23ReadRef
24CopyLoc[2](Arg2: u64)
25Gt
26BrFalse(34)
B4:
27MoveLoc[3](loc0: u64)
28MoveLoc[4](loc1: &Order)
29ImmBorrowField[5](Order.quantity: u64)
30ReadRef
31Add
32StLoc[3](loc0: u64)
33Branch(36)
B5:
34MoveLoc[4](loc1: &Order)
35Pop
B6:
36CopyLoc[6](loc3: &LinkedTable<u64, Order>)
37MoveLoc[5](loc2: &Option<u64>)
38Call option::borrow<u64>(&Option<u64>): &u64
39ReadRef
40Call linked_table::next<u64, Order>(&LinkedTable<u64, Order>, u64): &Option<u64>
41StLoc[5](loc2: &Option<u64>)
42Branch(10)
B7:
43MoveLoc[6](loc3: &LinkedTable<u64, Order>)
44Pop
45MoveLoc[5](loc2: &Option<u64>)
46Pop
47MoveLoc[3](loc0: u64)
48Ret
}
public get_order_status<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: &AccountCap): &Order {
L3: loc0: &CritbitTree<TickLevel>
L4: loc1: u64
L5: loc2: ID
L6: loc3: &LinkedTable<u64, u64>
B0:
0MoveLoc[2](Arg2: &AccountCap)
1Call object::id<AccountCap>(&AccountCap): ID
2StLoc[5](loc2: ID)
3CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
4ImmBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
5CopyLoc[5](loc2: ID)
6Call table::contains<ID, LinkedTable<u64, u64>>(&Table<ID, LinkedTable<u64, u64>>, ID): bool
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
10Pop
11LdConst[5](u64: 12)
12Abort
B3:
13CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
14ImmBorrowFieldGeneric[2](Pool.usr_open_orders: Table<ID, LinkedTable<u64, u64>>)
15MoveLoc[5](loc2: ID)
16Call table::borrow<ID, LinkedTable<u64, u64>>(&Table<ID, LinkedTable<u64, u64>>, ID): &LinkedTable<u64, u64>
17StLoc[6](loc3: &LinkedTable<u64, u64>)
18CopyLoc[6](loc3: &LinkedTable<u64, u64>)
19CopyLoc[1](Arg1: u64)
20Call linked_table::contains<u64, u64>(&LinkedTable<u64, u64>, u64): bool
21BrFalse(23)
B4:
22Branch(29)
B5:
23MoveLoc[6](loc3: &LinkedTable<u64, u64>)
24Pop
25MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
26Pop
27LdConst[1](u64: 3)
28Abort
B6:
29MoveLoc[6](loc3: &LinkedTable<u64, u64>)
30CopyLoc[1](Arg1: u64)
31Call linked_table::borrow<u64, u64>(&LinkedTable<u64, u64>, u64): &u64
32ReadRef
33StLoc[4](loc1: u64)
34CopyLoc[1](Arg1: u64)
35LdConst[6](u64: 9223..)
36Lt
37BrFalse(42)
B7:
38MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
39ImmBorrowFieldGeneric[3](Pool.bids: CritbitTree<TickLevel>)
40StLoc[3](loc0: &CritbitTree<TickLevel>)
41Branch(45)
B8:
42MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
43ImmBorrowFieldGeneric[4](Pool.asks: CritbitTree<TickLevel>)
44StLoc[3](loc0: &CritbitTree<TickLevel>)
B9:
45MoveLoc[3](loc0: &CritbitTree<TickLevel>)
46MoveLoc[4](loc1: u64)
47Call critbit::borrow_leaf_by_key<TickLevel>(&CritbitTree<TickLevel>, u64): &TickLevel
48ImmBorrowField[11](TickLevel.open_orders: LinkedTable<u64, Order>)
49MoveLoc[1](Arg1: u64)
50Call linked_table::borrow<u64, Order>(&LinkedTable<u64, Order>, u64): &Order
51Ret
}
Constants [
0 => u64: 0
1 => u64: 3
2 => u64: 4
3 => u64: 6
4 => u64: 11
5 => u64: 12
6 => u64: 9223372036854775808
7 => vector<u64>: 00
]
}