Sui mainnet
Verified source
0xcaf6…ec3a
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a
The pipeline is behind the chain tip0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a
Everything already published is complete and correct; only newer blocks are missing. The chain summary reports this generation as behind the tip.
Verification
- Code hash
- 0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a
- Status
- full match
- Provider
- disassembly of package 0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a as `sui replay` fetched it at the version that executed
- Compiler
- Language
- move-disassembly
- Bundle
- sha1:a805a8c6982ca50e38b500a8565278d180aaf76c
Sources
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/account.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/balance_manager.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/balances.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/big_vector.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/book.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/constants.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/deep_price.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/governance.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/history.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/math.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/order.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/order_info.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/pool.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/state.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/trade_params.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/utils.mvb0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/vault.mvb
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/account.mvb442 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.account {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::fill;
5use 0000000000000000000000000000000000000000000000000000000000000001::option;
6use 0000000000000000000000000000000000000000000000000000000000000002::object;
7use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
8use 0000000000000000000000000000000000000000000000000000000000000002::vec_set;
9
10struct Account has copy, drop, store {
11 epoch: u64,
12 open_orders: VecSet<u128>,
13 taker_volume: u128,
14 maker_volume: u128,
15 active_stake: u64,
16 inactive_stake: u64,
17 created_proposal: bool,
18 voted_proposal: Option<ID>,
19 unclaimed_rebates: Balances,
20 settled_balances: Balances,
21 owed_balances: Balances
22}
23
24public open_orders(Arg0: &Account): VecSet<u128> {
25B0:
26 0: MoveLoc[0](Arg0: &Account)
27 1: ImmBorrowField[0](Account.open_orders: VecSet<u128>)
28 2: ReadRef
29 3: Ret
30}
31
32public taker_volume(Arg0: &Account): u128 {
33B0:
34 0: MoveLoc[0](Arg0: &Account)
35 1: ImmBorrowField[1](Account.taker_volume: u128)
36 2: ReadRef
37 3: Ret
38}
39
40public maker_volume(Arg0: &Account): u128 {
41B0:
42 0: MoveLoc[0](Arg0: &Account)
43 1: ImmBorrowField[2](Account.maker_volume: u128)
44 2: ReadRef
45 3: Ret
46}
47
48public total_volume(Arg0: &Account): u128 {
49B0:
50 0: CopyLoc[0](Arg0: &Account)
51 1: ImmBorrowField[1](Account.taker_volume: u128)
52 2: ReadRef
53 3: MoveLoc[0](Arg0: &Account)
54 4: ImmBorrowField[2](Account.maker_volume: u128)
55 5: ReadRef
56 6: Add
57 7: Ret
58}
59
60public active_stake(Arg0: &Account): u64 {
61B0:
62 0: MoveLoc[0](Arg0: &Account)
63 1: ImmBorrowField[3](Account.active_stake: u64)
64 2: ReadRef
65 3: Ret
66}
67
68public inactive_stake(Arg0: &Account): u64 {
69B0:
70 0: MoveLoc[0](Arg0: &Account)
71 1: ImmBorrowField[4](Account.inactive_stake: u64)
72 2: ReadRef
73 3: Ret
74}
75
76public created_proposal(Arg0: &Account): bool {
77B0:
78 0: MoveLoc[0](Arg0: &Account)
79 1: ImmBorrowField[5](Account.created_proposal: bool)
80 2: ReadRef
81 3: Ret
82}
83
84public voted_proposal(Arg0: &Account): Option<ID> {
85B0:
86 0: MoveLoc[0](Arg0: &Account)
87 1: ImmBorrowField[6](Account.voted_proposal: Option<ID>)
88 2: ReadRef
89 3: Ret
90}
91
92public settled_balances(Arg0: &Account): Balances {
93B0:
94 0: MoveLoc[0](Arg0: &Account)
95 1: ImmBorrowField[7](Account.settled_balances: Balances)
96 2: ReadRef
97 3: Ret
98}
99
100public(friend) empty(Arg0: &TxContext): Account {
101B0:
102 0: MoveLoc[0](Arg0: &TxContext)
103 1: Call tx_context::epoch(&TxContext): u64
104 2: Call vec_set::empty<u128>(): VecSet<u128>
105 3: LdU128(0)
106 4: LdU128(0)
107 5: LdU64(0)
108 6: LdU64(0)
109 7: LdFalse
110 8: Call option::none<ID>(): Option<ID>
111 9: Call balances::empty(): Balances
112 10: Call balances::empty(): Balances
113 11: Call balances::empty(): Balances
114 12: Pack[0](Account)
115 13: Ret
116}
117
118public(friend) update(Arg0: &mut Account, Arg1: &TxContext): u64 * u128 * u64 {
119L2: loc0: u64
120L3: loc1: u64
121L4: loc2: u128
122B0:
123 0: CopyLoc[0](Arg0: &mut Account)
124 1: ImmBorrowField[8](Account.epoch: u64)
125 2: ReadRef
126 3: CopyLoc[1](Arg1: &TxContext)
127 4: Call tx_context::epoch(&TxContext): u64
128 5: Eq
129 6: BrFalse(15)
130B1:
131 7: MoveLoc[0](Arg0: &mut Account)
132 8: Pop
133 9: MoveLoc[1](Arg1: &TxContext)
134 10: Pop
135 11: LdU64(0)
136 12: LdU128(0)
137 13: LdU64(0)
138 14: Ret
139B2:
140 15: CopyLoc[0](Arg0: &mut Account)
141 16: ImmBorrowField[8](Account.epoch: u64)
142 17: ReadRef
143 18: StLoc[3](loc1: u64)
144 19: CopyLoc[0](Arg0: &mut Account)
145 20: ImmBorrowField[2](Account.maker_volume: u128)
146 21: ReadRef
147 22: StLoc[4](loc2: u128)
148 23: CopyLoc[0](Arg0: &mut Account)
149 24: ImmBorrowField[3](Account.active_stake: u64)
150 25: ReadRef
151 26: StLoc[2](loc0: u64)
152 27: MoveLoc[1](Arg1: &TxContext)
153 28: Call tx_context::epoch(&TxContext): u64
154 29: CopyLoc[0](Arg0: &mut Account)
155 30: MutBorrowField[8](Account.epoch: u64)
156 31: WriteRef
157 32: LdU128(0)
158 33: CopyLoc[0](Arg0: &mut Account)
159 34: MutBorrowField[2](Account.maker_volume: u128)
160 35: WriteRef
161 36: LdU128(0)
162 37: CopyLoc[0](Arg0: &mut Account)
163 38: MutBorrowField[1](Account.taker_volume: u128)
164 39: WriteRef
165 40: CopyLoc[0](Arg0: &mut Account)
166 41: ImmBorrowField[3](Account.active_stake: u64)
167 42: ReadRef
168 43: CopyLoc[0](Arg0: &mut Account)
169 44: ImmBorrowField[4](Account.inactive_stake: u64)
170 45: ReadRef
171 46: Add
172 47: CopyLoc[0](Arg0: &mut Account)
173 48: MutBorrowField[3](Account.active_stake: u64)
174 49: WriteRef
175 50: LdU64(0)
176 51: CopyLoc[0](Arg0: &mut Account)
177 52: MutBorrowField[4](Account.inactive_stake: u64)
178 53: WriteRef
179 54: LdFalse
180 55: CopyLoc[0](Arg0: &mut Account)
181 56: MutBorrowField[5](Account.created_proposal: bool)
182 57: WriteRef
183 58: Call option::none<ID>(): Option<ID>
184 59: MoveLoc[0](Arg0: &mut Account)
185 60: MutBorrowField[6](Account.voted_proposal: Option<ID>)
186 61: WriteRef
187 62: MoveLoc[3](loc1: u64)
188 63: MoveLoc[4](loc2: u128)
189 64: MoveLoc[2](loc0: u64)
190 65: Ret
191}
192
193public(friend) process_maker_fill(Arg0: &mut Account, Arg1: &Fill) {
194L2: loc0: bool
195L3: loc1: u128
196L4: loc2: &mut VecSet<u128>
197L5: loc3: Balances
198B0:
199 0: CopyLoc[1](Arg1: &Fill)
200 1: Call fill::get_settled_maker_quantities(&Fill): Balances
201 2: StLoc[5](loc3: Balances)
202 3: CopyLoc[0](Arg0: &mut Account)
203 4: MutBorrowField[7](Account.settled_balances: Balances)
204 5: MoveLoc[5](loc3: Balances)
205 6: Call balances::add_balances(&mut Balances, Balances)
206 7: CopyLoc[1](Arg1: &Fill)
207 8: Call fill::expired(&Fill): bool
208 9: Not
209 10: BrFalse(21)
210B1:
211 11: CopyLoc[0](Arg0: &mut Account)
212 12: ImmBorrowField[2](Account.maker_volume: u128)
213 13: ReadRef
214 14: CopyLoc[1](Arg1: &Fill)
215 15: Call fill::base_quantity(&Fill): u64
216 16: CastU128
217 17: Add
218 18: CopyLoc[0](Arg0: &mut Account)
219 19: MutBorrowField[2](Account.maker_volume: u128)
220 20: WriteRef
221B2:
222 21: CopyLoc[1](Arg1: &Fill)
223 22: Call fill::expired(&Fill): bool
224 23: BrFalse(27)
225B3:
226 24: LdTrue
227 25: StLoc[2](loc0: bool)
228 26: Branch(30)
229B4:
230 27: CopyLoc[1](Arg1: &Fill)
231 28: Call fill::completed(&Fill): bool
232 29: StLoc[2](loc0: bool)
233B5:
234 30: MoveLoc[2](loc0: bool)
235 31: BrFalse(42)
236B6:
237 32: MoveLoc[0](Arg0: &mut Account)
238 33: MutBorrowField[0](Account.open_orders: VecSet<u128>)
239 34: StLoc[4](loc2: &mut VecSet<u128>)
240 35: MoveLoc[1](Arg1: &Fill)
241 36: Call fill::maker_order_id(&Fill): u128
242 37: StLoc[3](loc1: u128)
243 38: MoveLoc[4](loc2: &mut VecSet<u128>)
244 39: ImmBorrowLoc[3](loc1: u128)
245 40: Call vec_set::remove<u128>(&mut VecSet<u128>, &u128)
246 41: Branch(46)
247B7:
248 42: MoveLoc[0](Arg0: &mut Account)
249 43: Pop
250 44: MoveLoc[1](Arg1: &Fill)
251 45: Pop
252B8:
253 46: Ret
254}
255
256public(friend) add_taker_volume(Arg0: &mut Account, Arg1: u64) {
257B0:
258 0: CopyLoc[0](Arg0: &mut Account)
259 1: ImmBorrowField[1](Account.taker_volume: u128)
260 2: ReadRef
261 3: MoveLoc[1](Arg1: u64)
262 4: CastU128
263 5: Add
264 6: MoveLoc[0](Arg0: &mut Account)
265 7: MutBorrowField[1](Account.taker_volume: u128)
266 8: WriteRef
267 9: Ret
268}
269
270public(friend) set_voted_proposal(Arg0: &mut Account, Arg1: Option<ID>): Option<ID> {
271L2: loc0: Option<ID>
272B0:
273 0: CopyLoc[0](Arg0: &mut Account)
274 1: ImmBorrowField[6](Account.voted_proposal: Option<ID>)
275 2: ReadRef
276 3: StLoc[2](loc0: Option<ID>)
277 4: MoveLoc[1](Arg1: Option<ID>)
278 5: MoveLoc[0](Arg0: &mut Account)
279 6: MutBorrowField[6](Account.voted_proposal: Option<ID>)
280 7: WriteRef
281 8: MoveLoc[2](loc0: Option<ID>)
282 9: Ret
283}
284
285public(friend) set_created_proposal(Arg0: &mut Account, Arg1: bool) {
286B0:
287 0: MoveLoc[1](Arg1: bool)
288 1: MoveLoc[0](Arg0: &mut Account)
289 2: MutBorrowField[5](Account.created_proposal: bool)
290 3: WriteRef
291 4: Ret
292}
293
294public(friend) add_settled_balances(Arg0: &mut Account, Arg1: Balances) {
295B0:
296 0: MoveLoc[0](Arg0: &mut Account)
297 1: MutBorrowField[7](Account.settled_balances: Balances)
298 2: MoveLoc[1](Arg1: Balances)
299 3: Call balances::add_balances(&mut Balances, Balances)
300 4: Ret
301}
302
303public(friend) add_owed_balances(Arg0: &mut Account, Arg1: Balances) {
304B0:
305 0: MoveLoc[0](Arg0: &mut Account)
306 1: MutBorrowField[9](Account.owed_balances: Balances)
307 2: MoveLoc[1](Arg1: Balances)
308 3: Call balances::add_balances(&mut Balances, Balances)
309 4: Ret
310}
311
312public(friend) settle(Arg0: &mut Account): Balances * Balances {
313L1: loc0: Balances
314L2: loc1: Balances
315B0:
316 0: CopyLoc[0](Arg0: &mut Account)
317 1: MutBorrowField[7](Account.settled_balances: Balances)
318 2: Call balances::reset(&mut Balances): Balances
319 3: StLoc[2](loc1: Balances)
320 4: MoveLoc[0](Arg0: &mut Account)
321 5: MutBorrowField[9](Account.owed_balances: Balances)
322 6: Call balances::reset(&mut Balances): Balances
323 7: StLoc[1](loc0: Balances)
324 8: MoveLoc[2](loc1: Balances)
325 9: MoveLoc[1](loc0: Balances)
326 10: Ret
327}
328
329public(friend) add_rebates(Arg0: &mut Account, Arg1: Balances) {
330B0:
331 0: MoveLoc[0](Arg0: &mut Account)
332 1: MutBorrowField[10](Account.unclaimed_rebates: Balances)
333 2: MoveLoc[1](Arg1: Balances)
334 3: Call balances::add_balances(&mut Balances, Balances)
335 4: Ret
336}
337
338public(friend) claim_rebates(Arg0: &mut Account): Balances {
339L1: loc0: Balances
340B0:
341 0: CopyLoc[0](Arg0: &mut Account)
342 1: ImmBorrowField[10](Account.unclaimed_rebates: Balances)
343 2: ReadRef
344 3: StLoc[1](loc0: Balances)
345 4: CopyLoc[0](Arg0: &mut Account)
346 5: MutBorrowField[7](Account.settled_balances: Balances)
347 6: CopyLoc[0](Arg0: &mut Account)
348 7: ImmBorrowField[10](Account.unclaimed_rebates: Balances)
349 8: ReadRef
350 9: Call balances::add_balances(&mut Balances, Balances)
351 10: MoveLoc[0](Arg0: &mut Account)
352 11: MutBorrowField[10](Account.unclaimed_rebates: Balances)
353 12: Call balances::reset(&mut Balances): Balances
354 13: Pop
355 14: MoveLoc[1](loc0: Balances)
356 15: Ret
357}
358
359public(friend) add_order(Arg0: &mut Account, Arg1: u128) {
360B0:
361 0: MoveLoc[0](Arg0: &mut Account)
362 1: MutBorrowField[0](Account.open_orders: VecSet<u128>)
363 2: MoveLoc[1](Arg1: u128)
364 3: Call vec_set::insert<u128>(&mut VecSet<u128>, u128)
365 4: Ret
366}
367
368public(friend) remove_order(Arg0: &mut Account, Arg1: u128) {
369B0:
370 0: MoveLoc[0](Arg0: &mut Account)
371 1: MutBorrowField[0](Account.open_orders: VecSet<u128>)
372 2: ImmBorrowLoc[1](Arg1: u128)
373 3: Call vec_set::remove<u128>(&mut VecSet<u128>, &u128)
374 4: Ret
375}
376
377public(friend) add_stake(Arg0: &mut Account, Arg1: u64): u64 * u64 {
378L2: loc0: u64
379B0:
380 0: CopyLoc[0](Arg0: &mut Account)
381 1: ImmBorrowField[3](Account.active_stake: u64)
382 2: ReadRef
383 3: CopyLoc[0](Arg0: &mut Account)
384 4: ImmBorrowField[4](Account.inactive_stake: u64)
385 5: ReadRef
386 6: Add
387 7: StLoc[2](loc0: u64)
388 8: CopyLoc[0](Arg0: &mut Account)
389 9: ImmBorrowField[4](Account.inactive_stake: u64)
390 10: ReadRef
391 11: CopyLoc[1](Arg1: u64)
392 12: Add
393 13: CopyLoc[0](Arg0: &mut Account)
394 14: MutBorrowField[4](Account.inactive_stake: u64)
395 15: WriteRef
396 16: CopyLoc[0](Arg0: &mut Account)
397 17: MutBorrowField[9](Account.owed_balances: Balances)
398 18: MoveLoc[1](Arg1: u64)
399 19: Call balances::add_deep(&mut Balances, u64)
400 20: MoveLoc[2](loc0: u64)
401 21: CopyLoc[0](Arg0: &mut Account)
402 22: ImmBorrowField[3](Account.active_stake: u64)
403 23: ReadRef
404 24: MoveLoc[0](Arg0: &mut Account)
405 25: ImmBorrowField[4](Account.inactive_stake: u64)
406 26: ReadRef
407 27: Add
408 28: Ret
409}
410
411public(friend) remove_stake(Arg0: &mut Account) {
412L1: loc0: u64
413B0:
414 0: CopyLoc[0](Arg0: &mut Account)
415 1: ImmBorrowField[3](Account.active_stake: u64)
416 2: ReadRef
417 3: CopyLoc[0](Arg0: &mut Account)
418 4: ImmBorrowField[4](Account.inactive_stake: u64)
419 5: ReadRef
420 6: Add
421 7: StLoc[1](loc0: u64)
422 8: LdU64(0)
423 9: CopyLoc[0](Arg0: &mut Account)
424 10: MutBorrowField[3](Account.active_stake: u64)
425 11: WriteRef
426 12: LdU64(0)
427 13: CopyLoc[0](Arg0: &mut Account)
428 14: MutBorrowField[4](Account.inactive_stake: u64)
429 15: WriteRef
430 16: Call option::none<ID>(): Option<ID>
431 17: CopyLoc[0](Arg0: &mut Account)
432 18: MutBorrowField[6](Account.voted_proposal: Option<ID>)
433 19: WriteRef
434 20: MoveLoc[0](Arg0: &mut Account)
435 21: MutBorrowField[7](Account.settled_balances: Balances)
436 22: MoveLoc[1](loc0: u64)
437 23: Call balances::add_deep(&mut Balances, u64)
438 24: Ret
439}
440
441}
442
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/balance_manager.mvb751 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.balance_manager {
3use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
4use 0000000000000000000000000000000000000000000000000000000000000002::bag;
5use 0000000000000000000000000000000000000000000000000000000000000002::balance;
6use 0000000000000000000000000000000000000000000000000000000000000002::coin;
7use 0000000000000000000000000000000000000000000000000000000000000002::event;
8use 0000000000000000000000000000000000000000000000000000000000000002::object;
9use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
10use 0000000000000000000000000000000000000000000000000000000000000002::vec_set;
11
12struct BalanceManager has store, key {
13 id: UID,
14 owner: address,
15 balances: Bag,
16 allow_listed: VecSet<ID>
17}
18
19struct BalanceManagerEvent has copy, drop {
20 balance_manager_id: ID,
21 owner: address
22}
23
24struct BalanceEvent has copy, drop {
25 balance_manager_id: ID,
26 asset: TypeName,
27 amount: u64,
28 deposit: bool
29}
30
31struct BalanceKey<phantom Ty0> has copy, drop, store {
32 dummy_field: bool
33}
34
35struct TradeCap has store, key {
36 id: UID,
37 balance_manager_id: ID
38}
39
40struct DepositCap has store, key {
41 id: UID,
42 balance_manager_id: ID
43}
44
45struct WithdrawCap has store, key {
46 id: UID,
47 balance_manager_id: ID
48}
49
50struct TradeProof has drop {
51 balance_manager_id: ID,
52 trader: address
53}
54
55public new(Arg0: &mut TxContext): BalanceManager {
56L1: loc0: UID
57B0:
58 0: CopyLoc[0](Arg0: &mut TxContext)
59 1: Call object::new(&mut TxContext): UID
60 2: StLoc[1](loc0: UID)
61 3: ImmBorrowLoc[1](loc0: UID)
62 4: Call object::uid_to_inner(&UID): ID
63 5: CopyLoc[0](Arg0: &mut TxContext)
64 6: FreezeRef
65 7: Call tx_context::sender(&TxContext): address
66 8: Pack[1](BalanceManagerEvent)
67 9: Call event::emit<BalanceManagerEvent>(BalanceManagerEvent)
68 10: MoveLoc[1](loc0: UID)
69 11: CopyLoc[0](Arg0: &mut TxContext)
70 12: FreezeRef
71 13: Call tx_context::sender(&TxContext): address
72 14: MoveLoc[0](Arg0: &mut TxContext)
73 15: Call bag::new(&mut TxContext): Bag
74 16: Call vec_set::empty<ID>(): VecSet<ID>
75 17: Pack[0](BalanceManager)
76 18: Ret
77}
78
79public new_with_owner(Arg0: &mut TxContext, Arg1: address): BalanceManager {
80L2: loc0: UID
81B0:
82 0: CopyLoc[0](Arg0: &mut TxContext)
83 1: Call object::new(&mut TxContext): UID
84 2: StLoc[2](loc0: UID)
85 3: ImmBorrowLoc[2](loc0: UID)
86 4: Call object::uid_to_inner(&UID): ID
87 5: CopyLoc[1](Arg1: address)
88 6: Pack[1](BalanceManagerEvent)
89 7: Call event::emit<BalanceManagerEvent>(BalanceManagerEvent)
90 8: MoveLoc[2](loc0: UID)
91 9: MoveLoc[1](Arg1: address)
92 10: MoveLoc[0](Arg0: &mut TxContext)
93 11: Call bag::new(&mut TxContext): Bag
94 12: Call vec_set::empty<ID>(): VecSet<ID>
95 13: Pack[0](BalanceManager)
96 14: Ret
97}
98
99public balance<Ty0>(Arg0: &BalanceManager): u64 {
100L1: loc0: u64
101L2: loc1: BalanceKey<Ty0>
102B0:
103 0: LdFalse
104 1: PackGeneric[0](BalanceKey<Ty0>)
105 2: StLoc[2](loc1: BalanceKey<Ty0>)
106 3: CopyLoc[0](Arg0: &BalanceManager)
107 4: ImmBorrowField[0](BalanceManager.balances: Bag)
108 5: CopyLoc[2](loc1: BalanceKey<Ty0>)
109 6: Call bag::contains<BalanceKey<Ty0>>(&Bag, BalanceKey<Ty0>): bool
110 7: Not
111 8: BrFalse(14)
112B1:
113 9: MoveLoc[0](Arg0: &BalanceManager)
114 10: Pop
115 11: LdU64(0)
116 12: StLoc[1](loc0: u64)
117 13: Branch(20)
118B2:
119 14: MoveLoc[0](Arg0: &BalanceManager)
120 15: ImmBorrowField[0](BalanceManager.balances: Bag)
121 16: MoveLoc[2](loc1: BalanceKey<Ty0>)
122 17: Call bag::borrow<BalanceKey<Ty0>, Balance<Ty0>>(&Bag, BalanceKey<Ty0>): &Balance<Ty0>
123 18: Call balance::value<Ty0>(&Balance<Ty0>): u64
124 19: StLoc[1](loc0: u64)
125B3:
126 20: MoveLoc[1](loc0: u64)
127 21: Ret
128}
129
130public mint_trade_cap(Arg0: &mut BalanceManager, Arg1: &mut TxContext): TradeCap {
131L2: loc0: UID
132B0:
133 0: CopyLoc[0](Arg0: &mut BalanceManager)
134 1: FreezeRef
135 2: CopyLoc[1](Arg1: &mut TxContext)
136 3: FreezeRef
137 4: Call validate_owner(&BalanceManager, &TxContext)
138 5: CopyLoc[0](Arg0: &mut BalanceManager)
139 6: ImmBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
140 7: Call vec_set::size<ID>(&VecSet<ID>): u64
141 8: LdConst[6](u64: 1000)
142 9: Lt
143 10: BrFalse(12)
144B1:
145 11: Branch(18)
146B2:
147 12: MoveLoc[1](Arg1: &mut TxContext)
148 13: Pop
149 14: MoveLoc[0](Arg0: &mut BalanceManager)
150 15: Pop
151 16: LdConst[4](u64: 4)
152 17: Abort
153B3:
154 18: MoveLoc[1](Arg1: &mut TxContext)
155 19: Call object::new(&mut TxContext): UID
156 20: StLoc[2](loc0: UID)
157 21: CopyLoc[0](Arg0: &mut BalanceManager)
158 22: MutBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
159 23: ImmBorrowLoc[2](loc0: UID)
160 24: Call object::uid_to_inner(&UID): ID
161 25: Call vec_set::insert<ID>(&mut VecSet<ID>, ID)
162 26: MoveLoc[2](loc0: UID)
163 27: MoveLoc[0](Arg0: &mut BalanceManager)
164 28: FreezeRef
165 29: Call object::id<BalanceManager>(&BalanceManager): ID
166 30: Pack[4](TradeCap)
167 31: Ret
168}
169
170public mint_deposit_cap(Arg0: &mut BalanceManager, Arg1: &mut TxContext): DepositCap {
171L2: loc0: UID
172B0:
173 0: CopyLoc[0](Arg0: &mut BalanceManager)
174 1: FreezeRef
175 2: CopyLoc[1](Arg1: &mut TxContext)
176 3: FreezeRef
177 4: Call validate_owner(&BalanceManager, &TxContext)
178 5: CopyLoc[0](Arg0: &mut BalanceManager)
179 6: ImmBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
180 7: Call vec_set::size<ID>(&VecSet<ID>): u64
181 8: LdConst[6](u64: 1000)
182 9: Lt
183 10: BrFalse(12)
184B1:
185 11: Branch(18)
186B2:
187 12: MoveLoc[1](Arg1: &mut TxContext)
188 13: Pop
189 14: MoveLoc[0](Arg0: &mut BalanceManager)
190 15: Pop
191 16: LdConst[4](u64: 4)
192 17: Abort
193B3:
194 18: MoveLoc[1](Arg1: &mut TxContext)
195 19: Call object::new(&mut TxContext): UID
196 20: StLoc[2](loc0: UID)
197 21: CopyLoc[0](Arg0: &mut BalanceManager)
198 22: MutBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
199 23: ImmBorrowLoc[2](loc0: UID)
200 24: Call object::uid_to_inner(&UID): ID
201 25: Call vec_set::insert<ID>(&mut VecSet<ID>, ID)
202 26: MoveLoc[2](loc0: UID)
203 27: MoveLoc[0](Arg0: &mut BalanceManager)
204 28: FreezeRef
205 29: Call object::id<BalanceManager>(&BalanceManager): ID
206 30: Pack[5](DepositCap)
207 31: Ret
208}
209
210public mint_withdraw_cap(Arg0: &mut BalanceManager, Arg1: &mut TxContext): WithdrawCap {
211L2: loc0: UID
212B0:
213 0: CopyLoc[0](Arg0: &mut BalanceManager)
214 1: FreezeRef
215 2: CopyLoc[1](Arg1: &mut TxContext)
216 3: FreezeRef
217 4: Call validate_owner(&BalanceManager, &TxContext)
218 5: CopyLoc[0](Arg0: &mut BalanceManager)
219 6: ImmBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
220 7: Call vec_set::size<ID>(&VecSet<ID>): u64
221 8: LdConst[6](u64: 1000)
222 9: Lt
223 10: BrFalse(12)
224B1:
225 11: Branch(18)
226B2:
227 12: MoveLoc[1](Arg1: &mut TxContext)
228 13: Pop
229 14: MoveLoc[0](Arg0: &mut BalanceManager)
230 15: Pop
231 16: LdConst[4](u64: 4)
232 17: Abort
233B3:
234 18: MoveLoc[1](Arg1: &mut TxContext)
235 19: Call object::new(&mut TxContext): UID
236 20: StLoc[2](loc0: UID)
237 21: CopyLoc[0](Arg0: &mut BalanceManager)
238 22: MutBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
239 23: ImmBorrowLoc[2](loc0: UID)
240 24: Call object::uid_to_inner(&UID): ID
241 25: Call vec_set::insert<ID>(&mut VecSet<ID>, ID)
242 26: MoveLoc[2](loc0: UID)
243 27: MoveLoc[0](Arg0: &mut BalanceManager)
244 28: FreezeRef
245 29: Call object::id<BalanceManager>(&BalanceManager): ID
246 30: Pack[6](WithdrawCap)
247 31: Ret
248}
249
250public revoke_trade_cap(Arg0: &mut BalanceManager, Arg1: &ID, Arg2: &TxContext) {
251B0:
252 0: CopyLoc[0](Arg0: &mut BalanceManager)
253 1: FreezeRef
254 2: MoveLoc[2](Arg2: &TxContext)
255 3: Call validate_owner(&BalanceManager, &TxContext)
256 4: CopyLoc[0](Arg0: &mut BalanceManager)
257 5: ImmBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
258 6: CopyLoc[1](Arg1: &ID)
259 7: Call vec_set::contains<ID>(&VecSet<ID>, &ID): bool
260 8: BrFalse(10)
261B1:
262 9: Branch(16)
263B2:
264 10: MoveLoc[1](Arg1: &ID)
265 11: Pop
266 12: MoveLoc[0](Arg0: &mut BalanceManager)
267 13: Pop
268 14: LdConst[5](u64: 5)
269 15: Abort
270B3:
271 16: MoveLoc[0](Arg0: &mut BalanceManager)
272 17: MutBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
273 18: MoveLoc[1](Arg1: &ID)
274 19: Call vec_set::remove<ID>(&mut VecSet<ID>, &ID)
275 20: Ret
276}
277
278public generate_proof_as_owner(Arg0: &mut BalanceManager, Arg1: &TxContext): TradeProof {
279B0:
280 0: CopyLoc[0](Arg0: &mut BalanceManager)
281 1: FreezeRef
282 2: CopyLoc[1](Arg1: &TxContext)
283 3: Call validate_owner(&BalanceManager, &TxContext)
284 4: MoveLoc[0](Arg0: &mut BalanceManager)
285 5: FreezeRef
286 6: Call object::id<BalanceManager>(&BalanceManager): ID
287 7: MoveLoc[1](Arg1: &TxContext)
288 8: Call tx_context::sender(&TxContext): address
289 9: Pack[7](TradeProof)
290 10: Ret
291}
292
293public generate_proof_as_trader(Arg0: &mut BalanceManager, Arg1: &TradeCap, Arg2: &TxContext): TradeProof {
294B0:
295 0: CopyLoc[0](Arg0: &mut BalanceManager)
296 1: FreezeRef
297 2: MoveLoc[1](Arg1: &TradeCap)
298 3: Call validate_trader(&BalanceManager, &TradeCap)
299 4: MoveLoc[0](Arg0: &mut BalanceManager)
300 5: FreezeRef
301 6: Call object::id<BalanceManager>(&BalanceManager): ID
302 7: MoveLoc[2](Arg2: &TxContext)
303 8: Call tx_context::sender(&TxContext): address
304 9: Pack[7](TradeProof)
305 10: Ret
306}
307
308public deposit<Ty0>(Arg0: &mut BalanceManager, Arg1: Coin<Ty0>, Arg2: &mut TxContext) {
309L3: loc0: TradeProof
310B0:
311 0: CopyLoc[0](Arg0: &mut BalanceManager)
312 1: FreezeRef
313 2: Call type_name::get<Ty0>(): TypeName
314 3: ImmBorrowLoc[1](Arg1: Coin<Ty0>)
315 4: Call coin::value<Ty0>(&Coin<Ty0>): u64
316 5: LdTrue
317 6: Call emit_balance_event(&BalanceManager, TypeName, u64, bool)
318 7: CopyLoc[0](Arg0: &mut BalanceManager)
319 8: MoveLoc[2](Arg2: &mut TxContext)
320 9: FreezeRef
321 10: Call generate_proof_as_owner(&mut BalanceManager, &TxContext): TradeProof
322 11: StLoc[3](loc0: TradeProof)
323 12: MoveLoc[0](Arg0: &mut BalanceManager)
324 13: ImmBorrowLoc[3](loc0: TradeProof)
325 14: MoveLoc[1](Arg1: Coin<Ty0>)
326 15: Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
327 16: Call deposit_with_proof<Ty0>(&mut BalanceManager, &TradeProof, Balance<Ty0>)
328 17: Ret
329}
330
331public deposit_with_cap<Ty0>(Arg0: &mut BalanceManager, Arg1: &DepositCap, Arg2: Coin<Ty0>, Arg3: &TxContext) {
332L4: loc0: TradeProof
333B0:
334 0: CopyLoc[0](Arg0: &mut BalanceManager)
335 1: FreezeRef
336 2: Call type_name::get<Ty0>(): TypeName
337 3: ImmBorrowLoc[2](Arg2: Coin<Ty0>)
338 4: Call coin::value<Ty0>(&Coin<Ty0>): u64
339 5: LdTrue
340 6: Call emit_balance_event(&BalanceManager, TypeName, u64, bool)
341 7: CopyLoc[0](Arg0: &mut BalanceManager)
342 8: FreezeRef
343 9: MoveLoc[1](Arg1: &DepositCap)
344 10: MoveLoc[3](Arg3: &TxContext)
345 11: Call generate_proof_as_depositor(&BalanceManager, &DepositCap, &TxContext): TradeProof
346 12: StLoc[4](loc0: TradeProof)
347 13: MoveLoc[0](Arg0: &mut BalanceManager)
348 14: ImmBorrowLoc[4](loc0: TradeProof)
349 15: MoveLoc[2](Arg2: Coin<Ty0>)
350 16: Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
351 17: Call deposit_with_proof<Ty0>(&mut BalanceManager, &TradeProof, Balance<Ty0>)
352 18: Ret
353}
354
355public withdraw_with_cap<Ty0>(Arg0: &mut BalanceManager, Arg1: &WithdrawCap, Arg2: u64, Arg3: &mut TxContext): Coin<Ty0> {
356L4: loc0: Coin<Ty0>
357L5: loc1: TradeProof
358B0:
359 0: CopyLoc[0](Arg0: &mut BalanceManager)
360 1: FreezeRef
361 2: MoveLoc[1](Arg1: &WithdrawCap)
362 3: CopyLoc[3](Arg3: &mut TxContext)
363 4: FreezeRef
364 5: Call generate_proof_as_withdrawer(&BalanceManager, &WithdrawCap, &TxContext): TradeProof
365 6: StLoc[5](loc1: TradeProof)
366 7: CopyLoc[0](Arg0: &mut BalanceManager)
367 8: ImmBorrowLoc[5](loc1: TradeProof)
368 9: MoveLoc[2](Arg2: u64)
369 10: LdFalse
370 11: Call withdraw_with_proof<Ty0>(&mut BalanceManager, &TradeProof, u64, bool): Balance<Ty0>
371 12: MoveLoc[3](Arg3: &mut TxContext)
372 13: Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
373 14: StLoc[4](loc0: Coin<Ty0>)
374 15: MoveLoc[0](Arg0: &mut BalanceManager)
375 16: FreezeRef
376 17: Call type_name::get<Ty0>(): TypeName
377 18: ImmBorrowLoc[4](loc0: Coin<Ty0>)
378 19: Call coin::value<Ty0>(&Coin<Ty0>): u64
379 20: LdFalse
380 21: Call emit_balance_event(&BalanceManager, TypeName, u64, bool)
381 22: MoveLoc[4](loc0: Coin<Ty0>)
382 23: Ret
383}
384
385public withdraw<Ty0>(Arg0: &mut BalanceManager, Arg1: u64, Arg2: &mut TxContext): Coin<Ty0> {
386L3: loc0: Coin<Ty0>
387L4: loc1: TradeProof
388B0:
389 0: CopyLoc[0](Arg0: &mut BalanceManager)
390 1: CopyLoc[2](Arg2: &mut TxContext)
391 2: FreezeRef
392 3: Call generate_proof_as_owner(&mut BalanceManager, &TxContext): TradeProof
393 4: StLoc[4](loc1: TradeProof)
394 5: CopyLoc[0](Arg0: &mut BalanceManager)
395 6: ImmBorrowLoc[4](loc1: TradeProof)
396 7: MoveLoc[1](Arg1: u64)
397 8: LdFalse
398 9: Call withdraw_with_proof<Ty0>(&mut BalanceManager, &TradeProof, u64, bool): Balance<Ty0>
399 10: MoveLoc[2](Arg2: &mut TxContext)
400 11: Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
401 12: StLoc[3](loc0: Coin<Ty0>)
402 13: MoveLoc[0](Arg0: &mut BalanceManager)
403 14: FreezeRef
404 15: Call type_name::get<Ty0>(): TypeName
405 16: ImmBorrowLoc[3](loc0: Coin<Ty0>)
406 17: Call coin::value<Ty0>(&Coin<Ty0>): u64
407 18: LdFalse
408 19: Call emit_balance_event(&BalanceManager, TypeName, u64, bool)
409 20: MoveLoc[3](loc0: Coin<Ty0>)
410 21: Ret
411}
412
413public withdraw_all<Ty0>(Arg0: &mut BalanceManager, Arg1: &mut TxContext): Coin<Ty0> {
414L2: loc0: Coin<Ty0>
415L3: loc1: TradeProof
416B0:
417 0: CopyLoc[0](Arg0: &mut BalanceManager)
418 1: CopyLoc[1](Arg1: &mut TxContext)
419 2: FreezeRef
420 3: Call generate_proof_as_owner(&mut BalanceManager, &TxContext): TradeProof
421 4: StLoc[3](loc1: TradeProof)
422 5: CopyLoc[0](Arg0: &mut BalanceManager)
423 6: ImmBorrowLoc[3](loc1: TradeProof)
424 7: LdU64(0)
425 8: LdTrue
426 9: Call withdraw_with_proof<Ty0>(&mut BalanceManager, &TradeProof, u64, bool): Balance<Ty0>
427 10: MoveLoc[1](Arg1: &mut TxContext)
428 11: Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
429 12: StLoc[2](loc0: Coin<Ty0>)
430 13: MoveLoc[0](Arg0: &mut BalanceManager)
431 14: FreezeRef
432 15: Call type_name::get<Ty0>(): TypeName
433 16: ImmBorrowLoc[2](loc0: Coin<Ty0>)
434 17: Call coin::value<Ty0>(&Coin<Ty0>): u64
435 18: LdFalse
436 19: Call emit_balance_event(&BalanceManager, TypeName, u64, bool)
437 20: MoveLoc[2](loc0: Coin<Ty0>)
438 21: Ret
439}
440
441public validate_proof(Arg0: &BalanceManager, Arg1: &TradeProof) {
442B0:
443 0: MoveLoc[0](Arg0: &BalanceManager)
444 1: Call object::id<BalanceManager>(&BalanceManager): ID
445 2: MoveLoc[1](Arg1: &TradeProof)
446 3: ImmBorrowField[2](TradeProof.balance_manager_id: ID)
447 4: ReadRef
448 5: Eq
449 6: BrFalse(8)
450B1:
451 7: Branch(10)
452B2:
453 8: LdConst[2](u64: 2)
454 9: Abort
455B3:
456 10: Ret
457}
458
459public owner(Arg0: &BalanceManager): address {
460B0:
461 0: MoveLoc[0](Arg0: &BalanceManager)
462 1: ImmBorrowField[3](BalanceManager.owner: address)
463 2: ReadRef
464 3: Ret
465}
466
467public id(Arg0: &BalanceManager): ID {
468B0:
469 0: MoveLoc[0](Arg0: &BalanceManager)
470 1: ImmBorrowField[4](BalanceManager.id: UID)
471 2: Call object::uid_to_inner(&UID): ID
472 3: Ret
473}
474
475public(friend) deposit_with_proof<Ty0>(Arg0: &mut BalanceManager, Arg1: &TradeProof, Arg2: Balance<Ty0>) {
476L3: loc0: BalanceKey<Ty0>
477B0:
478 0: CopyLoc[0](Arg0: &mut BalanceManager)
479 1: FreezeRef
480 2: MoveLoc[1](Arg1: &TradeProof)
481 3: Call validate_proof(&BalanceManager, &TradeProof)
482 4: LdFalse
483 5: PackGeneric[0](BalanceKey<Ty0>)
484 6: StLoc[3](loc0: BalanceKey<Ty0>)
485 7: CopyLoc[0](Arg0: &mut BalanceManager)
486 8: ImmBorrowField[0](BalanceManager.balances: Bag)
487 9: CopyLoc[3](loc0: BalanceKey<Ty0>)
488 10: Call bag::contains<BalanceKey<Ty0>>(&Bag, BalanceKey<Ty0>): bool
489 11: BrFalse(20)
490B1:
491 12: MoveLoc[0](Arg0: &mut BalanceManager)
492 13: MutBorrowField[0](BalanceManager.balances: Bag)
493 14: MoveLoc[3](loc0: BalanceKey<Ty0>)
494 15: Call bag::borrow_mut<BalanceKey<Ty0>, Balance<Ty0>>(&mut Bag, BalanceKey<Ty0>): &mut Balance<Ty0>
495 16: MoveLoc[2](Arg2: Balance<Ty0>)
496 17: Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
497 18: Pop
498 19: Branch(25)
499B2:
500 20: MoveLoc[0](Arg0: &mut BalanceManager)
501 21: MutBorrowField[0](BalanceManager.balances: Bag)
502 22: MoveLoc[3](loc0: BalanceKey<Ty0>)
503 23: MoveLoc[2](Arg2: Balance<Ty0>)
504 24: Call bag::add<BalanceKey<Ty0>, Balance<Ty0>>(&mut Bag, BalanceKey<Ty0>, Balance<Ty0>)
505B3:
506 25: Ret
507}
508
509public(friend) generate_proof_as_depositor(Arg0: &BalanceManager, Arg1: &DepositCap, Arg2: &TxContext): TradeProof {
510B0:
511 0: CopyLoc[0](Arg0: &BalanceManager)
512 1: MoveLoc[1](Arg1: &DepositCap)
513 2: Call validate_deposit_cap(&BalanceManager, &DepositCap)
514 3: MoveLoc[0](Arg0: &BalanceManager)
515 4: Call object::id<BalanceManager>(&BalanceManager): ID
516 5: MoveLoc[2](Arg2: &TxContext)
517 6: Call tx_context::sender(&TxContext): address
518 7: Pack[7](TradeProof)
519 8: Ret
520}
521
522public(friend) generate_proof_as_withdrawer(Arg0: &BalanceManager, Arg1: &WithdrawCap, Arg2: &TxContext): TradeProof {
523B0:
524 0: CopyLoc[0](Arg0: &BalanceManager)
525 1: MoveLoc[1](Arg1: &WithdrawCap)
526 2: Call validate_withdraw_cap(&BalanceManager, &WithdrawCap)
527 3: MoveLoc[0](Arg0: &BalanceManager)
528 4: Call object::id<BalanceManager>(&BalanceManager): ID
529 5: MoveLoc[2](Arg2: &TxContext)
530 6: Call tx_context::sender(&TxContext): address
531 7: Pack[7](TradeProof)
532 8: Ret
533}
534
535public(friend) withdraw_with_proof<Ty0>(Arg0: &mut BalanceManager, Arg1: &TradeProof, Arg2: u64, Arg3: bool): Balance<Ty0> {
536L4: loc0: Balance<Ty0>
537L5: loc1: Balance<Ty0>
538L6: loc2: Balance<Ty0>
539L7: loc3: &mut Balance<Ty0>
540L8: loc4: u64
541L9: loc5: BalanceKey<Ty0>
542L10: loc6: bool
543B0:
544 0: CopyLoc[0](Arg0: &mut BalanceManager)
545 1: FreezeRef
546 2: MoveLoc[1](Arg1: &TradeProof)
547 3: Call validate_proof(&BalanceManager, &TradeProof)
548 4: LdFalse
549 5: PackGeneric[0](BalanceKey<Ty0>)
550 6: StLoc[9](loc5: BalanceKey<Ty0>)
551 7: CopyLoc[0](Arg0: &mut BalanceManager)
552 8: ImmBorrowField[0](BalanceManager.balances: Bag)
553 9: CopyLoc[9](loc5: BalanceKey<Ty0>)
554 10: Call bag::contains<BalanceKey<Ty0>>(&Bag, BalanceKey<Ty0>): bool
555 11: StLoc[10](loc6: bool)
556 12: MoveLoc[3](Arg3: bool)
557 13: BrFalse(29)
558B1:
559 14: MoveLoc[10](loc6: bool)
560 15: BrFalse(22)
561B2:
562 16: MoveLoc[0](Arg0: &mut BalanceManager)
563 17: MutBorrowField[0](BalanceManager.balances: Bag)
564 18: MoveLoc[9](loc5: BalanceKey<Ty0>)
565 19: Call bag::remove<BalanceKey<Ty0>, Balance<Ty0>>(&mut Bag, BalanceKey<Ty0>): Balance<Ty0>
566 20: StLoc[4](loc0: Balance<Ty0>)
567 21: Branch(26)
568B3:
569 22: MoveLoc[0](Arg0: &mut BalanceManager)
570 23: Pop
571 24: Call balance::zero<Ty0>(): Balance<Ty0>
572 25: StLoc[4](loc0: Balance<Ty0>)
573B4:
574 26: MoveLoc[4](loc0: Balance<Ty0>)
575 27: StLoc[6](loc2: Balance<Ty0>)
576 28: Branch(76)
577B5:
578 29: MoveLoc[10](loc6: bool)
579 30: BrFalse(32)
580B6:
581 31: Branch(36)
582B7:
583 32: MoveLoc[0](Arg0: &mut BalanceManager)
584 33: Pop
585 34: LdConst[3](u64: 3)
586 35: Abort
587B8:
588 36: CopyLoc[0](Arg0: &mut BalanceManager)
589 37: MutBorrowField[0](BalanceManager.balances: Bag)
590 38: CopyLoc[9](loc5: BalanceKey<Ty0>)
591 39: Call bag::borrow_mut<BalanceKey<Ty0>, Balance<Ty0>>(&mut Bag, BalanceKey<Ty0>): &mut Balance<Ty0>
592 40: StLoc[7](loc3: &mut Balance<Ty0>)
593 41: CopyLoc[7](loc3: &mut Balance<Ty0>)
594 42: FreezeRef
595 43: Call balance::value<Ty0>(&Balance<Ty0>): u64
596 44: StLoc[8](loc4: u64)
597 45: CopyLoc[8](loc4: u64)
598 46: CopyLoc[2](Arg2: u64)
599 47: Ge
600 48: BrFalse(50)
601B9:
602 49: Branch(56)
603B10:
604 50: MoveLoc[0](Arg0: &mut BalanceManager)
605 51: Pop
606 52: MoveLoc[7](loc3: &mut Balance<Ty0>)
607 53: Pop
608 54: LdConst[3](u64: 3)
609 55: Abort
610B11:
611 56: CopyLoc[2](Arg2: u64)
612 57: MoveLoc[8](loc4: u64)
613 58: Eq
614 59: BrFalse(68)
615B12:
616 60: MoveLoc[7](loc3: &mut Balance<Ty0>)
617 61: Pop
618 62: MoveLoc[0](Arg0: &mut BalanceManager)
619 63: MutBorrowField[0](BalanceManager.balances: Bag)
620 64: MoveLoc[9](loc5: BalanceKey<Ty0>)
621 65: Call bag::remove<BalanceKey<Ty0>, Balance<Ty0>>(&mut Bag, BalanceKey<Ty0>): Balance<Ty0>
622 66: StLoc[5](loc1: Balance<Ty0>)
623 67: Branch(74)
624B13:
625 68: MoveLoc[0](Arg0: &mut BalanceManager)
626 69: Pop
627 70: MoveLoc[7](loc3: &mut Balance<Ty0>)
628 71: MoveLoc[2](Arg2: u64)
629 72: Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
630 73: StLoc[5](loc1: Balance<Ty0>)
631B14:
632 74: MoveLoc[5](loc1: Balance<Ty0>)
633 75: StLoc[6](loc2: Balance<Ty0>)
634B15:
635 76: MoveLoc[6](loc2: Balance<Ty0>)
636 77: Ret
637}
638
639public(friend) delete(Arg0: BalanceManager) {
640L1: loc0: Bag
641B0:
642 0: MoveLoc[0](Arg0: BalanceManager)
643 1: Unpack[0](BalanceManager)
644 2: Pop
645 3: StLoc[1](loc0: Bag)
646 4: Pop
647 5: Call object::delete(UID)
648 6: MoveLoc[1](loc0: Bag)
649 7: Call bag::destroy_empty(Bag)
650 8: Ret
651}
652
653public(friend) trader(Arg0: &TradeProof): address {
654B0:
655 0: MoveLoc[0](Arg0: &TradeProof)
656 1: ImmBorrowField[5](TradeProof.trader: address)
657 2: ReadRef
658 3: Ret
659}
660
661public(friend) emit_balance_event(Arg0: &BalanceManager, Arg1: TypeName, Arg2: u64, Arg3: bool) {
662B0:
663 0: MoveLoc[0](Arg0: &BalanceManager)
664 1: Call id(&BalanceManager): ID
665 2: MoveLoc[1](Arg1: TypeName)
666 3: MoveLoc[2](Arg2: u64)
667 4: MoveLoc[3](Arg3: bool)
668 5: Pack[2](BalanceEvent)
669 6: Call event::emit<BalanceEvent>(BalanceEvent)
670 7: Ret
671}
672
673validate_owner(Arg0: &BalanceManager, Arg1: &TxContext) {
674B0:
675 0: MoveLoc[1](Arg1: &TxContext)
676 1: Call tx_context::sender(&TxContext): address
677 2: MoveLoc[0](Arg0: &BalanceManager)
678 3: Call owner(&BalanceManager): address
679 4: Eq
680 5: BrFalse(7)
681B1:
682 6: Branch(9)
683B2:
684 7: LdConst[0](u64: 0)
685 8: Abort
686B3:
687 9: Ret
688}
689
690validate_trader(Arg0: &BalanceManager, Arg1: &TradeCap) {
691B0:
692 0: MoveLoc[0](Arg0: &BalanceManager)
693 1: ImmBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
694 2: MoveLoc[1](Arg1: &TradeCap)
695 3: Call object::borrow_id<TradeCap>(&TradeCap): &ID
696 4: Call vec_set::contains<ID>(&VecSet<ID>, &ID): bool
697 5: BrFalse(7)
698B1:
699 6: Branch(9)
700B2:
701 7: LdConst[1](u64: 1)
702 8: Abort
703B3:
704 9: Ret
705}
706
707validate_deposit_cap(Arg0: &BalanceManager, Arg1: &DepositCap) {
708B0:
709 0: MoveLoc[0](Arg0: &BalanceManager)
710 1: ImmBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
711 2: MoveLoc[1](Arg1: &DepositCap)
712 3: Call object::borrow_id<DepositCap>(&DepositCap): &ID
713 4: Call vec_set::contains<ID>(&VecSet<ID>, &ID): bool
714 5: BrFalse(7)
715B1:
716 6: Branch(9)
717B2:
718 7: LdConst[1](u64: 1)
719 8: Abort
720B3:
721 9: Ret
722}
723
724validate_withdraw_cap(Arg0: &BalanceManager, Arg1: &WithdrawCap) {
725B0:
726 0: MoveLoc[0](Arg0: &BalanceManager)
727 1: ImmBorrowField[1](BalanceManager.allow_listed: VecSet<ID>)
728 2: MoveLoc[1](Arg1: &WithdrawCap)
729 3: Call object::borrow_id<WithdrawCap>(&WithdrawCap): &ID
730 4: Call vec_set::contains<ID>(&VecSet<ID>, &ID): bool
731 5: BrFalse(7)
732B1:
733 6: Branch(9)
734B2:
735 7: LdConst[1](u64: 1)
736 8: Abort
737B3:
738 9: Ret
739}
740
741Constants [
742 0 => u64: 0
743 1 => u64: 1
744 2 => u64: 2
745 3 => u64: 3
746 4 => u64: 4
747 5 => u64: 5
748 6 => u64: 1000
749]
750}
751
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/balances.mvb221 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.balances {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
4
5struct Balances has copy, drop, store {
6 base: u64,
7 quote: u64,
8 deep: u64
9}
10
11public(friend) empty(): Balances {
12B0:
13 0: LdU64(0)
14 1: LdU64(0)
15 2: LdU64(0)
16 3: Pack[0](Balances)
17 4: Ret
18}
19
20public(friend) new(Arg0: u64, Arg1: u64, Arg2: u64): Balances {
21B0:
22 0: MoveLoc[0](Arg0: u64)
23 1: MoveLoc[1](Arg1: u64)
24 2: MoveLoc[2](Arg2: u64)
25 3: Pack[0](Balances)
26 4: Ret
27}
28
29public(friend) reset(Arg0: &mut Balances): Balances {
30L1: loc0: Balances
31B0:
32 0: CopyLoc[0](Arg0: &mut Balances)
33 1: ReadRef
34 2: StLoc[1](loc0: Balances)
35 3: LdU64(0)
36 4: CopyLoc[0](Arg0: &mut Balances)
37 5: MutBorrowField[0](Balances.base: u64)
38 6: WriteRef
39 7: LdU64(0)
40 8: CopyLoc[0](Arg0: &mut Balances)
41 9: MutBorrowField[1](Balances.quote: u64)
42 10: WriteRef
43 11: LdU64(0)
44 12: MoveLoc[0](Arg0: &mut Balances)
45 13: MutBorrowField[2](Balances.deep: u64)
46 14: WriteRef
47 15: MoveLoc[1](loc0: Balances)
48 16: Ret
49}
50
51public(friend) add_balances(Arg0: &mut Balances, Arg1: Balances) {
52B0:
53 0: CopyLoc[0](Arg0: &mut Balances)
54 1: ImmBorrowField[0](Balances.base: u64)
55 2: ReadRef
56 3: ImmBorrowLoc[1](Arg1: Balances)
57 4: ImmBorrowField[0](Balances.base: u64)
58 5: ReadRef
59 6: Add
60 7: CopyLoc[0](Arg0: &mut Balances)
61 8: MutBorrowField[0](Balances.base: u64)
62 9: WriteRef
63 10: CopyLoc[0](Arg0: &mut Balances)
64 11: ImmBorrowField[1](Balances.quote: u64)
65 12: ReadRef
66 13: ImmBorrowLoc[1](Arg1: Balances)
67 14: ImmBorrowField[1](Balances.quote: u64)
68 15: ReadRef
69 16: Add
70 17: CopyLoc[0](Arg0: &mut Balances)
71 18: MutBorrowField[1](Balances.quote: u64)
72 19: WriteRef
73 20: CopyLoc[0](Arg0: &mut Balances)
74 21: ImmBorrowField[2](Balances.deep: u64)
75 22: ReadRef
76 23: ImmBorrowLoc[1](Arg1: Balances)
77 24: ImmBorrowField[2](Balances.deep: u64)
78 25: ReadRef
79 26: Add
80 27: MoveLoc[0](Arg0: &mut Balances)
81 28: MutBorrowField[2](Balances.deep: u64)
82 29: WriteRef
83 30: Ret
84}
85
86public(friend) add_base(Arg0: &mut Balances, Arg1: u64) {
87B0:
88 0: CopyLoc[0](Arg0: &mut Balances)
89 1: ImmBorrowField[0](Balances.base: u64)
90 2: ReadRef
91 3: MoveLoc[1](Arg1: u64)
92 4: Add
93 5: MoveLoc[0](Arg0: &mut Balances)
94 6: MutBorrowField[0](Balances.base: u64)
95 7: WriteRef
96 8: Ret
97}
98
99public(friend) add_quote(Arg0: &mut Balances, Arg1: u64) {
100B0:
101 0: CopyLoc[0](Arg0: &mut Balances)
102 1: ImmBorrowField[1](Balances.quote: u64)
103 2: ReadRef
104 3: MoveLoc[1](Arg1: u64)
105 4: Add
106 5: MoveLoc[0](Arg0: &mut Balances)
107 6: MutBorrowField[1](Balances.quote: u64)
108 7: WriteRef
109 8: Ret
110}
111
112public(friend) add_deep(Arg0: &mut Balances, Arg1: u64) {
113B0:
114 0: CopyLoc[0](Arg0: &mut Balances)
115 1: ImmBorrowField[2](Balances.deep: u64)
116 2: ReadRef
117 3: MoveLoc[1](Arg1: u64)
118 4: Add
119 5: MoveLoc[0](Arg0: &mut Balances)
120 6: MutBorrowField[2](Balances.deep: u64)
121 7: WriteRef
122 8: Ret
123}
124
125public(friend) base(Arg0: &Balances): u64 {
126B0:
127 0: MoveLoc[0](Arg0: &Balances)
128 1: ImmBorrowField[0](Balances.base: u64)
129 2: ReadRef
130 3: Ret
131}
132
133public(friend) quote(Arg0: &Balances): u64 {
134B0:
135 0: MoveLoc[0](Arg0: &Balances)
136 1: ImmBorrowField[1](Balances.quote: u64)
137 2: ReadRef
138 3: Ret
139}
140
141public(friend) deep(Arg0: &Balances): u64 {
142B0:
143 0: MoveLoc[0](Arg0: &Balances)
144 1: ImmBorrowField[2](Balances.deep: u64)
145 2: ReadRef
146 3: Ret
147}
148
149public(friend) mul(Arg0: &mut Balances, Arg1: u64) {
150B0:
151 0: CopyLoc[0](Arg0: &mut Balances)
152 1: ImmBorrowField[0](Balances.base: u64)
153 2: ReadRef
154 3: CopyLoc[1](Arg1: u64)
155 4: Call math::mul(u64, u64): u64
156 5: CopyLoc[0](Arg0: &mut Balances)
157 6: MutBorrowField[0](Balances.base: u64)
158 7: WriteRef
159 8: CopyLoc[0](Arg0: &mut Balances)
160 9: ImmBorrowField[1](Balances.quote: u64)
161 10: ReadRef
162 11: CopyLoc[1](Arg1: u64)
163 12: Call math::mul(u64, u64): u64
164 13: CopyLoc[0](Arg0: &mut Balances)
165 14: MutBorrowField[1](Balances.quote: u64)
166 15: WriteRef
167 16: CopyLoc[0](Arg0: &mut Balances)
168 17: ImmBorrowField[2](Balances.deep: u64)
169 18: ReadRef
170 19: MoveLoc[1](Arg1: u64)
171 20: Call math::mul(u64, u64): u64
172 21: MoveLoc[0](Arg0: &mut Balances)
173 22: MutBorrowField[2](Balances.deep: u64)
174 23: WriteRef
175 24: Ret
176}
177
178public(friend) non_zero_value(Arg0: &Balances): u64 {
179L1: loc0: u64
180L2: loc1: u64
181B0:
182 0: CopyLoc[0](Arg0: &Balances)
183 1: ImmBorrowField[0](Balances.base: u64)
184 2: ReadRef
185 3: LdU64(0)
186 4: Gt
187 5: BrFalse(11)
188B1:
189 6: MoveLoc[0](Arg0: &Balances)
190 7: ImmBorrowField[0](Balances.base: u64)
191 8: ReadRef
192 9: StLoc[2](loc1: u64)
193 10: Branch(28)
194B2:
195 11: CopyLoc[0](Arg0: &Balances)
196 12: ImmBorrowField[1](Balances.quote: u64)
197 13: ReadRef
198 14: LdU64(0)
199 15: Gt
200 16: BrFalse(22)
201B3:
202 17: MoveLoc[0](Arg0: &Balances)
203 18: ImmBorrowField[1](Balances.quote: u64)
204 19: ReadRef
205 20: StLoc[1](loc0: u64)
206 21: Branch(26)
207B4:
208 22: MoveLoc[0](Arg0: &Balances)
209 23: ImmBorrowField[2](Balances.deep: u64)
210 24: ReadRef
211 25: StLoc[1](loc0: u64)
212B5:
213 26: MoveLoc[1](loc0: u64)
214 27: StLoc[2](loc1: u64)
215B6:
216 28: MoveLoc[2](loc1: u64)
217 29: Ret
218}
219
220}
221
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/big_vector.mvb2611 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.big_vector {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::utils;
4use 0000000000000000000000000000000000000000000000000000000000000001::vector;
5use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
6use 0000000000000000000000000000000000000000000000000000000000000002::object;
7use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
8
9struct BigVector<phantom Ty0: store> has store, key {
10 id: UID,
11 depth: u8,
12 length: u64,
13 max_slice_size: u64,
14 max_fan_out: u64,
15 root_id: u64,
16 last_id: u64
17}
18
19struct Slice<Ty0: store> has drop, store {
20 prev: u64,
21 next: u64,
22 keys: vector<u128>,
23 vals: vector<Ty0>
24}
25
26struct SliceRef has copy, drop, store {
27 ix: u64
28}
29
30public(friend) empty<Ty0: store>(Arg0: u64, Arg1: u64, Arg2: &mut TxContext): BigVector<Ty0> {
31B0:
32 0: LdConst[2](u64: 2)
33 1: CopyLoc[0](Arg0: u64)
34 2: Le
35 3: BrFalse(5)
36B1:
37 4: Branch(9)
38B2:
39 5: MoveLoc[2](Arg2: &mut TxContext)
40 6: Pop
41 7: LdConst[0](u64: 0)
42 8: Abort
43B3:
44 9: CopyLoc[0](Arg0: u64)
45 10: LdConst[11](u64: 262144)
46 11: Le
47 12: BrFalse(14)
48B4:
49 13: Branch(18)
50B5:
51 14: MoveLoc[2](Arg2: &mut TxContext)
52 15: Pop
53 16: LdConst[1](u64: 1)
54 17: Abort
55B6:
56 18: LdConst[4](u64: 4)
57 19: CopyLoc[1](Arg1: u64)
58 20: Le
59 21: BrFalse(23)
60B7:
61 22: Branch(27)
62B8:
63 23: MoveLoc[2](Arg2: &mut TxContext)
64 24: Pop
65 25: LdConst[2](u64: 2)
66 26: Abort
67B9:
68 27: CopyLoc[1](Arg1: u64)
69 28: LdConst[10](u64: 4096)
70 29: Le
71 30: BrFalse(32)
72B10:
73 31: Branch(36)
74B11:
75 32: MoveLoc[2](Arg2: &mut TxContext)
76 33: Pop
77 34: LdConst[3](u64: 3)
78 35: Abort
79B12:
80 36: MoveLoc[2](Arg2: &mut TxContext)
81 37: Call object::new(&mut TxContext): UID
82 38: LdU8(0)
83 39: LdU64(0)
84 40: MoveLoc[0](Arg0: u64)
85 41: MoveLoc[1](Arg1: u64)
86 42: LdConst[0](u64: 0)
87 43: LdConst[0](u64: 0)
88 44: PackGeneric[0](BigVector<Ty0>)
89 45: Ret
90}
91
92public(friend) destroy_empty<Ty0: store>(Arg0: BigVector<Ty0>) {
93L1: loc0: UID
94L2: loc1: u64
95B0:
96 0: MoveLoc[0](Arg0: BigVector<Ty0>)
97 1: UnpackGeneric[0](BigVector<Ty0>)
98 2: Pop
99 3: Pop
100 4: Pop
101 5: Pop
102 6: StLoc[2](loc1: u64)
103 7: Pop
104 8: StLoc[1](loc0: UID)
105 9: MoveLoc[2](loc1: u64)
106 10: LdU64(0)
107 11: Eq
108 12: BrFalse(14)
109B1:
110 13: Branch(16)
111B2:
112 14: LdConst[4](u64: 4)
113 15: Abort
114B3:
115 16: MoveLoc[1](loc0: UID)
116 17: Call object::delete(UID)
117 18: Ret
118}
119
120public(friend) is_empty<Ty0: store>(Arg0: &BigVector<Ty0>): bool {
121B0:
122 0: MoveLoc[0](Arg0: &BigVector<Ty0>)
123 1: ImmBorrowFieldGeneric[0](BigVector.length: u64)
124 2: ReadRef
125 3: LdU64(0)
126 4: Eq
127 5: Ret
128}
129
130public(friend) length<Ty0: store>(Arg0: &BigVector<Ty0>): u64 {
131B0:
132 0: MoveLoc[0](Arg0: &BigVector<Ty0>)
133 1: ImmBorrowFieldGeneric[0](BigVector.length: u64)
134 2: ReadRef
135 3: Ret
136}
137
138public(friend) depth<Ty0: store>(Arg0: &BigVector<Ty0>): u8 {
139B0:
140 0: MoveLoc[0](Arg0: &BigVector<Ty0>)
141 1: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
142 2: ReadRef
143 3: Ret
144}
145
146public(friend) borrow<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: u128): &Ty0 {
147L2: loc0: u64
148L3: loc1: SliceRef
149B0:
150 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
151 1: MoveLoc[1](Arg1: u128)
152 2: Call slice_around<Ty0>(&BigVector<Ty0>, u128): SliceRef * u64
153 3: StLoc[2](loc0: u64)
154 4: StLoc[3](loc1: SliceRef)
155 5: MoveLoc[0](Arg0: &BigVector<Ty0>)
156 6: MoveLoc[3](loc1: SliceRef)
157 7: Call borrow_slice<Ty0>(&BigVector<Ty0>, SliceRef): &Slice<Ty0>
158 8: MoveLoc[2](loc0: u64)
159 9: Call slice_borrow<Ty0>(&Slice<Ty0>, u64): &Ty0
160 10: Ret
161}
162
163public(friend) borrow_mut<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u128): &mut Ty0 {
164L2: loc0: u64
165L3: loc1: SliceRef
166B0:
167 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
168 1: FreezeRef
169 2: MoveLoc[1](Arg1: u128)
170 3: Call slice_around<Ty0>(&BigVector<Ty0>, u128): SliceRef * u64
171 4: StLoc[2](loc0: u64)
172 5: StLoc[3](loc1: SliceRef)
173 6: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
174 7: MoveLoc[3](loc1: SliceRef)
175 8: Call borrow_slice_mut<Ty0>(&mut BigVector<Ty0>, SliceRef): &mut Slice<Ty0>
176 9: MoveLoc[2](loc0: u64)
177 10: Call slice_borrow_mut<Ty0>(&mut Slice<Ty0>, u64): &mut Ty0
178 11: Ret
179}
180
181public(friend) insert<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u128, Arg2: Ty0) {
182L3: loc0: u8
183L4: loc1: u128
184L5: loc2: u64
185L6: loc3: u64
186B0:
187 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
188 1: ImmBorrowFieldGeneric[0](BigVector.length: u64)
189 2: ReadRef
190 3: LdU64(1)
191 4: Add
192 5: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
193 6: MutBorrowFieldGeneric[0](BigVector.length: u64)
194 7: WriteRef
195 8: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
196 9: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
197 10: ReadRef
198 11: LdConst[0](u64: 0)
199 12: Eq
200 13: BrFalse(23)
201B1:
202 14: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
203 15: MoveLoc[1](Arg1: u128)
204 16: MoveLoc[2](Arg2: Ty0)
205 17: Call singleton<Ty0>(u128, Ty0): Slice<Ty0>
206 18: Call alloc<Ty0, Ty0>(&mut BigVector<Ty0>, Slice<Ty0>): u64
207 19: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
208 20: MutBorrowFieldGeneric[2](BigVector.root_id: u64)
209 21: WriteRef
210 22: Ret
211B2:
212 23: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
213 24: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
214 25: ReadRef
215 26: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
216 27: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
217 28: ReadRef
218 29: StLoc[3](loc0: u8)
219 30: StLoc[6](loc3: u64)
220 31: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
221 32: CopyLoc[6](loc3: u64)
222 33: MoveLoc[3](loc0: u8)
223 34: MoveLoc[1](Arg1: u128)
224 35: MoveLoc[2](Arg2: Ty0)
225 36: Call slice_insert<Ty0>(&mut BigVector<Ty0>, u64, u8, u128, Ty0): u128 * u64
226 37: StLoc[5](loc2: u64)
227 38: StLoc[4](loc1: u128)
228 39: CopyLoc[5](loc2: u64)
229 40: LdConst[0](u64: 0)
230 41: Neq
231 42: BrFalse(61)
232B3:
233 43: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
234 44: MoveLoc[4](loc1: u128)
235 45: MoveLoc[6](loc3: u64)
236 46: MoveLoc[5](loc2: u64)
237 47: Call branch(u128, u64, u64): Slice<u64>
238 48: Call alloc<Ty0, u64>(&mut BigVector<Ty0>, Slice<u64>): u64
239 49: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
240 50: MutBorrowFieldGeneric[2](BigVector.root_id: u64)
241 51: WriteRef
242 52: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
243 53: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
244 54: ReadRef
245 55: LdU8(1)
246 56: Add
247 57: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
248 58: MutBorrowFieldGeneric[1](BigVector.depth: u8)
249 59: WriteRef
250 60: Branch(63)
251B4:
252 61: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
253 62: Pop
254B5:
255 63: Ret
256}
257
258public(friend) remove<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u128): Ty0 {
259L2: loc0: u8
260L3: loc1: u8
261L4: loc2: Slice<u64>
262L5: loc3: u64
263L6: loc4: Ty0
264L7: loc5: vector<Ty0>
265B0:
266 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
267 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
268 2: ReadRef
269 3: LdConst[0](u64: 0)
270 4: Eq
271 5: BrFalse(10)
272B1:
273 6: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
274 7: Pop
275 8: LdConst[5](u64: 5)
276 9: Abort
277B2:
278 10: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
279 11: ImmBorrowFieldGeneric[0](BigVector.length: u64)
280 12: ReadRef
281 13: LdU64(1)
282 14: Sub
283 15: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
284 16: MutBorrowFieldGeneric[0](BigVector.length: u64)
285 17: WriteRef
286 18: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
287 19: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
288 20: ReadRef
289 21: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
290 22: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
291 23: ReadRef
292 24: StLoc[2](loc0: u8)
293 25: StLoc[5](loc3: u64)
294 26: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
295 27: LdConst[0](u64: 0)
296 28: LdU128(0)
297 29: CopyLoc[5](loc3: u64)
298 30: LdU128(0)
299 31: LdConst[0](u64: 0)
300 32: MoveLoc[2](loc0: u8)
301 33: MoveLoc[1](Arg1: u128)
302 34: Call slice_remove<Ty0>(&mut BigVector<Ty0>, u64, u128, u64, u128, u64, u8, u128): Ty0 * u8 * u128
303 35: Pop
304 36: StLoc[3](loc1: u8)
305 37: StLoc[6](loc4: Ty0)
306 38: MoveLoc[3](loc1: u8)
307 39: LdConst[13](u8: 1)
308 40: Eq
309 41: BrFalse(84)
310B3:
311 42: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
312 43: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
313 44: ReadRef
314 45: LdU8(0)
315 46: Eq
316 47: BrFalse(64)
317B4:
318 48: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
319 49: MutBorrowFieldGeneric[3](BigVector.id: UID)
320 50: MoveLoc[5](loc3: u64)
321 51: Call dynamic_field::remove<u64, Slice<Ty0>>(&mut UID, u64): Slice<Ty0>
322 52: UnpackGeneric[1](Slice<Ty0>)
323 53: StLoc[7](loc5: vector<Ty0>)
324 54: Pop
325 55: Pop
326 56: Pop
327 57: MoveLoc[7](loc5: vector<Ty0>)
328 58: VecUnpack(12, 0)
329 59: LdConst[0](u64: 0)
330 60: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
331 61: MutBorrowFieldGeneric[2](BigVector.root_id: u64)
332 62: WriteRef
333 63: Branch(86)
334B5:
335 64: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
336 65: MutBorrowFieldGeneric[3](BigVector.id: UID)
337 66: MoveLoc[5](loc3: u64)
338 67: Call dynamic_field::remove<u64, Slice<u64>>(&mut UID, u64): Slice<u64>
339 68: StLoc[4](loc2: Slice<u64>)
340 69: MutBorrowLoc[4](loc2: Slice<u64>)
341 70: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
342 71: VecPopBack(5)
343 72: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
344 73: MutBorrowFieldGeneric[2](BigVector.root_id: u64)
345 74: WriteRef
346 75: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
347 76: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
348 77: ReadRef
349 78: LdU8(1)
350 79: Sub
351 80: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
352 81: MutBorrowFieldGeneric[1](BigVector.depth: u8)
353 82: WriteRef
354 83: Branch(86)
355B6:
356 84: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
357 85: Pop
358B7:
359 86: MoveLoc[6](loc4: Ty0)
360 87: Ret
361}
362
363public(friend) remove_batch<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: vector<u128>): vector<Ty0> {
364B0:
365 0: LdU64(0)
366 1: Abort
367}
368
369public(friend) slice_around<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: u128): SliceRef * u64 {
370L2: loc0: u64
371L3: loc1: &Slice<Ty0>
372L4: loc2: u64
373B0:
374 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
375 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
376 2: ReadRef
377 3: LdConst[0](u64: 0)
378 4: Eq
379 5: BrFalse(10)
380B1:
381 6: MoveLoc[0](Arg0: &BigVector<Ty0>)
382 7: Pop
383 8: LdConst[5](u64: 5)
384 9: Abort
385B2:
386 10: MoveLoc[0](Arg0: &BigVector<Ty0>)
387 11: CopyLoc[1](Arg1: u128)
388 12: Call find_leaf<Ty0>(&BigVector<Ty0>, u128): u64 * &Slice<Ty0> * u64
389 13: StLoc[4](loc2: u64)
390 14: StLoc[3](loc1: &Slice<Ty0>)
391 15: StLoc[2](loc0: u64)
392 16: CopyLoc[4](loc2: u64)
393 17: CopyLoc[3](loc1: &Slice<Ty0>)
394 18: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
395 19: VecLen(24)
396 20: Ge
397 21: BrFalse(26)
398B3:
399 22: MoveLoc[3](loc1: &Slice<Ty0>)
400 23: Pop
401 24: LdConst[5](u64: 5)
402 25: Abort
403B4:
404 26: MoveLoc[1](Arg1: u128)
405 27: MoveLoc[3](loc1: &Slice<Ty0>)
406 28: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
407 29: CopyLoc[4](loc2: u64)
408 30: VecImmBorrow(24)
409 31: ReadRef
410 32: Neq
411 33: BrFalse(36)
412B5:
413 34: LdConst[5](u64: 5)
414 35: Abort
415B6:
416 36: MoveLoc[2](loc0: u64)
417 37: Pack[2](SliceRef)
418 38: MoveLoc[4](loc2: u64)
419 39: Ret
420}
421
422public(friend) slice_following<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: u128): SliceRef * u64 {
423L2: loc0: SliceRef
424L3: loc1: u64
425L4: loc2: u64
426L5: loc3: &Slice<Ty0>
427L6: loc4: u64
428B0:
429 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
430 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
431 2: ReadRef
432 3: LdConst[0](u64: 0)
433 4: Eq
434 5: BrFalse(12)
435B1:
436 6: MoveLoc[0](Arg0: &BigVector<Ty0>)
437 7: Pop
438 8: LdConst[0](u64: 0)
439 9: Pack[2](SliceRef)
440 10: LdU64(0)
441 11: Ret
442B2:
443 12: MoveLoc[0](Arg0: &BigVector<Ty0>)
444 13: MoveLoc[1](Arg1: u128)
445 14: Call find_leaf<Ty0>(&BigVector<Ty0>, u128): u64 * &Slice<Ty0> * u64
446 15: StLoc[6](loc4: u64)
447 16: StLoc[5](loc3: &Slice<Ty0>)
448 17: StLoc[4](loc2: u64)
449 18: CopyLoc[6](loc4: u64)
450 19: CopyLoc[5](loc3: &Slice<Ty0>)
451 20: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
452 21: VecLen(24)
453 22: Ge
454 23: BrFalse(30)
455B3:
456 24: MoveLoc[5](loc3: &Slice<Ty0>)
457 25: Call slice_next<Ty0>(&Slice<Ty0>): SliceRef
458 26: LdU64(0)
459 27: StLoc[3](loc1: u64)
460 28: StLoc[2](loc0: SliceRef)
461 29: Branch(37)
462B4:
463 30: MoveLoc[5](loc3: &Slice<Ty0>)
464 31: Pop
465 32: MoveLoc[4](loc2: u64)
466 33: Pack[2](SliceRef)
467 34: MoveLoc[6](loc4: u64)
468 35: StLoc[3](loc1: u64)
469 36: StLoc[2](loc0: SliceRef)
470B5:
471 37: MoveLoc[2](loc0: SliceRef)
472 38: MoveLoc[3](loc1: u64)
473 39: Ret
474}
475
476public(friend) slice_before<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: u128): SliceRef * u64 {
477L2: loc0: SliceRef
478L3: loc1: u64
479L4: loc2: SliceRef
480L5: loc3: u64
481L6: loc4: u64
482L7: loc5: &Slice<Ty0>
483L8: loc6: u64
484L9: loc7: SliceRef
485L10: loc8: &Slice<Ty0>
486B0:
487 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
488 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
489 2: ReadRef
490 3: LdConst[0](u64: 0)
491 4: Eq
492 5: BrFalse(12)
493B1:
494 6: MoveLoc[0](Arg0: &BigVector<Ty0>)
495 7: Pop
496 8: LdConst[0](u64: 0)
497 9: Pack[2](SliceRef)
498 10: LdU64(0)
499 11: Ret
500B2:
501 12: CopyLoc[0](Arg0: &BigVector<Ty0>)
502 13: MoveLoc[1](Arg1: u128)
503 14: Call find_leaf<Ty0>(&BigVector<Ty0>, u128): u64 * &Slice<Ty0> * u64
504 15: StLoc[8](loc6: u64)
505 16: StLoc[7](loc5: &Slice<Ty0>)
506 17: StLoc[6](loc4: u64)
507 18: CopyLoc[8](loc6: u64)
508 19: LdU64(0)
509 20: Eq
510 21: BrFalse(53)
511B3:
512 22: MoveLoc[7](loc5: &Slice<Ty0>)
513 23: Call slice_prev<Ty0>(&Slice<Ty0>): SliceRef
514 24: StLoc[9](loc7: SliceRef)
515 25: ImmBorrowLoc[9](loc7: SliceRef)
516 26: Call slice_is_null(&SliceRef): bool
517 27: BrFalse(36)
518B4:
519 28: MoveLoc[0](Arg0: &BigVector<Ty0>)
520 29: Pop
521 30: LdConst[0](u64: 0)
522 31: Pack[2](SliceRef)
523 32: LdU64(0)
524 33: StLoc[3](loc1: u64)
525 34: StLoc[2](loc0: SliceRef)
526 35: Branch(48)
527B5:
528 36: MoveLoc[0](Arg0: &BigVector<Ty0>)
529 37: CopyLoc[9](loc7: SliceRef)
530 38: Call borrow_slice<Ty0>(&BigVector<Ty0>, SliceRef): &Slice<Ty0>
531 39: StLoc[10](loc8: &Slice<Ty0>)
532 40: MoveLoc[9](loc7: SliceRef)
533 41: MoveLoc[10](loc8: &Slice<Ty0>)
534 42: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
535 43: VecLen(24)
536 44: LdU64(1)
537 45: Sub
538 46: StLoc[3](loc1: u64)
539 47: StLoc[2](loc0: SliceRef)
540B6:
541 48: MoveLoc[2](loc0: SliceRef)
542 49: MoveLoc[3](loc1: u64)
543 50: StLoc[5](loc3: u64)
544 51: StLoc[4](loc2: SliceRef)
545 52: Branch(64)
546B7:
547 53: MoveLoc[0](Arg0: &BigVector<Ty0>)
548 54: Pop
549 55: MoveLoc[7](loc5: &Slice<Ty0>)
550 56: Pop
551 57: MoveLoc[6](loc4: u64)
552 58: Pack[2](SliceRef)
553 59: MoveLoc[8](loc6: u64)
554 60: LdU64(1)
555 61: Sub
556 62: StLoc[5](loc3: u64)
557 63: StLoc[4](loc2: SliceRef)
558B8:
559 64: MoveLoc[4](loc2: SliceRef)
560 65: MoveLoc[5](loc3: u64)
561 66: Ret
562}
563
564public(friend) min_slice<Ty0: store>(Arg0: &BigVector<Ty0>): SliceRef * u64 {
565L1: loc0: u64
566B0:
567 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
568 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
569 2: ReadRef
570 3: LdConst[0](u64: 0)
571 4: Eq
572 5: BrFalse(12)
573B1:
574 6: MoveLoc[0](Arg0: &BigVector<Ty0>)
575 7: Pop
576 8: LdConst[0](u64: 0)
577 9: Pack[2](SliceRef)
578 10: LdU64(0)
579 11: Ret
580B2:
581 12: MoveLoc[0](Arg0: &BigVector<Ty0>)
582 13: Call find_min_leaf<Ty0>(&BigVector<Ty0>): u64 * &Slice<Ty0> * u64
583 14: StLoc[1](loc0: u64)
584 15: Pop
585 16: Pack[2](SliceRef)
586 17: MoveLoc[1](loc0: u64)
587 18: Ret
588}
589
590public(friend) max_slice<Ty0: store>(Arg0: &BigVector<Ty0>): SliceRef * u64 {
591L1: loc0: u64
592B0:
593 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
594 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
595 2: ReadRef
596 3: LdConst[0](u64: 0)
597 4: Eq
598 5: BrFalse(12)
599B1:
600 6: MoveLoc[0](Arg0: &BigVector<Ty0>)
601 7: Pop
602 8: LdConst[0](u64: 0)
603 9: Pack[2](SliceRef)
604 10: LdU64(0)
605 11: Ret
606B2:
607 12: MoveLoc[0](Arg0: &BigVector<Ty0>)
608 13: Call find_max_leaf<Ty0>(&BigVector<Ty0>): u64 * &Slice<Ty0> * u64
609 14: StLoc[1](loc0: u64)
610 15: Pop
611 16: Pack[2](SliceRef)
612 17: MoveLoc[1](loc0: u64)
613 18: Ret
614}
615
616public(friend) next_slice<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: SliceRef, Arg2: u64): SliceRef * u64 {
617L3: loc0: SliceRef
618L4: loc1: u64
619L5: loc2: &Slice<Ty0>
620B0:
621 0: MoveLoc[0](Arg0: &BigVector<Ty0>)
622 1: CopyLoc[1](Arg1: SliceRef)
623 2: Call borrow_slice<Ty0>(&BigVector<Ty0>, SliceRef): &Slice<Ty0>
624 3: StLoc[5](loc2: &Slice<Ty0>)
625 4: CopyLoc[2](Arg2: u64)
626 5: LdU64(1)
627 6: Add
628 7: CopyLoc[5](loc2: &Slice<Ty0>)
629 8: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
630 9: VecLen(12)
631 10: Lt
632 11: BrFalse(21)
633B1:
634 12: MoveLoc[5](loc2: &Slice<Ty0>)
635 13: Pop
636 14: MoveLoc[1](Arg1: SliceRef)
637 15: MoveLoc[2](Arg2: u64)
638 16: LdU64(1)
639 17: Add
640 18: StLoc[4](loc1: u64)
641 19: StLoc[3](loc0: SliceRef)
642 20: Branch(26)
643B2:
644 21: MoveLoc[5](loc2: &Slice<Ty0>)
645 22: Call slice_next<Ty0>(&Slice<Ty0>): SliceRef
646 23: LdU64(0)
647 24: StLoc[4](loc1: u64)
648 25: StLoc[3](loc0: SliceRef)
649B3:
650 26: MoveLoc[3](loc0: SliceRef)
651 27: MoveLoc[4](loc1: u64)
652 28: Ret
653}
654
655public(friend) prev_slice<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: SliceRef, Arg2: u64): SliceRef * u64 {
656L3: loc0: SliceRef
657L4: loc1: u64
658L5: loc2: u64
659L6: loc3: SliceRef
660L7: loc4: &Slice<Ty0>
661B0:
662 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
663 1: CopyLoc[1](Arg1: SliceRef)
664 2: Call borrow_slice<Ty0>(&BigVector<Ty0>, SliceRef): &Slice<Ty0>
665 3: StLoc[7](loc4: &Slice<Ty0>)
666 4: CopyLoc[2](Arg2: u64)
667 5: LdU64(0)
668 6: Gt
669 7: BrFalse(19)
670B1:
671 8: MoveLoc[7](loc4: &Slice<Ty0>)
672 9: Pop
673 10: MoveLoc[0](Arg0: &BigVector<Ty0>)
674 11: Pop
675 12: MoveLoc[1](Arg1: SliceRef)
676 13: MoveLoc[2](Arg2: u64)
677 14: LdU64(1)
678 15: Sub
679 16: StLoc[4](loc1: u64)
680 17: StLoc[3](loc0: SliceRef)
681 18: Branch(43)
682B2:
683 19: LdU64(0)
684 20: StLoc[5](loc2: u64)
685 21: MoveLoc[7](loc4: &Slice<Ty0>)
686 22: Call slice_prev<Ty0>(&Slice<Ty0>): SliceRef
687 23: StLoc[6](loc3: SliceRef)
688 24: ImmBorrowLoc[6](loc3: SliceRef)
689 25: Call slice_is_null(&SliceRef): bool
690 26: Not
691 27: BrFalse(37)
692B3:
693 28: MoveLoc[0](Arg0: &BigVector<Ty0>)
694 29: CopyLoc[6](loc3: SliceRef)
695 30: Call borrow_slice<Ty0>(&BigVector<Ty0>, SliceRef): &Slice<Ty0>
696 31: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
697 32: VecLen(12)
698 33: LdU64(1)
699 34: Sub
700 35: StLoc[5](loc2: u64)
701 36: Branch(39)
702B4:
703 37: MoveLoc[0](Arg0: &BigVector<Ty0>)
704 38: Pop
705B5:
706 39: MoveLoc[6](loc3: SliceRef)
707 40: MoveLoc[5](loc2: u64)
708 41: StLoc[4](loc1: u64)
709 42: StLoc[3](loc0: SliceRef)
710B6:
711 43: MoveLoc[3](loc0: SliceRef)
712 44: MoveLoc[4](loc1: u64)
713 45: Ret
714}
715
716public(friend) borrow_slice<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: SliceRef): &Slice<Ty0> {
717B0:
718 0: MoveLoc[0](Arg0: &BigVector<Ty0>)
719 1: ImmBorrowFieldGeneric[3](BigVector.id: UID)
720 2: ImmBorrowLoc[1](Arg1: SliceRef)
721 3: ImmBorrowField[6](SliceRef.ix: u64)
722 4: ReadRef
723 5: Call dynamic_field::borrow<u64, Slice<Ty0>>(&UID, u64): &Slice<Ty0>
724 6: Ret
725}
726
727public(friend) borrow_slice_mut<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: SliceRef): &mut Slice<Ty0> {
728B0:
729 0: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
730 1: MutBorrowFieldGeneric[3](BigVector.id: UID)
731 2: ImmBorrowLoc[1](Arg1: SliceRef)
732 3: ImmBorrowField[6](SliceRef.ix: u64)
733 4: ReadRef
734 5: Call dynamic_field::borrow_mut<u64, Slice<Ty0>>(&mut UID, u64): &mut Slice<Ty0>
735 6: Ret
736}
737
738public(friend) slice_is_null(Arg0: &SliceRef): bool {
739B0:
740 0: MoveLoc[0](Arg0: &SliceRef)
741 1: ImmBorrowField[6](SliceRef.ix: u64)
742 2: ReadRef
743 3: LdConst[0](u64: 0)
744 4: Eq
745 5: Ret
746}
747
748public(friend) slice_is_leaf<Ty0: store>(Arg0: &Slice<Ty0>): bool {
749B0:
750 0: CopyLoc[0](Arg0: &Slice<Ty0>)
751 1: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
752 2: VecLen(12)
753 3: MoveLoc[0](Arg0: &Slice<Ty0>)
754 4: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
755 5: VecLen(24)
756 6: Eq
757 7: Ret
758}
759
760public(friend) slice_next<Ty0: store>(Arg0: &Slice<Ty0>): SliceRef {
761B0:
762 0: MoveLoc[0](Arg0: &Slice<Ty0>)
763 1: ImmBorrowFieldGeneric[7](Slice.next: u64)
764 2: ReadRef
765 3: Pack[2](SliceRef)
766 4: Ret
767}
768
769public(friend) slice_prev<Ty0: store>(Arg0: &Slice<Ty0>): SliceRef {
770B0:
771 0: MoveLoc[0](Arg0: &Slice<Ty0>)
772 1: ImmBorrowFieldGeneric[8](Slice.prev: u64)
773 2: ReadRef
774 3: Pack[2](SliceRef)
775 4: Ret
776}
777
778public(friend) slice_length<Ty0: store>(Arg0: &Slice<Ty0>): u64 {
779B0:
780 0: MoveLoc[0](Arg0: &Slice<Ty0>)
781 1: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
782 2: VecLen(12)
783 3: Ret
784}
785
786public(friend) slice_key<Ty0: store>(Arg0: &Slice<Ty0>, Arg1: u64): u128 {
787B0:
788 0: MoveLoc[0](Arg0: &Slice<Ty0>)
789 1: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
790 2: MoveLoc[1](Arg1: u64)
791 3: VecImmBorrow(24)
792 4: ReadRef
793 5: Ret
794}
795
796public(friend) slice_borrow<Ty0: store>(Arg0: &Slice<Ty0>, Arg1: u64): &Ty0 {
797B0:
798 0: MoveLoc[0](Arg0: &Slice<Ty0>)
799 1: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
800 2: MoveLoc[1](Arg1: u64)
801 3: VecImmBorrow(12)
802 4: Ret
803}
804
805public(friend) slice_borrow_mut<Ty0: store>(Arg0: &mut Slice<Ty0>, Arg1: u64): &mut Ty0 {
806B0:
807 0: MoveLoc[0](Arg0: &mut Slice<Ty0>)
808 1: MutBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
809 2: MoveLoc[1](Arg1: u64)
810 3: VecMutBorrow(12)
811 4: Ret
812}
813
814alloc<Ty0: store, Ty1: store>(Arg0: &mut BigVector<Ty0>, Arg1: Slice<Ty1>): u64 {
815L2: loc0: u64
816L3: loc1: u64
817L4: loc2: &mut Slice<Ty1>
818L5: loc3: u64
819L6: loc4: &mut Slice<Ty1>
820B0:
821 0: ImmBorrowLoc[1](Arg1: Slice<Ty1>)
822 1: ImmBorrowFieldGeneric[9](Slice.prev: u64)
823 2: ReadRef
824 3: StLoc[5](loc3: u64)
825 4: ImmBorrowLoc[1](Arg1: Slice<Ty1>)
826 5: ImmBorrowFieldGeneric[10](Slice.next: u64)
827 6: ReadRef
828 7: StLoc[3](loc1: u64)
829 8: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
830 9: ImmBorrowFieldGeneric[11](BigVector.last_id: u64)
831 10: ReadRef
832 11: LdU64(1)
833 12: Add
834 13: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
835 14: MutBorrowFieldGeneric[11](BigVector.last_id: u64)
836 15: WriteRef
837 16: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
838 17: MutBorrowFieldGeneric[3](BigVector.id: UID)
839 18: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
840 19: ImmBorrowFieldGeneric[11](BigVector.last_id: u64)
841 20: ReadRef
842 21: MoveLoc[1](Arg1: Slice<Ty1>)
843 22: Call dynamic_field::add<u64, Slice<Ty1>>(&mut UID, u64, Slice<Ty1>)
844 23: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
845 24: ImmBorrowFieldGeneric[11](BigVector.last_id: u64)
846 25: ReadRef
847 26: StLoc[2](loc0: u64)
848 27: CopyLoc[5](loc3: u64)
849 28: LdConst[0](u64: 0)
850 29: Neq
851 30: BrFalse(40)
852B1:
853 31: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
854 32: MutBorrowFieldGeneric[3](BigVector.id: UID)
855 33: MoveLoc[5](loc3: u64)
856 34: Call dynamic_field::borrow_mut<u64, Slice<Ty1>>(&mut UID, u64): &mut Slice<Ty1>
857 35: StLoc[6](loc4: &mut Slice<Ty1>)
858 36: CopyLoc[2](loc0: u64)
859 37: MoveLoc[6](loc4: &mut Slice<Ty1>)
860 38: MutBorrowFieldGeneric[10](Slice.next: u64)
861 39: WriteRef
862B2:
863 40: CopyLoc[3](loc1: u64)
864 41: LdConst[0](u64: 0)
865 42: Neq
866 43: BrFalse(54)
867B3:
868 44: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
869 45: MutBorrowFieldGeneric[3](BigVector.id: UID)
870 46: MoveLoc[3](loc1: u64)
871 47: Call dynamic_field::borrow_mut<u64, Slice<Ty1>>(&mut UID, u64): &mut Slice<Ty1>
872 48: StLoc[4](loc2: &mut Slice<Ty1>)
873 49: CopyLoc[2](loc0: u64)
874 50: MoveLoc[4](loc2: &mut Slice<Ty1>)
875 51: MutBorrowFieldGeneric[9](Slice.prev: u64)
876 52: WriteRef
877 53: Branch(56)
878B4:
879 54: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
880 55: Pop
881B5:
882 56: MoveLoc[2](loc0: u64)
883 57: Ret
884}
885
886singleton<Ty0: store>(Arg0: u128, Arg1: Ty0): Slice<Ty0> {
887B0:
888 0: LdConst[0](u64: 0)
889 1: LdConst[0](u64: 0)
890 2: MoveLoc[0](Arg0: u128)
891 3: VecPack(24, 1)
892 4: MoveLoc[1](Arg1: Ty0)
893 5: VecPack(12, 1)
894 6: PackGeneric[1](Slice<Ty0>)
895 7: Ret
896}
897
898branch(Arg0: u128, Arg1: u64, Arg2: u64): Slice<u64> {
899B0:
900 0: LdConst[0](u64: 0)
901 1: LdConst[0](u64: 0)
902 2: MoveLoc[0](Arg0: u128)
903 3: VecPack(24, 1)
904 4: MoveLoc[1](Arg1: u64)
905 5: MoveLoc[2](Arg2: u64)
906 6: VecPack(5, 2)
907 7: PackGeneric[2](Slice<u64>)
908 8: Ret
909}
910
911drop_slice<Ty0: drop + store>(Arg0: &mut UID, Arg1: u8, Arg2: u64) {
912L3: loc0: Slice<u64>
913B0:
914 0: CopyLoc[2](Arg2: u64)
915 1: LdConst[0](u64: 0)
916 2: Eq
917 3: BrFalse(7)
918B1:
919 4: MoveLoc[0](Arg0: &mut UID)
920 5: Pop
921 6: Ret
922B2:
923 7: CopyLoc[1](Arg1: u8)
924 8: LdU8(0)
925 9: Eq
926 10: BrFalse(16)
927B3:
928 11: MoveLoc[0](Arg0: &mut UID)
929 12: MoveLoc[2](Arg2: u64)
930 13: Call dynamic_field::remove<u64, Slice<Ty0>>(&mut UID, u64): Slice<Ty0>
931 14: Pop
932 15: Branch(37)
933B4:
934 16: CopyLoc[0](Arg0: &mut UID)
935 17: MoveLoc[2](Arg2: u64)
936 18: Call dynamic_field::remove<u64, Slice<u64>>(&mut UID, u64): Slice<u64>
937 19: StLoc[3](loc0: Slice<u64>)
938B5:
939 20: ImmBorrowLoc[3](loc0: Slice<u64>)
940 21: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
941 22: Call vector::is_empty<u64>(&vector<u64>): bool
942 23: Not
943 24: BrFalse(35)
944B6:
945 25: Branch(26)
946B7:
947 26: CopyLoc[0](Arg0: &mut UID)
948 27: CopyLoc[1](Arg1: u8)
949 28: LdU8(1)
950 29: Sub
951 30: MutBorrowLoc[3](loc0: Slice<u64>)
952 31: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
953 32: VecPopBack(5)
954 33: Call drop_slice<Ty0>(&mut UID, u8, u64)
955 34: Branch(20)
956B8:
957 35: MoveLoc[0](Arg0: &mut UID)
958 36: Pop
959B9:
960 37: Ret
961}
962
963find_leaf<Ty0: store>(Arg0: &BigVector<Ty0>, Arg1: u128): u64 * &Slice<Ty0> * u64 {
964L2: loc0: u8
965L3: loc1: &Slice<Ty0>
966L4: loc2: &Slice<u64>
967L5: loc3: u64
968L6: loc4: u64
969L7: loc5: u64
970B0:
971 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
972 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
973 2: ReadRef
974 3: CopyLoc[0](Arg0: &BigVector<Ty0>)
975 4: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
976 5: ReadRef
977 6: StLoc[2](loc0: u8)
978 7: StLoc[7](loc5: u64)
979B1:
980 8: CopyLoc[2](loc0: u8)
981 9: LdU8(0)
982 10: Gt
983 11: BrFalse(33)
984B2:
985 12: Branch(13)
986B3:
987 13: CopyLoc[0](Arg0: &BigVector<Ty0>)
988 14: ImmBorrowFieldGeneric[3](BigVector.id: UID)
989 15: MoveLoc[7](loc5: u64)
990 16: Call dynamic_field::borrow<u64, Slice<u64>>(&UID, u64): &Slice<u64>
991 17: StLoc[4](loc2: &Slice<u64>)
992 18: CopyLoc[4](loc2: &Slice<u64>)
993 19: CopyLoc[1](Arg1: u128)
994 20: Call slice_bisect_right<u64>(&Slice<u64>, u128): u64
995 21: StLoc[5](loc3: u64)
996 22: MoveLoc[4](loc2: &Slice<u64>)
997 23: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
998 24: MoveLoc[5](loc3: u64)
999 25: VecImmBorrow(5)
1000 26: ReadRef
1001 27: StLoc[7](loc5: u64)
1002 28: MoveLoc[2](loc0: u8)
1003 29: LdU8(1)
1004 30: Sub
1005 31: StLoc[2](loc0: u8)
1006 32: Branch(8)
1007B4:
1008 33: MoveLoc[0](Arg0: &BigVector<Ty0>)
1009 34: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1010 35: CopyLoc[7](loc5: u64)
1011 36: Call dynamic_field::borrow<u64, Slice<Ty0>>(&UID, u64): &Slice<Ty0>
1012 37: StLoc[3](loc1: &Slice<Ty0>)
1013 38: CopyLoc[3](loc1: &Slice<Ty0>)
1014 39: MoveLoc[1](Arg1: u128)
1015 40: Call slice_bisect_left<Ty0>(&Slice<Ty0>, u128): u64
1016 41: StLoc[6](loc4: u64)
1017 42: MoveLoc[7](loc5: u64)
1018 43: MoveLoc[3](loc1: &Slice<Ty0>)
1019 44: MoveLoc[6](loc4: u64)
1020 45: Ret
1021}
1022
1023find_min_leaf<Ty0: store>(Arg0: &BigVector<Ty0>): u64 * &Slice<Ty0> * u64 {
1024L1: loc0: u8
1025L2: loc1: &Slice<Ty0>
1026L3: loc2: u64
1027B0:
1028 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
1029 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
1030 2: ReadRef
1031 3: CopyLoc[0](Arg0: &BigVector<Ty0>)
1032 4: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
1033 5: ReadRef
1034 6: StLoc[1](loc0: u8)
1035 7: StLoc[3](loc2: u64)
1036B1:
1037 8: CopyLoc[1](loc0: u8)
1038 9: LdU8(0)
1039 10: Gt
1040 11: BrFalse(27)
1041B2:
1042 12: Branch(13)
1043B3:
1044 13: CopyLoc[0](Arg0: &BigVector<Ty0>)
1045 14: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1046 15: MoveLoc[3](loc2: u64)
1047 16: Call dynamic_field::borrow<u64, Slice<u64>>(&UID, u64): &Slice<u64>
1048 17: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1049 18: LdU64(0)
1050 19: VecImmBorrow(5)
1051 20: ReadRef
1052 21: StLoc[3](loc2: u64)
1053 22: MoveLoc[1](loc0: u8)
1054 23: LdU8(1)
1055 24: Sub
1056 25: StLoc[1](loc0: u8)
1057 26: Branch(8)
1058B4:
1059 27: MoveLoc[0](Arg0: &BigVector<Ty0>)
1060 28: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1061 29: CopyLoc[3](loc2: u64)
1062 30: Call dynamic_field::borrow<u64, Slice<Ty0>>(&UID, u64): &Slice<Ty0>
1063 31: StLoc[2](loc1: &Slice<Ty0>)
1064 32: MoveLoc[3](loc2: u64)
1065 33: MoveLoc[2](loc1: &Slice<Ty0>)
1066 34: LdU64(0)
1067 35: Ret
1068}
1069
1070find_max_leaf<Ty0: store>(Arg0: &BigVector<Ty0>): u64 * &Slice<Ty0> * u64 {
1071L1: loc0: u8
1072L2: loc1: &Slice<Ty0>
1073L3: loc2: &Slice<u64>
1074L4: loc3: u64
1075B0:
1076 0: CopyLoc[0](Arg0: &BigVector<Ty0>)
1077 1: ImmBorrowFieldGeneric[2](BigVector.root_id: u64)
1078 2: ReadRef
1079 3: CopyLoc[0](Arg0: &BigVector<Ty0>)
1080 4: ImmBorrowFieldGeneric[1](BigVector.depth: u8)
1081 5: ReadRef
1082 6: StLoc[1](loc0: u8)
1083 7: StLoc[4](loc3: u64)
1084B1:
1085 8: CopyLoc[1](loc0: u8)
1086 9: LdU8(0)
1087 10: Gt
1088 11: BrFalse(31)
1089B2:
1090 12: Branch(13)
1091B3:
1092 13: CopyLoc[0](Arg0: &BigVector<Ty0>)
1093 14: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1094 15: MoveLoc[4](loc3: u64)
1095 16: Call dynamic_field::borrow<u64, Slice<u64>>(&UID, u64): &Slice<u64>
1096 17: StLoc[3](loc2: &Slice<u64>)
1097 18: CopyLoc[3](loc2: &Slice<u64>)
1098 19: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1099 20: MoveLoc[3](loc2: &Slice<u64>)
1100 21: ImmBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1101 22: VecLen(24)
1102 23: VecImmBorrow(5)
1103 24: ReadRef
1104 25: StLoc[4](loc3: u64)
1105 26: MoveLoc[1](loc0: u8)
1106 27: LdU8(1)
1107 28: Sub
1108 29: StLoc[1](loc0: u8)
1109 30: Branch(8)
1110B4:
1111 31: MoveLoc[0](Arg0: &BigVector<Ty0>)
1112 32: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1113 33: CopyLoc[4](loc3: u64)
1114 34: Call dynamic_field::borrow<u64, Slice<Ty0>>(&UID, u64): &Slice<Ty0>
1115 35: StLoc[2](loc1: &Slice<Ty0>)
1116 36: MoveLoc[4](loc3: u64)
1117 37: CopyLoc[2](loc1: &Slice<Ty0>)
1118 38: MoveLoc[2](loc1: &Slice<Ty0>)
1119 39: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1120 40: VecLen(24)
1121 41: LdU64(1)
1122 42: Sub
1123 43: Ret
1124}
1125
1126slice_bisect_left<Ty0: store>(Arg0: &Slice<Ty0>, Arg1: u128): u64 {
1127L2: loc0: u64
1128L3: loc1: u64
1129L4: loc2: u64
1130B0:
1131 0: LdU64(0)
1132 1: CopyLoc[0](Arg0: &Slice<Ty0>)
1133 2: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1134 3: VecLen(24)
1135 4: StLoc[2](loc0: u64)
1136 5: StLoc[3](loc1: u64)
1137B1:
1138 6: CopyLoc[3](loc1: u64)
1139 7: CopyLoc[2](loc0: u64)
1140 8: Lt
1141 9: BrFalse(35)
1142B2:
1143 10: Branch(11)
1144B3:
1145 11: CopyLoc[2](loc0: u64)
1146 12: CopyLoc[3](loc1: u64)
1147 13: Sub
1148 14: LdU64(2)
1149 15: Div
1150 16: CopyLoc[3](loc1: u64)
1151 17: Add
1152 18: StLoc[4](loc2: u64)
1153 19: CopyLoc[1](Arg1: u128)
1154 20: CopyLoc[0](Arg0: &Slice<Ty0>)
1155 21: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1156 22: CopyLoc[4](loc2: u64)
1157 23: VecImmBorrow(24)
1158 24: ReadRef
1159 25: Le
1160 26: BrFalse(30)
1161B4:
1162 27: MoveLoc[4](loc2: u64)
1163 28: StLoc[2](loc0: u64)
1164 29: Branch(6)
1165B5:
1166 30: MoveLoc[4](loc2: u64)
1167 31: LdU64(1)
1168 32: Add
1169 33: StLoc[3](loc1: u64)
1170 34: Branch(6)
1171B6:
1172 35: MoveLoc[0](Arg0: &Slice<Ty0>)
1173 36: Pop
1174 37: MoveLoc[3](loc1: u64)
1175 38: Ret
1176}
1177
1178slice_bisect_right<Ty0: store>(Arg0: &Slice<Ty0>, Arg1: u128): u64 {
1179L2: loc0: u64
1180L3: loc1: u64
1181L4: loc2: u64
1182B0:
1183 0: LdU64(0)
1184 1: CopyLoc[0](Arg0: &Slice<Ty0>)
1185 2: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1186 3: VecLen(24)
1187 4: StLoc[2](loc0: u64)
1188 5: StLoc[3](loc1: u64)
1189B1:
1190 6: CopyLoc[3](loc1: u64)
1191 7: CopyLoc[2](loc0: u64)
1192 8: Lt
1193 9: BrFalse(35)
1194B2:
1195 10: Branch(11)
1196B3:
1197 11: CopyLoc[2](loc0: u64)
1198 12: CopyLoc[3](loc1: u64)
1199 13: Sub
1200 14: LdU64(2)
1201 15: Div
1202 16: CopyLoc[3](loc1: u64)
1203 17: Add
1204 18: StLoc[4](loc2: u64)
1205 19: CopyLoc[1](Arg1: u128)
1206 20: CopyLoc[0](Arg0: &Slice<Ty0>)
1207 21: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1208 22: CopyLoc[4](loc2: u64)
1209 23: VecImmBorrow(24)
1210 24: ReadRef
1211 25: Lt
1212 26: BrFalse(30)
1213B4:
1214 27: MoveLoc[4](loc2: u64)
1215 28: StLoc[2](loc0: u64)
1216 29: Branch(6)
1217B5:
1218 30: MoveLoc[4](loc2: u64)
1219 31: LdU64(1)
1220 32: Add
1221 33: StLoc[3](loc1: u64)
1222 34: Branch(6)
1223B6:
1224 35: MoveLoc[0](Arg0: &Slice<Ty0>)
1225 36: Pop
1226 37: MoveLoc[3](loc1: u64)
1227 38: Ret
1228}
1229
1230slice_insert<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u8, Arg3: u128, Arg4: Ty0): u128 * u64 {
1231L5: loc0: u128
1232L6: loc1: u64
1233B0:
1234 0: CopyLoc[2](Arg2: u8)
1235 1: LdU8(0)
1236 2: Eq
1237 3: BrFalse(12)
1238B1:
1239 4: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1240 5: MoveLoc[1](Arg1: u64)
1241 6: MoveLoc[3](Arg3: u128)
1242 7: MoveLoc[4](Arg4: Ty0)
1243 8: Call leaf_insert<Ty0>(&mut BigVector<Ty0>, u64, u128, Ty0): u128 * u64
1244 9: StLoc[6](loc1: u64)
1245 10: StLoc[5](loc0: u128)
1246 11: Branch(22)
1247B2:
1248 12: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1249 13: MoveLoc[1](Arg1: u64)
1250 14: MoveLoc[2](Arg2: u8)
1251 15: LdU8(1)
1252 16: Sub
1253 17: MoveLoc[3](Arg3: u128)
1254 18: MoveLoc[4](Arg4: Ty0)
1255 19: Call node_insert<Ty0>(&mut BigVector<Ty0>, u64, u8, u128, Ty0): u128 * u64
1256 20: StLoc[6](loc1: u64)
1257 21: StLoc[5](loc0: u128)
1258B3:
1259 22: MoveLoc[5](loc0: u128)
1260 23: MoveLoc[6](loc1: u64)
1261 24: Ret
1262}
1263
1264leaf_insert<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u128, Arg3: Ty0): u128 * u64 {
1265L4: loc0: bool
1266L5: loc1: &mut Slice<Ty0>
1267L6: loc2: Slice<Ty0>
1268L7: loc3: u64
1269L8: loc4: u128
1270L9: loc5: u64
1271B0:
1272 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1273 1: MutBorrowFieldGeneric[3](BigVector.id: UID)
1274 2: CopyLoc[1](Arg1: u64)
1275 3: Call dynamic_field::borrow_mut<u64, Slice<Ty0>>(&mut UID, u64): &mut Slice<Ty0>
1276 4: StLoc[5](loc1: &mut Slice<Ty0>)
1277 5: CopyLoc[5](loc1: &mut Slice<Ty0>)
1278 6: FreezeRef
1279 7: CopyLoc[2](Arg2: u128)
1280 8: Call slice_bisect_left<Ty0>(&Slice<Ty0>, u128): u64
1281 9: StLoc[7](loc3: u64)
1282 10: CopyLoc[7](loc3: u64)
1283 11: CopyLoc[5](loc1: &mut Slice<Ty0>)
1284 12: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1285 13: VecLen(24)
1286 14: Lt
1287 15: BrFalse(25)
1288B1:
1289 16: CopyLoc[2](Arg2: u128)
1290 17: CopyLoc[5](loc1: &mut Slice<Ty0>)
1291 18: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1292 19: CopyLoc[7](loc3: u64)
1293 20: VecImmBorrow(24)
1294 21: ReadRef
1295 22: Eq
1296 23: StLoc[4](loc0: bool)
1297 24: Branch(27)
1298B2:
1299 25: LdFalse
1300 26: StLoc[4](loc0: bool)
1301B3:
1302 27: MoveLoc[4](loc0: bool)
1303 28: BrFalse(35)
1304B4:
1305 29: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1306 30: Pop
1307 31: MoveLoc[5](loc1: &mut Slice<Ty0>)
1308 32: Pop
1309 33: LdConst[6](u64: 6)
1310 34: Abort
1311B5:
1312 35: CopyLoc[5](loc1: &mut Slice<Ty0>)
1313 36: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1314 37: VecLen(24)
1315 38: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1316 39: ImmBorrowFieldGeneric[13](BigVector.max_slice_size: u64)
1317 40: ReadRef
1318 41: Lt
1319 42: BrFalse(58)
1320B6:
1321 43: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1322 44: Pop
1323 45: CopyLoc[5](loc1: &mut Slice<Ty0>)
1324 46: MutBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1325 47: MoveLoc[2](Arg2: u128)
1326 48: CopyLoc[7](loc3: u64)
1327 49: Call vector::insert<u128>(&mut vector<u128>, u128, u64)
1328 50: MoveLoc[5](loc1: &mut Slice<Ty0>)
1329 51: MutBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1330 52: MoveLoc[3](Arg3: Ty0)
1331 53: MoveLoc[7](loc3: u64)
1332 54: Call vector::insert<Ty0>(&mut vector<Ty0>, Ty0, u64)
1333 55: LdU128(0)
1334 56: LdConst[0](u64: 0)
1335 57: Ret
1336B7:
1337 58: CopyLoc[5](loc1: &mut Slice<Ty0>)
1338 59: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1339 60: VecLen(12)
1340 61: LdU64(2)
1341 62: Div
1342 63: StLoc[9](loc5: u64)
1343 64: MoveLoc[1](Arg1: u64)
1344 65: CopyLoc[5](loc1: &mut Slice<Ty0>)
1345 66: ImmBorrowFieldGeneric[7](Slice.next: u64)
1346 67: ReadRef
1347 68: CopyLoc[5](loc1: &mut Slice<Ty0>)
1348 69: MutBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1349 70: CopyLoc[9](loc5: u64)
1350 71: Call utils::pop_until<u128>(&mut vector<u128>, u64): vector<u128>
1351 72: CopyLoc[5](loc1: &mut Slice<Ty0>)
1352 73: MutBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1353 74: CopyLoc[9](loc5: u64)
1354 75: Call utils::pop_until<Ty0>(&mut vector<Ty0>, u64): vector<Ty0>
1355 76: PackGeneric[1](Slice<Ty0>)
1356 77: StLoc[6](loc2: Slice<Ty0>)
1357 78: ImmBorrowLoc[6](loc2: Slice<Ty0>)
1358 79: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1359 80: LdU64(0)
1360 81: VecImmBorrow(24)
1361 82: ReadRef
1362 83: StLoc[8](loc4: u128)
1363 84: CopyLoc[2](Arg2: u128)
1364 85: CopyLoc[8](loc4: u128)
1365 86: Lt
1366 87: BrFalse(99)
1367B8:
1368 88: CopyLoc[5](loc1: &mut Slice<Ty0>)
1369 89: MutBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1370 90: MoveLoc[2](Arg2: u128)
1371 91: CopyLoc[7](loc3: u64)
1372 92: Call vector::insert<u128>(&mut vector<u128>, u128, u64)
1373 93: MoveLoc[5](loc1: &mut Slice<Ty0>)
1374 94: MutBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1375 95: MoveLoc[3](Arg3: Ty0)
1376 96: MoveLoc[7](loc3: u64)
1377 97: Call vector::insert<Ty0>(&mut vector<Ty0>, Ty0, u64)
1378 98: Branch(115)
1379B9:
1380 99: MoveLoc[5](loc1: &mut Slice<Ty0>)
1381 100: Pop
1382 101: MutBorrowLoc[6](loc2: Slice<Ty0>)
1383 102: MutBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1384 103: MoveLoc[2](Arg2: u128)
1385 104: CopyLoc[7](loc3: u64)
1386 105: CopyLoc[9](loc5: u64)
1387 106: Sub
1388 107: Call vector::insert<u128>(&mut vector<u128>, u128, u64)
1389 108: MutBorrowLoc[6](loc2: Slice<Ty0>)
1390 109: MutBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1391 110: MoveLoc[3](Arg3: Ty0)
1392 111: MoveLoc[7](loc3: u64)
1393 112: MoveLoc[9](loc5: u64)
1394 113: Sub
1395 114: Call vector::insert<Ty0>(&mut vector<Ty0>, Ty0, u64)
1396B10:
1397 115: MoveLoc[8](loc4: u128)
1398 116: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1399 117: MoveLoc[6](loc2: Slice<Ty0>)
1400 118: Call alloc<Ty0, Ty0>(&mut BigVector<Ty0>, Slice<Ty0>): u64
1401 119: Ret
1402}
1403
1404node_insert<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u8, Arg3: u128, Arg4: Ty0): u128 * u64 {
1405L5: loc0: u64
1406L6: loc1: u128
1407L7: loc2: Slice<u64>
1408L8: loc3: &mut Slice<u64>
1409L9: loc4: &mut Slice<u64>
1410L10: loc5: u64
1411L11: loc6: u128
1412L12: loc7: u64
1413L13: loc8: u64
1414B0:
1415 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1416 1: MutBorrowFieldGeneric[3](BigVector.id: UID)
1417 2: CopyLoc[1](Arg1: u64)
1418 3: Call dynamic_field::borrow_mut<u64, Slice<u64>>(&mut UID, u64): &mut Slice<u64>
1419 4: StLoc[8](loc3: &mut Slice<u64>)
1420 5: CopyLoc[8](loc3: &mut Slice<u64>)
1421 6: FreezeRef
1422 7: CopyLoc[3](Arg3: u128)
1423 8: Call slice_bisect_right<u64>(&Slice<u64>, u128): u64
1424 9: StLoc[10](loc5: u64)
1425 10: MoveLoc[8](loc3: &mut Slice<u64>)
1426 11: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1427 12: CopyLoc[10](loc5: u64)
1428 13: VecImmBorrow(5)
1429 14: ReadRef
1430 15: StLoc[5](loc0: u64)
1431 16: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1432 17: MoveLoc[5](loc0: u64)
1433 18: MoveLoc[2](Arg2: u8)
1434 19: MoveLoc[3](Arg3: u128)
1435 20: MoveLoc[4](Arg4: Ty0)
1436 21: Call slice_insert<Ty0>(&mut BigVector<Ty0>, u64, u8, u128, Ty0): u128 * u64
1437 22: StLoc[13](loc8: u64)
1438 23: StLoc[6](loc1: u128)
1439 24: CopyLoc[13](loc8: u64)
1440 25: LdConst[0](u64: 0)
1441 26: Eq
1442 27: BrFalse(33)
1443B1:
1444 28: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1445 29: Pop
1446 30: LdU128(0)
1447 31: LdConst[0](u64: 0)
1448 32: Ret
1449B2:
1450 33: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1451 34: MutBorrowFieldGeneric[3](BigVector.id: UID)
1452 35: CopyLoc[1](Arg1: u64)
1453 36: Call dynamic_field::borrow_mut<u64, Slice<u64>>(&mut UID, u64): &mut Slice<u64>
1454 37: StLoc[9](loc4: &mut Slice<u64>)
1455 38: CopyLoc[9](loc4: &mut Slice<u64>)
1456 39: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1457 40: VecLen(5)
1458 41: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1459 42: ImmBorrowFieldGeneric[14](BigVector.max_fan_out: u64)
1460 43: ReadRef
1461 44: Lt
1462 45: BrFalse(63)
1463B3:
1464 46: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1465 47: Pop
1466 48: CopyLoc[9](loc4: &mut Slice<u64>)
1467 49: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1468 50: MoveLoc[6](loc1: u128)
1469 51: CopyLoc[10](loc5: u64)
1470 52: Call vector::insert<u128>(&mut vector<u128>, u128, u64)
1471 53: MoveLoc[9](loc4: &mut Slice<u64>)
1472 54: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1473 55: MoveLoc[13](loc8: u64)
1474 56: MoveLoc[10](loc5: u64)
1475 57: LdU64(1)
1476 58: Add
1477 59: Call vector::insert<u64>(&mut vector<u64>, u64, u64)
1478 60: LdU128(0)
1479 61: LdConst[0](u64: 0)
1480 62: Ret
1481B4:
1482 63: CopyLoc[9](loc4: &mut Slice<u64>)
1483 64: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1484 65: VecLen(5)
1485 66: LdU64(2)
1486 67: Div
1487 68: StLoc[12](loc7: u64)
1488 69: MoveLoc[1](Arg1: u64)
1489 70: CopyLoc[9](loc4: &mut Slice<u64>)
1490 71: ImmBorrowFieldGeneric[15](Slice.next: u64)
1491 72: ReadRef
1492 73: CopyLoc[9](loc4: &mut Slice<u64>)
1493 74: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1494 75: CopyLoc[12](loc7: u64)
1495 76: Call utils::pop_until<u128>(&mut vector<u128>, u64): vector<u128>
1496 77: CopyLoc[9](loc4: &mut Slice<u64>)
1497 78: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1498 79: CopyLoc[12](loc7: u64)
1499 80: Call utils::pop_until<u64>(&mut vector<u64>, u64): vector<u64>
1500 81: PackGeneric[2](Slice<u64>)
1501 82: StLoc[7](loc2: Slice<u64>)
1502 83: CopyLoc[9](loc4: &mut Slice<u64>)
1503 84: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1504 85: VecPopBack(24)
1505 86: StLoc[11](loc6: u128)
1506 87: CopyLoc[6](loc1: u128)
1507 88: CopyLoc[11](loc6: u128)
1508 89: Lt
1509 90: BrFalse(104)
1510B5:
1511 91: CopyLoc[9](loc4: &mut Slice<u64>)
1512 92: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1513 93: MoveLoc[6](loc1: u128)
1514 94: CopyLoc[10](loc5: u64)
1515 95: Call vector::insert<u128>(&mut vector<u128>, u128, u64)
1516 96: MoveLoc[9](loc4: &mut Slice<u64>)
1517 97: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1518 98: MoveLoc[13](loc8: u64)
1519 99: MoveLoc[10](loc5: u64)
1520 100: LdU64(1)
1521 101: Add
1522 102: Call vector::insert<u64>(&mut vector<u64>, u64, u64)
1523 103: Branch(122)
1524B6:
1525 104: MoveLoc[9](loc4: &mut Slice<u64>)
1526 105: Pop
1527 106: MutBorrowLoc[7](loc2: Slice<u64>)
1528 107: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1529 108: MoveLoc[6](loc1: u128)
1530 109: CopyLoc[10](loc5: u64)
1531 110: CopyLoc[12](loc7: u64)
1532 111: Sub
1533 112: Call vector::insert<u128>(&mut vector<u128>, u128, u64)
1534 113: MutBorrowLoc[7](loc2: Slice<u64>)
1535 114: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1536 115: MoveLoc[13](loc8: u64)
1537 116: MoveLoc[10](loc5: u64)
1538 117: MoveLoc[12](loc7: u64)
1539 118: Sub
1540 119: LdU64(1)
1541 120: Add
1542 121: Call vector::insert<u64>(&mut vector<u64>, u64, u64)
1543B7:
1544 122: MoveLoc[11](loc6: u128)
1545 123: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1546 124: MoveLoc[7](loc2: Slice<u64>)
1547 125: Call alloc<Ty0, u64>(&mut BigVector<Ty0>, Slice<u64>): u64
1548 126: Ret
1549}
1550
1551slice_remove<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64, Arg4: u128, Arg5: u64, Arg6: u8, Arg7: u128): Ty0 * u8 * u128 {
1552L8: loc0: Ty0
1553L9: loc1: u8
1554L10: loc2: u128
1555B0:
1556 0: CopyLoc[6](Arg6: u8)
1557 1: LdU8(0)
1558 2: Eq
1559 3: BrFalse(16)
1560B1:
1561 4: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1562 5: MoveLoc[1](Arg1: u64)
1563 6: MoveLoc[2](Arg2: u128)
1564 7: MoveLoc[3](Arg3: u64)
1565 8: MoveLoc[4](Arg4: u128)
1566 9: MoveLoc[5](Arg5: u64)
1567 10: MoveLoc[7](Arg7: u128)
1568 11: Call leaf_remove<Ty0>(&mut BigVector<Ty0>, u64, u128, u64, u128, u64, u128): Ty0 * u8 * u128
1569 12: StLoc[10](loc2: u128)
1570 13: StLoc[9](loc1: u8)
1571 14: StLoc[8](loc0: Ty0)
1572 15: Branch(30)
1573B2:
1574 16: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1575 17: MoveLoc[1](Arg1: u64)
1576 18: MoveLoc[2](Arg2: u128)
1577 19: MoveLoc[3](Arg3: u64)
1578 20: MoveLoc[4](Arg4: u128)
1579 21: MoveLoc[5](Arg5: u64)
1580 22: MoveLoc[6](Arg6: u8)
1581 23: LdU8(1)
1582 24: Sub
1583 25: MoveLoc[7](Arg7: u128)
1584 26: Call node_remove<Ty0>(&mut BigVector<Ty0>, u64, u128, u64, u128, u64, u8, u128): Ty0 * u8 * u128
1585 27: StLoc[10](loc2: u128)
1586 28: StLoc[9](loc1: u8)
1587 29: StLoc[8](loc0: Ty0)
1588B3:
1589 30: MoveLoc[8](loc0: Ty0)
1590 31: MoveLoc[9](loc1: u8)
1591 32: MoveLoc[10](loc2: u128)
1592 33: Ret
1593}
1594
1595leaf_remove<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64, Arg4: u128, Arg5: u64, Arg6: u128): Ty0 * u8 * u128 {
1596L7: loc0: Ty0
1597L8: loc1: u8
1598L9: loc2: u128
1599L10: loc3: &mut Slice<Ty0>
1600L11: loc4: u64
1601L12: loc5: u64
1602L13: loc6: u64
1603L14: loc7: Ty0
1604B0:
1605 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1606 1: MutBorrowFieldGeneric[3](BigVector.id: UID)
1607 2: CopyLoc[3](Arg3: u64)
1608 3: Call dynamic_field::borrow_mut<u64, Slice<Ty0>>(&mut UID, u64): &mut Slice<Ty0>
1609 4: StLoc[10](loc3: &mut Slice<Ty0>)
1610 5: CopyLoc[10](loc3: &mut Slice<Ty0>)
1611 6: FreezeRef
1612 7: CopyLoc[6](Arg6: u128)
1613 8: Call slice_bisect_left<Ty0>(&Slice<Ty0>, u128): u64
1614 9: StLoc[12](loc5: u64)
1615 10: CopyLoc[12](loc5: u64)
1616 11: CopyLoc[10](loc3: &mut Slice<Ty0>)
1617 12: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1618 13: VecLen(24)
1619 14: Ge
1620 15: BrFalse(22)
1621B1:
1622 16: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1623 17: Pop
1624 18: MoveLoc[10](loc3: &mut Slice<Ty0>)
1625 19: Pop
1626 20: LdConst[5](u64: 5)
1627 21: Abort
1628B2:
1629 22: MoveLoc[6](Arg6: u128)
1630 23: CopyLoc[10](loc3: &mut Slice<Ty0>)
1631 24: ImmBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1632 25: CopyLoc[12](loc5: u64)
1633 26: VecImmBorrow(24)
1634 27: ReadRef
1635 28: Neq
1636 29: BrFalse(36)
1637B3:
1638 30: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1639 31: Pop
1640 32: MoveLoc[10](loc3: &mut Slice<Ty0>)
1641 33: Pop
1642 34: LdConst[5](u64: 5)
1643 35: Abort
1644B4:
1645 36: CopyLoc[10](loc3: &mut Slice<Ty0>)
1646 37: MutBorrowFieldGeneric[5](Slice.keys: vector<u128>)
1647 38: CopyLoc[12](loc5: u64)
1648 39: Call vector::remove<u128>(&mut vector<u128>, u64): u128
1649 40: Pop
1650 41: CopyLoc[10](loc3: &mut Slice<Ty0>)
1651 42: MutBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1652 43: MoveLoc[12](loc5: u64)
1653 44: Call vector::remove<Ty0>(&mut vector<Ty0>, u64): Ty0
1654 45: StLoc[14](loc7: Ty0)
1655 46: MoveLoc[10](loc3: &mut Slice<Ty0>)
1656 47: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1657 48: VecLen(12)
1658 49: StLoc[13](loc6: u64)
1659 50: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1660 51: ImmBorrowFieldGeneric[13](BigVector.max_slice_size: u64)
1661 52: ReadRef
1662 53: LdU64(2)
1663 54: Div
1664 55: StLoc[11](loc4: u64)
1665 56: CopyLoc[13](loc6: u64)
1666 57: CopyLoc[11](loc4: u64)
1667 58: Ge
1668 59: BrFalse(66)
1669B5:
1670 60: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1671 61: Pop
1672 62: MoveLoc[14](loc7: Ty0)
1673 63: LdConst[12](u8: 0)
1674 64: LdU128(0)
1675 65: Ret
1676B6:
1677 66: CopyLoc[1](Arg1: u64)
1678 67: LdConst[0](u64: 0)
1679 68: Neq
1680 69: BrFalse(87)
1681B7:
1682 70: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1683 71: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1684 72: CopyLoc[1](Arg1: u64)
1685 73: Call dynamic_field::borrow<u64, Slice<Ty0>>(&UID, u64): &Slice<Ty0>
1686 74: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1687 75: VecLen(12)
1688 76: CopyLoc[11](loc4: u64)
1689 77: Gt
1690 78: BrFalse(87)
1691B8:
1692 79: MoveLoc[14](loc7: Ty0)
1693 80: LdConst[14](u8: 2)
1694 81: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1695 82: MoveLoc[1](Arg1: u64)
1696 83: MoveLoc[2](Arg2: u128)
1697 84: MoveLoc[3](Arg3: u64)
1698 85: Call slice_redistribute<Ty0, Ty0>(&mut BigVector<Ty0>, u64, u128, u64): u128
1699 86: Ret
1700B9:
1701 87: CopyLoc[5](Arg5: u64)
1702 88: LdConst[0](u64: 0)
1703 89: Neq
1704 90: BrFalse(108)
1705B10:
1706 91: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1707 92: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1708 93: CopyLoc[5](Arg5: u64)
1709 94: Call dynamic_field::borrow<u64, Slice<Ty0>>(&UID, u64): &Slice<Ty0>
1710 95: ImmBorrowFieldGeneric[6](Slice.vals: vector<Ty0>)
1711 96: VecLen(12)
1712 97: MoveLoc[11](loc4: u64)
1713 98: Gt
1714 99: BrFalse(108)
1715B11:
1716 100: MoveLoc[14](loc7: Ty0)
1717 101: LdConst[15](u8: 3)
1718 102: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1719 103: MoveLoc[3](Arg3: u64)
1720 104: MoveLoc[4](Arg4: u128)
1721 105: MoveLoc[5](Arg5: u64)
1722 106: Call slice_redistribute<Ty0, Ty0>(&mut BigVector<Ty0>, u64, u128, u64): u128
1723 107: Ret
1724B12:
1725 108: CopyLoc[1](Arg1: u64)
1726 109: LdConst[0](u64: 0)
1727 110: Neq
1728 111: BrFalse(121)
1729B13:
1730 112: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1731 113: MoveLoc[1](Arg1: u64)
1732 114: MoveLoc[2](Arg2: u128)
1733 115: MoveLoc[3](Arg3: u64)
1734 116: Call slice_merge<Ty0, Ty0>(&mut BigVector<Ty0>, u64, u128, u64)
1735 117: MoveLoc[14](loc7: Ty0)
1736 118: LdConst[16](u8: 4)
1737 119: LdU128(0)
1738 120: Ret
1739B14:
1740 121: CopyLoc[5](Arg5: u64)
1741 122: LdConst[0](u64: 0)
1742 123: Neq
1743 124: BrFalse(134)
1744B15:
1745 125: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1746 126: MoveLoc[3](Arg3: u64)
1747 127: MoveLoc[4](Arg4: u128)
1748 128: MoveLoc[5](Arg5: u64)
1749 129: Call slice_merge<Ty0, Ty0>(&mut BigVector<Ty0>, u64, u128, u64)
1750 130: MoveLoc[14](loc7: Ty0)
1751 131: LdConst[17](u8: 5)
1752 132: LdU128(0)
1753 133: Ret
1754B16:
1755 134: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1756 135: Pop
1757 136: MoveLoc[13](loc6: u64)
1758 137: LdU64(0)
1759 138: Eq
1760 139: BrFalse(147)
1761B17:
1762 140: MoveLoc[14](loc7: Ty0)
1763 141: LdConst[13](u8: 1)
1764 142: LdU128(0)
1765 143: StLoc[9](loc2: u128)
1766 144: StLoc[8](loc1: u8)
1767 145: StLoc[7](loc0: Ty0)
1768 146: Branch(153)
1769B18:
1770 147: MoveLoc[14](loc7: Ty0)
1771 148: LdConst[12](u8: 0)
1772 149: LdU128(0)
1773 150: StLoc[9](loc2: u128)
1774 151: StLoc[8](loc1: u8)
1775 152: StLoc[7](loc0: Ty0)
1776B19:
1777 153: MoveLoc[7](loc0: Ty0)
1778 154: MoveLoc[8](loc1: u8)
1779 155: MoveLoc[9](loc2: u128)
1780 156: Ret
1781}
1782
1783node_remove<Ty0: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64, Arg4: u128, Arg5: u64, Arg6: u8, Arg7: u128): Ty0 * u8 * u128 {
1784L8: loc0: u64
1785L9: loc1: u128
1786L10: loc2: u64
1787L11: loc3: u128
1788L12: loc4: Ty0
1789L13: loc5: u8
1790L14: loc6: u128
1791L15: loc7: u64
1792L16: loc8: u64
1793L17: loc9: u128
1794L18: loc10: u64
1795L19: loc11: u128
1796L20: loc12: u64
1797L21: loc13: &Slice<u64>
1798L22: loc14: &mut Slice<u64>
1799L23: loc15: u64
1800L24: loc16: u128
1801L25: loc17: u64
1802L26: loc18: u8
1803L27: loc19: Ty0
1804B0:
1805 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1806 1: ImmBorrowFieldGeneric[3](BigVector.id: UID)
1807 2: CopyLoc[3](Arg3: u64)
1808 3: Call dynamic_field::borrow<u64, Slice<u64>>(&UID, u64): &Slice<u64>
1809 4: StLoc[21](loc13: &Slice<u64>)
1810 5: CopyLoc[21](loc13: &Slice<u64>)
1811 6: CopyLoc[7](Arg7: u128)
1812 7: Call slice_bisect_right<u64>(&Slice<u64>, u128): u64
1813 8: StLoc[23](loc15: u64)
1814 9: CopyLoc[21](loc13: &Slice<u64>)
1815 10: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1816 11: CopyLoc[23](loc15: u64)
1817 12: VecImmBorrow(5)
1818 13: ReadRef
1819 14: StLoc[15](loc7: u64)
1820 15: CopyLoc[23](loc15: u64)
1821 16: LdU64(0)
1822 17: Eq
1823 18: BrFalse(24)
1824B1:
1825 19: LdConst[0](u64: 0)
1826 20: LdU128(0)
1827 21: StLoc[9](loc1: u128)
1828 22: StLoc[8](loc0: u64)
1829 23: Branch(40)
1830B2:
1831 24: CopyLoc[21](loc13: &Slice<u64>)
1832 25: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1833 26: CopyLoc[23](loc15: u64)
1834 27: LdU64(1)
1835 28: Sub
1836 29: VecImmBorrow(5)
1837 30: ReadRef
1838 31: CopyLoc[21](loc13: &Slice<u64>)
1839 32: ImmBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1840 33: CopyLoc[23](loc15: u64)
1841 34: LdU64(1)
1842 35: Sub
1843 36: VecImmBorrow(24)
1844 37: ReadRef
1845 38: StLoc[9](loc1: u128)
1846 39: StLoc[8](loc0: u64)
1847B3:
1848 40: MoveLoc[8](loc0: u64)
1849 41: MoveLoc[9](loc1: u128)
1850 42: StLoc[19](loc11: u128)
1851 43: StLoc[18](loc10: u64)
1852 44: CopyLoc[23](loc15: u64)
1853 45: CopyLoc[21](loc13: &Slice<u64>)
1854 46: ImmBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1855 47: VecLen(24)
1856 48: Eq
1857 49: BrFalse(57)
1858B4:
1859 50: MoveLoc[21](loc13: &Slice<u64>)
1860 51: Pop
1861 52: LdConst[0](u64: 0)
1862 53: LdU128(0)
1863 54: StLoc[11](loc3: u128)
1864 55: StLoc[10](loc2: u64)
1865 56: Branch(71)
1866B5:
1867 57: CopyLoc[21](loc13: &Slice<u64>)
1868 58: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1869 59: CopyLoc[23](loc15: u64)
1870 60: LdU64(1)
1871 61: Add
1872 62: VecImmBorrow(5)
1873 63: ReadRef
1874 64: MoveLoc[21](loc13: &Slice<u64>)
1875 65: ImmBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1876 66: CopyLoc[23](loc15: u64)
1877 67: VecImmBorrow(24)
1878 68: ReadRef
1879 69: StLoc[11](loc3: u128)
1880 70: StLoc[10](loc2: u64)
1881B6:
1882 71: MoveLoc[10](loc2: u64)
1883 72: MoveLoc[11](loc3: u128)
1884 73: StLoc[17](loc9: u128)
1885 74: StLoc[16](loc8: u64)
1886 75: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1887 76: MoveLoc[18](loc10: u64)
1888 77: MoveLoc[19](loc11: u128)
1889 78: MoveLoc[15](loc7: u64)
1890 79: MoveLoc[17](loc9: u128)
1891 80: MoveLoc[16](loc8: u64)
1892 81: MoveLoc[6](Arg6: u8)
1893 82: MoveLoc[7](Arg7: u128)
1894 83: Call slice_remove<Ty0>(&mut BigVector<Ty0>, u64, u128, u64, u128, u64, u8, u128): Ty0 * u8 * u128
1895 84: StLoc[24](loc16: u128)
1896 85: StLoc[26](loc18: u8)
1897 86: StLoc[27](loc19: Ty0)
1898 87: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
1899 88: MutBorrowFieldGeneric[3](BigVector.id: UID)
1900 89: CopyLoc[3](Arg3: u64)
1901 90: Call dynamic_field::borrow_mut<u64, Slice<u64>>(&mut UID, u64): &mut Slice<u64>
1902 91: StLoc[22](loc14: &mut Slice<u64>)
1903 92: CopyLoc[26](loc18: u8)
1904 93: LdConst[12](u8: 0)
1905 94: Eq
1906 95: BrFalse(104)
1907B7:
1908 96: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1909 97: Pop
1910 98: MoveLoc[22](loc14: &mut Slice<u64>)
1911 99: Pop
1912 100: MoveLoc[27](loc19: Ty0)
1913 101: LdConst[12](u8: 0)
1914 102: LdU128(0)
1915 103: Ret
1916B8:
1917 104: CopyLoc[26](loc18: u8)
1918 105: LdConst[14](u8: 2)
1919 106: Eq
1920 107: BrFalse(122)
1921B9:
1922 108: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1923 109: Pop
1924 110: MoveLoc[24](loc16: u128)
1925 111: MoveLoc[22](loc14: &mut Slice<u64>)
1926 112: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1927 113: MoveLoc[23](loc15: u64)
1928 114: LdU64(1)
1929 115: Sub
1930 116: VecMutBorrow(24)
1931 117: WriteRef
1932 118: MoveLoc[27](loc19: Ty0)
1933 119: LdConst[12](u8: 0)
1934 120: LdU128(0)
1935 121: Ret
1936B10:
1937 122: CopyLoc[26](loc18: u8)
1938 123: LdConst[15](u8: 3)
1939 124: Eq
1940 125: BrFalse(138)
1941B11:
1942 126: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1943 127: Pop
1944 128: MoveLoc[24](loc16: u128)
1945 129: MoveLoc[22](loc14: &mut Slice<u64>)
1946 130: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1947 131: MoveLoc[23](loc15: u64)
1948 132: VecMutBorrow(24)
1949 133: WriteRef
1950 134: MoveLoc[27](loc19: Ty0)
1951 135: LdConst[12](u8: 0)
1952 136: LdU128(0)
1953 137: Ret
1954B12:
1955 138: CopyLoc[26](loc18: u8)
1956 139: LdConst[16](u8: 4)
1957 140: Eq
1958 141: BrFalse(155)
1959B13:
1960 142: CopyLoc[22](loc14: &mut Slice<u64>)
1961 143: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1962 144: CopyLoc[23](loc15: u64)
1963 145: LdU64(1)
1964 146: Sub
1965 147: Call vector::remove<u128>(&mut vector<u128>, u64): u128
1966 148: Pop
1967 149: CopyLoc[22](loc14: &mut Slice<u64>)
1968 150: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1969 151: MoveLoc[23](loc15: u64)
1970 152: Call vector::remove<u64>(&mut vector<u64>, u64): u64
1971 153: Pop
1972 154: Branch(178)
1973B14:
1974 155: MoveLoc[26](loc18: u8)
1975 156: LdConst[17](u8: 5)
1976 157: Eq
1977 158: BrFalse(172)
1978B15:
1979 159: CopyLoc[22](loc14: &mut Slice<u64>)
1980 160: MutBorrowFieldGeneric[12](Slice.keys: vector<u128>)
1981 161: CopyLoc[23](loc15: u64)
1982 162: Call vector::remove<u128>(&mut vector<u128>, u64): u128
1983 163: Pop
1984 164: CopyLoc[22](loc14: &mut Slice<u64>)
1985 165: MutBorrowFieldGeneric[4](Slice.vals: vector<u64>)
1986 166: MoveLoc[23](loc15: u64)
1987 167: LdU64(1)
1988 168: Add
1989 169: Call vector::remove<u64>(&mut vector<u64>, u64): u64
1990 170: Pop
1991 171: Branch(178)
1992B16:
1993 172: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
1994 173: Pop
1995 174: MoveLoc[22](loc14: &mut Slice<u64>)
1996 175: Pop
1997 176: LdConst[7](u64: 7)
1998 177: Abort
1999B17:
2000 178: MoveLoc[22](loc14: &mut Slice<u64>)
2001 179: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
2002 180: VecLen(5)
2003 181: StLoc[25](loc17: u64)
2004 182: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2005 183: ImmBorrowFieldGeneric[14](BigVector.max_fan_out: u64)
2006 184: ReadRef
2007 185: LdU64(2)
2008 186: Div
2009 187: StLoc[20](loc12: u64)
2010 188: CopyLoc[25](loc17: u64)
2011 189: CopyLoc[20](loc12: u64)
2012 190: Ge
2013 191: BrFalse(198)
2014B18:
2015 192: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2016 193: Pop
2017 194: MoveLoc[27](loc19: Ty0)
2018 195: LdConst[12](u8: 0)
2019 196: LdU128(0)
2020 197: Ret
2021B19:
2022 198: CopyLoc[1](Arg1: u64)
2023 199: LdConst[0](u64: 0)
2024 200: Neq
2025 201: BrFalse(219)
2026B20:
2027 202: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2028 203: ImmBorrowFieldGeneric[3](BigVector.id: UID)
2029 204: CopyLoc[1](Arg1: u64)
2030 205: Call dynamic_field::borrow<u64, Slice<u64>>(&UID, u64): &Slice<u64>
2031 206: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
2032 207: VecLen(5)
2033 208: CopyLoc[20](loc12: u64)
2034 209: Gt
2035 210: BrFalse(219)
2036B21:
2037 211: MoveLoc[27](loc19: Ty0)
2038 212: LdConst[14](u8: 2)
2039 213: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2040 214: MoveLoc[1](Arg1: u64)
2041 215: MoveLoc[2](Arg2: u128)
2042 216: MoveLoc[3](Arg3: u64)
2043 217: Call slice_redistribute<Ty0, u64>(&mut BigVector<Ty0>, u64, u128, u64): u128
2044 218: Ret
2045B22:
2046 219: CopyLoc[5](Arg5: u64)
2047 220: LdConst[0](u64: 0)
2048 221: Neq
2049 222: BrFalse(240)
2050B23:
2051 223: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2052 224: ImmBorrowFieldGeneric[3](BigVector.id: UID)
2053 225: CopyLoc[5](Arg5: u64)
2054 226: Call dynamic_field::borrow<u64, Slice<u64>>(&UID, u64): &Slice<u64>
2055 227: ImmBorrowFieldGeneric[4](Slice.vals: vector<u64>)
2056 228: VecLen(5)
2057 229: MoveLoc[20](loc12: u64)
2058 230: Gt
2059 231: BrFalse(240)
2060B24:
2061 232: MoveLoc[27](loc19: Ty0)
2062 233: LdConst[15](u8: 3)
2063 234: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2064 235: MoveLoc[3](Arg3: u64)
2065 236: MoveLoc[4](Arg4: u128)
2066 237: MoveLoc[5](Arg5: u64)
2067 238: Call slice_redistribute<Ty0, u64>(&mut BigVector<Ty0>, u64, u128, u64): u128
2068 239: Ret
2069B25:
2070 240: CopyLoc[1](Arg1: u64)
2071 241: LdConst[0](u64: 0)
2072 242: Neq
2073 243: BrFalse(253)
2074B26:
2075 244: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2076 245: MoveLoc[1](Arg1: u64)
2077 246: MoveLoc[2](Arg2: u128)
2078 247: MoveLoc[3](Arg3: u64)
2079 248: Call slice_merge<Ty0, u64>(&mut BigVector<Ty0>, u64, u128, u64)
2080 249: MoveLoc[27](loc19: Ty0)
2081 250: LdConst[16](u8: 4)
2082 251: LdU128(0)
2083 252: Ret
2084B27:
2085 253: CopyLoc[5](Arg5: u64)
2086 254: LdConst[0](u64: 0)
2087 255: Neq
2088 256: BrFalse(266)
2089B28:
2090 257: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2091 258: MoveLoc[3](Arg3: u64)
2092 259: MoveLoc[4](Arg4: u128)
2093 260: MoveLoc[5](Arg5: u64)
2094 261: Call slice_merge<Ty0, u64>(&mut BigVector<Ty0>, u64, u128, u64)
2095 262: MoveLoc[27](loc19: Ty0)
2096 263: LdConst[17](u8: 5)
2097 264: LdU128(0)
2098 265: Ret
2099B29:
2100 266: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2101 267: Pop
2102 268: CopyLoc[25](loc17: u64)
2103 269: LdU64(0)
2104 270: Eq
2105 271: BrFalse(274)
2106B30:
2107 272: LdConst[7](u64: 7)
2108 273: Abort
2109B31:
2110 274: MoveLoc[25](loc17: u64)
2111 275: LdU64(1)
2112 276: Eq
2113 277: BrFalse(285)
2114B32:
2115 278: MoveLoc[27](loc19: Ty0)
2116 279: LdConst[13](u8: 1)
2117 280: LdU128(0)
2118 281: StLoc[14](loc6: u128)
2119 282: StLoc[13](loc5: u8)
2120 283: StLoc[12](loc4: Ty0)
2121 284: Branch(291)
2122B33:
2123 285: MoveLoc[27](loc19: Ty0)
2124 286: LdConst[12](u8: 0)
2125 287: LdU128(0)
2126 288: StLoc[14](loc6: u128)
2127 289: StLoc[13](loc5: u8)
2128 290: StLoc[12](loc4: Ty0)
2129B34:
2130 291: MoveLoc[12](loc4: Ty0)
2131 292: MoveLoc[13](loc5: u8)
2132 293: MoveLoc[14](loc6: u128)
2133 294: Ret
2134}
2135
2136slice_redistribute<Ty0: store, Ty1: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64): u128 {
2137L4: loc0: vector<u128>
2138L5: loc1: vector<u128>
2139L6: loc2: u128
2140L7: loc3: vector<u128>
2141L8: loc4: vector<u128>
2142L9: loc5: u128
2143L10: loc6: vector<u128>
2144L11: loc7: bool
2145L12: loc8: vector<Ty1>
2146L13: loc9: vector<Ty1>
2147L14: loc10: bool
2148L15: loc11: bool
2149L16: loc12: bool
2150L17: loc13: vector<u128>
2151L18: loc14: u128
2152L19: loc15: bool
2153L20: loc16: Slice<Ty1>
2154L21: loc17: bool
2155L22: loc18: vector<u128>
2156L23: loc19: vector<u128>
2157L24: loc20: u64
2158L25: loc21: u64
2159L26: loc22: vector<Ty1>
2160L27: loc23: vector<Ty1>
2161L28: loc24: vector<u128>
2162L29: loc25: vector<u128>
2163L30: loc26: vector<u128>
2164L31: loc27: vector<u128>
2165L32: loc28: vector<Ty1>
2166L33: loc29: vector<Ty1>
2167L34: loc30: u64
2168L35: loc31: u64
2169L36: loc32: u64
2170L37: loc33: u64
2171L38: loc34: u128
2172L39: loc35: u128
2173L40: loc36: u128
2174L41: loc37: u128
2175L42: loc38: u128
2176L43: loc39: Slice<Ty1>
2177L44: loc40: vector<u128>
2178L45: loc41: vector<u128>
2179L46: loc42: vector<u128>
2180L47: loc43: vector<u128>
2181L48: loc44: u64
2182L49: loc45: u64
2183L50: loc46: vector<Ty1>
2184L51: loc47: vector<Ty1>
2185L52: loc48: vector<Ty1>
2186L53: loc49: u64
2187B0:
2188 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2189 1: MutBorrowFieldGeneric[3](BigVector.id: UID)
2190 2: CopyLoc[1](Arg1: u64)
2191 3: Call dynamic_field::remove<u64, Slice<Ty1>>(&mut UID, u64): Slice<Ty1>
2192 4: StLoc[20](loc16: Slice<Ty1>)
2193 5: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2194 6: MutBorrowFieldGeneric[3](BigVector.id: UID)
2195 7: CopyLoc[3](Arg3: u64)
2196 8: Call dynamic_field::remove<u64, Slice<Ty1>>(&mut UID, u64): Slice<Ty1>
2197 9: StLoc[43](loc39: Slice<Ty1>)
2198 10: ImmBorrowLoc[20](loc16: Slice<Ty1>)
2199 11: ImmBorrowFieldGeneric[10](Slice.next: u64)
2200 12: ReadRef
2201 13: CopyLoc[3](Arg3: u64)
2202 14: Eq
2203 15: BrFalse(17)
2204B1:
2205 16: Branch(21)
2206B2:
2207 17: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2208 18: Pop
2209 19: LdConst[8](u64: 8)
2210 20: Abort
2211B3:
2212 21: ImmBorrowLoc[43](loc39: Slice<Ty1>)
2213 22: ImmBorrowFieldGeneric[9](Slice.prev: u64)
2214 23: ReadRef
2215 24: CopyLoc[1](Arg1: u64)
2216 25: Eq
2217 26: BrFalse(28)
2218B4:
2219 27: Branch(32)
2220B5:
2221 28: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2222 29: Pop
2223 30: LdConst[8](u64: 8)
2224 31: Abort
2225B6:
2226 32: ImmBorrowLoc[20](loc16: Slice<Ty1>)
2227 33: Call slice_is_leaf<Ty1>(&Slice<Ty1>): bool
2228 34: StLoc[19](loc15: bool)
2229 35: MoveLoc[20](loc16: Slice<Ty1>)
2230 36: UnpackGeneric[3](Slice<Ty1>)
2231 37: StLoc[26](loc22: vector<Ty1>)
2232 38: StLoc[22](loc18: vector<u128>)
2233 39: StLoc[24](loc20: u64)
2234 40: StLoc[25](loc21: u64)
2235 41: MoveLoc[43](loc39: Slice<Ty1>)
2236 42: UnpackGeneric[3](Slice<Ty1>)
2237 43: StLoc[50](loc46: vector<Ty1>)
2238 44: StLoc[44](loc40: vector<u128>)
2239 45: StLoc[48](loc44: u64)
2240 46: StLoc[49](loc45: u64)
2241 47: ImmBorrowLoc[26](loc22: vector<Ty1>)
2242 48: VecLen(51)
2243 49: StLoc[36](loc32: u64)
2244 50: ImmBorrowLoc[50](loc46: vector<Ty1>)
2245 51: VecLen(51)
2246 52: StLoc[37](loc33: u64)
2247 53: CopyLoc[36](loc32: u64)
2248 54: CopyLoc[37](loc33: u64)
2249 55: Add
2250 56: StLoc[53](loc49: u64)
2251 57: CopyLoc[53](loc49: u64)
2252 58: LdU64(2)
2253 59: Div
2254 60: StLoc[34](loc30: u64)
2255 61: MoveLoc[53](loc49: u64)
2256 62: CopyLoc[34](loc30: u64)
2257 63: Sub
2258 64: StLoc[35](loc31: u64)
2259 65: CopyLoc[34](loc30: u64)
2260 66: MoveLoc[36](loc32: u64)
2261 67: Lt
2262 68: BrFalse(72)
2263B7:
2264 69: LdTrue
2265 70: StLoc[11](loc7: bool)
2266 71: Branch(83)
2267B8:
2268 72: CopyLoc[35](loc31: u64)
2269 73: MoveLoc[37](loc33: u64)
2270 74: Lt
2271 75: BrFalse(77)
2272B9:
2273 76: Branch(81)
2274B10:
2275 77: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2276 78: Pop
2277 79: LdConst[9](u64: 9)
2278 80: Abort
2279B11:
2280 81: LdFalse
2281 82: StLoc[11](loc7: bool)
2282B12:
2283 83: MoveLoc[11](loc7: bool)
2284 84: StLoc[21](loc17: bool)
2285 85: CopyLoc[21](loc17: bool)
2286 86: BrFalse(99)
2287B13:
2288 87: MutBorrowLoc[26](loc22: vector<Ty1>)
2289 88: CopyLoc[34](loc30: u64)
2290 89: Call utils::pop_until<Ty1>(&mut vector<Ty1>, u64): vector<Ty1>
2291 90: StLoc[32](loc28: vector<Ty1>)
2292 91: MutBorrowLoc[32](loc28: vector<Ty1>)
2293 92: MoveLoc[50](loc46: vector<Ty1>)
2294 93: Call vector::append<Ty1>(&mut vector<Ty1>, vector<Ty1>)
2295 94: MoveLoc[26](loc22: vector<Ty1>)
2296 95: MoveLoc[32](loc28: vector<Ty1>)
2297 96: StLoc[13](loc9: vector<Ty1>)
2298 97: StLoc[12](loc8: vector<Ty1>)
2299 98: Branch(112)
2300B14:
2301 99: MoveLoc[50](loc46: vector<Ty1>)
2302 100: StLoc[33](loc29: vector<Ty1>)
2303 101: MutBorrowLoc[33](loc29: vector<Ty1>)
2304 102: CopyLoc[35](loc31: u64)
2305 103: Call utils::pop_n<Ty1>(&mut vector<Ty1>, u64): vector<Ty1>
2306 104: StLoc[51](loc47: vector<Ty1>)
2307 105: MutBorrowLoc[26](loc22: vector<Ty1>)
2308 106: MoveLoc[33](loc29: vector<Ty1>)
2309 107: Call vector::append<Ty1>(&mut vector<Ty1>, vector<Ty1>)
2310 108: MoveLoc[26](loc22: vector<Ty1>)
2311 109: MoveLoc[51](loc47: vector<Ty1>)
2312 110: StLoc[13](loc9: vector<Ty1>)
2313 111: StLoc[12](loc8: vector<Ty1>)
2314B15:
2315 112: MoveLoc[12](loc8: vector<Ty1>)
2316 113: MoveLoc[13](loc9: vector<Ty1>)
2317 114: StLoc[52](loc48: vector<Ty1>)
2318 115: StLoc[27](loc23: vector<Ty1>)
2319 116: CopyLoc[19](loc15: bool)
2320 117: BrFalse(121)
2321B16:
2322 118: CopyLoc[21](loc17: bool)
2323 119: StLoc[14](loc10: bool)
2324 120: Branch(123)
2325B17:
2326 121: LdFalse
2327 122: StLoc[14](loc10: bool)
2328B18:
2329 123: MoveLoc[14](loc10: bool)
2330 124: BrFalse(144)
2331B19:
2332 125: MutBorrowLoc[22](loc18: vector<u128>)
2333 126: MoveLoc[34](loc30: u64)
2334 127: Call utils::pop_until<u128>(&mut vector<u128>, u64): vector<u128>
2335 128: StLoc[28](loc24: vector<u128>)
2336 129: ImmBorrowLoc[28](loc24: vector<u128>)
2337 130: LdU64(0)
2338 131: VecImmBorrow(24)
2339 132: ReadRef
2340 133: StLoc[38](loc34: u128)
2341 134: MutBorrowLoc[28](loc24: vector<u128>)
2342 135: MoveLoc[44](loc40: vector<u128>)
2343 136: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
2344 137: MoveLoc[22](loc18: vector<u128>)
2345 138: MoveLoc[38](loc34: u128)
2346 139: MoveLoc[28](loc24: vector<u128>)
2347 140: StLoc[10](loc6: vector<u128>)
2348 141: StLoc[9](loc5: u128)
2349 142: StLoc[8](loc4: vector<u128>)
2350 143: Branch(240)
2351B20:
2352 144: CopyLoc[19](loc15: bool)
2353 145: BrFalse(150)
2354B21:
2355 146: CopyLoc[21](loc17: bool)
2356 147: Not
2357 148: StLoc[15](loc11: bool)
2358 149: Branch(152)
2359B22:
2360 150: LdFalse
2361 151: StLoc[15](loc11: bool)
2362B23:
2363 152: MoveLoc[15](loc11: bool)
2364 153: BrFalse(175)
2365B24:
2366 154: MoveLoc[44](loc40: vector<u128>)
2367 155: StLoc[29](loc25: vector<u128>)
2368 156: MutBorrowLoc[29](loc25: vector<u128>)
2369 157: MoveLoc[35](loc31: u64)
2370 158: Call utils::pop_n<u128>(&mut vector<u128>, u64): vector<u128>
2371 159: StLoc[45](loc41: vector<u128>)
2372 160: ImmBorrowLoc[45](loc41: vector<u128>)
2373 161: LdU64(0)
2374 162: VecImmBorrow(24)
2375 163: ReadRef
2376 164: StLoc[39](loc35: u128)
2377 165: MutBorrowLoc[22](loc18: vector<u128>)
2378 166: MoveLoc[29](loc25: vector<u128>)
2379 167: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
2380 168: MoveLoc[22](loc18: vector<u128>)
2381 169: MoveLoc[39](loc35: u128)
2382 170: MoveLoc[45](loc41: vector<u128>)
2383 171: StLoc[7](loc3: vector<u128>)
2384 172: StLoc[6](loc2: u128)
2385 173: StLoc[5](loc1: vector<u128>)
2386 174: Branch(234)
2387B25:
2388 175: MoveLoc[19](loc15: bool)
2389 176: Not
2390 177: BrFalse(181)
2391B26:
2392 178: MoveLoc[21](loc17: bool)
2393 179: StLoc[16](loc12: bool)
2394 180: Branch(183)
2395B27:
2396 181: LdFalse
2397 182: StLoc[16](loc12: bool)
2398B28:
2399 183: MoveLoc[16](loc12: bool)
2400 184: BrFalse(205)
2401B29:
2402 185: MutBorrowLoc[22](loc18: vector<u128>)
2403 186: MoveLoc[34](loc30: u64)
2404 187: Call utils::pop_until<u128>(&mut vector<u128>, u64): vector<u128>
2405 188: StLoc[30](loc26: vector<u128>)
2406 189: MutBorrowLoc[30](loc26: vector<u128>)
2407 190: MoveLoc[2](Arg2: u128)
2408 191: VecPushBack(24)
2409 192: MutBorrowLoc[30](loc26: vector<u128>)
2410 193: MoveLoc[44](loc40: vector<u128>)
2411 194: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
2412 195: MutBorrowLoc[22](loc18: vector<u128>)
2413 196: VecPopBack(24)
2414 197: StLoc[40](loc36: u128)
2415 198: MoveLoc[22](loc18: vector<u128>)
2416 199: MoveLoc[40](loc36: u128)
2417 200: MoveLoc[30](loc26: vector<u128>)
2418 201: StLoc[4](loc0: vector<u128>)
2419 202: StLoc[18](loc14: u128)
2420 203: StLoc[17](loc13: vector<u128>)
2421 204: Branch(228)
2422B30:
2423 205: MutBorrowLoc[22](loc18: vector<u128>)
2424 206: MoveLoc[2](Arg2: u128)
2425 207: VecPushBack(24)
2426 208: MoveLoc[44](loc40: vector<u128>)
2427 209: StLoc[31](loc27: vector<u128>)
2428 210: MutBorrowLoc[31](loc27: vector<u128>)
2429 211: MoveLoc[35](loc31: u64)
2430 212: LdU64(1)
2431 213: Sub
2432 214: Call utils::pop_n<u128>(&mut vector<u128>, u64): vector<u128>
2433 215: StLoc[46](loc42: vector<u128>)
2434 216: MutBorrowLoc[31](loc27: vector<u128>)
2435 217: VecPopBack(24)
2436 218: StLoc[41](loc37: u128)
2437 219: MutBorrowLoc[22](loc18: vector<u128>)
2438 220: MoveLoc[31](loc27: vector<u128>)
2439 221: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
2440 222: MoveLoc[22](loc18: vector<u128>)
2441 223: MoveLoc[41](loc37: u128)
2442 224: MoveLoc[46](loc42: vector<u128>)
2443 225: StLoc[4](loc0: vector<u128>)
2444 226: StLoc[18](loc14: u128)
2445 227: StLoc[17](loc13: vector<u128>)
2446B31:
2447 228: MoveLoc[17](loc13: vector<u128>)
2448 229: MoveLoc[18](loc14: u128)
2449 230: MoveLoc[4](loc0: vector<u128>)
2450 231: StLoc[7](loc3: vector<u128>)
2451 232: StLoc[6](loc2: u128)
2452 233: StLoc[5](loc1: vector<u128>)
2453B32:
2454 234: MoveLoc[5](loc1: vector<u128>)
2455 235: MoveLoc[6](loc2: u128)
2456 236: MoveLoc[7](loc3: vector<u128>)
2457 237: StLoc[10](loc6: vector<u128>)
2458 238: StLoc[9](loc5: u128)
2459 239: StLoc[8](loc4: vector<u128>)
2460B33:
2461 240: MoveLoc[8](loc4: vector<u128>)
2462 241: MoveLoc[9](loc5: u128)
2463 242: MoveLoc[10](loc6: vector<u128>)
2464 243: StLoc[47](loc43: vector<u128>)
2465 244: StLoc[42](loc38: u128)
2466 245: StLoc[23](loc19: vector<u128>)
2467 246: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2468 247: MutBorrowFieldGeneric[3](BigVector.id: UID)
2469 248: MoveLoc[1](Arg1: u64)
2470 249: MoveLoc[25](loc21: u64)
2471 250: MoveLoc[24](loc20: u64)
2472 251: MoveLoc[23](loc19: vector<u128>)
2473 252: MoveLoc[27](loc23: vector<Ty1>)
2474 253: PackGeneric[3](Slice<Ty1>)
2475 254: Call dynamic_field::add<u64, Slice<Ty1>>(&mut UID, u64, Slice<Ty1>)
2476 255: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2477 256: MutBorrowFieldGeneric[3](BigVector.id: UID)
2478 257: MoveLoc[3](Arg3: u64)
2479 258: MoveLoc[49](loc45: u64)
2480 259: MoveLoc[48](loc44: u64)
2481 260: MoveLoc[47](loc43: vector<u128>)
2482 261: MoveLoc[52](loc48: vector<Ty1>)
2483 262: PackGeneric[3](Slice<Ty1>)
2484 263: Call dynamic_field::add<u64, Slice<Ty1>>(&mut UID, u64, Slice<Ty1>)
2485 264: MoveLoc[42](loc38: u128)
2486 265: Ret
2487}
2488
2489slice_merge<Ty0: store, Ty1: store>(Arg0: &mut BigVector<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64) {
2490L4: loc0: vector<u128>
2491L5: loc1: &mut Slice<Ty1>
2492L6: loc2: u64
2493L7: loc3: &mut Slice<Ty1>
2494L8: loc4: Slice<Ty1>
2495L9: loc5: vector<Ty1>
2496B0:
2497 0: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2498 1: MutBorrowFieldGeneric[3](BigVector.id: UID)
2499 2: CopyLoc[3](Arg3: u64)
2500 3: Call dynamic_field::remove<u64, Slice<Ty1>>(&mut UID, u64): Slice<Ty1>
2501 4: StLoc[8](loc4: Slice<Ty1>)
2502 5: CopyLoc[0](Arg0: &mut BigVector<Ty0>)
2503 6: MutBorrowFieldGeneric[3](BigVector.id: UID)
2504 7: CopyLoc[1](Arg1: u64)
2505 8: Call dynamic_field::borrow_mut<u64, Slice<Ty1>>(&mut UID, u64): &mut Slice<Ty1>
2506 9: StLoc[5](loc1: &mut Slice<Ty1>)
2507 10: CopyLoc[5](loc1: &mut Slice<Ty1>)
2508 11: ImmBorrowFieldGeneric[10](Slice.next: u64)
2509 12: ReadRef
2510 13: MoveLoc[3](Arg3: u64)
2511 14: Eq
2512 15: BrFalse(17)
2513B1:
2514 16: Branch(23)
2515B2:
2516 17: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2517 18: Pop
2518 19: MoveLoc[5](loc1: &mut Slice<Ty1>)
2519 20: Pop
2520 21: LdConst[8](u64: 8)
2521 22: Abort
2522B3:
2523 23: ImmBorrowLoc[8](loc4: Slice<Ty1>)
2524 24: ImmBorrowFieldGeneric[9](Slice.prev: u64)
2525 25: ReadRef
2526 26: CopyLoc[1](Arg1: u64)
2527 27: Eq
2528 28: BrFalse(30)
2529B4:
2530 29: Branch(36)
2531B5:
2532 30: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2533 31: Pop
2534 32: MoveLoc[5](loc1: &mut Slice<Ty1>)
2535 33: Pop
2536 34: LdConst[8](u64: 8)
2537 35: Abort
2538B6:
2539 36: CopyLoc[5](loc1: &mut Slice<Ty1>)
2540 37: FreezeRef
2541 38: Call slice_is_leaf<Ty1>(&Slice<Ty1>): bool
2542 39: Not
2543 40: BrFalse(45)
2544B7:
2545 41: CopyLoc[5](loc1: &mut Slice<Ty1>)
2546 42: MutBorrowFieldGeneric[16](Slice.keys: vector<u128>)
2547 43: MoveLoc[2](Arg2: u128)
2548 44: VecPushBack(24)
2549B8:
2550 45: MoveLoc[8](loc4: Slice<Ty1>)
2551 46: UnpackGeneric[3](Slice<Ty1>)
2552 47: StLoc[9](loc5: vector<Ty1>)
2553 48: StLoc[4](loc0: vector<u128>)
2554 49: StLoc[6](loc2: u64)
2555 50: Pop
2556 51: CopyLoc[5](loc1: &mut Slice<Ty1>)
2557 52: MutBorrowFieldGeneric[16](Slice.keys: vector<u128>)
2558 53: MoveLoc[4](loc0: vector<u128>)
2559 54: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
2560 55: CopyLoc[5](loc1: &mut Slice<Ty1>)
2561 56: MutBorrowFieldGeneric[17](Slice.vals: vector<Ty1>)
2562 57: MoveLoc[9](loc5: vector<Ty1>)
2563 58: Call vector::append<Ty1>(&mut vector<Ty1>, vector<Ty1>)
2564 59: CopyLoc[6](loc2: u64)
2565 60: MoveLoc[5](loc1: &mut Slice<Ty1>)
2566 61: MutBorrowFieldGeneric[10](Slice.next: u64)
2567 62: WriteRef
2568 63: CopyLoc[6](loc2: u64)
2569 64: LdConst[0](u64: 0)
2570 65: Neq
2571 66: BrFalse(77)
2572B9:
2573 67: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2574 68: MutBorrowFieldGeneric[3](BigVector.id: UID)
2575 69: MoveLoc[6](loc2: u64)
2576 70: Call dynamic_field::borrow_mut<u64, Slice<Ty1>>(&mut UID, u64): &mut Slice<Ty1>
2577 71: StLoc[7](loc3: &mut Slice<Ty1>)
2578 72: MoveLoc[1](Arg1: u64)
2579 73: MoveLoc[7](loc3: &mut Slice<Ty1>)
2580 74: MutBorrowFieldGeneric[9](Slice.prev: u64)
2581 75: WriteRef
2582 76: Branch(79)
2583B10:
2584 77: MoveLoc[0](Arg0: &mut BigVector<Ty0>)
2585 78: Pop
2586B11:
2587 79: Ret
2588}
2589
2590Constants [
2591 0 => u64: 0
2592 1 => u64: 1
2593 2 => u64: 2
2594 3 => u64: 3
2595 4 => u64: 4
2596 5 => u64: 5
2597 6 => u64: 6
2598 7 => u64: 7
2599 8 => u64: 8
2600 9 => u64: 9
2601 10 => u64: 4096
2602 11 => u64: 262144
2603 12 => u8: 0
2604 13 => u8: 1
2605 14 => u8: 2
2606 15 => u8: 3
2607 16 => u8: 4
2608 17 => u8: 5
2609]
2610}
2611
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/book.mvb1478 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.book {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::big_vector;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
6use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::deep_price;
7use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::fill;
8use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
9use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order;
10use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order_info;
11use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::utils;
12use 0000000000000000000000000000000000000000000000000000000000000001::u64;
13use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
14
15struct Book has store {
16 tick_size: u64,
17 lot_size: u64,
18 min_size: u64,
19 bids: BigVector<Order>,
20 asks: BigVector<Order>,
21 next_bid_order_id: u64,
22 next_ask_order_id: u64
23}
24
25public(friend) bids(Arg0: &Book): &BigVector<Order> {
26B0:
27 0: MoveLoc[0](Arg0: &Book)
28 1: ImmBorrowField[0](Book.bids: BigVector<Order>)
29 2: Ret
30}
31
32public(friend) asks(Arg0: &Book): &BigVector<Order> {
33B0:
34 0: MoveLoc[0](Arg0: &Book)
35 1: ImmBorrowField[1](Book.asks: BigVector<Order>)
36 2: Ret
37}
38
39public(friend) tick_size(Arg0: &Book): u64 {
40B0:
41 0: MoveLoc[0](Arg0: &Book)
42 1: ImmBorrowField[2](Book.tick_size: u64)
43 2: ReadRef
44 3: Ret
45}
46
47public(friend) lot_size(Arg0: &Book): u64 {
48B0:
49 0: MoveLoc[0](Arg0: &Book)
50 1: ImmBorrowField[3](Book.lot_size: u64)
51 2: ReadRef
52 3: Ret
53}
54
55public(friend) min_size(Arg0: &Book): u64 {
56B0:
57 0: MoveLoc[0](Arg0: &Book)
58 1: ImmBorrowField[4](Book.min_size: u64)
59 2: ReadRef
60 3: Ret
61}
62
63public(friend) empty(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: &mut TxContext): Book {
64B0:
65 0: MoveLoc[0](Arg0: u64)
66 1: MoveLoc[1](Arg1: u64)
67 2: MoveLoc[2](Arg2: u64)
68 3: Call constants::max_slice_size(): u64
69 4: Call constants::max_fan_out(): u64
70 5: CopyLoc[3](Arg3: &mut TxContext)
71 6: Call big_vector::empty<Order>(u64, u64, &mut TxContext): BigVector<Order>
72 7: Call constants::max_slice_size(): u64
73 8: Call constants::max_fan_out(): u64
74 9: MoveLoc[3](Arg3: &mut TxContext)
75 10: Call big_vector::empty<Order>(u64, u64, &mut TxContext): BigVector<Order>
76 11: LdConst[7](u64: 1844..)
77 12: LdConst[0](u64: 1)
78 13: Pack[0](Book)
79 14: Ret
80}
81
82public(friend) create_order(Arg0: &mut Book, Arg1: &mut OrderInfo, Arg2: u64) {
83L3: loc0: u128
84B0:
85 0: CopyLoc[1](Arg1: &mut OrderInfo)
86 1: FreezeRef
87 2: CopyLoc[0](Arg0: &mut Book)
88 3: ImmBorrowField[2](Book.tick_size: u64)
89 4: ReadRef
90 5: CopyLoc[0](Arg0: &mut Book)
91 6: ImmBorrowField[4](Book.min_size: u64)
92 7: ReadRef
93 8: CopyLoc[0](Arg0: &mut Book)
94 9: ImmBorrowField[3](Book.lot_size: u64)
95 10: ReadRef
96 11: CopyLoc[2](Arg2: u64)
97 12: Call order_info::validate_inputs(&OrderInfo, u64, u64, u64, u64)
98 13: CopyLoc[1](Arg1: &mut OrderInfo)
99 14: FreezeRef
100 15: Call order_info::is_bid(&OrderInfo): bool
101 16: CopyLoc[1](Arg1: &mut OrderInfo)
102 17: FreezeRef
103 18: Call order_info::price(&OrderInfo): u64
104 19: CopyLoc[0](Arg0: &mut Book)
105 20: CopyLoc[1](Arg1: &mut OrderInfo)
106 21: FreezeRef
107 22: Call order_info::is_bid(&OrderInfo): bool
108 23: Call get_order_id(&mut Book, bool): u64
109 24: Call utils::encode_order_id(bool, u64, u64): u128
110 25: StLoc[3](loc0: u128)
111 26: CopyLoc[1](Arg1: &mut OrderInfo)
112 27: MoveLoc[3](loc0: u128)
113 28: Call order_info::set_order_id(&mut OrderInfo, u128)
114 29: CopyLoc[0](Arg0: &mut Book)
115 30: CopyLoc[1](Arg1: &mut OrderInfo)
116 31: MoveLoc[2](Arg2: u64)
117 32: Call match_against_book(&mut Book, &mut OrderInfo, u64)
118 33: CopyLoc[1](Arg1: &mut OrderInfo)
119 34: Call order_info::assert_execution(&mut OrderInfo): bool
120 35: BrFalse(41)
121B1:
122 36: MoveLoc[0](Arg0: &mut Book)
123 37: Pop
124 38: MoveLoc[1](Arg1: &mut OrderInfo)
125 39: Pop
126 40: Ret
127B2:
128 41: MoveLoc[0](Arg0: &mut Book)
129 42: CopyLoc[1](Arg1: &mut OrderInfo)
130 43: FreezeRef
131 44: Call inject_limit_order(&mut Book, &OrderInfo)
132 45: CopyLoc[1](Arg1: &mut OrderInfo)
133 46: Call order_info::set_order_inserted(&mut OrderInfo)
134 47: MoveLoc[1](Arg1: &mut OrderInfo)
135 48: FreezeRef
136 49: Call order_info::emit_order_placed(&OrderInfo)
137 50: Ret
138}
139
140public(friend) get_quantity_out(Arg0: &Book, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: OrderDeepPrice, Arg5: u64, Arg6: bool, Arg7: u64): u64 * u64 * u64 {
141L8: loc0: u64
142L9: loc1: u64
143L10: loc2: u64
144L11: loc3: u64
145L12: loc4: u64
146L13: loc5: &BigVector<Order>
147L14: loc6: SliceRef
148L15: loc7: u64
149L16: loc8: bool
150L17: loc9: u64
151L18: loc10: SliceRef
152L19: loc11: u64
153L20: loc12: Balances
154L21: loc13: &BigVector<Order>
155L22: loc14: u64
156L23: loc15: u64
157L24: loc16: u64
158L25: loc17: u64
159L26: loc18: Balances
160L27: loc19: u64
161L28: loc20: bool
162L29: loc21: u64
163L30: loc22: u64
164L31: loc23: u64
165L32: loc24: u64
166L33: loc25: &Order
167L34: loc26: u64
168L35: loc27: u64
169L36: loc28: u64
170L37: loc29: SliceRef
171B0:
172 0: CopyLoc[1](Arg1: u64)
173 1: LdU64(0)
174 2: Gt
175 3: CopyLoc[2](Arg2: u64)
176 4: LdU64(0)
177 5: Gt
178 6: Neq
179 7: BrFalse(9)
180B1:
181 8: Branch(13)
182B2:
183 9: MoveLoc[0](Arg0: &Book)
184 10: Pop
185 11: LdConst[0](u64: 1)
186 12: Abort
187B3:
188 13: CopyLoc[2](Arg2: u64)
189 14: LdU64(0)
190 15: Gt
191 16: StLoc[28](loc20: bool)
192 17: LdU64(0)
193 18: StLoc[35](loc27: u64)
194 19: CopyLoc[28](loc20: bool)
195 20: BrFalse(24)
196B4:
197 21: CopyLoc[2](Arg2: u64)
198 22: StLoc[8](loc0: u64)
199 23: Branch(26)
200B5:
201 24: CopyLoc[1](Arg1: u64)
202 25: StLoc[8](loc0: u64)
203B6:
204 26: MoveLoc[8](loc0: u64)
205 27: StLoc[34](loc26: u64)
206 28: Call constants::fee_penalty_multiplier(): u64
207 29: CopyLoc[3](Arg3: u64)
208 30: Call math::mul(u64, u64): u64
209 31: StLoc[27](loc19: u64)
210 32: CopyLoc[28](loc20: bool)
211 33: BrFalse(38)
212B7:
213 34: MoveLoc[0](Arg0: &Book)
214 35: ImmBorrowField[1](Book.asks: BigVector<Order>)
215 36: StLoc[13](loc5: &BigVector<Order>)
216 37: Branch(41)
217B8:
218 38: MoveLoc[0](Arg0: &Book)
219 39: ImmBorrowField[0](Book.bids: BigVector<Order>)
220 40: StLoc[13](loc5: &BigVector<Order>)
221B9:
222 41: MoveLoc[13](loc5: &BigVector<Order>)
223 42: StLoc[21](loc13: &BigVector<Order>)
224 43: CopyLoc[28](loc20: bool)
225 44: BrFalse(50)
226B10:
227 45: CopyLoc[21](loc13: &BigVector<Order>)
228 46: Call big_vector::min_slice<Order>(&BigVector<Order>): SliceRef * u64
229 47: StLoc[15](loc7: u64)
230 48: StLoc[14](loc6: SliceRef)
231 49: Branch(54)
232B11:
233 50: CopyLoc[21](loc13: &BigVector<Order>)
234 51: Call big_vector::max_slice<Order>(&BigVector<Order>): SliceRef * u64
235 52: StLoc[15](loc7: u64)
236 53: StLoc[14](loc6: SliceRef)
237B12:
238 54: MoveLoc[14](loc6: SliceRef)
239 55: MoveLoc[15](loc7: u64)
240 56: StLoc[32](loc24: u64)
241 57: StLoc[37](loc29: SliceRef)
242 58: Call constants::max_fills(): u64
243 59: StLoc[31](loc23: u64)
244 60: LdU64(0)
245 61: StLoc[24](loc16: u64)
246B13:
247 62: ImmBorrowLoc[37](loc29: SliceRef)
248 63: Call big_vector::slice_is_null(&SliceRef): bool
249 64: Not
250 65: BrFalse(79)
251B14:
252 66: CopyLoc[34](loc26: u64)
253 67: LdU64(0)
254 68: Gt
255 69: BrFalse(76)
256B15:
257 70: Branch(71)
258B16:
259 71: CopyLoc[24](loc16: u64)
260 72: CopyLoc[31](loc23: u64)
261 73: Lt
262 74: StLoc[16](loc8: bool)
263 75: Branch(81)
264B17:
265 76: LdFalse
266 77: StLoc[16](loc8: bool)
267 78: Branch(81)
268B18:
269 79: LdFalse
270 80: StLoc[16](loc8: bool)
271B19:
272 81: MoveLoc[16](loc8: bool)
273 82: BrFalse(212)
274B20:
275 83: CopyLoc[21](loc13: &BigVector<Order>)
276 84: CopyLoc[37](loc29: SliceRef)
277 85: Call big_vector::borrow_slice<Order>(&BigVector<Order>, SliceRef): &Slice<Order>
278 86: CopyLoc[32](loc24: u64)
279 87: Call big_vector::slice_borrow<Order>(&Slice<Order>, u64): &Order
280 88: StLoc[33](loc25: &Order)
281 89: CopyLoc[33](loc25: &Order)
282 90: Call order::price(&Order): u64
283 91: StLoc[22](loc14: u64)
284 92: CopyLoc[33](loc25: &Order)
285 93: Call order::quantity(&Order): u64
286 94: CopyLoc[33](loc25: &Order)
287 95: Call order::filled_quantity(&Order): u64
288 96: Sub
289 97: StLoc[23](loc15: u64)
290 98: CopyLoc[7](Arg7: u64)
291 99: MoveLoc[33](loc25: &Order)
292 100: Call order::expire_timestamp(&Order): u64
293 101: Le
294 102: BrFalse(188)
295B21:
296 103: CopyLoc[6](Arg6: bool)
297 104: BrFalse(108)
298B22:
299 105: CopyLoc[34](loc26: u64)
300 106: StLoc[17](loc9: u64)
301 107: Branch(114)
302B23:
303 108: CopyLoc[34](loc26: u64)
304 109: Call constants::float_scaling(): u64
305 110: CopyLoc[27](loc19: u64)
306 111: Add
307 112: Call math::div(u64, u64): u64
308 113: StLoc[17](loc9: u64)
309B24:
310 114: MoveLoc[17](loc9: u64)
311 115: StLoc[36](loc28: u64)
312 116: CopyLoc[28](loc20: bool)
313 117: BrFalse(152)
314B25:
315 118: MoveLoc[36](loc28: u64)
316 119: CopyLoc[22](loc14: u64)
317 120: Call math::div(u64, u64): u64
318 121: MoveLoc[23](loc15: u64)
319 122: Call u64::min(u64, u64): u64
320 123: StLoc[29](loc21: u64)
321 124: CopyLoc[29](loc21: u64)
322 125: MoveLoc[29](loc21: u64)
323 126: CopyLoc[5](Arg5: u64)
324 127: Mod
325 128: Sub
326 129: StLoc[29](loc21: u64)
327 130: MoveLoc[35](loc27: u64)
328 131: CopyLoc[29](loc21: u64)
329 132: Add
330 133: StLoc[35](loc27: u64)
331 134: CopyLoc[29](loc21: u64)
332 135: MoveLoc[22](loc14: u64)
333 136: Call math::mul(u64, u64): u64
334 137: StLoc[30](loc22: u64)
335 138: MoveLoc[34](loc26: u64)
336 139: CopyLoc[30](loc22: u64)
337 140: Sub
338 141: StLoc[34](loc26: u64)
339 142: CopyLoc[6](Arg6: bool)
340 143: Not
341 144: BrFalse(181)
342B26:
343 145: MoveLoc[34](loc26: u64)
344 146: MoveLoc[30](loc22: u64)
345 147: CopyLoc[27](loc19: u64)
346 148: Call math::mul(u64, u64): u64
347 149: Sub
348 150: StLoc[34](loc26: u64)
349 151: Branch(181)
350B27:
351 152: MoveLoc[36](loc28: u64)
352 153: MoveLoc[23](loc15: u64)
353 154: Call u64::min(u64, u64): u64
354 155: StLoc[29](loc21: u64)
355 156: CopyLoc[29](loc21: u64)
356 157: MoveLoc[29](loc21: u64)
357 158: CopyLoc[5](Arg5: u64)
358 159: Mod
359 160: Sub
360 161: StLoc[29](loc21: u64)
361 162: MoveLoc[35](loc27: u64)
362 163: CopyLoc[29](loc21: u64)
363 164: MoveLoc[22](loc14: u64)
364 165: Call math::mul(u64, u64): u64
365 166: Add
366 167: StLoc[35](loc27: u64)
367 168: MoveLoc[34](loc26: u64)
368 169: CopyLoc[29](loc21: u64)
369 170: Sub
370 171: StLoc[34](loc26: u64)
371 172: CopyLoc[6](Arg6: bool)
372 173: Not
373 174: BrFalse(181)
374B28:
375 175: MoveLoc[34](loc26: u64)
376 176: CopyLoc[29](loc21: u64)
377 177: CopyLoc[27](loc19: u64)
378 178: Call math::mul(u64, u64): u64
379 179: Sub
380 180: StLoc[34](loc26: u64)
381B29:
382 181: MoveLoc[29](loc21: u64)
383 182: LdU64(0)
384 183: Eq
385 184: BrFalse(188)
386B30:
387 185: MoveLoc[21](loc13: &BigVector<Order>)
388 186: Pop
389 187: Branch(212)
390B31:
391 188: CopyLoc[28](loc20: bool)
392 189: BrFalse(197)
393B32:
394 190: CopyLoc[21](loc13: &BigVector<Order>)
395 191: MoveLoc[37](loc29: SliceRef)
396 192: MoveLoc[32](loc24: u64)
397 193: Call big_vector::next_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
398 194: StLoc[19](loc11: u64)
399 195: StLoc[18](loc10: SliceRef)
400 196: Branch(203)
401B33:
402 197: CopyLoc[21](loc13: &BigVector<Order>)
403 198: MoveLoc[37](loc29: SliceRef)
404 199: MoveLoc[32](loc24: u64)
405 200: Call big_vector::prev_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
406 201: StLoc[19](loc11: u64)
407 202: StLoc[18](loc10: SliceRef)
408B34:
409 203: MoveLoc[18](loc10: SliceRef)
410 204: MoveLoc[19](loc11: u64)
411 205: StLoc[32](loc24: u64)
412 206: StLoc[37](loc29: SliceRef)
413 207: MoveLoc[24](loc16: u64)
414 208: LdU64(1)
415 209: Add
416 210: StLoc[24](loc16: u64)
417 211: Branch(62)
418B35:
419 212: MoveLoc[6](Arg6: bool)
420 213: Not
421 214: BrFalse(218)
422B36:
423 215: LdU64(0)
424 216: StLoc[9](loc1: u64)
425 217: Branch(244)
426B37:
427 218: CopyLoc[28](loc20: bool)
428 219: BrFalse(229)
429B38:
430 220: ImmBorrowLoc[4](Arg4: OrderDeepPrice)
431 221: CopyLoc[35](loc27: u64)
432 222: MoveLoc[2](Arg2: u64)
433 223: CopyLoc[34](loc26: u64)
434 224: Sub
435 225: CopyLoc[28](loc20: bool)
436 226: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
437 227: StLoc[20](loc12: Balances)
438 228: Branch(237)
439B39:
440 229: ImmBorrowLoc[4](Arg4: OrderDeepPrice)
441 230: MoveLoc[1](Arg1: u64)
442 231: CopyLoc[34](loc26: u64)
443 232: Sub
444 233: CopyLoc[35](loc27: u64)
445 234: CopyLoc[28](loc20: bool)
446 235: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
447 236: StLoc[20](loc12: Balances)
448B40:
449 237: MoveLoc[20](loc12: Balances)
450 238: StLoc[26](loc18: Balances)
451 239: MoveLoc[3](Arg3: u64)
452 240: ImmBorrowLoc[26](loc18: Balances)
453 241: Call balances::deep(&Balances): u64
454 242: Call math::mul(u64, u64): u64
455 243: StLoc[9](loc1: u64)
456B41:
457 244: MoveLoc[9](loc1: u64)
458 245: StLoc[25](loc17: u64)
459 246: MoveLoc[28](loc20: bool)
460 247: BrFalse(255)
461B42:
462 248: MoveLoc[35](loc27: u64)
463 249: MoveLoc[34](loc26: u64)
464 250: MoveLoc[25](loc17: u64)
465 251: StLoc[12](loc4: u64)
466 252: StLoc[11](loc3: u64)
467 253: StLoc[10](loc2: u64)
468 254: Branch(261)
469B43:
470 255: MoveLoc[34](loc26: u64)
471 256: MoveLoc[35](loc27: u64)
472 257: MoveLoc[25](loc17: u64)
473 258: StLoc[12](loc4: u64)
474 259: StLoc[11](loc3: u64)
475 260: StLoc[10](loc2: u64)
476B44:
477 261: MoveLoc[10](loc2: u64)
478 262: MoveLoc[11](loc3: u64)
479 263: MoveLoc[12](loc4: u64)
480 264: Ret
481}
482
483public(friend) cancel_order(Arg0: &mut Book, Arg1: u128): Order {
484B0:
485 0: MoveLoc[0](Arg0: &mut Book)
486 1: CopyLoc[1](Arg1: u128)
487 2: Call book_side_mut(&mut Book, u128): &mut BigVector<Order>
488 3: MoveLoc[1](Arg1: u128)
489 4: Call big_vector::remove<Order>(&mut BigVector<Order>, u128): Order
490 5: Ret
491}
492
493public(friend) modify_order(Arg0: &mut Book, Arg1: u128, Arg2: u64, Arg3: u64): u64 * &Order {
494L4: loc0: u64
495L5: loc1: &mut Order
496B0:
497 0: CopyLoc[2](Arg2: u64)
498 1: CopyLoc[0](Arg0: &mut Book)
499 2: ImmBorrowField[4](Book.min_size: u64)
500 3: ReadRef
501 4: Ge
502 5: BrFalse(7)
503B1:
504 6: Branch(11)
505B2:
506 7: MoveLoc[0](Arg0: &mut Book)
507 8: Pop
508 9: LdConst[4](u64: 5)
509 10: Abort
510B3:
511 11: CopyLoc[2](Arg2: u64)
512 12: CopyLoc[0](Arg0: &mut Book)
513 13: ImmBorrowField[3](Book.lot_size: u64)
514 14: ReadRef
515 15: Mod
516 16: LdU64(0)
517 17: Eq
518 18: BrFalse(20)
519B4:
520 19: Branch(24)
521B5:
522 20: MoveLoc[0](Arg0: &mut Book)
523 21: Pop
524 22: LdConst[5](u64: 6)
525 23: Abort
526B6:
527 24: MoveLoc[0](Arg0: &mut Book)
528 25: CopyLoc[1](Arg1: u128)
529 26: Call book_side_mut(&mut Book, u128): &mut BigVector<Order>
530 27: MoveLoc[1](Arg1: u128)
531 28: Call big_vector::borrow_mut<Order>(&mut BigVector<Order>, u128): &mut Order
532 29: StLoc[5](loc1: &mut Order)
533 30: CopyLoc[2](Arg2: u64)
534 31: CopyLoc[5](loc1: &mut Order)
535 32: FreezeRef
536 33: Call order::quantity(&Order): u64
537 34: Lt
538 35: BrFalse(37)
539B7:
540 36: Branch(41)
541B8:
542 37: MoveLoc[5](loc1: &mut Order)
543 38: Pop
544 39: LdConst[6](u64: 7)
545 40: Abort
546B9:
547 41: CopyLoc[5](loc1: &mut Order)
548 42: FreezeRef
549 43: Call order::quantity(&Order): u64
550 44: CopyLoc[2](Arg2: u64)
551 45: Sub
552 46: StLoc[4](loc0: u64)
553 47: CopyLoc[5](loc1: &mut Order)
554 48: MoveLoc[2](Arg2: u64)
555 49: MoveLoc[3](Arg3: u64)
556 50: Call order::modify(&mut Order, u64, u64)
557 51: MoveLoc[4](loc0: u64)
558 52: MoveLoc[5](loc1: &mut Order)
559 53: FreezeRef
560 54: Ret
561}
562
563public(friend) mid_price(Arg0: &Book, Arg1: u64): u64 {
564L2: loc0: bool
565L3: loc1: u64
566L4: loc2: SliceRef
567L5: loc3: &Order
568L6: loc4: u64
569L7: loc5: &Order
570L8: loc6: u64
571L9: loc7: u64
572L10: loc8: SliceRef
573B0:
574 0: CopyLoc[0](Arg0: &Book)
575 1: ImmBorrowField[1](Book.asks: BigVector<Order>)
576 2: Call big_vector::min_slice<Order>(&BigVector<Order>): SliceRef * u64
577 3: StLoc[3](loc1: u64)
578 4: StLoc[4](loc2: SliceRef)
579 5: CopyLoc[0](Arg0: &Book)
580 6: ImmBorrowField[0](Book.bids: BigVector<Order>)
581 7: Call big_vector::max_slice<Order>(&BigVector<Order>): SliceRef * u64
582 8: StLoc[9](loc7: u64)
583 9: StLoc[10](loc8: SliceRef)
584 10: LdU64(0)
585 11: StLoc[6](loc4: u64)
586 12: LdU64(0)
587 13: StLoc[8](loc6: u64)
588B1:
589 14: ImmBorrowLoc[4](loc2: SliceRef)
590 15: Call big_vector::slice_is_null(&SliceRef): bool
591 16: Not
592 17: BrFalse(43)
593B2:
594 18: Branch(19)
595B3:
596 19: CopyLoc[0](Arg0: &Book)
597 20: ImmBorrowField[1](Book.asks: BigVector<Order>)
598 21: CopyLoc[4](loc2: SliceRef)
599 22: Call big_vector::borrow_slice<Order>(&BigVector<Order>, SliceRef): &Slice<Order>
600 23: CopyLoc[3](loc1: u64)
601 24: Call big_vector::slice_borrow<Order>(&Slice<Order>, u64): &Order
602 25: StLoc[5](loc3: &Order)
603 26: CopyLoc[5](loc3: &Order)
604 27: Call order::price(&Order): u64
605 28: StLoc[6](loc4: u64)
606 29: CopyLoc[1](Arg1: u64)
607 30: MoveLoc[5](loc3: &Order)
608 31: Call order::expire_timestamp(&Order): u64
609 32: Le
610 33: BrFalse(35)
611B4:
612 34: Branch(43)
613B5:
614 35: CopyLoc[0](Arg0: &Book)
615 36: ImmBorrowField[1](Book.asks: BigVector<Order>)
616 37: MoveLoc[4](loc2: SliceRef)
617 38: MoveLoc[3](loc1: u64)
618 39: Call big_vector::next_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
619 40: StLoc[3](loc1: u64)
620 41: StLoc[4](loc2: SliceRef)
621 42: Branch(14)
622B6:
623 43: ImmBorrowLoc[10](loc8: SliceRef)
624 44: Call big_vector::slice_is_null(&SliceRef): bool
625 45: Not
626 46: BrFalse(73)
627B7:
628 47: CopyLoc[0](Arg0: &Book)
629 48: ImmBorrowField[0](Book.bids: BigVector<Order>)
630 49: CopyLoc[10](loc8: SliceRef)
631 50: Call big_vector::borrow_slice<Order>(&BigVector<Order>, SliceRef): &Slice<Order>
632 51: CopyLoc[9](loc7: u64)
633 52: Call big_vector::slice_borrow<Order>(&Slice<Order>, u64): &Order
634 53: StLoc[7](loc5: &Order)
635 54: CopyLoc[7](loc5: &Order)
636 55: Call order::price(&Order): u64
637 56: StLoc[8](loc6: u64)
638 57: CopyLoc[1](Arg1: u64)
639 58: MoveLoc[7](loc5: &Order)
640 59: Call order::expire_timestamp(&Order): u64
641 60: Le
642 61: BrFalse(65)
643B8:
644 62: MoveLoc[0](Arg0: &Book)
645 63: Pop
646 64: Branch(73)
647B9:
648 65: CopyLoc[0](Arg0: &Book)
649 66: ImmBorrowField[0](Book.bids: BigVector<Order>)
650 67: MoveLoc[10](loc8: SliceRef)
651 68: MoveLoc[9](loc7: u64)
652 69: Call big_vector::prev_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
653 70: StLoc[9](loc7: u64)
654 71: StLoc[10](loc8: SliceRef)
655 72: Branch(43)
656B10:
657 73: ImmBorrowLoc[4](loc2: SliceRef)
658 74: Call big_vector::slice_is_null(&SliceRef): bool
659 75: Not
660 76: BrFalse(82)
661B11:
662 77: ImmBorrowLoc[10](loc8: SliceRef)
663 78: Call big_vector::slice_is_null(&SliceRef): bool
664 79: Not
665 80: StLoc[2](loc0: bool)
666 81: Branch(84)
667B12:
668 82: LdFalse
669 83: StLoc[2](loc0: bool)
670B13:
671 84: MoveLoc[2](loc0: bool)
672 85: BrFalse(87)
673B14:
674 86: Branch(89)
675B15:
676 87: LdConst[1](u64: 2)
677 88: Abort
678B16:
679 89: MoveLoc[6](loc4: u64)
680 90: MoveLoc[8](loc6: u64)
681 91: Add
682 92: Call constants::half(): u64
683 93: Call math::mul(u64, u64): u64
684 94: Ret
685}
686
687public(friend) get_level2_range_and_ticks(Arg0: &Book, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: bool, Arg5: u64): vector<u64> * vector<u64> {
688L6: loc0: bool
689L7: loc1: bool
690L8: loc2: bool
691L9: loc3: bool
692L10: loc4: bool
693L11: loc5: bool
694L12: loc6: bool
695L13: loc7: SliceRef
696L14: loc8: u64
697L15: loc9: bool
698L16: loc10: bool
699L17: loc11: u128
700L18: loc12: &BigVector<Order>
701L19: loc13: SliceRef
702L20: loc14: u64
703L21: loc15: bool
704L22: loc16: bool
705L23: loc17: bool
706L24: loc18: &BigVector<Order>
707L25: loc19: u64
708L26: loc20: u64
709L27: loc21: u128
710L28: loc22: u128
711L29: loc23: u128
712L30: loc24: u64
713L31: loc25: &Order
714L32: loc26: u64
715L33: loc27: vector<u64>
716L34: loc28: vector<u64>
717L35: loc29: SliceRef
718L36: loc30: u64
719B0:
720 0: CopyLoc[1](Arg1: u64)
721 1: CopyLoc[2](Arg2: u64)
722 2: Le
723 3: BrFalse(5)
724B1:
725 4: Branch(9)
726B2:
727 5: MoveLoc[0](Arg0: &Book)
728 6: Pop
729 7: LdConst[2](u64: 3)
730 8: Abort
731B3:
732 9: CopyLoc[1](Arg1: u64)
733 10: Call constants::min_price(): u64
734 11: Ge
735 12: BrFalse(18)
736B4:
737 13: CopyLoc[1](Arg1: u64)
738 14: Call constants::max_price(): u64
739 15: Le
740 16: StLoc[6](loc0: bool)
741 17: Branch(20)
742B5:
743 18: LdFalse
744 19: StLoc[6](loc0: bool)
745B6:
746 20: MoveLoc[6](loc0: bool)
747 21: BrFalse(23)
748B7:
749 22: Branch(27)
750B8:
751 23: MoveLoc[0](Arg0: &Book)
752 24: Pop
753 25: LdConst[2](u64: 3)
754 26: Abort
755B9:
756 27: CopyLoc[2](Arg2: u64)
757 28: Call constants::min_price(): u64
758 29: Ge
759 30: BrFalse(36)
760B10:
761 31: CopyLoc[2](Arg2: u64)
762 32: Call constants::max_price(): u64
763 33: Le
764 34: StLoc[16](loc10: bool)
765 35: Branch(38)
766B11:
767 36: LdFalse
768 37: StLoc[16](loc10: bool)
769B12:
770 38: MoveLoc[16](loc10: bool)
771 39: BrFalse(41)
772B13:
773 40: Branch(45)
774B14:
775 41: MoveLoc[0](Arg0: &Book)
776 42: Pop
777 43: LdConst[2](u64: 3)
778 44: Abort
779B15:
780 45: CopyLoc[3](Arg3: u64)
781 46: LdU64(0)
782 47: Gt
783 48: BrFalse(50)
784B16:
785 49: Branch(54)
786B17:
787 50: MoveLoc[0](Arg0: &Book)
788 51: Pop
789 52: LdConst[3](u64: 4)
790 53: Abort
791B18:
792 54: LdConst[8](vector<u64>: 00)
793 55: StLoc[33](loc27: vector<u64>)
794 56: LdConst[8](vector<u64>: 00)
795 57: StLoc[34](loc28: vector<u64>)
796 58: CopyLoc[4](Arg4: bool)
797 59: BrFalse(63)
798B19:
799 60: LdU128(0)
800 61: StLoc[17](loc11: u128)
801 62: Branch(65)
802B20:
803 63: LdU128(170141183460469231731687303715884105728)
804 64: StLoc[17](loc11: u128)
805B21:
806 65: MoveLoc[17](loc11: u128)
807 66: StLoc[29](loc23: u128)
808 67: CopyLoc[1](Arg1: u64)
809 68: CastU128
810 69: LdU8(64)
811 70: Shl
812 71: CopyLoc[29](loc23: u128)
813 72: Add
814 73: StLoc[28](loc22: u128)
815 74: CopyLoc[2](Arg2: u64)
816 75: CastU128
817 76: LdU8(64)
818 77: Shl
819 78: LdU128(18446744073709551615)
820 79: Add
821 80: MoveLoc[29](loc23: u128)
822 81: Add
823 82: StLoc[27](loc21: u128)
824 83: CopyLoc[4](Arg4: bool)
825 84: BrFalse(89)
826B22:
827 85: MoveLoc[0](Arg0: &Book)
828 86: ImmBorrowField[0](Book.bids: BigVector<Order>)
829 87: StLoc[18](loc12: &BigVector<Order>)
830 88: Branch(92)
831B23:
832 89: MoveLoc[0](Arg0: &Book)
833 90: ImmBorrowField[1](Book.asks: BigVector<Order>)
834 91: StLoc[18](loc12: &BigVector<Order>)
835B24:
836 92: MoveLoc[18](loc12: &BigVector<Order>)
837 93: StLoc[24](loc18: &BigVector<Order>)
838 94: CopyLoc[4](Arg4: bool)
839 95: BrFalse(102)
840B25:
841 96: CopyLoc[24](loc18: &BigVector<Order>)
842 97: MoveLoc[27](loc21: u128)
843 98: Call big_vector::slice_before<Order>(&BigVector<Order>, u128): SliceRef * u64
844 99: StLoc[20](loc14: u64)
845 100: StLoc[19](loc13: SliceRef)
846 101: Branch(107)
847B26:
848 102: CopyLoc[24](loc18: &BigVector<Order>)
849 103: MoveLoc[28](loc22: u128)
850 104: Call big_vector::slice_following<Order>(&BigVector<Order>, u128): SliceRef * u64
851 105: StLoc[20](loc14: u64)
852 106: StLoc[19](loc13: SliceRef)
853B27:
854 107: MoveLoc[19](loc13: SliceRef)
855 108: MoveLoc[20](loc14: u64)
856 109: StLoc[30](loc24: u64)
857 110: StLoc[35](loc29: SliceRef)
858 111: MoveLoc[3](Arg3: u64)
859 112: StLoc[36](loc30: u64)
860 113: LdU64(0)
861 114: StLoc[25](loc19: u64)
862 115: LdU64(0)
863 116: StLoc[26](loc20: u64)
864B28:
865 117: ImmBorrowLoc[35](loc29: SliceRef)
866 118: Call big_vector::slice_is_null(&SliceRef): bool
867 119: Not
868 120: BrFalse(126)
869B29:
870 121: CopyLoc[36](loc30: u64)
871 122: LdU64(0)
872 123: Gt
873 124: StLoc[21](loc15: bool)
874 125: Branch(128)
875B30:
876 126: LdFalse
877 127: StLoc[21](loc15: bool)
878B31:
879 128: MoveLoc[21](loc15: bool)
880 129: BrFalse(294)
881B32:
882 130: CopyLoc[24](loc18: &BigVector<Order>)
883 131: CopyLoc[35](loc29: SliceRef)
884 132: Call big_vector::borrow_slice<Order>(&BigVector<Order>, SliceRef): &Slice<Order>
885 133: CopyLoc[30](loc24: u64)
886 134: Call big_vector::slice_borrow<Order>(&Slice<Order>, u64): &Order
887 135: StLoc[31](loc25: &Order)
888 136: CopyLoc[5](Arg5: u64)
889 137: CopyLoc[31](loc25: &Order)
890 138: Call order::expire_timestamp(&Order): u64
891 139: Le
892 140: BrFalse(272)
893B33:
894 141: Branch(142)
895B34:
896 142: CopyLoc[31](loc25: &Order)
897 143: Call order::order_id(&Order): u128
898 144: Call utils::decode_order_id(u128): bool * u64 * u64
899 145: Pop
900 146: StLoc[32](loc26: u64)
901 147: Pop
902 148: CopyLoc[4](Arg4: bool)
903 149: BrFalse(155)
904B35:
905 150: CopyLoc[32](loc26: u64)
906 151: CopyLoc[1](Arg1: u64)
907 152: Lt
908 153: StLoc[7](loc1: bool)
909 154: Branch(157)
910B36:
911 155: LdFalse
912 156: StLoc[7](loc1: bool)
913B37:
914 157: MoveLoc[7](loc1: bool)
915 158: BrFalse(162)
916B38:
917 159: LdTrue
918 160: StLoc[22](loc16: bool)
919 161: Branch(174)
920B39:
921 162: CopyLoc[4](Arg4: bool)
922 163: Not
923 164: BrFalse(170)
924B40:
925 165: CopyLoc[32](loc26: u64)
926 166: CopyLoc[2](Arg2: u64)
927 167: Gt
928 168: StLoc[23](loc17: bool)
929 169: Branch(172)
930B41:
931 170: LdFalse
932 171: StLoc[23](loc17: bool)
933B42:
934 172: MoveLoc[23](loc17: bool)
935 173: StLoc[22](loc16: bool)
936B43:
937 174: MoveLoc[22](loc16: bool)
938 175: BrFalse(181)
939B44:
940 176: MoveLoc[31](loc25: &Order)
941 177: Pop
942 178: MoveLoc[24](loc18: &BigVector<Order>)
943 179: Pop
944 180: Branch(294)
945B45:
946 181: CopyLoc[25](loc19: u64)
947 182: LdU64(0)
948 183: Eq
949 184: BrFalse(214)
950B46:
951 185: CopyLoc[4](Arg4: bool)
952 186: BrFalse(192)
953B47:
954 187: CopyLoc[32](loc26: u64)
955 188: CopyLoc[2](Arg2: u64)
956 189: Le
957 190: StLoc[11](loc5: bool)
958 191: Branch(194)
959B48:
960 192: LdFalse
961 193: StLoc[11](loc5: bool)
962B49:
963 194: MoveLoc[11](loc5: bool)
964 195: BrFalse(199)
965B50:
966 196: LdTrue
967 197: StLoc[9](loc3: bool)
968 198: Branch(211)
969B51:
970 199: CopyLoc[4](Arg4: bool)
971 200: Not
972 201: BrFalse(207)
973B52:
974 202: CopyLoc[32](loc26: u64)
975 203: CopyLoc[1](Arg1: u64)
976 204: Ge
977 205: StLoc[10](loc4: bool)
978 206: Branch(209)
979B53:
980 207: LdFalse
981 208: StLoc[10](loc4: bool)
982B54:
983 209: MoveLoc[10](loc4: bool)
984 210: StLoc[9](loc3: bool)
985B55:
986 211: MoveLoc[9](loc3: bool)
987 212: StLoc[8](loc2: bool)
988 213: Branch(216)
989B56:
990 214: LdFalse
991 215: StLoc[8](loc2: bool)
992B57:
993 216: MoveLoc[8](loc2: bool)
994 217: BrFalse(220)
995B58:
996 218: CopyLoc[32](loc26: u64)
997 219: StLoc[25](loc19: u64)
998B59:
999 220: CopyLoc[25](loc19: u64)
1000 221: LdU64(0)
1001 222: Neq
1002 223: BrFalse(229)
1003B60:
1004 224: CopyLoc[32](loc26: u64)
1005 225: CopyLoc[25](loc19: u64)
1006 226: Neq
1007 227: StLoc[12](loc6: bool)
1008 228: Branch(231)
1009B61:
1010 229: LdFalse
1011 230: StLoc[12](loc6: bool)
1012B62:
1013 231: MoveLoc[12](loc6: bool)
1014 232: BrFalse(256)
1015B63:
1016 233: MutBorrowLoc[33](loc27: vector<u64>)
1017 234: MoveLoc[25](loc19: u64)
1018 235: VecPushBack(2)
1019 236: MutBorrowLoc[34](loc28: vector<u64>)
1020 237: MoveLoc[26](loc20: u64)
1021 238: VecPushBack(2)
1022 239: MoveLoc[32](loc26: u64)
1023 240: StLoc[25](loc19: u64)
1024 241: LdU64(0)
1025 242: StLoc[26](loc20: u64)
1026 243: MoveLoc[36](loc30: u64)
1027 244: LdU64(1)
1028 245: Sub
1029 246: StLoc[36](loc30: u64)
1030 247: CopyLoc[36](loc30: u64)
1031 248: LdU64(0)
1032 249: Eq
1033 250: BrFalse(256)
1034B64:
1035 251: MoveLoc[31](loc25: &Order)
1036 252: Pop
1037 253: MoveLoc[24](loc18: &BigVector<Order>)
1038 254: Pop
1039 255: Branch(294)
1040B65:
1041 256: CopyLoc[25](loc19: u64)
1042 257: LdU64(0)
1043 258: Neq
1044 259: BrFalse(269)
1045B66:
1046 260: MoveLoc[26](loc20: u64)
1047 261: CopyLoc[31](loc25: &Order)
1048 262: Call order::quantity(&Order): u64
1049 263: Add
1050 264: MoveLoc[31](loc25: &Order)
1051 265: Call order::filled_quantity(&Order): u64
1052 266: Sub
1053 267: StLoc[26](loc20: u64)
1054 268: Branch(274)
1055B67:
1056 269: MoveLoc[31](loc25: &Order)
1057 270: Pop
1058 271: Branch(274)
1059B68:
1060 272: MoveLoc[31](loc25: &Order)
1061 273: Pop
1062B69:
1063 274: CopyLoc[4](Arg4: bool)
1064 275: BrFalse(283)
1065B70:
1066 276: CopyLoc[24](loc18: &BigVector<Order>)
1067 277: MoveLoc[35](loc29: SliceRef)
1068 278: MoveLoc[30](loc24: u64)
1069 279: Call big_vector::prev_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
1070 280: StLoc[14](loc8: u64)
1071 281: StLoc[13](loc7: SliceRef)
1072 282: Branch(289)
1073B71:
1074 283: CopyLoc[24](loc18: &BigVector<Order>)
1075 284: MoveLoc[35](loc29: SliceRef)
1076 285: MoveLoc[30](loc24: u64)
1077 286: Call big_vector::next_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
1078 287: StLoc[14](loc8: u64)
1079 288: StLoc[13](loc7: SliceRef)
1080B72:
1081 289: MoveLoc[13](loc7: SliceRef)
1082 290: MoveLoc[14](loc8: u64)
1083 291: StLoc[30](loc24: u64)
1084 292: StLoc[35](loc29: SliceRef)
1085 293: Branch(117)
1086B73:
1087 294: CopyLoc[25](loc19: u64)
1088 295: LdU64(0)
1089 296: Neq
1090 297: BrFalse(303)
1091B74:
1092 298: MoveLoc[36](loc30: u64)
1093 299: LdU64(0)
1094 300: Gt
1095 301: StLoc[15](loc9: bool)
1096 302: Branch(305)
1097B75:
1098 303: LdFalse
1099 304: StLoc[15](loc9: bool)
1100B76:
1101 305: MoveLoc[15](loc9: bool)
1102 306: BrFalse(313)
1103B77:
1104 307: MutBorrowLoc[33](loc27: vector<u64>)
1105 308: MoveLoc[25](loc19: u64)
1106 309: VecPushBack(2)
1107 310: MutBorrowLoc[34](loc28: vector<u64>)
1108 311: MoveLoc[26](loc20: u64)
1109 312: VecPushBack(2)
1110B78:
1111 313: MoveLoc[33](loc27: vector<u64>)
1112 314: MoveLoc[34](loc28: vector<u64>)
1113 315: Ret
1114}
1115
1116public(friend) get_order(Arg0: &Book, Arg1: u128): Order {
1117B0:
1118 0: MoveLoc[0](Arg0: &Book)
1119 1: CopyLoc[1](Arg1: u128)
1120 2: Call book_side(&Book, u128): &BigVector<Order>
1121 3: MoveLoc[1](Arg1: u128)
1122 4: Call big_vector::borrow<Order>(&BigVector<Order>, u128): &Order
1123 5: Call order::copy_order(&Order): Order
1124 6: Ret
1125}
1126
1127public(friend) set_tick_size(Arg0: &mut Book, Arg1: u64) {
1128B0:
1129 0: MoveLoc[1](Arg1: u64)
1130 1: MoveLoc[0](Arg0: &mut Book)
1131 2: MutBorrowField[2](Book.tick_size: u64)
1132 3: WriteRef
1133 4: Ret
1134}
1135
1136public(friend) set_lot_size(Arg0: &mut Book, Arg1: u64) {
1137B0:
1138 0: MoveLoc[1](Arg1: u64)
1139 1: MoveLoc[0](Arg0: &mut Book)
1140 2: MutBorrowField[3](Book.lot_size: u64)
1141 3: WriteRef
1142 4: Ret
1143}
1144
1145public(friend) set_min_size(Arg0: &mut Book, Arg1: u64) {
1146B0:
1147 0: MoveLoc[1](Arg1: u64)
1148 1: MoveLoc[0](Arg0: &mut Book)
1149 2: MutBorrowField[4](Book.min_size: u64)
1150 3: WriteRef
1151 4: Ret
1152}
1153
1154book_side_mut(Arg0: &mut Book, Arg1: u128): &mut BigVector<Order> {
1155L2: loc0: &mut BigVector<Order>
1156B0:
1157 0: MoveLoc[1](Arg1: u128)
1158 1: Call utils::decode_order_id(u128): bool * u64 * u64
1159 2: Pop
1160 3: Pop
1161 4: BrFalse(9)
1162B1:
1163 5: MoveLoc[0](Arg0: &mut Book)
1164 6: MutBorrowField[0](Book.bids: BigVector<Order>)
1165 7: StLoc[2](loc0: &mut BigVector<Order>)
1166 8: Branch(12)
1167B2:
1168 9: MoveLoc[0](Arg0: &mut Book)
1169 10: MutBorrowField[1](Book.asks: BigVector<Order>)
1170 11: StLoc[2](loc0: &mut BigVector<Order>)
1171B3:
1172 12: MoveLoc[2](loc0: &mut BigVector<Order>)
1173 13: Ret
1174}
1175
1176book_side(Arg0: &Book, Arg1: u128): &BigVector<Order> {
1177L2: loc0: &BigVector<Order>
1178B0:
1179 0: MoveLoc[1](Arg1: u128)
1180 1: Call utils::decode_order_id(u128): bool * u64 * u64
1181 2: Pop
1182 3: Pop
1183 4: BrFalse(9)
1184B1:
1185 5: MoveLoc[0](Arg0: &Book)
1186 6: ImmBorrowField[0](Book.bids: BigVector<Order>)
1187 7: StLoc[2](loc0: &BigVector<Order>)
1188 8: Branch(12)
1189B2:
1190 9: MoveLoc[0](Arg0: &Book)
1191 10: ImmBorrowField[1](Book.asks: BigVector<Order>)
1192 11: StLoc[2](loc0: &BigVector<Order>)
1193B3:
1194 12: MoveLoc[2](loc0: &BigVector<Order>)
1195 13: Ret
1196}
1197
1198match_against_book(Arg0: &mut Book, Arg1: &mut OrderInfo, Arg2: u64) {
1199L3: loc0: u64
1200L4: loc1: &mut BigVector<Order>
1201L5: loc2: SliceRef
1202L6: loc3: u64
1203L7: loc4: bool
1204L8: loc5: SliceRef
1205L9: loc6: u64
1206L10: loc7: bool
1207L11: loc8: &mut BigVector<Order>
1208L12: loc9: u64
1209L13: loc10: &Fill
1210L14: loc11: u64
1211L15: loc12: u64
1212L16: loc13: bool
1213L17: loc14: &mut Order
1214L18: loc15: u64
1215L19: loc16: u64
1216L20: loc17: SliceRef
1217L21: loc18: u64
1218L22: loc19: &mut vector<Fill>
1219B0:
1220 0: CopyLoc[1](Arg1: &mut OrderInfo)
1221 1: FreezeRef
1222 2: Call order_info::is_bid(&OrderInfo): bool
1223 3: StLoc[16](loc13: bool)
1224 4: CopyLoc[16](loc13: bool)
1225 5: BrFalse(10)
1226B1:
1227 6: MoveLoc[0](Arg0: &mut Book)
1228 7: MutBorrowField[1](Book.asks: BigVector<Order>)
1229 8: StLoc[4](loc1: &mut BigVector<Order>)
1230 9: Branch(13)
1231B2:
1232 10: MoveLoc[0](Arg0: &mut Book)
1233 11: MutBorrowField[0](Book.bids: BigVector<Order>)
1234 12: StLoc[4](loc1: &mut BigVector<Order>)
1235B3:
1236 13: MoveLoc[4](loc1: &mut BigVector<Order>)
1237 14: StLoc[11](loc8: &mut BigVector<Order>)
1238 15: CopyLoc[16](loc13: bool)
1239 16: BrFalse(23)
1240B4:
1241 17: CopyLoc[11](loc8: &mut BigVector<Order>)
1242 18: FreezeRef
1243 19: Call big_vector::min_slice<Order>(&BigVector<Order>): SliceRef * u64
1244 20: StLoc[6](loc3: u64)
1245 21: StLoc[5](loc2: SliceRef)
1246 22: Branch(28)
1247B5:
1248 23: CopyLoc[11](loc8: &mut BigVector<Order>)
1249 24: FreezeRef
1250 25: Call big_vector::max_slice<Order>(&BigVector<Order>): SliceRef * u64
1251 26: StLoc[6](loc3: u64)
1252 27: StLoc[5](loc2: SliceRef)
1253B6:
1254 28: MoveLoc[5](loc2: SliceRef)
1255 29: MoveLoc[6](loc3: u64)
1256 30: StLoc[19](loc16: u64)
1257 31: StLoc[20](loc17: SliceRef)
1258 32: Call constants::max_fills(): u64
1259 33: StLoc[18](loc15: u64)
1260 34: LdU64(0)
1261 35: StLoc[12](loc9: u64)
1262B7:
1263 36: ImmBorrowLoc[20](loc17: SliceRef)
1264 37: Call big_vector::slice_is_null(&SliceRef): bool
1265 38: Not
1266 39: BrFalse(46)
1267B8:
1268 40: Branch(41)
1269B9:
1270 41: CopyLoc[12](loc9: u64)
1271 42: CopyLoc[18](loc15: u64)
1272 43: Lt
1273 44: StLoc[7](loc4: bool)
1274 45: Branch(48)
1275B10:
1276 46: LdFalse
1277 47: StLoc[7](loc4: bool)
1278B11:
1279 48: MoveLoc[7](loc4: bool)
1280 49: BrFalse(89)
1281B12:
1282 50: CopyLoc[11](loc8: &mut BigVector<Order>)
1283 51: CopyLoc[20](loc17: SliceRef)
1284 52: Call big_vector::borrow_slice_mut<Order>(&mut BigVector<Order>, SliceRef): &mut Slice<Order>
1285 53: CopyLoc[19](loc16: u64)
1286 54: Call big_vector::slice_borrow_mut<Order>(&mut Slice<Order>, u64): &mut Order
1287 55: StLoc[17](loc14: &mut Order)
1288 56: CopyLoc[1](Arg1: &mut OrderInfo)
1289 57: MoveLoc[17](loc14: &mut Order)
1290 58: CopyLoc[2](Arg2: u64)
1291 59: Call order_info::match_maker(&mut OrderInfo, &mut Order, u64): bool
1292 60: Not
1293 61: BrFalse(63)
1294B13:
1295 62: Branch(89)
1296B14:
1297 63: CopyLoc[16](loc13: bool)
1298 64: BrFalse(73)
1299B15:
1300 65: CopyLoc[11](loc8: &mut BigVector<Order>)
1301 66: FreezeRef
1302 67: MoveLoc[20](loc17: SliceRef)
1303 68: MoveLoc[19](loc16: u64)
1304 69: Call big_vector::next_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
1305 70: StLoc[9](loc6: u64)
1306 71: StLoc[8](loc5: SliceRef)
1307 72: Branch(80)
1308B16:
1309 73: CopyLoc[11](loc8: &mut BigVector<Order>)
1310 74: FreezeRef
1311 75: MoveLoc[20](loc17: SliceRef)
1312 76: MoveLoc[19](loc16: u64)
1313 77: Call big_vector::prev_slice<Order>(&BigVector<Order>, SliceRef, u64): SliceRef * u64
1314 78: StLoc[9](loc6: u64)
1315 79: StLoc[8](loc5: SliceRef)
1316B17:
1317 80: MoveLoc[8](loc5: SliceRef)
1318 81: MoveLoc[9](loc6: u64)
1319 82: StLoc[19](loc16: u64)
1320 83: StLoc[20](loc17: SliceRef)
1321 84: MoveLoc[12](loc9: u64)
1322 85: LdU64(1)
1323 86: Add
1324 87: StLoc[12](loc9: u64)
1325 88: Branch(36)
1326B18:
1327 89: CopyLoc[1](Arg1: &mut OrderInfo)
1328 90: Call order_info::fills_ref(&mut OrderInfo): &mut vector<Fill>
1329 91: StLoc[22](loc19: &mut vector<Fill>)
1330 92: CopyLoc[22](loc19: &mut vector<Fill>)
1331 93: FreezeRef
1332 94: VecLen(58)
1333 95: StLoc[3](loc0: u64)
1334 96: LdU64(0)
1335 97: StLoc[14](loc11: u64)
1336 98: MoveLoc[3](loc0: u64)
1337 99: StLoc[21](loc18: u64)
1338B19:
1339 100: CopyLoc[14](loc11: u64)
1340 101: CopyLoc[21](loc18: u64)
1341 102: Lt
1342 103: BrFalse(135)
1343B20:
1344 104: CopyLoc[14](loc11: u64)
1345 105: StLoc[15](loc12: u64)
1346 106: CopyLoc[22](loc19: &mut vector<Fill>)
1347 107: FreezeRef
1348 108: MoveLoc[15](loc12: u64)
1349 109: VecImmBorrow(58)
1350 110: StLoc[13](loc10: &Fill)
1351 111: CopyLoc[13](loc10: &Fill)
1352 112: Call fill::expired(&Fill): bool
1353 113: BrFalse(117)
1354B21:
1355 114: LdTrue
1356 115: StLoc[10](loc7: bool)
1357 116: Branch(120)
1358B22:
1359 117: CopyLoc[13](loc10: &Fill)
1360 118: Call fill::completed(&Fill): bool
1361 119: StLoc[10](loc7: bool)
1362B23:
1363 120: MoveLoc[10](loc7: bool)
1364 121: BrFalse(128)
1365B24:
1366 122: CopyLoc[11](loc8: &mut BigVector<Order>)
1367 123: MoveLoc[13](loc10: &Fill)
1368 124: Call fill::maker_order_id(&Fill): u128
1369 125: Call big_vector::remove<Order>(&mut BigVector<Order>, u128): Order
1370 126: Pop
1371 127: Branch(130)
1372B25:
1373 128: MoveLoc[13](loc10: &Fill)
1374 129: Pop
1375B26:
1376 130: MoveLoc[14](loc11: u64)
1377 131: LdU64(1)
1378 132: Add
1379 133: StLoc[14](loc11: u64)
1380 134: Branch(100)
1381B27:
1382 135: MoveLoc[22](loc19: &mut vector<Fill>)
1383 136: Pop
1384 137: MoveLoc[11](loc8: &mut BigVector<Order>)
1385 138: Pop
1386 139: MoveLoc[12](loc9: u64)
1387 140: MoveLoc[18](loc15: u64)
1388 141: Eq
1389 142: BrFalse(146)
1390B28:
1391 143: MoveLoc[1](Arg1: &mut OrderInfo)
1392 144: Call order_info::set_fill_limit_reached(&mut OrderInfo)
1393 145: Branch(148)
1394B29:
1395 146: MoveLoc[1](Arg1: &mut OrderInfo)
1396 147: Pop
1397B30:
1398 148: Ret
1399}
1400
1401get_order_id(Arg0: &mut Book, Arg1: bool): u64 {
1402L2: loc0: u64
1403B0:
1404 0: MoveLoc[1](Arg1: bool)
1405 1: BrFalse(15)
1406B1:
1407 2: CopyLoc[0](Arg0: &mut Book)
1408 3: ImmBorrowField[5](Book.next_bid_order_id: u64)
1409 4: ReadRef
1410 5: LdU64(1)
1411 6: Sub
1412 7: CopyLoc[0](Arg0: &mut Book)
1413 8: MutBorrowField[5](Book.next_bid_order_id: u64)
1414 9: WriteRef
1415 10: MoveLoc[0](Arg0: &mut Book)
1416 11: ImmBorrowField[5](Book.next_bid_order_id: u64)
1417 12: ReadRef
1418 13: StLoc[2](loc0: u64)
1419 14: Branch(27)
1420B2:
1421 15: CopyLoc[0](Arg0: &mut Book)
1422 16: ImmBorrowField[6](Book.next_ask_order_id: u64)
1423 17: ReadRef
1424 18: LdU64(1)
1425 19: Add
1426 20: CopyLoc[0](Arg0: &mut Book)
1427 21: MutBorrowField[6](Book.next_ask_order_id: u64)
1428 22: WriteRef
1429 23: MoveLoc[0](Arg0: &mut Book)
1430 24: ImmBorrowField[6](Book.next_ask_order_id: u64)
1431 25: ReadRef
1432 26: StLoc[2](loc0: u64)
1433B3:
1434 27: MoveLoc[2](loc0: u64)
1435 28: Ret
1436}
1437
1438inject_limit_order(Arg0: &mut Book, Arg1: &OrderInfo) {
1439L2: loc0: Order
1440B0:
1441 0: CopyLoc[1](Arg1: &OrderInfo)
1442 1: Call order_info::to_order(&OrderInfo): Order
1443 2: StLoc[2](loc0: Order)
1444 3: CopyLoc[1](Arg1: &OrderInfo)
1445 4: Call order_info::is_bid(&OrderInfo): bool
1446 5: BrFalse(13)
1447B1:
1448 6: MoveLoc[0](Arg0: &mut Book)
1449 7: MutBorrowField[0](Book.bids: BigVector<Order>)
1450 8: MoveLoc[1](Arg1: &OrderInfo)
1451 9: Call order_info::order_id(&OrderInfo): u128
1452 10: MoveLoc[2](loc0: Order)
1453 11: Call big_vector::insert<Order>(&mut BigVector<Order>, u128, Order)
1454 12: Branch(19)
1455B2:
1456 13: MoveLoc[0](Arg0: &mut Book)
1457 14: MutBorrowField[1](Book.asks: BigVector<Order>)
1458 15: MoveLoc[1](Arg1: &OrderInfo)
1459 16: Call order_info::order_id(&OrderInfo): u128
1460 17: MoveLoc[2](loc0: Order)
1461 18: Call big_vector::insert<Order>(&mut BigVector<Order>, u128, Order)
1462B3:
1463 19: Ret
1464}
1465
1466Constants [
1467 0 => u64: 1
1468 1 => u64: 2
1469 2 => u64: 3
1470 3 => u64: 4
1471 4 => u64: 5
1472 5 => u64: 6
1473 6 => u64: 7
1474 7 => u64: 18446744073709551615
1475 8 => vector<u64>: 00
1476]
1477}
1478
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/constants.mvb213 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.constants {
3
4public current_version(): u64 {
5B0:
6 0: LdConst[0](u64: 2)
7 1: Ret
8}
9
10public pool_creation_fee(): u64 {
11B0:
12 0: LdConst[1](u64: 5000..)
13 1: Ret
14}
15
16public float_scaling(): u64 {
17B0:
18 0: LdConst[2](u64: 1000..)
19 1: Ret
20}
21
22public float_scaling_u128(): u128 {
23B0:
24 0: LdConst[3](u128: 1000..)
25 1: Ret
26}
27
28public max_u64(): u64 {
29B0:
30 0: LdConst[4](u64: 1844..)
31 1: Ret
32}
33
34public max_u128(): u128 {
35B0:
36 0: LdConst[5](u128: 3402..)
37 1: Ret
38}
39
40public no_restriction(): u8 {
41B0:
42 0: LdConst[11](u8: 0)
43 1: Ret
44}
45
46public immediate_or_cancel(): u8 {
47B0:
48 0: LdConst[12](u8: 1)
49 1: Ret
50}
51
52public fill_or_kill(): u8 {
53B0:
54 0: LdConst[13](u8: 2)
55 1: Ret
56}
57
58public post_only(): u8 {
59B0:
60 0: LdConst[14](u8: 3)
61 1: Ret
62}
63
64public max_restriction(): u8 {
65B0:
66 0: LdConst[14](u8: 3)
67 1: Ret
68}
69
70public live(): u8 {
71B0:
72 0: LdConst[11](u8: 0)
73 1: Ret
74}
75
76public partially_filled(): u8 {
77B0:
78 0: LdConst[12](u8: 1)
79 1: Ret
80}
81
82public filled(): u8 {
83B0:
84 0: LdConst[13](u8: 2)
85 1: Ret
86}
87
88public canceled(): u8 {
89B0:
90 0: LdConst[14](u8: 3)
91 1: Ret
92}
93
94public expired(): u8 {
95B0:
96 0: LdConst[15](u8: 4)
97 1: Ret
98}
99
100public self_matching_allowed(): u8 {
101B0:
102 0: LdConst[11](u8: 0)
103 1: Ret
104}
105
106public cancel_taker(): u8 {
107B0:
108 0: LdConst[12](u8: 1)
109 1: Ret
110}
111
112public cancel_maker(): u8 {
113B0:
114 0: LdConst[13](u8: 2)
115 1: Ret
116}
117
118public min_price(): u64 {
119B0:
120 0: LdConst[6](u64: 1)
121 1: Ret
122}
123
124public max_price(): u64 {
125B0:
126 0: LdConst[7](u64: 9223..)
127 1: Ret
128}
129
130public phase_out_epochs(): u64 {
131B0:
132 0: LdConst[18](u64: 28)
133 1: Ret
134}
135
136public default_stake_required(): u64 {
137B0:
138 0: LdConst[8](u64: 1000..)
139 1: Ret
140}
141
142public half(): u64 {
143B0:
144 0: LdConst[1](u64: 5000..)
145 1: Ret
146}
147
148public fee_is_deep(): bool {
149B0:
150 0: LdConst[19](bool: true)
151 1: Ret
152}
153
154public deep_unit(): u64 {
155B0:
156 0: LdConst[9](u64: 1000..)
157 1: Ret
158}
159
160public max_fills(): u64 {
161B0:
162 0: LdConst[16](u64: 100)
163 1: Ret
164}
165
166public max_open_orders(): u64 {
167B0:
168 0: LdConst[16](u64: 100)
169 1: Ret
170}
171
172public max_slice_size(): u64 {
173B0:
174 0: LdConst[17](u64: 64)
175 1: Ret
176}
177
178public max_fan_out(): u64 {
179B0:
180 0: LdConst[17](u64: 64)
181 1: Ret
182}
183
184public fee_penalty_multiplier(): u64 {
185B0:
186 0: LdConst[10](u64: 1250..)
187 1: Ret
188}
189
190Constants [
191 0 => u64: 2
192 1 => u64: 500000000
193 2 => u64: 1000000000
194 3 => u128: 1000000000
195 4 => u64: 18446744073709551615
196 5 => u128: 340282366920938463463374607431768211455
197 6 => u64: 1
198 7 => u64: 9223372036854775807
199 8 => u64: 100000000
200 9 => u64: 1000000
201 10 => u64: 1250000000
202 11 => u8: 0
203 12 => u8: 1
204 13 => u8: 2
205 14 => u8: 3
206 15 => u8: 4
207 16 => u64: 100
208 17 => u64: 64
209 18 => u64: 28
210 19 => bool: true
211]
212}
213
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/deep_price.mvb522 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.deep_price {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
6use 0000000000000000000000000000000000000000000000000000000000000001::vector;
7use 0000000000000000000000000000000000000000000000000000000000000002::event;
8use 0000000000000000000000000000000000000000000000000000000000000002::object;
9
10struct Price has drop, store {
11 conversion_rate: u64,
12 timestamp: u64
13}
14
15struct PriceAdded has copy, drop {
16 conversion_rate: u64,
17 timestamp: u64,
18 is_base_conversion: bool,
19 reference_pool: ID,
20 target_pool: ID
21}
22
23struct DeepPrice has drop, store {
24 base_prices: vector<Price>,
25 cumulative_base: u64,
26 quote_prices: vector<Price>,
27 cumulative_quote: u64
28}
29
30struct OrderDeepPrice has copy, drop, store {
31 asset_is_base: bool,
32 deep_per_asset: u64
33}
34
35public asset_is_base(Arg0: &OrderDeepPrice): bool {
36B0:
37 0: MoveLoc[0](Arg0: &OrderDeepPrice)
38 1: ImmBorrowField[0](OrderDeepPrice.asset_is_base: bool)
39 2: ReadRef
40 3: Ret
41}
42
43public deep_per_asset(Arg0: &OrderDeepPrice): u64 {
44B0:
45 0: MoveLoc[0](Arg0: &OrderDeepPrice)
46 1: ImmBorrowField[1](OrderDeepPrice.deep_per_asset: u64)
47 2: ReadRef
48 3: Ret
49}
50
51public(friend) empty(): DeepPrice {
52B0:
53 0: VecPack(15, 0)
54 1: LdU64(0)
55 2: VecPack(15, 0)
56 3: LdU64(0)
57 4: Pack[2](DeepPrice)
58 5: Ret
59}
60
61public(friend) new_order_deep_price(Arg0: bool, Arg1: u64): OrderDeepPrice {
62B0:
63 0: MoveLoc[0](Arg0: bool)
64 1: MoveLoc[1](Arg1: u64)
65 2: Pack[3](OrderDeepPrice)
66 3: Ret
67}
68
69public(friend) get_order_deep_price(Arg0: &DeepPrice, Arg1: bool): OrderDeepPrice {
70B0:
71 0: MoveLoc[0](Arg0: &DeepPrice)
72 1: MoveLoc[1](Arg1: bool)
73 2: Call calculate_order_deep_price(&DeepPrice, bool): bool * u64
74 3: Call new_order_deep_price(bool, u64): OrderDeepPrice
75 4: Ret
76}
77
78public(friend) empty_deep_price(Arg0: &DeepPrice): OrderDeepPrice {
79B0:
80 0: LdFalse
81 1: LdU64(0)
82 2: Call new_order_deep_price(bool, u64): OrderDeepPrice
83 3: Ret
84}
85
86public(friend) fee_quantity(Arg0: &OrderDeepPrice, Arg1: u64, Arg2: u64, Arg3: bool): Balances {
87L4: loc0: u64
88L5: loc1: Balances
89L6: loc2: Balances
90L7: loc3: u64
91B0:
92 0: CopyLoc[0](Arg0: &OrderDeepPrice)
93 1: ImmBorrowField[0](OrderDeepPrice.asset_is_base: bool)
94 2: ReadRef
95 3: BrFalse(11)
96B1:
97 4: CopyLoc[1](Arg1: u64)
98 5: CopyLoc[0](Arg0: &OrderDeepPrice)
99 6: ImmBorrowField[1](OrderDeepPrice.deep_per_asset: u64)
100 7: ReadRef
101 8: Call math::mul(u64, u64): u64
102 9: StLoc[4](loc0: u64)
103 10: Branch(17)
104B2:
105 11: CopyLoc[2](Arg2: u64)
106 12: CopyLoc[0](Arg0: &OrderDeepPrice)
107 13: ImmBorrowField[1](OrderDeepPrice.deep_per_asset: u64)
108 14: ReadRef
109 15: Call math::mul(u64, u64): u64
110 16: StLoc[4](loc0: u64)
111B3:
112 17: MoveLoc[4](loc0: u64)
113 18: StLoc[7](loc3: u64)
114 19: MoveLoc[0](Arg0: &OrderDeepPrice)
115 20: ImmBorrowField[1](OrderDeepPrice.deep_per_asset: u64)
116 21: ReadRef
117 22: LdU64(0)
118 23: Gt
119 24: BrFalse(31)
120B4:
121 25: LdU64(0)
122 26: LdU64(0)
123 27: MoveLoc[7](loc3: u64)
124 28: Call balances::new(u64, u64, u64): Balances
125 29: StLoc[6](loc2: Balances)
126 30: Branch(50)
127B5:
128 31: MoveLoc[3](Arg3: bool)
129 32: BrFalse(41)
130B6:
131 33: LdU64(0)
132 34: MoveLoc[2](Arg2: u64)
133 35: Call constants::fee_penalty_multiplier(): u64
134 36: Call math::mul(u64, u64): u64
135 37: LdU64(0)
136 38: Call balances::new(u64, u64, u64): Balances
137 39: StLoc[5](loc1: Balances)
138 40: Branch(48)
139B7:
140 41: MoveLoc[1](Arg1: u64)
141 42: Call constants::fee_penalty_multiplier(): u64
142 43: Call math::mul(u64, u64): u64
143 44: LdU64(0)
144 45: LdU64(0)
145 46: Call balances::new(u64, u64, u64): Balances
146 47: StLoc[5](loc1: Balances)
147B8:
148 48: MoveLoc[5](loc1: Balances)
149 49: StLoc[6](loc2: Balances)
150B9:
151 50: MoveLoc[6](loc2: Balances)
152 51: Ret
153}
154
155public(friend) deep_quantity_u128(Arg0: &OrderDeepPrice, Arg1: u128, Arg2: u128): u128 {
156L3: loc0: u128
157B0:
158 0: CopyLoc[0](Arg0: &OrderDeepPrice)
159 1: ImmBorrowField[0](OrderDeepPrice.asset_is_base: bool)
160 2: ReadRef
161 3: BrFalse(12)
162B1:
163 4: MoveLoc[1](Arg1: u128)
164 5: MoveLoc[0](Arg0: &OrderDeepPrice)
165 6: ImmBorrowField[1](OrderDeepPrice.deep_per_asset: u64)
166 7: ReadRef
167 8: CastU128
168 9: Call math::mul_u128(u128, u128): u128
169 10: StLoc[3](loc0: u128)
170 11: Branch(19)
171B2:
172 12: MoveLoc[2](Arg2: u128)
173 13: MoveLoc[0](Arg0: &OrderDeepPrice)
174 14: ImmBorrowField[1](OrderDeepPrice.deep_per_asset: u64)
175 15: ReadRef
176 16: CastU128
177 17: Call math::mul_u128(u128, u128): u128
178 18: StLoc[3](loc0: u128)
179B3:
180 19: MoveLoc[3](loc0: u128)
181 20: Ret
182}
183
184public(friend) add_price_point(Arg0: &mut DeepPrice, Arg1: u64, Arg2: u64, Arg3: bool) {
185L4: loc0: &mut vector<Price>
186L5: loc1: u64
187L6: loc2: u64
188L7: loc3: &mut vector<Price>
189L8: loc4: bool
190L9: loc5: bool
191L10: loc6: &mut vector<Price>
192B0:
193 0: CopyLoc[0](Arg0: &mut DeepPrice)
194 1: FreezeRef
195 2: CopyLoc[3](Arg3: bool)
196 3: Call last_insert_timestamp(&DeepPrice, bool): u64
197 4: LdConst[2](u64: 60000)
198 5: Add
199 6: CopyLoc[2](Arg2: u64)
200 7: Lt
201 8: BrFalse(10)
202B1:
203 9: Branch(14)
204B2:
205 10: MoveLoc[0](Arg0: &mut DeepPrice)
206 11: Pop
207 12: LdConst[0](u64: 1)
208 13: Abort
209B3:
210 14: CopyLoc[3](Arg3: bool)
211 15: BrFalse(20)
212B4:
213 16: CopyLoc[0](Arg0: &mut DeepPrice)
214 17: MutBorrowField[2](DeepPrice.base_prices: vector<Price>)
215 18: StLoc[4](loc0: &mut vector<Price>)
216 19: Branch(23)
217B5:
218 20: CopyLoc[0](Arg0: &mut DeepPrice)
219 21: MutBorrowField[3](DeepPrice.quote_prices: vector<Price>)
220 22: StLoc[4](loc0: &mut vector<Price>)
221B6:
222 23: MoveLoc[4](loc0: &mut vector<Price>)
223 24: StLoc[10](loc6: &mut vector<Price>)
224 25: CopyLoc[10](loc6: &mut vector<Price>)
225 26: StLoc[7](loc3: &mut vector<Price>)
226 27: CopyLoc[2](Arg2: u64)
227 28: StLoc[5](loc1: u64)
228 29: CopyLoc[1](Arg1: u64)
229 30: StLoc[6](loc2: u64)
230 31: MoveLoc[7](loc3: &mut vector<Price>)
231 32: MoveLoc[6](loc2: u64)
232 33: MoveLoc[5](loc1: u64)
233 34: Pack[0](Price)
234 35: VecPushBack(15)
235 36: MoveLoc[3](Arg3: bool)
236 37: BrFalse(93)
237B7:
238 38: CopyLoc[0](Arg0: &mut DeepPrice)
239 39: ImmBorrowField[4](DeepPrice.cumulative_base: u64)
240 40: ReadRef
241 41: MoveLoc[1](Arg1: u64)
242 42: Add
243 43: CopyLoc[0](Arg0: &mut DeepPrice)
244 44: MutBorrowField[4](DeepPrice.cumulative_base: u64)
245 45: WriteRef
246B8:
247 46: CopyLoc[10](loc6: &mut vector<Price>)
248 47: FreezeRef
249 48: VecLen(15)
250 49: LdConst[4](u64: 100)
251 50: LdU64(1)
252 51: Add
253 52: Eq
254 53: BrFalse(57)
255B9:
256 54: LdTrue
257 55: StLoc[8](loc4: bool)
258 56: Branch(68)
259B10:
260 57: CopyLoc[10](loc6: &mut vector<Price>)
261 58: FreezeRef
262 59: LdU64(0)
263 60: VecImmBorrow(15)
264 61: ImmBorrowField[5](Price.timestamp: u64)
265 62: ReadRef
266 63: LdConst[3](u64: 8640..)
267 64: Add
268 65: CopyLoc[2](Arg2: u64)
269 66: Lt
270 67: StLoc[8](loc4: bool)
271B11:
272 68: MoveLoc[8](loc4: bool)
273 69: BrFalse(88)
274B12:
275 70: CopyLoc[0](Arg0: &mut DeepPrice)
276 71: ImmBorrowField[4](DeepPrice.cumulative_base: u64)
277 72: ReadRef
278 73: CopyLoc[10](loc6: &mut vector<Price>)
279 74: FreezeRef
280 75: LdU64(0)
281 76: VecImmBorrow(15)
282 77: ImmBorrowField[6](Price.conversion_rate: u64)
283 78: ReadRef
284 79: Sub
285 80: CopyLoc[0](Arg0: &mut DeepPrice)
286 81: MutBorrowField[4](DeepPrice.cumulative_base: u64)
287 82: WriteRef
288 83: CopyLoc[10](loc6: &mut vector<Price>)
289 84: LdU64(0)
290 85: Call vector::remove<Price>(&mut vector<Price>, u64): Price
291 86: Pop
292 87: Branch(46)
293B13:
294 88: MoveLoc[0](Arg0: &mut DeepPrice)
295 89: Pop
296 90: MoveLoc[10](loc6: &mut vector<Price>)
297 91: Pop
298 92: Branch(147)
299B14:
300 93: CopyLoc[0](Arg0: &mut DeepPrice)
301 94: ImmBorrowField[7](DeepPrice.cumulative_quote: u64)
302 95: ReadRef
303 96: MoveLoc[1](Arg1: u64)
304 97: Add
305 98: CopyLoc[0](Arg0: &mut DeepPrice)
306 99: MutBorrowField[7](DeepPrice.cumulative_quote: u64)
307 100: WriteRef
308B15:
309 101: CopyLoc[10](loc6: &mut vector<Price>)
310 102: FreezeRef
311 103: VecLen(15)
312 104: LdConst[4](u64: 100)
313 105: LdU64(1)
314 106: Add
315 107: Eq
316 108: BrFalse(112)
317B16:
318 109: LdTrue
319 110: StLoc[9](loc5: bool)
320 111: Branch(123)
321B17:
322 112: CopyLoc[10](loc6: &mut vector<Price>)
323 113: FreezeRef
324 114: LdU64(0)
325 115: VecImmBorrow(15)
326 116: ImmBorrowField[5](Price.timestamp: u64)
327 117: ReadRef
328 118: LdConst[3](u64: 8640..)
329 119: Add
330 120: CopyLoc[2](Arg2: u64)
331 121: Lt
332 122: StLoc[9](loc5: bool)
333B18:
334 123: MoveLoc[9](loc5: bool)
335 124: BrFalse(143)
336B19:
337 125: CopyLoc[0](Arg0: &mut DeepPrice)
338 126: ImmBorrowField[7](DeepPrice.cumulative_quote: u64)
339 127: ReadRef
340 128: CopyLoc[10](loc6: &mut vector<Price>)
341 129: FreezeRef
342 130: LdU64(0)
343 131: VecImmBorrow(15)
344 132: ImmBorrowField[6](Price.conversion_rate: u64)
345 133: ReadRef
346 134: Sub
347 135: CopyLoc[0](Arg0: &mut DeepPrice)
348 136: MutBorrowField[7](DeepPrice.cumulative_quote: u64)
349 137: WriteRef
350 138: CopyLoc[10](loc6: &mut vector<Price>)
351 139: LdU64(0)
352 140: Call vector::remove<Price>(&mut vector<Price>, u64): Price
353 141: Pop
354 142: Branch(101)
355B20:
356 143: MoveLoc[0](Arg0: &mut DeepPrice)
357 144: Pop
358 145: MoveLoc[10](loc6: &mut vector<Price>)
359 146: Pop
360B21:
361 147: Ret
362}
363
364public(friend) emit_deep_price_added(Arg0: u64, Arg1: u64, Arg2: bool, Arg3: ID, Arg4: ID) {
365B0:
366 0: MoveLoc[0](Arg0: u64)
367 1: MoveLoc[1](Arg1: u64)
368 2: MoveLoc[2](Arg2: bool)
369 3: MoveLoc[3](Arg3: ID)
370 4: MoveLoc[4](Arg4: ID)
371 5: Pack[1](PriceAdded)
372 6: Call event::emit<PriceAdded>(PriceAdded)
373 7: Ret
374}
375
376calculate_order_deep_price(Arg0: &DeepPrice, Arg1: bool): bool * u64 {
377L2: loc0: bool
378L3: loc1: u64
379L4: loc2: u64
380L5: loc3: u64
381L6: loc4: u64
382L7: loc5: u64
383L8: loc6: bool
384B0:
385 0: MoveLoc[1](Arg1: bool)
386 1: BrFalse(7)
387B1:
388 2: MoveLoc[0](Arg0: &DeepPrice)
389 3: Pop
390 4: LdFalse
391 5: LdU64(0)
392 6: Ret
393B2:
394 7: CopyLoc[0](Arg0: &DeepPrice)
395 8: LdTrue
396 9: Call last_insert_timestamp(&DeepPrice, bool): u64
397 10: LdU64(0)
398 11: Gt
399 12: BrFalse(16)
400B3:
401 13: LdTrue
402 14: StLoc[2](loc0: bool)
403 15: Branch(22)
404B4:
405 16: CopyLoc[0](Arg0: &DeepPrice)
406 17: LdFalse
407 18: Call last_insert_timestamp(&DeepPrice, bool): u64
408 19: LdU64(0)
409 20: Gt
410 21: StLoc[2](loc0: bool)
411B5:
412 22: MoveLoc[2](loc0: bool)
413 23: BrFalse(25)
414B6:
415 24: Branch(29)
416B7:
417 25: MoveLoc[0](Arg0: &DeepPrice)
418 26: Pop
419 27: LdConst[1](u64: 2)
420 28: Abort
421B8:
422 29: CopyLoc[0](Arg0: &DeepPrice)
423 30: LdFalse
424 31: Call last_insert_timestamp(&DeepPrice, bool): u64
425 32: LdU64(0)
426 33: Eq
427 34: StLoc[8](loc6: bool)
428 35: CopyLoc[8](loc6: bool)
429 36: BrFalse(42)
430B9:
431 37: CopyLoc[0](Arg0: &DeepPrice)
432 38: ImmBorrowField[4](DeepPrice.cumulative_base: u64)
433 39: ReadRef
434 40: StLoc[3](loc1: u64)
435 41: Branch(46)
436B10:
437 42: CopyLoc[0](Arg0: &DeepPrice)
438 43: ImmBorrowField[7](DeepPrice.cumulative_quote: u64)
439 44: ReadRef
440 45: StLoc[3](loc1: u64)
441B11:
442 46: MoveLoc[3](loc1: u64)
443 47: StLoc[6](loc4: u64)
444 48: CopyLoc[8](loc6: bool)
445 49: BrFalse(55)
446B12:
447 50: MoveLoc[0](Arg0: &DeepPrice)
448 51: ImmBorrowField[2](DeepPrice.base_prices: vector<Price>)
449 52: VecLen(15)
450 53: StLoc[4](loc2: u64)
451 54: Branch(59)
452B13:
453 55: MoveLoc[0](Arg0: &DeepPrice)
454 56: ImmBorrowField[3](DeepPrice.quote_prices: vector<Price>)
455 57: VecLen(15)
456 58: StLoc[4](loc2: u64)
457B14:
458 59: MoveLoc[4](loc2: u64)
459 60: StLoc[5](loc3: u64)
460 61: MoveLoc[6](loc4: u64)
461 62: MoveLoc[5](loc3: u64)
462 63: Div
463 64: StLoc[7](loc5: u64)
464 65: MoveLoc[8](loc6: bool)
465 66: MoveLoc[7](loc5: u64)
466 67: Ret
467}
468
469last_insert_timestamp(Arg0: &DeepPrice, Arg1: bool): u64 {
470L2: loc0: &vector<Price>
471L3: loc1: u64
472L4: loc2: &vector<Price>
473B0:
474 0: MoveLoc[1](Arg1: bool)
475 1: BrFalse(6)
476B1:
477 2: MoveLoc[0](Arg0: &DeepPrice)
478 3: ImmBorrowField[2](DeepPrice.base_prices: vector<Price>)
479 4: StLoc[2](loc0: &vector<Price>)
480 5: Branch(9)
481B2:
482 6: MoveLoc[0](Arg0: &DeepPrice)
483 7: ImmBorrowField[3](DeepPrice.quote_prices: vector<Price>)
484 8: StLoc[2](loc0: &vector<Price>)
485B3:
486 9: MoveLoc[2](loc0: &vector<Price>)
487 10: StLoc[4](loc2: &vector<Price>)
488 11: CopyLoc[4](loc2: &vector<Price>)
489 12: VecLen(15)
490 13: LdU64(0)
491 14: Gt
492 15: BrFalse(26)
493B4:
494 16: CopyLoc[4](loc2: &vector<Price>)
495 17: MoveLoc[4](loc2: &vector<Price>)
496 18: VecLen(15)
497 19: LdU64(1)
498 20: Sub
499 21: VecImmBorrow(15)
500 22: ImmBorrowField[5](Price.timestamp: u64)
501 23: ReadRef
502 24: StLoc[3](loc1: u64)
503 25: Branch(30)
504B5:
505 26: MoveLoc[4](loc2: &vector<Price>)
506 27: Pop
507 28: LdU64(0)
508 29: StLoc[3](loc1: u64)
509B6:
510 30: MoveLoc[3](loc1: u64)
511 31: Ret
512}
513
514Constants [
515 0 => u64: 1
516 1 => u64: 2
517 2 => u64: 60000
518 3 => u64: 86400000
519 4 => u64: 100
520]
521}
522
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/governance.mvb755 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.governance {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::trade_params;
6use 0000000000000000000000000000000000000000000000000000000000000001::option;
7use 0000000000000000000000000000000000000000000000000000000000000001::u64;
8use 0000000000000000000000000000000000000000000000000000000000000002::event;
9use 0000000000000000000000000000000000000000000000000000000000000002::object;
10use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
11use 0000000000000000000000000000000000000000000000000000000000000002::vec_map;
12
13struct Proposal has copy, drop, store {
14 taker_fee: u64,
15 maker_fee: u64,
16 stake_required: u64,
17 votes: u64
18}
19
20struct Governance has store {
21 epoch: u64,
22 whitelisted: bool,
23 stable: bool,
24 proposals: VecMap<ID, Proposal>,
25 trade_params: TradeParams,
26 next_trade_params: TradeParams,
27 voting_power: u64,
28 quorum: u64
29}
30
31struct TradeParamsUpdateEvent has copy, drop {
32 taker_fee: u64,
33 maker_fee: u64,
34 stake_required: u64
35}
36
37public(friend) empty(Arg0: bool, Arg1: &TxContext): Governance {
38L2: loc0: u64
39L3: loc1: u64
40L4: loc2: u64
41L5: loc3: u64
42B0:
43 0: CopyLoc[0](Arg0: bool)
44 1: BrFalse(5)
45B1:
46 2: LdConst[7](u64: 100000)
47 3: StLoc[2](loc0: u64)
48 4: Branch(7)
49B2:
50 5: LdConst[10](u64: 1000..)
51 6: StLoc[2](loc0: u64)
52B3:
53 7: MoveLoc[2](loc0: u64)
54 8: StLoc[5](loc3: u64)
55 9: CopyLoc[0](Arg0: bool)
56 10: BrFalse(14)
57B4:
58 11: LdConst[9](u64: 50000)
59 12: StLoc[3](loc1: u64)
60 13: Branch(16)
61B5:
62 14: LdConst[11](u64: 500000)
63 15: StLoc[3](loc1: u64)
64B6:
65 16: MoveLoc[3](loc1: u64)
66 17: StLoc[4](loc2: u64)
67 18: MoveLoc[1](Arg1: &TxContext)
68 19: Call tx_context::epoch(&TxContext): u64
69 20: LdFalse
70 21: MoveLoc[0](Arg0: bool)
71 22: Call vec_map::empty<ID, Proposal>(): VecMap<ID, Proposal>
72 23: CopyLoc[5](loc3: u64)
73 24: CopyLoc[4](loc2: u64)
74 25: Call constants::default_stake_required(): u64
75 26: Call trade_params::new(u64, u64, u64): TradeParams
76 27: MoveLoc[5](loc3: u64)
77 28: MoveLoc[4](loc2: u64)
78 29: Call constants::default_stake_required(): u64
79 30: Call trade_params::new(u64, u64, u64): TradeParams
80 31: LdU64(0)
81 32: LdU64(0)
82 33: Pack[1](Governance)
83 34: Ret
84}
85
86public(friend) set_whitelist(Arg0: &mut Governance, Arg1: bool) {
87B0:
88 0: MoveLoc[1](Arg1: bool)
89 1: CopyLoc[0](Arg0: &mut Governance)
90 2: MutBorrowField[0](Governance.whitelisted: bool)
91 3: WriteRef
92 4: MoveLoc[0](Arg0: &mut Governance)
93 5: Call reset_trade_params(&mut Governance)
94 6: Ret
95}
96
97public(friend) whitelisted(Arg0: &Governance): bool {
98B0:
99 0: MoveLoc[0](Arg0: &Governance)
100 1: ImmBorrowField[0](Governance.whitelisted: bool)
101 2: ReadRef
102 3: Ret
103}
104
105public(friend) stable(Arg0: &Governance): bool {
106B0:
107 0: MoveLoc[0](Arg0: &Governance)
108 1: ImmBorrowField[1](Governance.stable: bool)
109 2: ReadRef
110 3: Ret
111}
112
113public(friend) quorum(Arg0: &Governance): u64 {
114B0:
115 0: MoveLoc[0](Arg0: &Governance)
116 1: ImmBorrowField[2](Governance.quorum: u64)
117 2: ReadRef
118 3: Ret
119}
120
121public(friend) update(Arg0: &mut Governance, Arg1: &TxContext) {
122L2: loc0: u64
123B0:
124 0: MoveLoc[1](Arg1: &TxContext)
125 1: Call tx_context::epoch(&TxContext): u64
126 2: StLoc[2](loc0: u64)
127 3: CopyLoc[0](Arg0: &mut Governance)
128 4: ImmBorrowField[3](Governance.epoch: u64)
129 5: ReadRef
130 6: CopyLoc[2](loc0: u64)
131 7: Eq
132 8: BrFalse(12)
133B1:
134 9: MoveLoc[0](Arg0: &mut Governance)
135 10: Pop
136 11: Ret
137B2:
138 12: MoveLoc[2](loc0: u64)
139 13: CopyLoc[0](Arg0: &mut Governance)
140 14: MutBorrowField[3](Governance.epoch: u64)
141 15: WriteRef
142 16: CopyLoc[0](Arg0: &mut Governance)
143 17: ImmBorrowField[4](Governance.voting_power: u64)
144 18: ReadRef
145 19: Call constants::half(): u64
146 20: Call math::mul(u64, u64): u64
147 21: CopyLoc[0](Arg0: &mut Governance)
148 22: MutBorrowField[2](Governance.quorum: u64)
149 23: WriteRef
150 24: Call vec_map::empty<ID, Proposal>(): VecMap<ID, Proposal>
151 25: CopyLoc[0](Arg0: &mut Governance)
152 26: MutBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
153 27: WriteRef
154 28: CopyLoc[0](Arg0: &mut Governance)
155 29: ImmBorrowField[6](Governance.next_trade_params: TradeParams)
156 30: ReadRef
157 31: CopyLoc[0](Arg0: &mut Governance)
158 32: MutBorrowField[7](Governance.trade_params: TradeParams)
159 33: WriteRef
160 34: CopyLoc[0](Arg0: &mut Governance)
161 35: ImmBorrowField[7](Governance.trade_params: TradeParams)
162 36: Call trade_params::taker_fee(&TradeParams): u64
163 37: CopyLoc[0](Arg0: &mut Governance)
164 38: ImmBorrowField[7](Governance.trade_params: TradeParams)
165 39: Call trade_params::maker_fee(&TradeParams): u64
166 40: MoveLoc[0](Arg0: &mut Governance)
167 41: ImmBorrowField[7](Governance.trade_params: TradeParams)
168 42: Call trade_params::stake_required(&TradeParams): u64
169 43: Pack[2](TradeParamsUpdateEvent)
170 44: Call event::emit<TradeParamsUpdateEvent>(TradeParamsUpdateEvent)
171 45: Ret
172}
173
174public(friend) add_proposal(Arg0: &mut Governance, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: ID) {
175L6: loc0: bool
176L7: loc1: bool
177L8: loc2: bool
178L9: loc3: bool
179L10: loc4: Proposal
180L11: loc5: u64
181B0:
182 0: CopyLoc[0](Arg0: &mut Governance)
183 1: ImmBorrowField[0](Governance.whitelisted: bool)
184 2: ReadRef
185 3: Not
186 4: BrFalse(6)
187B1:
188 5: Branch(10)
189B2:
190 6: MoveLoc[0](Arg0: &mut Governance)
191 7: Pop
192 8: LdConst[4](u64: 5)
193 9: Abort
194B3:
195 10: CopyLoc[1](Arg1: u64)
196 11: LdConst[5](u64: 1000)
197 12: Mod
198 13: LdU64(0)
199 14: Eq
200 15: BrFalse(17)
201B4:
202 16: Branch(21)
203B5:
204 17: MoveLoc[0](Arg0: &mut Governance)
205 18: Pop
206 19: LdConst[1](u64: 2)
207 20: Abort
208B6:
209 21: CopyLoc[2](Arg2: u64)
210 22: LdConst[5](u64: 1000)
211 23: Mod
212 24: LdU64(0)
213 25: Eq
214 26: BrFalse(28)
215B7:
216 27: Branch(32)
217B8:
218 28: MoveLoc[0](Arg0: &mut Governance)
219 29: Pop
220 30: LdConst[0](u64: 1)
221 31: Abort
222B9:
223 32: CopyLoc[0](Arg0: &mut Governance)
224 33: ImmBorrowField[1](Governance.stable: bool)
225 34: ReadRef
226 35: BrFalse(72)
227B10:
228 36: CopyLoc[1](Arg1: u64)
229 37: LdConst[6](u64: 10000)
230 38: Ge
231 39: BrFalse(45)
232B11:
233 40: CopyLoc[1](Arg1: u64)
234 41: LdConst[7](u64: 100000)
235 42: Le
236 43: StLoc[6](loc0: bool)
237 44: Branch(47)
238B12:
239 45: LdFalse
240 46: StLoc[6](loc0: bool)
241B13:
242 47: MoveLoc[6](loc0: bool)
243 48: BrFalse(50)
244B14:
245 49: Branch(54)
246B15:
247 50: MoveLoc[0](Arg0: &mut Governance)
248 51: Pop
249 52: LdConst[1](u64: 2)
250 53: Abort
251B16:
252 54: CopyLoc[2](Arg2: u64)
253 55: LdConst[8](u64: 0)
254 56: Ge
255 57: BrFalse(63)
256B17:
257 58: CopyLoc[2](Arg2: u64)
258 59: LdConst[9](u64: 50000)
259 60: Le
260 61: StLoc[7](loc1: bool)
261 62: Branch(65)
262B18:
263 63: LdFalse
264 64: StLoc[7](loc1: bool)
265B19:
266 65: MoveLoc[7](loc1: bool)
267 66: BrFalse(68)
268B20:
269 67: Branch(108)
270B21:
271 68: MoveLoc[0](Arg0: &mut Governance)
272 69: Pop
273 70: LdConst[0](u64: 1)
274 71: Abort
275B22:
276 72: CopyLoc[1](Arg1: u64)
277 73: LdConst[7](u64: 100000)
278 74: Ge
279 75: BrFalse(81)
280B23:
281 76: CopyLoc[1](Arg1: u64)
282 77: LdConst[10](u64: 1000..)
283 78: Le
284 79: StLoc[8](loc2: bool)
285 80: Branch(83)
286B24:
287 81: LdFalse
288 82: StLoc[8](loc2: bool)
289B25:
290 83: MoveLoc[8](loc2: bool)
291 84: BrFalse(86)
292B26:
293 85: Branch(90)
294B27:
295 86: MoveLoc[0](Arg0: &mut Governance)
296 87: Pop
297 88: LdConst[1](u64: 2)
298 89: Abort
299B28:
300 90: CopyLoc[2](Arg2: u64)
301 91: LdConst[8](u64: 0)
302 92: Ge
303 93: BrFalse(99)
304B29:
305 94: CopyLoc[2](Arg2: u64)
306 95: LdConst[11](u64: 500000)
307 96: Le
308 97: StLoc[9](loc3: bool)
309 98: Branch(101)
310B30:
311 99: LdFalse
312 100: StLoc[9](loc3: bool)
313B31:
314 101: MoveLoc[9](loc3: bool)
315 102: BrFalse(104)
316B32:
317 103: Branch(108)
318B33:
319 104: MoveLoc[0](Arg0: &mut Governance)
320 105: Pop
321 106: LdConst[0](u64: 1)
322 107: Abort
323B34:
324 108: MoveLoc[4](Arg4: u64)
325 109: Call stake_to_voting_power(u64): u64
326 110: StLoc[11](loc5: u64)
327 111: CopyLoc[0](Arg0: &mut Governance)
328 112: ImmBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
329 113: Call vec_map::size<ID, Proposal>(&VecMap<ID, Proposal>): u64
330 114: LdConst[12](u64: 100)
331 115: Eq
332 116: BrFalse(120)
333B35:
334 117: CopyLoc[0](Arg0: &mut Governance)
335 118: MoveLoc[11](loc5: u64)
336 119: Call remove_lowest_proposal(&mut Governance, u64)
337B36:
338 120: MoveLoc[1](Arg1: u64)
339 121: MoveLoc[2](Arg2: u64)
340 122: MoveLoc[3](Arg3: u64)
341 123: Call new_proposal(u64, u64, u64): Proposal
342 124: StLoc[10](loc4: Proposal)
343 125: MoveLoc[0](Arg0: &mut Governance)
344 126: MutBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
345 127: MoveLoc[5](Arg5: ID)
346 128: MoveLoc[10](loc4: Proposal)
347 129: Call vec_map::insert<ID, Proposal>(&mut VecMap<ID, Proposal>, ID, Proposal)
348 130: Ret
349}
350
351public(friend) adjust_vote(Arg0: &mut Governance, Arg1: Option<ID>, Arg2: Option<ID>, Arg3: u64) {
352L4: loc0: bool
353L5: loc1: bool
354L6: loc2: &Option<ID>
355L7: loc3: &mut Proposal
356L8: loc4: &mut Proposal
357L9: loc5: &ID
358L10: loc6: u64
359B0:
360 0: MoveLoc[3](Arg3: u64)
361 1: Call stake_to_voting_power(u64): u64
362 2: StLoc[10](loc6: u64)
363 3: ImmBorrowLoc[1](Arg1: Option<ID>)
364 4: Call option::is_some<ID>(&Option<ID>): bool
365 5: BrFalse(13)
366B1:
367 6: CopyLoc[0](Arg0: &mut Governance)
368 7: ImmBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
369 8: ImmBorrowLoc[1](Arg1: Option<ID>)
370 9: Call option::borrow<ID>(&Option<ID>): &ID
371 10: Call vec_map::contains<ID, Proposal>(&VecMap<ID, Proposal>, &ID): bool
372 11: StLoc[4](loc0: bool)
373 12: Branch(15)
374B2:
375 13: LdFalse
376 14: StLoc[4](loc0: bool)
377B3:
378 15: MoveLoc[4](loc0: bool)
379 16: BrFalse(62)
380B4:
381 17: CopyLoc[0](Arg0: &mut Governance)
382 18: MutBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
383 19: ImmBorrowLoc[1](Arg1: Option<ID>)
384 20: Call option::borrow<ID>(&Option<ID>): &ID
385 21: Call vec_map::get_mut<ID, Proposal>(&mut VecMap<ID, Proposal>, &ID): &mut Proposal
386 22: StLoc[7](loc3: &mut Proposal)
387 23: CopyLoc[7](loc3: &mut Proposal)
388 24: ImmBorrowField[8](Proposal.votes: u64)
389 25: ReadRef
390 26: CopyLoc[10](loc6: u64)
391 27: Sub
392 28: CopyLoc[7](loc3: &mut Proposal)
393 29: MutBorrowField[8](Proposal.votes: u64)
394 30: WriteRef
395 31: CopyLoc[7](loc3: &mut Proposal)
396 32: ImmBorrowField[8](Proposal.votes: u64)
397 33: ReadRef
398 34: CopyLoc[10](loc6: u64)
399 35: Add
400 36: CopyLoc[0](Arg0: &mut Governance)
401 37: ImmBorrowField[2](Governance.quorum: u64)
402 38: ReadRef
403 39: Gt
404 40: BrFalse(50)
405B5:
406 41: MoveLoc[7](loc3: &mut Proposal)
407 42: ImmBorrowField[8](Proposal.votes: u64)
408 43: ReadRef
409 44: CopyLoc[0](Arg0: &mut Governance)
410 45: ImmBorrowField[2](Governance.quorum: u64)
411 46: ReadRef
412 47: Lt
413 48: StLoc[5](loc1: bool)
414 49: Branch(54)
415B6:
416 50: MoveLoc[7](loc3: &mut Proposal)
417 51: Pop
418 52: LdFalse
419 53: StLoc[5](loc1: bool)
420B7:
421 54: MoveLoc[5](loc1: bool)
422 55: BrFalse(62)
423B8:
424 56: CopyLoc[0](Arg0: &mut Governance)
425 57: ImmBorrowField[7](Governance.trade_params: TradeParams)
426 58: ReadRef
427 59: CopyLoc[0](Arg0: &mut Governance)
428 60: MutBorrowField[6](Governance.next_trade_params: TradeParams)
429 61: WriteRef
430B9:
431 62: ImmBorrowLoc[2](Arg2: Option<ID>)
432 63: StLoc[6](loc2: &Option<ID>)
433 64: CopyLoc[6](loc2: &Option<ID>)
434 65: Call option::is_some<ID>(&Option<ID>): bool
435 66: BrFalse(115)
436B10:
437 67: MoveLoc[6](loc2: &Option<ID>)
438 68: Call option::borrow<ID>(&Option<ID>): &ID
439 69: StLoc[9](loc5: &ID)
440 70: CopyLoc[0](Arg0: &mut Governance)
441 71: ImmBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
442 72: CopyLoc[9](loc5: &ID)
443 73: Call vec_map::contains<ID, Proposal>(&VecMap<ID, Proposal>, &ID): bool
444 74: BrFalse(76)
445B11:
446 75: Branch(82)
447B12:
448 76: MoveLoc[0](Arg0: &mut Governance)
449 77: Pop
450 78: MoveLoc[9](loc5: &ID)
451 79: Pop
452 80: LdConst[2](u64: 3)
453 81: Abort
454B13:
455 82: CopyLoc[0](Arg0: &mut Governance)
456 83: MutBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
457 84: MoveLoc[9](loc5: &ID)
458 85: Call vec_map::get_mut<ID, Proposal>(&mut VecMap<ID, Proposal>, &ID): &mut Proposal
459 86: StLoc[8](loc4: &mut Proposal)
460 87: CopyLoc[8](loc4: &mut Proposal)
461 88: ImmBorrowField[8](Proposal.votes: u64)
462 89: ReadRef
463 90: MoveLoc[10](loc6: u64)
464 91: Add
465 92: CopyLoc[8](loc4: &mut Proposal)
466 93: MutBorrowField[8](Proposal.votes: u64)
467 94: WriteRef
468 95: CopyLoc[8](loc4: &mut Proposal)
469 96: ImmBorrowField[8](Proposal.votes: u64)
470 97: ReadRef
471 98: CopyLoc[0](Arg0: &mut Governance)
472 99: ImmBorrowField[2](Governance.quorum: u64)
473 100: ReadRef
474 101: Gt
475 102: BrFalse(110)
476B14:
477 103: MoveLoc[8](loc4: &mut Proposal)
478 104: FreezeRef
479 105: Call to_trade_params(&Proposal): TradeParams
480 106: MoveLoc[0](Arg0: &mut Governance)
481 107: MutBorrowField[6](Governance.next_trade_params: TradeParams)
482 108: WriteRef
483 109: Branch(119)
484B15:
485 110: MoveLoc[0](Arg0: &mut Governance)
486 111: Pop
487 112: MoveLoc[8](loc4: &mut Proposal)
488 113: Pop
489 114: Branch(119)
490B16:
491 115: MoveLoc[0](Arg0: &mut Governance)
492 116: Pop
493 117: MoveLoc[6](loc2: &Option<ID>)
494 118: Pop
495B17:
496 119: Ret
497}
498
499public(friend) adjust_voting_power(Arg0: &mut Governance, Arg1: u64, Arg2: u64) {
500B0:
501 0: CopyLoc[0](Arg0: &mut Governance)
502 1: ImmBorrowField[4](Governance.voting_power: u64)
503 2: ReadRef
504 3: MoveLoc[2](Arg2: u64)
505 4: Call stake_to_voting_power(u64): u64
506 5: Add
507 6: MoveLoc[1](Arg1: u64)
508 7: Call stake_to_voting_power(u64): u64
509 8: Sub
510 9: MoveLoc[0](Arg0: &mut Governance)
511 10: MutBorrowField[4](Governance.voting_power: u64)
512 11: WriteRef
513 12: Ret
514}
515
516public(friend) trade_params(Arg0: &Governance): TradeParams {
517B0:
518 0: MoveLoc[0](Arg0: &Governance)
519 1: ImmBorrowField[7](Governance.trade_params: TradeParams)
520 2: ReadRef
521 3: Ret
522}
523
524public(friend) next_trade_params(Arg0: &Governance): TradeParams {
525B0:
526 0: MoveLoc[0](Arg0: &Governance)
527 1: ImmBorrowField[6](Governance.next_trade_params: TradeParams)
528 2: ReadRef
529 3: Ret
530}
531
532stake_to_voting_power(Arg0: u64): u64 {
533L1: loc0: u64
534B0:
535 0: CopyLoc[0](Arg0: u64)
536 1: LdConst[13](u64: 1000..)
537 2: Call u64::min(u64, u64): u64
538 3: StLoc[1](loc0: u64)
539 4: CopyLoc[0](Arg0: u64)
540 5: LdConst[13](u64: 1000..)
541 6: Gt
542 7: BrFalse(18)
543B1:
544 8: MoveLoc[1](loc0: u64)
545 9: MoveLoc[0](Arg0: u64)
546 10: Call constants::deep_unit(): u64
547 11: Call math::sqrt(u64, u64): u64
548 12: Add
549 13: LdConst[13](u64: 1000..)
550 14: Call constants::deep_unit(): u64
551 15: Call math::sqrt(u64, u64): u64
552 16: Sub
553 17: StLoc[1](loc0: u64)
554B2:
555 18: MoveLoc[1](loc0: u64)
556 19: Ret
557}
558
559new_proposal(Arg0: u64, Arg1: u64, Arg2: u64): Proposal {
560B0:
561 0: MoveLoc[0](Arg0: u64)
562 1: MoveLoc[1](Arg1: u64)
563 2: MoveLoc[2](Arg2: u64)
564 3: LdU64(0)
565 4: Pack[0](Proposal)
566 5: Ret
567}
568
569remove_lowest_proposal(Arg0: &mut Governance, Arg1: u64) {
570L2: loc0: u64
571L3: loc1: bool
572L4: loc2: u64
573L5: loc3: u64
574L6: loc4: u64
575L7: loc5: vector<ID>
576L8: loc6: u64
577L9: loc7: Option<ID>
578L10: loc8: u64
579L11: loc9: vector<Proposal>
580B0:
581 0: Call option::none<ID>(): Option<ID>
582 1: StLoc[9](loc7: Option<ID>)
583 2: Call constants::max_u64(): u64
584 3: StLoc[4](loc2: u64)
585 4: CopyLoc[0](Arg0: &mut Governance)
586 5: ImmBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
587 6: ReadRef
588 7: Call vec_map::into_keys_values<ID, Proposal>(VecMap<ID, Proposal>): vector<ID> * vector<Proposal>
589 8: StLoc[11](loc9: vector<Proposal>)
590 9: StLoc[7](loc5: vector<ID>)
591 10: CopyLoc[0](Arg0: &mut Governance)
592 11: ImmBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
593 12: Call vec_map::size<ID, Proposal>(&VecMap<ID, Proposal>): u64
594 13: StLoc[2](loc0: u64)
595 14: LdU64(0)
596 15: StLoc[5](loc3: u64)
597 16: MoveLoc[2](loc0: u64)
598 17: StLoc[10](loc8: u64)
599B1:
600 18: CopyLoc[5](loc3: u64)
601 19: CopyLoc[10](loc8: u64)
602 20: Lt
603 21: BrFalse(57)
604B2:
605 22: CopyLoc[5](loc3: u64)
606 23: StLoc[6](loc4: u64)
607 24: ImmBorrowLoc[11](loc9: vector<Proposal>)
608 25: CopyLoc[6](loc4: u64)
609 26: VecImmBorrow(13)
610 27: ImmBorrowField[8](Proposal.votes: u64)
611 28: ReadRef
612 29: StLoc[8](loc6: u64)
613 30: CopyLoc[8](loc6: u64)
614 31: CopyLoc[1](Arg1: u64)
615 32: Lt
616 33: BrFalse(39)
617B3:
618 34: CopyLoc[8](loc6: u64)
619 35: CopyLoc[4](loc2: u64)
620 36: Le
621 37: StLoc[3](loc1: bool)
622 38: Branch(42)
623B4:
624 39: LdFalse
625 40: StLoc[3](loc1: bool)
626 41: Branch(42)
627B5:
628 42: MoveLoc[3](loc1: bool)
629 43: BrFalse(52)
630B6:
631 44: ImmBorrowLoc[7](loc5: vector<ID>)
632 45: MoveLoc[6](loc4: u64)
633 46: VecImmBorrow(29)
634 47: ReadRef
635 48: Call option::some<ID>(ID): Option<ID>
636 49: StLoc[9](loc7: Option<ID>)
637 50: MoveLoc[8](loc6: u64)
638 51: StLoc[4](loc2: u64)
639B7:
640 52: MoveLoc[5](loc3: u64)
641 53: LdU64(1)
642 54: Add
643 55: StLoc[5](loc3: u64)
644 56: Branch(18)
645B8:
646 57: ImmBorrowLoc[9](loc7: Option<ID>)
647 58: Call option::is_some<ID>(&Option<ID>): bool
648 59: BrFalse(61)
649B9:
650 60: Branch(65)
651B10:
652 61: MoveLoc[0](Arg0: &mut Governance)
653 62: Pop
654 63: LdConst[3](u64: 4)
655 64: Abort
656B11:
657 65: MoveLoc[0](Arg0: &mut Governance)
658 66: MutBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
659 67: ImmBorrowLoc[9](loc7: Option<ID>)
660 68: Call option::borrow<ID>(&Option<ID>): &ID
661 69: Call vec_map::remove<ID, Proposal>(&mut VecMap<ID, Proposal>, &ID): ID * Proposal
662 70: Pop
663 71: Pop
664 72: Ret
665}
666
667reset_trade_params(Arg0: &mut Governance) {
668L1: loc0: u64
669B0:
670 0: Call vec_map::empty<ID, Proposal>(): VecMap<ID, Proposal>
671 1: CopyLoc[0](Arg0: &mut Governance)
672 2: MutBorrowField[5](Governance.proposals: VecMap<ID, Proposal>)
673 3: WriteRef
674 4: CopyLoc[0](Arg0: &mut Governance)
675 5: ImmBorrowField[7](Governance.trade_params: TradeParams)
676 6: Call trade_params::stake_required(&TradeParams): u64
677 7: StLoc[1](loc0: u64)
678 8: CopyLoc[0](Arg0: &mut Governance)
679 9: ImmBorrowField[0](Governance.whitelisted: bool)
680 10: ReadRef
681 11: BrFalse(20)
682B1:
683 12: LdU64(0)
684 13: LdU64(0)
685 14: LdU64(0)
686 15: Call trade_params::new(u64, u64, u64): TradeParams
687 16: CopyLoc[0](Arg0: &mut Governance)
688 17: MutBorrowField[7](Governance.trade_params: TradeParams)
689 18: WriteRef
690 19: Branch(39)
691B2:
692 20: CopyLoc[0](Arg0: &mut Governance)
693 21: ImmBorrowField[1](Governance.stable: bool)
694 22: ReadRef
695 23: BrFalse(32)
696B3:
697 24: LdConst[7](u64: 100000)
698 25: LdConst[9](u64: 50000)
699 26: MoveLoc[1](loc0: u64)
700 27: Call trade_params::new(u64, u64, u64): TradeParams
701 28: CopyLoc[0](Arg0: &mut Governance)
702 29: MutBorrowField[7](Governance.trade_params: TradeParams)
703 30: WriteRef
704 31: Branch(39)
705B4:
706 32: LdConst[10](u64: 1000..)
707 33: LdConst[11](u64: 500000)
708 34: MoveLoc[1](loc0: u64)
709 35: Call trade_params::new(u64, u64, u64): TradeParams
710 36: CopyLoc[0](Arg0: &mut Governance)
711 37: MutBorrowField[7](Governance.trade_params: TradeParams)
712 38: WriteRef
713B5:
714 39: CopyLoc[0](Arg0: &mut Governance)
715 40: ImmBorrowField[7](Governance.trade_params: TradeParams)
716 41: ReadRef
717 42: MoveLoc[0](Arg0: &mut Governance)
718 43: MutBorrowField[6](Governance.next_trade_params: TradeParams)
719 44: WriteRef
720 45: Ret
721}
722
723to_trade_params(Arg0: &Proposal): TradeParams {
724B0:
725 0: CopyLoc[0](Arg0: &Proposal)
726 1: ImmBorrowField[9](Proposal.taker_fee: u64)
727 2: ReadRef
728 3: CopyLoc[0](Arg0: &Proposal)
729 4: ImmBorrowField[10](Proposal.maker_fee: u64)
730 5: ReadRef
731 6: MoveLoc[0](Arg0: &Proposal)
732 7: ImmBorrowField[11](Proposal.stake_required: u64)
733 8: ReadRef
734 9: Call trade_params::new(u64, u64, u64): TradeParams
735 10: Ret
736}
737
738Constants [
739 0 => u64: 1
740 1 => u64: 2
741 2 => u64: 3
742 3 => u64: 4
743 4 => u64: 5
744 5 => u64: 1000
745 6 => u64: 10000
746 7 => u64: 100000
747 8 => u64: 0
748 9 => u64: 50000
749 10 => u64: 1000000
750 11 => u64: 500000
751 12 => u64: 100
752 13 => u64: 100000000000
753]
754}
755
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/history.mvb509 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.history {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
6use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::trade_params;
7use 0000000000000000000000000000000000000000000000000000000000000001::u128;
8use 0000000000000000000000000000000000000000000000000000000000000002::event;
9use 0000000000000000000000000000000000000000000000000000000000000002::object;
10use 0000000000000000000000000000000000000000000000000000000000000002::table;
11use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
12
13struct Volumes has copy, drop, store {
14 total_volume: u128,
15 total_staked_volume: u128,
16 total_fees_collected: Balances,
17 historic_median: u128,
18 trade_params: TradeParams
19}
20
21struct History has store {
22 epoch: u64,
23 epoch_created: u64,
24 volumes: Volumes,
25 historic_volumes: Table<u64, Volumes>,
26 balance_to_burn: u64
27}
28
29struct EpochData has copy, drop, store {
30 epoch: u64,
31 pool_id: ID,
32 total_volume: u128,
33 total_staked_volume: u128,
34 base_fees_collected: u64,
35 quote_fees_collected: u64,
36 deep_fees_collected: u64,
37 historic_median: u128,
38 taker_fee: u64,
39 maker_fee: u64,
40 stake_required: u64
41}
42
43public(friend) empty(Arg0: TradeParams, Arg1: u64, Arg2: &mut TxContext): History {
44L3: loc0: History
45L4: loc1: Volumes
46B0:
47 0: LdU128(0)
48 1: LdU128(0)
49 2: Call balances::empty(): Balances
50 3: LdU128(0)
51 4: MoveLoc[0](Arg0: TradeParams)
52 5: Pack[0](Volumes)
53 6: StLoc[4](loc1: Volumes)
54 7: CopyLoc[2](Arg2: &mut TxContext)
55 8: FreezeRef
56 9: Call tx_context::epoch(&TxContext): u64
57 10: MoveLoc[1](Arg1: u64)
58 11: CopyLoc[4](loc1: Volumes)
59 12: CopyLoc[2](Arg2: &mut TxContext)
60 13: Call table::new<u64, Volumes>(&mut TxContext): Table<u64, Volumes>
61 14: LdU64(0)
62 15: Pack[1](History)
63 16: StLoc[3](loc0: History)
64 17: MutBorrowLoc[3](loc0: History)
65 18: MutBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
66 19: MoveLoc[2](Arg2: &mut TxContext)
67 20: FreezeRef
68 21: Call tx_context::epoch(&TxContext): u64
69 22: MoveLoc[4](loc1: Volumes)
70 23: Call table::add<u64, Volumes>(&mut Table<u64, Volumes>, u64, Volumes)
71 24: MoveLoc[3](loc0: History)
72 25: Ret
73}
74
75public(friend) update(Arg0: &mut History, Arg1: TradeParams, Arg2: ID, Arg3: &TxContext) {
76L4: loc0: u64
77B0:
78 0: MoveLoc[3](Arg3: &TxContext)
79 1: Call tx_context::epoch(&TxContext): u64
80 2: StLoc[4](loc0: u64)
81 3: CopyLoc[0](Arg0: &mut History)
82 4: ImmBorrowField[1](History.epoch: u64)
83 5: ReadRef
84 6: CopyLoc[4](loc0: u64)
85 7: Eq
86 8: BrFalse(12)
87B1:
88 9: MoveLoc[0](Arg0: &mut History)
89 10: Pop
90 11: Ret
91B2:
92 12: CopyLoc[0](Arg0: &mut History)
93 13: ImmBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
94 14: CopyLoc[0](Arg0: &mut History)
95 15: ImmBorrowField[1](History.epoch: u64)
96 16: ReadRef
97 17: Call table::contains<u64, Volumes>(&Table<u64, Volumes>, u64): bool
98 18: BrFalse(26)
99B3:
100 19: CopyLoc[0](Arg0: &mut History)
101 20: MutBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
102 21: CopyLoc[0](Arg0: &mut History)
103 22: ImmBorrowField[1](History.epoch: u64)
104 23: ReadRef
105 24: Call table::remove<u64, Volumes>(&mut Table<u64, Volumes>, u64): Volumes
106 25: Pop
107B4:
108 26: CopyLoc[0](Arg0: &mut History)
109 27: Call update_historic_median(&mut History)
110 28: CopyLoc[0](Arg0: &mut History)
111 29: MutBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
112 30: CopyLoc[0](Arg0: &mut History)
113 31: ImmBorrowField[1](History.epoch: u64)
114 32: ReadRef
115 33: CopyLoc[0](Arg0: &mut History)
116 34: ImmBorrowField[2](History.volumes: Volumes)
117 35: ReadRef
118 36: Call table::add<u64, Volumes>(&mut Table<u64, Volumes>, u64, Volumes)
119 37: CopyLoc[0](Arg0: &mut History)
120 38: ImmBorrowField[1](History.epoch: u64)
121 39: ReadRef
122 40: MoveLoc[2](Arg2: ID)
123 41: CopyLoc[0](Arg0: &mut History)
124 42: ImmBorrowField[2](History.volumes: Volumes)
125 43: ImmBorrowField[3](Volumes.total_volume: u128)
126 44: ReadRef
127 45: CopyLoc[0](Arg0: &mut History)
128 46: ImmBorrowField[2](History.volumes: Volumes)
129 47: ImmBorrowField[4](Volumes.total_staked_volume: u128)
130 48: ReadRef
131 49: CopyLoc[0](Arg0: &mut History)
132 50: ImmBorrowField[2](History.volumes: Volumes)
133 51: ImmBorrowField[5](Volumes.total_fees_collected: Balances)
134 52: Call balances::base(&Balances): u64
135 53: CopyLoc[0](Arg0: &mut History)
136 54: ImmBorrowField[2](History.volumes: Volumes)
137 55: ImmBorrowField[5](Volumes.total_fees_collected: Balances)
138 56: Call balances::quote(&Balances): u64
139 57: CopyLoc[0](Arg0: &mut History)
140 58: ImmBorrowField[2](History.volumes: Volumes)
141 59: ImmBorrowField[5](Volumes.total_fees_collected: Balances)
142 60: Call balances::deep(&Balances): u64
143 61: CopyLoc[0](Arg0: &mut History)
144 62: ImmBorrowField[2](History.volumes: Volumes)
145 63: ImmBorrowField[6](Volumes.historic_median: u128)
146 64: ReadRef
147 65: ImmBorrowLoc[1](Arg1: TradeParams)
148 66: Call trade_params::taker_fee(&TradeParams): u64
149 67: ImmBorrowLoc[1](Arg1: TradeParams)
150 68: Call trade_params::maker_fee(&TradeParams): u64
151 69: ImmBorrowLoc[1](Arg1: TradeParams)
152 70: Call trade_params::stake_required(&TradeParams): u64
153 71: Pack[2](EpochData)
154 72: Call event::emit<EpochData>(EpochData)
155 73: MoveLoc[4](loc0: u64)
156 74: CopyLoc[0](Arg0: &mut History)
157 75: MutBorrowField[1](History.epoch: u64)
158 76: WriteRef
159 77: CopyLoc[0](Arg0: &mut History)
160 78: MoveLoc[1](Arg1: TradeParams)
161 79: Call reset_volumes(&mut History, TradeParams)
162 80: CopyLoc[0](Arg0: &mut History)
163 81: MutBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
164 82: CopyLoc[0](Arg0: &mut History)
165 83: ImmBorrowField[1](History.epoch: u64)
166 84: ReadRef
167 85: MoveLoc[0](Arg0: &mut History)
168 86: ImmBorrowField[2](History.volumes: Volumes)
169 87: ReadRef
170 88: Call table::add<u64, Volumes>(&mut Table<u64, Volumes>, u64, Volumes)
171 89: Ret
172}
173
174public(friend) reset_volumes(Arg0: &mut History, Arg1: TradeParams) {
175B0:
176 0: CopyLoc[0](Arg0: &mut History)
177 1: ImmBorrowField[2](History.volumes: Volumes)
178 2: ReadRef
179 3: Call event::emit<Volumes>(Volumes)
180 4: LdU128(0)
181 5: LdU128(0)
182 6: Call balances::empty(): Balances
183 7: LdU128(0)
184 8: MoveLoc[1](Arg1: TradeParams)
185 9: Pack[0](Volumes)
186 10: MoveLoc[0](Arg0: &mut History)
187 11: MutBorrowField[2](History.volumes: Volumes)
188 12: WriteRef
189 13: Ret
190}
191
192public(friend) calculate_rebate_amount(Arg0: &mut History, Arg1: u64, Arg2: u128, Arg3: u64): Balances {
193L4: loc0: u128
194L5: loc1: u64
195L6: loc2: u64
196L7: loc3: u64
197L8: loc4: u128
198L9: loc5: u64
199L10: loc6: Balances
200L11: loc7: u128
201L12: loc8: Balances
202L13: loc9: &mut Volumes
203B0:
204 0: CopyLoc[0](Arg0: &mut History)
205 1: ImmBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
206 2: CopyLoc[1](Arg1: u64)
207 3: Call table::contains<u64, Volumes>(&Table<u64, Volumes>, u64): bool
208 4: BrFalse(6)
209B1:
210 5: Branch(10)
211B2:
212 6: MoveLoc[0](Arg0: &mut History)
213 7: Pop
214 8: LdConst[0](u64: 0)
215 9: Abort
216B3:
217 10: CopyLoc[0](Arg0: &mut History)
218 11: MutBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
219 12: MoveLoc[1](Arg1: u64)
220 13: Call table::borrow_mut<u64, Volumes>(&mut Table<u64, Volumes>, u64): &mut Volumes
221 14: StLoc[13](loc9: &mut Volumes)
222 15: CopyLoc[13](loc9: &mut Volumes)
223 16: ImmBorrowField[7](Volumes.trade_params: TradeParams)
224 17: Call trade_params::stake_required(&TradeParams): u64
225 18: MoveLoc[3](Arg3: u64)
226 19: Gt
227 20: BrFalse(27)
228B4:
229 21: MoveLoc[13](loc9: &mut Volumes)
230 22: Pop
231 23: MoveLoc[0](Arg0: &mut History)
232 24: Pop
233 25: Call balances::empty(): Balances
234 26: Ret
235B5:
236 27: MoveLoc[2](Arg2: u128)
237 28: CastU128
238 29: StLoc[8](loc4: u128)
239 30: CopyLoc[13](loc9: &mut Volumes)
240 31: ImmBorrowField[3](Volumes.total_volume: u128)
241 32: ReadRef
242 33: CopyLoc[8](loc4: u128)
243 34: Sub
244 35: StLoc[11](loc7: u128)
245 36: CopyLoc[13](loc9: &mut Volumes)
246 37: ImmBorrowField[6](Volumes.historic_median: u128)
247 38: ReadRef
248 39: LdU128(0)
249 40: Gt
250 41: BrFalse(53)
251B6:
252 42: Call constants::float_scaling_u128(): u128
253 43: Call constants::float_scaling_u128(): u128
254 44: MoveLoc[11](loc7: u128)
255 45: CopyLoc[13](loc9: &mut Volumes)
256 46: ImmBorrowField[6](Volumes.historic_median: u128)
257 47: ReadRef
258 48: Call math::div_u128(u128, u128): u128
259 49: Call u128::min(u128, u128): u128
260 50: Sub
261 51: StLoc[4](loc0: u128)
262 52: Branch(55)
263B7:
264 53: LdU128(0)
265 54: StLoc[4](loc0: u128)
266B8:
267 55: MoveLoc[4](loc0: u128)
268 56: CastU64
269 57: StLoc[7](loc3: u64)
270 58: CopyLoc[13](loc9: &mut Volumes)
271 59: ImmBorrowField[4](Volumes.total_staked_volume: u128)
272 60: ReadRef
273 61: LdU128(0)
274 62: Gt
275 63: BrFalse(72)
276B9:
277 64: MoveLoc[8](loc4: u128)
278 65: CopyLoc[13](loc9: &mut Volumes)
279 66: ImmBorrowField[4](Volumes.total_staked_volume: u128)
280 67: ReadRef
281 68: Call math::div_u128(u128, u128): u128
282 69: CastU64
283 70: StLoc[5](loc1: u64)
284 71: Branch(74)
285B10:
286 72: LdU64(0)
287 73: StLoc[5](loc1: u64)
288B11:
289 74: MoveLoc[5](loc1: u64)
290 75: StLoc[9](loc5: u64)
291 76: MoveLoc[13](loc9: &mut Volumes)
292 77: ImmBorrowField[5](Volumes.total_fees_collected: Balances)
293 78: ReadRef
294 79: StLoc[10](loc6: Balances)
295 80: MutBorrowLoc[10](loc6: Balances)
296 81: MoveLoc[9](loc5: u64)
297 82: Call balances::mul(&mut Balances, u64)
298 83: CopyLoc[10](loc6: Balances)
299 84: StLoc[12](loc8: Balances)
300 85: MutBorrowLoc[12](loc8: Balances)
301 86: MoveLoc[7](loc3: u64)
302 87: Call balances::mul(&mut Balances, u64)
303 88: ImmBorrowLoc[10](loc6: Balances)
304 89: Call balances::deep(&Balances): u64
305 90: ImmBorrowLoc[12](loc8: Balances)
306 91: Call balances::deep(&Balances): u64
307 92: Sub
308 93: StLoc[6](loc2: u64)
309 94: CopyLoc[0](Arg0: &mut History)
310 95: ImmBorrowField[8](History.balance_to_burn: u64)
311 96: ReadRef
312 97: MoveLoc[6](loc2: u64)
313 98: Add
314 99: MoveLoc[0](Arg0: &mut History)
315 100: MutBorrowField[8](History.balance_to_burn: u64)
316 101: WriteRef
317 102: MoveLoc[12](loc8: Balances)
318 103: Ret
319}
320
321public(friend) update_historic_median(Arg0: &mut History) {
322L1: loc0: u64
323L2: loc1: vector<u128>
324B0:
325 0: CopyLoc[0](Arg0: &mut History)
326 1: ImmBorrowField[1](History.epoch: u64)
327 2: ReadRef
328 3: CopyLoc[0](Arg0: &mut History)
329 4: ImmBorrowField[9](History.epoch_created: u64)
330 5: ReadRef
331 6: Sub
332 7: Call constants::phase_out_epochs(): u64
333 8: Lt
334 9: BrFalse(16)
335B1:
336 10: Call constants::max_u128(): u128
337 11: MoveLoc[0](Arg0: &mut History)
338 12: MutBorrowField[2](History.volumes: Volumes)
339 13: MutBorrowField[6](Volumes.historic_median: u128)
340 14: WriteRef
341 15: Ret
342B2:
343 16: LdConst[1](vector<u128>: 00)
344 17: StLoc[2](loc1: vector<u128>)
345 18: CopyLoc[0](Arg0: &mut History)
346 19: ImmBorrowField[1](History.epoch: u64)
347 20: ReadRef
348 21: Call constants::phase_out_epochs(): u64
349 22: Sub
350 23: StLoc[1](loc0: u64)
351B3:
352 24: CopyLoc[1](loc0: u64)
353 25: CopyLoc[0](Arg0: &mut History)
354 26: ImmBorrowField[1](History.epoch: u64)
355 27: ReadRef
356 28: Lt
357 29: BrFalse(53)
358B4:
359 30: CopyLoc[0](Arg0: &mut History)
360 31: ImmBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
361 32: CopyLoc[1](loc0: u64)
362 33: Call table::contains<u64, Volumes>(&Table<u64, Volumes>, u64): bool
363 34: BrFalse(45)
364B5:
365 35: Branch(36)
366B6:
367 36: MutBorrowLoc[2](loc1: vector<u128>)
368 37: CopyLoc[0](Arg0: &mut History)
369 38: ImmBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
370 39: CopyLoc[1](loc0: u64)
371 40: Call table::borrow<u64, Volumes>(&Table<u64, Volumes>, u64): &Volumes
372 41: ImmBorrowField[3](Volumes.total_volume: u128)
373 42: ReadRef
374 43: VecPushBack(30)
375 44: Branch(48)
376B7:
377 45: MutBorrowLoc[2](loc1: vector<u128>)
378 46: LdU128(0)
379 47: VecPushBack(30)
380B8:
381 48: MoveLoc[1](loc0: u64)
382 49: LdU64(1)
383 50: Add
384 51: StLoc[1](loc0: u64)
385 52: Branch(24)
386B9:
387 53: MoveLoc[2](loc1: vector<u128>)
388 54: Call math::median(vector<u128>): u128
389 55: MoveLoc[0](Arg0: &mut History)
390 56: MutBorrowField[2](History.volumes: Volumes)
391 57: MutBorrowField[6](Volumes.historic_median: u128)
392 58: WriteRef
393 59: Ret
394}
395
396public(friend) add_volume(Arg0: &mut History, Arg1: u64, Arg2: u64) {
397L3: loc0: u128
398B0:
399 0: CopyLoc[1](Arg1: u64)
400 1: LdU64(0)
401 2: Eq
402 3: BrFalse(7)
403B1:
404 4: MoveLoc[0](Arg0: &mut History)
405 5: Pop
406 6: Ret
407B2:
408 7: MoveLoc[1](Arg1: u64)
409 8: CastU128
410 9: StLoc[3](loc0: u128)
411 10: CopyLoc[0](Arg0: &mut History)
412 11: ImmBorrowField[2](History.volumes: Volumes)
413 12: ImmBorrowField[3](Volumes.total_volume: u128)
414 13: ReadRef
415 14: CopyLoc[3](loc0: u128)
416 15: Add
417 16: CopyLoc[0](Arg0: &mut History)
418 17: MutBorrowField[2](History.volumes: Volumes)
419 18: MutBorrowField[3](Volumes.total_volume: u128)
420 19: WriteRef
421 20: MoveLoc[2](Arg2: u64)
422 21: CopyLoc[0](Arg0: &mut History)
423 22: ImmBorrowField[2](History.volumes: Volumes)
424 23: ImmBorrowField[7](Volumes.trade_params: TradeParams)
425 24: Call trade_params::stake_required(&TradeParams): u64
426 25: Ge
427 26: BrFalse(38)
428B3:
429 27: CopyLoc[0](Arg0: &mut History)
430 28: ImmBorrowField[2](History.volumes: Volumes)
431 29: ImmBorrowField[4](Volumes.total_staked_volume: u128)
432 30: ReadRef
433 31: MoveLoc[3](loc0: u128)
434 32: Add
435 33: MoveLoc[0](Arg0: &mut History)
436 34: MutBorrowField[2](History.volumes: Volumes)
437 35: MutBorrowField[4](Volumes.total_staked_volume: u128)
438 36: WriteRef
439 37: Branch(40)
440B4:
441 38: MoveLoc[0](Arg0: &mut History)
442 39: Pop
443B5:
444 40: Ret
445}
446
447public(friend) balance_to_burn(Arg0: &History): u64 {
448B0:
449 0: MoveLoc[0](Arg0: &History)
450 1: ImmBorrowField[8](History.balance_to_burn: u64)
451 2: ReadRef
452 3: Ret
453}
454
455public(friend) reset_balance_to_burn(Arg0: &mut History): u64 {
456L1: loc0: u64
457B0:
458 0: CopyLoc[0](Arg0: &mut History)
459 1: ImmBorrowField[8](History.balance_to_burn: u64)
460 2: ReadRef
461 3: StLoc[1](loc0: u64)
462 4: LdU64(0)
463 5: MoveLoc[0](Arg0: &mut History)
464 6: MutBorrowField[8](History.balance_to_burn: u64)
465 7: WriteRef
466 8: MoveLoc[1](loc0: u64)
467 9: Ret
468}
469
470public(friend) historic_maker_fee(Arg0: &History, Arg1: u64): u64 {
471B0:
472 0: CopyLoc[0](Arg0: &History)
473 1: ImmBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
474 2: CopyLoc[1](Arg1: u64)
475 3: Call table::contains<u64, Volumes>(&Table<u64, Volumes>, u64): bool
476 4: BrFalse(6)
477B1:
478 5: Branch(10)
479B2:
480 6: MoveLoc[0](Arg0: &History)
481 7: Pop
482 8: LdConst[0](u64: 0)
483 9: Abort
484B3:
485 10: MoveLoc[0](Arg0: &History)
486 11: ImmBorrowField[0](History.historic_volumes: Table<u64, Volumes>)
487 12: MoveLoc[1](Arg1: u64)
488 13: Call table::borrow<u64, Volumes>(&Table<u64, Volumes>, u64): &Volumes
489 14: ImmBorrowField[7](Volumes.trade_params: TradeParams)
490 15: Call trade_params::maker_fee(&TradeParams): u64
491 16: Ret
492}
493
494public(friend) add_total_fees_collected(Arg0: &mut History, Arg1: Balances) {
495B0:
496 0: MoveLoc[0](Arg0: &mut History)
497 1: MutBorrowField[2](History.volumes: Volumes)
498 2: MutBorrowField[5](Volumes.total_fees_collected: Balances)
499 3: MoveLoc[1](Arg1: Balances)
500 4: Call balances::add_balances(&mut Balances, Balances)
501 5: Ret
502}
503
504Constants [
505 0 => u64: 0
506 1 => vector<u128>: 00
507]
508}
509
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/math.mvb472 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.math {
3use 0000000000000000000000000000000000000000000000000000000000000001::u128;
4use 0000000000000000000000000000000000000000000000000000000000000001::vector;
5
6public(friend) mul(Arg0: u64, Arg1: u64): u64 {
7L2: loc0: u64
8B0:
9 0: MoveLoc[0](Arg0: u64)
10 1: MoveLoc[1](Arg1: u64)
11 2: Call mul_internal(u64, u64): u64 * u64
12 3: StLoc[2](loc0: u64)
13 4: Pop
14 5: MoveLoc[2](loc0: u64)
15 6: Ret
16}
17
18public(friend) mul_u128(Arg0: u128, Arg1: u128): u128 {
19L2: loc0: u128
20B0:
21 0: MoveLoc[0](Arg0: u128)
22 1: MoveLoc[1](Arg1: u128)
23 2: Call mul_internal_u128(u128, u128): u128 * u128
24 3: StLoc[2](loc0: u128)
25 4: Pop
26 5: MoveLoc[2](loc0: u128)
27 6: Ret
28}
29
30public(friend) mul_round_up(Arg0: u64, Arg1: u64): u64 {
31L2: loc0: u64
32L3: loc1: u64
33B0:
34 0: MoveLoc[0](Arg0: u64)
35 1: MoveLoc[1](Arg1: u64)
36 2: Call mul_internal(u64, u64): u64 * u64
37 3: StLoc[3](loc1: u64)
38 4: StLoc[2](loc0: u64)
39 5: MoveLoc[3](loc1: u64)
40 6: MoveLoc[2](loc0: u64)
41 7: Add
42 8: Ret
43}
44
45public(friend) div(Arg0: u64, Arg1: u64): u64 {
46L2: loc0: u64
47B0:
48 0: MoveLoc[0](Arg0: u64)
49 1: MoveLoc[1](Arg1: u64)
50 2: Call div_internal(u64, u64): u64 * u64
51 3: StLoc[2](loc0: u64)
52 4: Pop
53 5: MoveLoc[2](loc0: u64)
54 6: Ret
55}
56
57public(friend) div_u128(Arg0: u128, Arg1: u128): u128 {
58L2: loc0: u128
59B0:
60 0: MoveLoc[0](Arg0: u128)
61 1: MoveLoc[1](Arg1: u128)
62 2: Call div_internal_u128(u128, u128): u128 * u128
63 3: StLoc[2](loc0: u128)
64 4: Pop
65 5: MoveLoc[2](loc0: u128)
66 6: Ret
67}
68
69public(friend) div_round_up(Arg0: u64, Arg1: u64): u64 {
70L2: loc0: u64
71L3: loc1: u64
72B0:
73 0: MoveLoc[0](Arg0: u64)
74 1: MoveLoc[1](Arg1: u64)
75 2: Call div_internal(u64, u64): u64 * u64
76 3: StLoc[3](loc1: u64)
77 4: StLoc[2](loc0: u64)
78 5: MoveLoc[3](loc1: u64)
79 6: MoveLoc[2](loc0: u64)
80 7: Add
81 8: Ret
82}
83
84public(friend) median(Arg0: vector<u128>): u128 {
85L1: loc0: u128
86L2: loc1: u64
87L3: loc2: vector<u128>
88B0:
89 0: ImmBorrowLoc[0](Arg0: vector<u128>)
90 1: VecLen(3)
91 2: StLoc[2](loc1: u64)
92 3: CopyLoc[2](loc1: u64)
93 4: LdU64(0)
94 5: Eq
95 6: BrFalse(9)
96B1:
97 7: LdU128(0)
98 8: Ret
99B2:
100 9: MoveLoc[0](Arg0: vector<u128>)
101 10: Call quick_sort(vector<u128>): vector<u128>
102 11: StLoc[3](loc2: vector<u128>)
103 12: CopyLoc[2](loc1: u64)
104 13: LdU64(2)
105 14: Mod
106 15: LdU64(0)
107 16: Eq
108 17: BrFalse(39)
109B3:
110 18: ImmBorrowLoc[3](loc2: vector<u128>)
111 19: CopyLoc[2](loc1: u64)
112 20: LdU64(2)
113 21: Div
114 22: LdU64(1)
115 23: Sub
116 24: VecImmBorrow(3)
117 25: ReadRef
118 26: ImmBorrowLoc[3](loc2: vector<u128>)
119 27: MoveLoc[2](loc1: u64)
120 28: LdU64(2)
121 29: Div
122 30: VecImmBorrow(3)
123 31: ReadRef
124 32: Add
125 33: LdConst[1](u128: 1000..)
126 34: LdU128(2)
127 35: Div
128 36: Call mul_u128(u128, u128): u128
129 37: StLoc[1](loc0: u128)
130 38: Branch(46)
131B4:
132 39: ImmBorrowLoc[3](loc2: vector<u128>)
133 40: MoveLoc[2](loc1: u64)
134 41: LdU64(2)
135 42: Div
136 43: VecImmBorrow(3)
137 44: ReadRef
138 45: StLoc[1](loc0: u128)
139B5:
140 46: MoveLoc[1](loc0: u128)
141 47: Ret
142}
143
144public(friend) sqrt(Arg0: u64, Arg1: u64): u64 {
145L2: loc0: u128
146B0:
147 0: CopyLoc[1](Arg1: u64)
148 1: LdConst[0](u64: 1000..)
149 2: Le
150 3: BrFalse(5)
151B1:
152 4: Branch(7)
153B2:
154 5: LdConst[3](u64: 0)
155 6: Abort
156B3:
157 7: LdConst[0](u64: 1000..)
158 8: MoveLoc[1](Arg1: u64)
159 9: Div
160 10: CastU128
161 11: StLoc[2](loc0: u128)
162 12: MoveLoc[0](Arg0: u64)
163 13: CastU128
164 14: CopyLoc[2](loc0: u128)
165 15: Mul
166 16: LdConst[1](u128: 1000..)
167 17: Mul
168 18: Call u128::sqrt(u128): u128
169 19: MoveLoc[2](loc0: u128)
170 20: Div
171 21: CastU64
172 22: Ret
173}
174
175public(friend) is_power_of_ten(Arg0: u64): bool {
176L1: loc0: bool
177L2: loc1: u64
178B0:
179 0: MoveLoc[0](Arg0: u64)
180 1: StLoc[2](loc1: u64)
181 2: CopyLoc[2](loc1: u64)
182 3: LdU64(1)
183 4: Lt
184 5: BrFalse(9)
185B1:
186 6: LdFalse
187 7: StLoc[1](loc0: bool)
188 8: Branch(24)
189B2:
190 9: CopyLoc[2](loc1: u64)
191 10: LdU64(10)
192 11: Mod
193 12: LdU64(0)
194 13: Eq
195 14: BrFalse(20)
196B3:
197 15: MoveLoc[2](loc1: u64)
198 16: LdU64(10)
199 17: Div
200 18: StLoc[2](loc1: u64)
201 19: Branch(9)
202B4:
203 20: MoveLoc[2](loc1: u64)
204 21: LdU64(1)
205 22: Eq
206 23: StLoc[1](loc0: bool)
207B5:
208 24: MoveLoc[1](loc0: bool)
209 25: Ret
210}
211
212quick_sort(Arg0: vector<u128>): vector<u128> {
213L1: loc0: u64
214L2: loc1: vector<u128>
215L3: loc2: vector<u128>
216L4: loc3: u64
217L5: loc4: vector<u128>
218L6: loc5: u128
219L7: loc6: vector<u128>
220L8: loc7: u64
221L9: loc8: vector<u128>
222L10: loc9: u128
223B0:
224 0: ImmBorrowLoc[0](Arg0: vector<u128>)
225 1: VecLen(3)
226 2: LdU64(1)
227 3: Le
228 4: BrFalse(7)
229B1:
230 5: MoveLoc[0](Arg0: vector<u128>)
231 6: Ret
232B2:
233 7: ImmBorrowLoc[0](Arg0: vector<u128>)
234 8: LdU64(0)
235 9: VecImmBorrow(3)
236 10: ReadRef
237 11: StLoc[6](loc5: u128)
238 12: LdConst[4](vector<u128>: 00)
239 13: StLoc[5](loc4: vector<u128>)
240 14: LdConst[4](vector<u128>: 00)
241 15: StLoc[2](loc1: vector<u128>)
242 16: LdConst[4](vector<u128>: 00)
243 17: StLoc[3](loc2: vector<u128>)
244 18: MoveLoc[0](Arg0: vector<u128>)
245 19: StLoc[9](loc8: vector<u128>)
246 20: MutBorrowLoc[9](loc8: vector<u128>)
247 21: Call vector::reverse<u128>(&mut vector<u128>)
248 22: ImmBorrowLoc[9](loc8: vector<u128>)
249 23: VecLen(3)
250 24: StLoc[1](loc0: u64)
251 25: LdU64(0)
252 26: StLoc[4](loc3: u64)
253 27: MoveLoc[1](loc0: u64)
254 28: StLoc[8](loc7: u64)
255B3:
256 29: CopyLoc[4](loc3: u64)
257 30: CopyLoc[8](loc7: u64)
258 31: Lt
259 32: BrFalse(63)
260B4:
261 33: CopyLoc[4](loc3: u64)
262 34: Pop
263 35: MutBorrowLoc[9](loc8: vector<u128>)
264 36: VecPopBack(3)
265 37: StLoc[10](loc9: u128)
266 38: CopyLoc[10](loc9: u128)
267 39: CopyLoc[6](loc5: u128)
268 40: Lt
269 41: BrFalse(46)
270B5:
271 42: MutBorrowLoc[5](loc4: vector<u128>)
272 43: MoveLoc[10](loc9: u128)
273 44: VecPushBack(3)
274 45: Branch(58)
275B6:
276 46: CopyLoc[10](loc9: u128)
277 47: CopyLoc[6](loc5: u128)
278 48: Eq
279 49: BrFalse(54)
280B7:
281 50: MutBorrowLoc[2](loc1: vector<u128>)
282 51: MoveLoc[10](loc9: u128)
283 52: VecPushBack(3)
284 53: Branch(58)
285B8:
286 54: MutBorrowLoc[3](loc2: vector<u128>)
287 55: MoveLoc[10](loc9: u128)
288 56: VecPushBack(3)
289 57: Branch(58)
290B9:
291 58: MoveLoc[4](loc3: u64)
292 59: LdU64(1)
293 60: Add
294 61: StLoc[4](loc3: u64)
295 62: Branch(29)
296B10:
297 63: MoveLoc[9](loc8: vector<u128>)
298 64: VecUnpack(3, 0)
299 65: LdConst[4](vector<u128>: 00)
300 66: StLoc[7](loc6: vector<u128>)
301 67: MutBorrowLoc[7](loc6: vector<u128>)
302 68: MoveLoc[5](loc4: vector<u128>)
303 69: Call quick_sort(vector<u128>): vector<u128>
304 70: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
305 71: MutBorrowLoc[7](loc6: vector<u128>)
306 72: MoveLoc[2](loc1: vector<u128>)
307 73: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
308 74: MutBorrowLoc[7](loc6: vector<u128>)
309 75: MoveLoc[3](loc2: vector<u128>)
310 76: Call quick_sort(vector<u128>): vector<u128>
311 77: Call vector::append<u128>(&mut vector<u128>, vector<u128>)
312 78: MoveLoc[7](loc6: vector<u128>)
313 79: Ret
314}
315
316mul_internal(Arg0: u64, Arg1: u64): u64 * u64 {
317L2: loc0: u64
318L3: loc1: u128
319L4: loc2: u128
320B0:
321 0: MoveLoc[0](Arg0: u64)
322 1: CastU128
323 2: StLoc[3](loc1: u128)
324 3: MoveLoc[1](Arg1: u64)
325 4: CastU128
326 5: StLoc[4](loc2: u128)
327 6: CopyLoc[3](loc1: u128)
328 7: CopyLoc[4](loc2: u128)
329 8: Mul
330 9: LdConst[1](u128: 1000..)
331 10: Mod
332 11: LdU128(0)
333 12: Eq
334 13: BrFalse(17)
335B1:
336 14: LdU64(0)
337 15: StLoc[2](loc0: u64)
338 16: Branch(19)
339B2:
340 17: LdU64(1)
341 18: StLoc[2](loc0: u64)
342B3:
343 19: MoveLoc[2](loc0: u64)
344 20: MoveLoc[3](loc1: u128)
345 21: MoveLoc[4](loc2: u128)
346 22: Mul
347 23: LdConst[1](u128: 1000..)
348 24: Div
349 25: CastU64
350 26: Ret
351}
352
353mul_internal_u128(Arg0: u128, Arg1: u128): u128 * u128 {
354L2: loc0: u128
355L3: loc1: u256
356L4: loc2: u256
357B0:
358 0: MoveLoc[0](Arg0: u128)
359 1: CastU256
360 2: StLoc[3](loc1: u256)
361 3: MoveLoc[1](Arg1: u128)
362 4: CastU256
363 5: StLoc[4](loc2: u256)
364 6: CopyLoc[3](loc1: u256)
365 7: CopyLoc[4](loc2: u256)
366 8: Mul
367 9: LdConst[2](u256: 1000..)
368 10: Mod
369 11: LdU256(0)
370 12: Eq
371 13: BrFalse(17)
372B1:
373 14: LdU128(0)
374 15: StLoc[2](loc0: u128)
375 16: Branch(19)
376B2:
377 17: LdU128(1)
378 18: StLoc[2](loc0: u128)
379B3:
380 19: MoveLoc[2](loc0: u128)
381 20: MoveLoc[3](loc1: u256)
382 21: MoveLoc[4](loc2: u256)
383 22: Mul
384 23: LdConst[2](u256: 1000..)
385 24: Div
386 25: CastU128
387 26: Ret
388}
389
390div_internal(Arg0: u64, Arg1: u64): u64 * u64 {
391L2: loc0: u64
392L3: loc1: u128
393L4: loc2: u128
394B0:
395 0: MoveLoc[0](Arg0: u64)
396 1: CastU128
397 2: StLoc[3](loc1: u128)
398 3: MoveLoc[1](Arg1: u64)
399 4: CastU128
400 5: StLoc[4](loc2: u128)
401 6: CopyLoc[3](loc1: u128)
402 7: LdConst[1](u128: 1000..)
403 8: Mul
404 9: CopyLoc[4](loc2: u128)
405 10: Mod
406 11: LdU128(0)
407 12: Eq
408 13: BrFalse(17)
409B1:
410 14: LdU64(0)
411 15: StLoc[2](loc0: u64)
412 16: Branch(19)
413B2:
414 17: LdU64(1)
415 18: StLoc[2](loc0: u64)
416B3:
417 19: MoveLoc[2](loc0: u64)
418 20: MoveLoc[3](loc1: u128)
419 21: LdConst[1](u128: 1000..)
420 22: Mul
421 23: MoveLoc[4](loc2: u128)
422 24: Div
423 25: CastU64
424 26: Ret
425}
426
427div_internal_u128(Arg0: u128, Arg1: u128): u128 * u128 {
428L2: loc0: u128
429L3: loc1: u256
430L4: loc2: u256
431B0:
432 0: MoveLoc[0](Arg0: u128)
433 1: CastU256
434 2: StLoc[3](loc1: u256)
435 3: MoveLoc[1](Arg1: u128)
436 4: CastU256
437 5: StLoc[4](loc2: u256)
438 6: CopyLoc[3](loc1: u256)
439 7: LdConst[2](u256: 1000..)
440 8: Mul
441 9: CopyLoc[4](loc2: u256)
442 10: Mod
443 11: LdU256(0)
444 12: Eq
445 13: BrFalse(17)
446B1:
447 14: LdU128(0)
448 15: StLoc[2](loc0: u128)
449 16: Branch(19)
450B2:
451 17: LdU128(1)
452 18: StLoc[2](loc0: u128)
453B3:
454 19: MoveLoc[2](loc0: u128)
455 20: MoveLoc[3](loc1: u256)
456 21: LdConst[2](u256: 1000..)
457 22: Mul
458 23: MoveLoc[4](loc2: u256)
459 24: Div
460 25: CastU128
461 26: Ret
462}
463
464Constants [
465 0 => u64: 1000000000
466 1 => u128: 1000000000
467 2 => u256: 1000000000
468 3 => u64: 0
469 4 => vector<u128>: 00
470]
471}
472
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/order.mvb757 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.order {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::deep_price;
6use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::fill;
7use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
8use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::utils;
9use 0000000000000000000000000000000000000000000000000000000000000001::option;
10use 0000000000000000000000000000000000000000000000000000000000000001::u64;
11use 0000000000000000000000000000000000000000000000000000000000000002::event;
12use 0000000000000000000000000000000000000000000000000000000000000002::object;
13
14struct Order has drop, store {
15 balance_manager_id: ID,
16 order_id: u128,
17 client_order_id: u64,
18 quantity: u64,
19 filled_quantity: u64,
20 fee_is_deep: bool,
21 order_deep_price: OrderDeepPrice,
22 epoch: u64,
23 status: u8,
24 expire_timestamp: u64
25}
26
27struct OrderCanceled has copy, drop, store {
28 balance_manager_id: ID,
29 pool_id: ID,
30 order_id: u128,
31 client_order_id: u64,
32 trader: address,
33 price: u64,
34 is_bid: bool,
35 original_quantity: u64,
36 base_asset_quantity_canceled: u64,
37 timestamp: u64
38}
39
40struct OrderModified has copy, drop, store {
41 balance_manager_id: ID,
42 pool_id: ID,
43 order_id: u128,
44 client_order_id: u64,
45 trader: address,
46 price: u64,
47 is_bid: bool,
48 previous_quantity: u64,
49 filled_quantity: u64,
50 new_quantity: u64,
51 timestamp: u64
52}
53
54public balance_manager_id(Arg0: &Order): ID {
55B0:
56 0: MoveLoc[0](Arg0: &Order)
57 1: ImmBorrowField[0](Order.balance_manager_id: ID)
58 2: ReadRef
59 3: Ret
60}
61
62public order_id(Arg0: &Order): u128 {
63B0:
64 0: MoveLoc[0](Arg0: &Order)
65 1: ImmBorrowField[1](Order.order_id: u128)
66 2: ReadRef
67 3: Ret
68}
69
70public client_order_id(Arg0: &Order): u64 {
71B0:
72 0: MoveLoc[0](Arg0: &Order)
73 1: ImmBorrowField[2](Order.client_order_id: u64)
74 2: ReadRef
75 3: Ret
76}
77
78public quantity(Arg0: &Order): u64 {
79B0:
80 0: MoveLoc[0](Arg0: &Order)
81 1: ImmBorrowField[3](Order.quantity: u64)
82 2: ReadRef
83 3: Ret
84}
85
86public filled_quantity(Arg0: &Order): u64 {
87B0:
88 0: MoveLoc[0](Arg0: &Order)
89 1: ImmBorrowField[4](Order.filled_quantity: u64)
90 2: ReadRef
91 3: Ret
92}
93
94public fee_is_deep(Arg0: &Order): bool {
95B0:
96 0: MoveLoc[0](Arg0: &Order)
97 1: ImmBorrowField[5](Order.fee_is_deep: bool)
98 2: ReadRef
99 3: Ret
100}
101
102public order_deep_price(Arg0: &Order): &OrderDeepPrice {
103B0:
104 0: MoveLoc[0](Arg0: &Order)
105 1: ImmBorrowField[6](Order.order_deep_price: OrderDeepPrice)
106 2: Ret
107}
108
109public epoch(Arg0: &Order): u64 {
110B0:
111 0: MoveLoc[0](Arg0: &Order)
112 1: ImmBorrowField[7](Order.epoch: u64)
113 2: ReadRef
114 3: Ret
115}
116
117public status(Arg0: &Order): u8 {
118B0:
119 0: MoveLoc[0](Arg0: &Order)
120 1: ImmBorrowField[8](Order.status: u8)
121 2: ReadRef
122 3: Ret
123}
124
125public expire_timestamp(Arg0: &Order): u64 {
126B0:
127 0: MoveLoc[0](Arg0: &Order)
128 1: ImmBorrowField[9](Order.expire_timestamp: u64)
129 2: ReadRef
130 3: Ret
131}
132
133public price(Arg0: &Order): u64 {
134L1: loc0: u64
135B0:
136 0: MoveLoc[0](Arg0: &Order)
137 1: ImmBorrowField[1](Order.order_id: u128)
138 2: ReadRef
139 3: Call utils::decode_order_id(u128): bool * u64 * u64
140 4: Pop
141 5: StLoc[1](loc0: u64)
142 6: Pop
143 7: MoveLoc[1](loc0: u64)
144 8: Ret
145}
146
147public(friend) new(Arg0: u128, Arg1: ID, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: bool, Arg6: OrderDeepPrice, Arg7: u64, Arg8: u8, Arg9: u64): Order {
148L10: loc0: u128
149L11: loc1: u64
150L12: loc2: ID
151L13: loc3: u64
152L14: loc4: u64
153L15: loc5: u64
154L16: loc6: bool
155L17: loc7: OrderDeepPrice
156L18: loc8: u64
157L19: loc9: u8
158B0:
159 0: MoveLoc[0](Arg0: u128)
160 1: StLoc[10](loc0: u128)
161 2: MoveLoc[1](Arg1: ID)
162 3: StLoc[12](loc2: ID)
163 4: MoveLoc[2](Arg2: u64)
164 5: StLoc[13](loc3: u64)
165 6: MoveLoc[3](Arg3: u64)
166 7: StLoc[14](loc4: u64)
167 8: MoveLoc[4](Arg4: u64)
168 9: StLoc[15](loc5: u64)
169 10: MoveLoc[5](Arg5: bool)
170 11: StLoc[16](loc6: bool)
171 12: MoveLoc[6](Arg6: OrderDeepPrice)
172 13: StLoc[17](loc7: OrderDeepPrice)
173 14: MoveLoc[7](Arg7: u64)
174 15: StLoc[18](loc8: u64)
175 16: MoveLoc[8](Arg8: u8)
176 17: StLoc[19](loc9: u8)
177 18: MoveLoc[9](Arg9: u64)
178 19: StLoc[11](loc1: u64)
179 20: MoveLoc[12](loc2: ID)
180 21: MoveLoc[10](loc0: u128)
181 22: MoveLoc[13](loc3: u64)
182 23: MoveLoc[14](loc4: u64)
183 24: MoveLoc[15](loc5: u64)
184 25: MoveLoc[16](loc6: bool)
185 26: MoveLoc[17](loc7: OrderDeepPrice)
186 27: MoveLoc[18](loc8: u64)
187 28: MoveLoc[19](loc9: u8)
188 29: MoveLoc[11](loc1: u64)
189 30: Pack[0](Order)
190 31: Ret
191}
192
193public(friend) generate_fill(Arg0: &mut Order, Arg1: u64, Arg2: u64, Arg3: bool, Arg4: bool, Arg5: bool): Fill {
194L6: loc0: bool
195L7: loc1: u8
196L8: loc2: ID
197L9: loc3: u64
198L10: loc4: bool
199L11: loc5: u128
200L12: loc6: u64
201L13: loc7: u64
202B0:
203 0: CopyLoc[0](Arg0: &mut Order)
204 1: ImmBorrowField[3](Order.quantity: u64)
205 2: ReadRef
206 3: CopyLoc[0](Arg0: &mut Order)
207 4: ImmBorrowField[4](Order.filled_quantity: u64)
208 5: ReadRef
209 6: Sub
210 7: StLoc[13](loc7: u64)
211 8: CopyLoc[13](loc7: u64)
212 9: MoveLoc[2](Arg2: u64)
213 10: Call u64::min(u64, u64): u64
214 11: StLoc[9](loc3: u64)
215 12: CopyLoc[9](loc3: u64)
216 13: CopyLoc[0](Arg0: &mut Order)
217 14: FreezeRef
218 15: Call price(&Order): u64
219 16: Call math::mul(u64, u64): u64
220 17: StLoc[12](loc6: u64)
221 18: CopyLoc[0](Arg0: &mut Order)
222 19: ImmBorrowField[1](Order.order_id: u128)
223 20: ReadRef
224 21: StLoc[11](loc5: u128)
225 22: CopyLoc[0](Arg0: &mut Order)
226 23: ImmBorrowField[0](Order.balance_manager_id: ID)
227 24: ReadRef
228 25: StLoc[8](loc2: ID)
229 26: MoveLoc[1](Arg1: u64)
230 27: CopyLoc[0](Arg0: &mut Order)
231 28: ImmBorrowField[9](Order.expire_timestamp: u64)
232 29: ReadRef
233 30: Gt
234 31: BrFalse(35)
235B1:
236 32: LdTrue
237 33: StLoc[6](loc0: bool)
238 34: Branch(37)
239B2:
240 35: MoveLoc[4](Arg4: bool)
241 36: StLoc[6](loc0: bool)
242B3:
243 37: MoveLoc[6](loc0: bool)
244 38: StLoc[10](loc4: bool)
245 39: CopyLoc[10](loc4: bool)
246 40: BrFalse(54)
247B4:
248 41: Call constants::expired(): u8
249 42: CopyLoc[0](Arg0: &mut Order)
250 43: MutBorrowField[8](Order.status: u8)
251 44: WriteRef
252 45: MoveLoc[13](loc7: u64)
253 46: StLoc[9](loc3: u64)
254 47: CopyLoc[9](loc3: u64)
255 48: CopyLoc[0](Arg0: &mut Order)
256 49: FreezeRef
257 50: Call price(&Order): u64
258 51: Call math::mul(u64, u64): u64
259 52: StLoc[12](loc6: u64)
260 53: Branch(79)
261B5:
262 54: CopyLoc[0](Arg0: &mut Order)
263 55: ImmBorrowField[4](Order.filled_quantity: u64)
264 56: ReadRef
265 57: CopyLoc[9](loc3: u64)
266 58: Add
267 59: CopyLoc[0](Arg0: &mut Order)
268 60: MutBorrowField[4](Order.filled_quantity: u64)
269 61: WriteRef
270 62: CopyLoc[0](Arg0: &mut Order)
271 63: ImmBorrowField[3](Order.quantity: u64)
272 64: ReadRef
273 65: CopyLoc[0](Arg0: &mut Order)
274 66: ImmBorrowField[4](Order.filled_quantity: u64)
275 67: ReadRef
276 68: Eq
277 69: BrFalse(73)
278B6:
279 70: Call constants::filled(): u8
280 71: StLoc[7](loc1: u8)
281 72: Branch(75)
282B7:
283 73: Call constants::partially_filled(): u8
284 74: StLoc[7](loc1: u8)
285B8:
286 75: MoveLoc[7](loc1: u8)
287 76: CopyLoc[0](Arg0: &mut Order)
288 77: MutBorrowField[8](Order.status: u8)
289 78: WriteRef
290B9:
291 79: MoveLoc[11](loc5: u128)
292 80: CopyLoc[0](Arg0: &mut Order)
293 81: ImmBorrowField[2](Order.client_order_id: u64)
294 82: ReadRef
295 83: CopyLoc[0](Arg0: &mut Order)
296 84: FreezeRef
297 85: Call price(&Order): u64
298 86: MoveLoc[8](loc2: ID)
299 87: MoveLoc[10](loc4: bool)
300 88: CopyLoc[0](Arg0: &mut Order)
301 89: ImmBorrowField[3](Order.quantity: u64)
302 90: ReadRef
303 91: CopyLoc[0](Arg0: &mut Order)
304 92: ImmBorrowField[4](Order.filled_quantity: u64)
305 93: ReadRef
306 94: Eq
307 95: CopyLoc[0](Arg0: &mut Order)
308 96: ImmBorrowField[3](Order.quantity: u64)
309 97: ReadRef
310 98: MoveLoc[9](loc3: u64)
311 99: MoveLoc[12](loc6: u64)
312 100: MoveLoc[3](Arg3: bool)
313 101: CopyLoc[0](Arg0: &mut Order)
314 102: ImmBorrowField[7](Order.epoch: u64)
315 103: ReadRef
316 104: CopyLoc[0](Arg0: &mut Order)
317 105: ImmBorrowField[6](Order.order_deep_price: OrderDeepPrice)
318 106: ReadRef
319 107: MoveLoc[5](Arg5: bool)
320 108: MoveLoc[0](Arg0: &mut Order)
321 109: ImmBorrowField[5](Order.fee_is_deep: bool)
322 110: ReadRef
323 111: Call fill::new(u128, u64, u64, ID, bool, bool, u64, u64, u64, bool, u64, OrderDeepPrice, bool, bool): Fill
324 112: Ret
325}
326
327public(friend) modify(Arg0: &mut Order, Arg1: u64, Arg2: u64) {
328L3: loc0: bool
329B0:
330 0: CopyLoc[1](Arg1: u64)
331 1: CopyLoc[0](Arg0: &mut Order)
332 2: ImmBorrowField[4](Order.filled_quantity: u64)
333 3: ReadRef
334 4: Gt
335 5: BrFalse(13)
336B1:
337 6: CopyLoc[1](Arg1: u64)
338 7: CopyLoc[0](Arg0: &mut Order)
339 8: ImmBorrowField[3](Order.quantity: u64)
340 9: ReadRef
341 10: Lt
342 11: StLoc[3](loc0: bool)
343 12: Branch(15)
344B2:
345 13: LdFalse
346 14: StLoc[3](loc0: bool)
347B3:
348 15: MoveLoc[3](loc0: bool)
349 16: BrFalse(18)
350B4:
351 17: Branch(22)
352B5:
353 18: MoveLoc[0](Arg0: &mut Order)
354 19: Pop
355 20: LdConst[0](u64: 0)
356 21: Abort
357B6:
358 22: MoveLoc[2](Arg2: u64)
359 23: CopyLoc[0](Arg0: &mut Order)
360 24: ImmBorrowField[9](Order.expire_timestamp: u64)
361 25: ReadRef
362 26: Le
363 27: BrFalse(29)
364B7:
365 28: Branch(33)
366B8:
367 29: MoveLoc[0](Arg0: &mut Order)
368 30: Pop
369 31: LdConst[1](u64: 1)
370 32: Abort
371B9:
372 33: MoveLoc[1](Arg1: u64)
373 34: MoveLoc[0](Arg0: &mut Order)
374 35: MutBorrowField[3](Order.quantity: u64)
375 36: WriteRef
376 37: Ret
377}
378
379public(friend) calculate_cancel_refund(Arg0: &Order, Arg1: u64, Arg2: Option<u64>): Balances {
380L3: loc0: u64
381L4: loc1: u64
382L5: loc2: Balances
383L6: loc3: u64
384L7: loc4: Balances
385B0:
386 0: ImmBorrowLoc[2](Arg2: Option<u64>)
387 1: CopyLoc[0](Arg0: &Order)
388 2: ImmBorrowField[3](Order.quantity: u64)
389 3: ReadRef
390 4: CopyLoc[0](Arg0: &Order)
391 5: ImmBorrowField[4](Order.filled_quantity: u64)
392 6: ReadRef
393 7: Sub
394 8: Call option::get_with_default<u64>(&Option<u64>, u64): u64
395 9: StLoc[4](loc1: u64)
396 10: CopyLoc[0](Arg0: &Order)
397 11: ImmBorrowField[6](Order.order_deep_price: OrderDeepPrice)
398 12: CopyLoc[4](loc1: u64)
399 13: CopyLoc[4](loc1: u64)
400 14: CopyLoc[0](Arg0: &Order)
401 15: Call price(&Order): u64
402 16: Call math::mul(u64, u64): u64
403 17: CopyLoc[0](Arg0: &Order)
404 18: Call is_bid(&Order): bool
405 19: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
406 20: StLoc[5](loc2: Balances)
407 21: MutBorrowLoc[5](loc2: Balances)
408 22: MoveLoc[1](Arg1: u64)
409 23: Call balances::mul(&mut Balances, u64)
410 24: LdU64(0)
411 25: StLoc[3](loc0: u64)
412 26: LdU64(0)
413 27: StLoc[6](loc3: u64)
414 28: CopyLoc[0](Arg0: &Order)
415 29: Call is_bid(&Order): bool
416 30: BrFalse(37)
417B1:
418 31: MoveLoc[4](loc1: u64)
419 32: MoveLoc[0](Arg0: &Order)
420 33: Call price(&Order): u64
421 34: Call math::mul(u64, u64): u64
422 35: StLoc[6](loc3: u64)
423 36: Branch(41)
424B2:
425 37: MoveLoc[0](Arg0: &Order)
426 38: Pop
427 39: MoveLoc[4](loc1: u64)
428 40: StLoc[3](loc0: u64)
429B3:
430 41: MoveLoc[3](loc0: u64)
431 42: MoveLoc[6](loc3: u64)
432 43: LdU64(0)
433 44: Call balances::new(u64, u64, u64): Balances
434 45: StLoc[7](loc4: Balances)
435 46: MutBorrowLoc[7](loc4: Balances)
436 47: MoveLoc[5](loc2: Balances)
437 48: Call balances::add_balances(&mut Balances, Balances)
438 49: MoveLoc[7](loc4: Balances)
439 50: Ret
440}
441
442public(friend) locked_balance(Arg0: &Order, Arg1: u64): Balances {
443L2: loc0: u64
444L3: loc1: Balances
445L4: loc2: bool
446L5: loc3: Balances
447L6: loc4: u64
448L7: loc5: u64
449L8: loc6: u64
450L9: loc7: u64
451B0:
452 0: CopyLoc[0](Arg0: &Order)
453 1: Call order_id(&Order): u128
454 2: Call utils::decode_order_id(u128): bool * u64 * u64
455 3: Pop
456 4: StLoc[6](loc4: u64)
457 5: StLoc[4](loc2: bool)
458 6: LdU64(0)
459 7: StLoc[2](loc0: u64)
460 8: LdU64(0)
461 9: StLoc[7](loc5: u64)
462 10: CopyLoc[0](Arg0: &Order)
463 11: Call quantity(&Order): u64
464 12: CopyLoc[0](Arg0: &Order)
465 13: Call filled_quantity(&Order): u64
466 14: Sub
467 15: StLoc[8](loc6: u64)
468 16: CopyLoc[8](loc6: u64)
469 17: MoveLoc[6](loc4: u64)
470 18: Call math::mul(u64, u64): u64
471 19: StLoc[9](loc7: u64)
472 20: CopyLoc[4](loc2: bool)
473 21: BrFalse(27)
474B1:
475 22: MoveLoc[7](loc5: u64)
476 23: CopyLoc[9](loc7: u64)
477 24: Add
478 25: StLoc[7](loc5: u64)
479 26: Branch(31)
480B2:
481 27: MoveLoc[2](loc0: u64)
482 28: CopyLoc[8](loc6: u64)
483 29: Add
484 30: StLoc[2](loc0: u64)
485B3:
486 31: MoveLoc[0](Arg0: &Order)
487 32: Call order_deep_price(&Order): &OrderDeepPrice
488 33: MoveLoc[8](loc6: u64)
489 34: MoveLoc[9](loc7: u64)
490 35: MoveLoc[4](loc2: bool)
491 36: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
492 37: StLoc[3](loc1: Balances)
493 38: MutBorrowLoc[3](loc1: Balances)
494 39: MoveLoc[1](Arg1: u64)
495 40: Call balances::mul(&mut Balances, u64)
496 41: MoveLoc[2](loc0: u64)
497 42: MoveLoc[7](loc5: u64)
498 43: LdU64(0)
499 44: Call balances::new(u64, u64, u64): Balances
500 45: StLoc[5](loc3: Balances)
501 46: MutBorrowLoc[5](loc3: Balances)
502 47: MoveLoc[3](loc1: Balances)
503 48: Call balances::add_balances(&mut Balances, Balances)
504 49: MoveLoc[5](loc3: Balances)
505 50: Ret
506}
507
508public(friend) emit_order_canceled(Arg0: &Order, Arg1: ID, Arg2: address, Arg3: u64) {
509L4: loc0: ID
510L5: loc1: u64
511L6: loc2: u128
512L7: loc3: ID
513L8: loc4: u64
514L9: loc5: bool
515L10: loc6: address
516L11: loc7: u64
517L12: loc8: u64
518L13: loc9: u64
519L14: loc10: bool
520L15: loc11: u64
521L16: loc12: u64
522B0:
523 0: CopyLoc[0](Arg0: &Order)
524 1: Call is_bid(&Order): bool
525 2: StLoc[14](loc10: bool)
526 3: CopyLoc[0](Arg0: &Order)
527 4: Call price(&Order): u64
528 5: StLoc[15](loc11: u64)
529 6: CopyLoc[0](Arg0: &Order)
530 7: ImmBorrowField[3](Order.quantity: u64)
531 8: ReadRef
532 9: CopyLoc[0](Arg0: &Order)
533 10: ImmBorrowField[4](Order.filled_quantity: u64)
534 11: ReadRef
535 12: Sub
536 13: StLoc[16](loc12: u64)
537 14: MoveLoc[1](Arg1: ID)
538 15: StLoc[4](loc0: ID)
539 16: CopyLoc[0](Arg0: &Order)
540 17: ImmBorrowField[1](Order.order_id: u128)
541 18: ReadRef
542 19: StLoc[6](loc2: u128)
543 20: CopyLoc[0](Arg0: &Order)
544 21: ImmBorrowField[0](Order.balance_manager_id: ID)
545 22: ReadRef
546 23: StLoc[7](loc3: ID)
547 24: CopyLoc[0](Arg0: &Order)
548 25: ImmBorrowField[2](Order.client_order_id: u64)
549 26: ReadRef
550 27: StLoc[8](loc4: u64)
551 28: MoveLoc[14](loc10: bool)
552 29: StLoc[9](loc5: bool)
553 30: MoveLoc[2](Arg2: address)
554 31: StLoc[10](loc6: address)
555 32: MoveLoc[0](Arg0: &Order)
556 33: ImmBorrowField[3](Order.quantity: u64)
557 34: ReadRef
558 35: StLoc[11](loc7: u64)
559 36: MoveLoc[16](loc12: u64)
560 37: StLoc[12](loc8: u64)
561 38: MoveLoc[3](Arg3: u64)
562 39: StLoc[13](loc9: u64)
563 40: MoveLoc[15](loc11: u64)
564 41: StLoc[5](loc1: u64)
565 42: MoveLoc[7](loc3: ID)
566 43: MoveLoc[4](loc0: ID)
567 44: MoveLoc[6](loc2: u128)
568 45: MoveLoc[8](loc4: u64)
569 46: MoveLoc[10](loc6: address)
570 47: MoveLoc[5](loc1: u64)
571 48: MoveLoc[9](loc5: bool)
572 49: MoveLoc[11](loc7: u64)
573 50: MoveLoc[12](loc8: u64)
574 51: MoveLoc[13](loc9: u64)
575 52: Pack[1](OrderCanceled)
576 53: Call event::emit<OrderCanceled>(OrderCanceled)
577 54: Ret
578}
579
580public(friend) emit_order_modified(Arg0: &Order, Arg1: ID, Arg2: u64, Arg3: address, Arg4: u64) {
581L5: loc0: u128
582L6: loc1: u64
583L7: loc2: u64
584L8: loc3: ID
585L9: loc4: u64
586L10: loc5: ID
587L11: loc6: address
588L12: loc7: u64
589L13: loc8: bool
590L14: loc9: u64
591L15: loc10: u64
592L16: loc11: bool
593L17: loc12: u64
594B0:
595 0: CopyLoc[0](Arg0: &Order)
596 1: Call is_bid(&Order): bool
597 2: StLoc[16](loc11: bool)
598 3: CopyLoc[0](Arg0: &Order)
599 4: Call price(&Order): u64
600 5: StLoc[17](loc12: u64)
601 6: CopyLoc[0](Arg0: &Order)
602 7: ImmBorrowField[1](Order.order_id: u128)
603 8: ReadRef
604 9: StLoc[5](loc0: u128)
605 10: MoveLoc[1](Arg1: ID)
606 11: StLoc[8](loc3: ID)
607 12: CopyLoc[0](Arg0: &Order)
608 13: ImmBorrowField[2](Order.client_order_id: u64)
609 14: ReadRef
610 15: StLoc[9](loc4: u64)
611 16: CopyLoc[0](Arg0: &Order)
612 17: ImmBorrowField[0](Order.balance_manager_id: ID)
613 18: ReadRef
614 19: StLoc[10](loc5: ID)
615 20: MoveLoc[3](Arg3: address)
616 21: StLoc[11](loc6: address)
617 22: MoveLoc[17](loc12: u64)
618 23: StLoc[12](loc7: u64)
619 24: MoveLoc[16](loc11: bool)
620 25: StLoc[13](loc8: bool)
621 26: MoveLoc[2](Arg2: u64)
622 27: StLoc[14](loc9: u64)
623 28: CopyLoc[0](Arg0: &Order)
624 29: ImmBorrowField[4](Order.filled_quantity: u64)
625 30: ReadRef
626 31: StLoc[15](loc10: u64)
627 32: MoveLoc[0](Arg0: &Order)
628 33: ImmBorrowField[3](Order.quantity: u64)
629 34: ReadRef
630 35: StLoc[6](loc1: u64)
631 36: MoveLoc[4](Arg4: u64)
632 37: StLoc[7](loc2: u64)
633 38: MoveLoc[10](loc5: ID)
634 39: MoveLoc[8](loc3: ID)
635 40: MoveLoc[5](loc0: u128)
636 41: MoveLoc[9](loc4: u64)
637 42: MoveLoc[11](loc6: address)
638 43: MoveLoc[12](loc7: u64)
639 44: MoveLoc[13](loc8: bool)
640 45: MoveLoc[14](loc9: u64)
641 46: MoveLoc[15](loc10: u64)
642 47: MoveLoc[6](loc1: u64)
643 48: MoveLoc[7](loc2: u64)
644 49: Pack[2](OrderModified)
645 50: Call event::emit<OrderModified>(OrderModified)
646 51: Ret
647}
648
649public(friend) emit_cancel_maker(Arg0: ID, Arg1: ID, Arg2: u128, Arg3: u64, Arg4: address, Arg5: u64, Arg6: bool, Arg7: u64, Arg8: u64, Arg9: u64) {
650B0:
651 0: MoveLoc[0](Arg0: ID)
652 1: MoveLoc[1](Arg1: ID)
653 2: MoveLoc[2](Arg2: u128)
654 3: MoveLoc[3](Arg3: u64)
655 4: MoveLoc[4](Arg4: address)
656 5: MoveLoc[5](Arg5: u64)
657 6: MoveLoc[6](Arg6: bool)
658 7: MoveLoc[7](Arg7: u64)
659 8: MoveLoc[8](Arg8: u64)
660 9: MoveLoc[9](Arg9: u64)
661 10: Pack[1](OrderCanceled)
662 11: Call event::emit<OrderCanceled>(OrderCanceled)
663 12: Ret
664}
665
666public(friend) copy_order(Arg0: &Order): Order {
667L1: loc0: u128
668L2: loc1: u64
669L3: loc2: ID
670L4: loc3: u64
671L5: loc4: u64
672L6: loc5: u64
673L7: loc6: bool
674L8: loc7: OrderDeepPrice
675L9: loc8: u64
676L10: loc9: u8
677B0:
678 0: CopyLoc[0](Arg0: &Order)
679 1: ImmBorrowField[1](Order.order_id: u128)
680 2: ReadRef
681 3: StLoc[1](loc0: u128)
682 4: CopyLoc[0](Arg0: &Order)
683 5: ImmBorrowField[0](Order.balance_manager_id: ID)
684 6: ReadRef
685 7: StLoc[3](loc2: ID)
686 8: CopyLoc[0](Arg0: &Order)
687 9: ImmBorrowField[2](Order.client_order_id: u64)
688 10: ReadRef
689 11: StLoc[4](loc3: u64)
690 12: CopyLoc[0](Arg0: &Order)
691 13: ImmBorrowField[3](Order.quantity: u64)
692 14: ReadRef
693 15: StLoc[5](loc4: u64)
694 16: CopyLoc[0](Arg0: &Order)
695 17: ImmBorrowField[4](Order.filled_quantity: u64)
696 18: ReadRef
697 19: StLoc[6](loc5: u64)
698 20: CopyLoc[0](Arg0: &Order)
699 21: ImmBorrowField[5](Order.fee_is_deep: bool)
700 22: ReadRef
701 23: StLoc[7](loc6: bool)
702 24: CopyLoc[0](Arg0: &Order)
703 25: ImmBorrowField[6](Order.order_deep_price: OrderDeepPrice)
704 26: ReadRef
705 27: StLoc[8](loc7: OrderDeepPrice)
706 28: CopyLoc[0](Arg0: &Order)
707 29: ImmBorrowField[7](Order.epoch: u64)
708 30: ReadRef
709 31: StLoc[9](loc8: u64)
710 32: CopyLoc[0](Arg0: &Order)
711 33: ImmBorrowField[8](Order.status: u8)
712 34: ReadRef
713 35: StLoc[10](loc9: u8)
714 36: MoveLoc[0](Arg0: &Order)
715 37: ImmBorrowField[9](Order.expire_timestamp: u64)
716 38: ReadRef
717 39: StLoc[2](loc1: u64)
718 40: MoveLoc[3](loc2: ID)
719 41: MoveLoc[1](loc0: u128)
720 42: MoveLoc[4](loc3: u64)
721 43: MoveLoc[5](loc4: u64)
722 44: MoveLoc[6](loc5: u64)
723 45: MoveLoc[7](loc6: bool)
724 46: MoveLoc[8](loc7: OrderDeepPrice)
725 47: MoveLoc[9](loc8: u64)
726 48: MoveLoc[10](loc9: u8)
727 49: MoveLoc[2](loc1: u64)
728 50: Pack[0](Order)
729 51: Ret
730}
731
732public(friend) set_canceled(Arg0: &mut Order) {
733B0:
734 0: Call constants::canceled(): u8
735 1: MoveLoc[0](Arg0: &mut Order)
736 2: MutBorrowField[8](Order.status: u8)
737 3: WriteRef
738 4: Ret
739}
740
741public(friend) is_bid(Arg0: &Order): bool {
742B0:
743 0: MoveLoc[0](Arg0: &Order)
744 1: ImmBorrowField[1](Order.order_id: u128)
745 2: ReadRef
746 3: Call utils::decode_order_id(u128): bool * u64 * u64
747 4: Pop
748 5: Pop
749 6: Ret
750}
751
752Constants [
753 0 => u64: 0
754 1 => u64: 1
755]
756}
757
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/order_info.mvb1399 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.order_info {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::deep_price;
6use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::fill;
7use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
8use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order;
9use 0000000000000000000000000000000000000000000000000000000000000002::event;
10use 0000000000000000000000000000000000000000000000000000000000000002::object;
11
12struct OrderInfo has copy, drop, store {
13 pool_id: ID,
14 order_id: u128,
15 balance_manager_id: ID,
16 client_order_id: u64,
17 trader: address,
18 order_type: u8,
19 self_matching_option: u8,
20 price: u64,
21 is_bid: bool,
22 original_quantity: u64,
23 order_deep_price: OrderDeepPrice,
24 expire_timestamp: u64,
25 executed_quantity: u64,
26 cumulative_quote_quantity: u64,
27 fills: vector<Fill>,
28 fee_is_deep: bool,
29 paid_fees: u64,
30 maker_fees: u64,
31 epoch: u64,
32 status: u8,
33 market_order: bool,
34 fill_limit_reached: bool,
35 order_inserted: bool,
36 timestamp: u64
37}
38
39struct OrderFilled has copy, drop, store {
40 pool_id: ID,
41 maker_order_id: u128,
42 taker_order_id: u128,
43 maker_client_order_id: u64,
44 taker_client_order_id: u64,
45 price: u64,
46 taker_is_bid: bool,
47 taker_fee: u64,
48 taker_fee_is_deep: bool,
49 maker_fee: u64,
50 maker_fee_is_deep: bool,
51 base_quantity: u64,
52 quote_quantity: u64,
53 maker_balance_manager_id: ID,
54 taker_balance_manager_id: ID,
55 timestamp: u64
56}
57
58struct OrderPlaced has copy, drop, store {
59 balance_manager_id: ID,
60 pool_id: ID,
61 order_id: u128,
62 client_order_id: u64,
63 trader: address,
64 price: u64,
65 is_bid: bool,
66 placed_quantity: u64,
67 expire_timestamp: u64,
68 timestamp: u64
69}
70
71struct OrderExpired has copy, drop, store {
72 balance_manager_id: ID,
73 pool_id: ID,
74 order_id: u128,
75 client_order_id: u64,
76 trader: address,
77 price: u64,
78 is_bid: bool,
79 original_quantity: u64,
80 base_asset_quantity_canceled: u64,
81 timestamp: u64
82}
83
84public pool_id(Arg0: &OrderInfo): ID {
85B0:
86 0: MoveLoc[0](Arg0: &OrderInfo)
87 1: ImmBorrowField[0](OrderInfo.pool_id: ID)
88 2: ReadRef
89 3: Ret
90}
91
92public order_id(Arg0: &OrderInfo): u128 {
93B0:
94 0: MoveLoc[0](Arg0: &OrderInfo)
95 1: ImmBorrowField[1](OrderInfo.order_id: u128)
96 2: ReadRef
97 3: Ret
98}
99
100public balance_manager_id(Arg0: &OrderInfo): ID {
101B0:
102 0: MoveLoc[0](Arg0: &OrderInfo)
103 1: ImmBorrowField[2](OrderInfo.balance_manager_id: ID)
104 2: ReadRef
105 3: Ret
106}
107
108public client_order_id(Arg0: &OrderInfo): u64 {
109B0:
110 0: MoveLoc[0](Arg0: &OrderInfo)
111 1: ImmBorrowField[3](OrderInfo.client_order_id: u64)
112 2: ReadRef
113 3: Ret
114}
115
116public trader(Arg0: &OrderInfo): address {
117B0:
118 0: MoveLoc[0](Arg0: &OrderInfo)
119 1: ImmBorrowField[4](OrderInfo.trader: address)
120 2: ReadRef
121 3: Ret
122}
123
124public order_type(Arg0: &OrderInfo): u8 {
125B0:
126 0: MoveLoc[0](Arg0: &OrderInfo)
127 1: ImmBorrowField[5](OrderInfo.order_type: u8)
128 2: ReadRef
129 3: Ret
130}
131
132public self_matching_option(Arg0: &OrderInfo): u8 {
133B0:
134 0: MoveLoc[0](Arg0: &OrderInfo)
135 1: ImmBorrowField[6](OrderInfo.self_matching_option: u8)
136 2: ReadRef
137 3: Ret
138}
139
140public price(Arg0: &OrderInfo): u64 {
141B0:
142 0: MoveLoc[0](Arg0: &OrderInfo)
143 1: ImmBorrowField[7](OrderInfo.price: u64)
144 2: ReadRef
145 3: Ret
146}
147
148public is_bid(Arg0: &OrderInfo): bool {
149B0:
150 0: MoveLoc[0](Arg0: &OrderInfo)
151 1: ImmBorrowField[8](OrderInfo.is_bid: bool)
152 2: ReadRef
153 3: Ret
154}
155
156public original_quantity(Arg0: &OrderInfo): u64 {
157B0:
158 0: MoveLoc[0](Arg0: &OrderInfo)
159 1: ImmBorrowField[9](OrderInfo.original_quantity: u64)
160 2: ReadRef
161 3: Ret
162}
163
164public order_deep_price(Arg0: &OrderInfo): OrderDeepPrice {
165B0:
166 0: MoveLoc[0](Arg0: &OrderInfo)
167 1: ImmBorrowField[10](OrderInfo.order_deep_price: OrderDeepPrice)
168 2: ReadRef
169 3: Ret
170}
171
172public expire_timestamp(Arg0: &OrderInfo): u64 {
173B0:
174 0: MoveLoc[0](Arg0: &OrderInfo)
175 1: ImmBorrowField[11](OrderInfo.expire_timestamp: u64)
176 2: ReadRef
177 3: Ret
178}
179
180public executed_quantity(Arg0: &OrderInfo): u64 {
181B0:
182 0: MoveLoc[0](Arg0: &OrderInfo)
183 1: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
184 2: ReadRef
185 3: Ret
186}
187
188public cumulative_quote_quantity(Arg0: &OrderInfo): u64 {
189B0:
190 0: MoveLoc[0](Arg0: &OrderInfo)
191 1: ImmBorrowField[13](OrderInfo.cumulative_quote_quantity: u64)
192 2: ReadRef
193 3: Ret
194}
195
196public fills(Arg0: &OrderInfo): vector<Fill> {
197B0:
198 0: MoveLoc[0](Arg0: &OrderInfo)
199 1: ImmBorrowField[14](OrderInfo.fills: vector<Fill>)
200 2: ReadRef
201 3: Ret
202}
203
204public fee_is_deep(Arg0: &OrderInfo): bool {
205B0:
206 0: MoveLoc[0](Arg0: &OrderInfo)
207 1: ImmBorrowField[15](OrderInfo.fee_is_deep: bool)
208 2: ReadRef
209 3: Ret
210}
211
212public paid_fees(Arg0: &OrderInfo): u64 {
213B0:
214 0: MoveLoc[0](Arg0: &OrderInfo)
215 1: ImmBorrowField[16](OrderInfo.paid_fees: u64)
216 2: ReadRef
217 3: Ret
218}
219
220public maker_fees(Arg0: &OrderInfo): u64 {
221B0:
222 0: MoveLoc[0](Arg0: &OrderInfo)
223 1: ImmBorrowField[17](OrderInfo.maker_fees: u64)
224 2: ReadRef
225 3: Ret
226}
227
228public epoch(Arg0: &OrderInfo): u64 {
229B0:
230 0: MoveLoc[0](Arg0: &OrderInfo)
231 1: ImmBorrowField[18](OrderInfo.epoch: u64)
232 2: ReadRef
233 3: Ret
234}
235
236public status(Arg0: &OrderInfo): u8 {
237B0:
238 0: MoveLoc[0](Arg0: &OrderInfo)
239 1: ImmBorrowField[19](OrderInfo.status: u8)
240 2: ReadRef
241 3: Ret
242}
243
244public fill_limit_reached(Arg0: &OrderInfo): bool {
245B0:
246 0: MoveLoc[0](Arg0: &OrderInfo)
247 1: ImmBorrowField[20](OrderInfo.fill_limit_reached: bool)
248 2: ReadRef
249 3: Ret
250}
251
252public order_inserted(Arg0: &OrderInfo): bool {
253B0:
254 0: MoveLoc[0](Arg0: &OrderInfo)
255 1: ImmBorrowField[21](OrderInfo.order_inserted: bool)
256 2: ReadRef
257 3: Ret
258}
259
260public(friend) new(Arg0: ID, Arg1: ID, Arg2: u64, Arg3: address, Arg4: u8, Arg5: u8, Arg6: u64, Arg7: u64, Arg8: bool, Arg9: bool, Arg10: u64, Arg11: u64, Arg12: OrderDeepPrice, Arg13: bool, Arg14: u64): OrderInfo {
261L15: loc0: ID
262L16: loc1: u64
263L17: loc2: OrderDeepPrice
264L18: loc3: u64
265L19: loc4: bool
266L20: loc5: u64
267L21: loc6: u8
268L22: loc7: bool
269L23: loc8: u64
270L24: loc9: ID
271L25: loc10: u64
272L26: loc11: address
273L27: loc12: u8
274L28: loc13: u8
275L29: loc14: u64
276L30: loc15: bool
277B0:
278 0: MoveLoc[0](Arg0: ID)
279 1: StLoc[15](loc0: ID)
280 2: MoveLoc[1](Arg1: ID)
281 3: StLoc[24](loc9: ID)
282 4: MoveLoc[2](Arg2: u64)
283 5: StLoc[25](loc10: u64)
284 6: MoveLoc[3](Arg3: address)
285 7: StLoc[26](loc11: address)
286 8: MoveLoc[4](Arg4: u8)
287 9: StLoc[27](loc12: u8)
288 10: MoveLoc[5](Arg5: u8)
289 11: StLoc[28](loc13: u8)
290 12: MoveLoc[6](Arg6: u64)
291 13: StLoc[29](loc14: u64)
292 14: MoveLoc[8](Arg8: bool)
293 15: StLoc[30](loc15: bool)
294 16: MoveLoc[7](Arg7: u64)
295 17: StLoc[16](loc1: u64)
296 18: MoveLoc[12](Arg12: OrderDeepPrice)
297 19: StLoc[17](loc2: OrderDeepPrice)
298 20: MoveLoc[11](Arg11: u64)
299 21: StLoc[18](loc3: u64)
300 22: MoveLoc[9](Arg9: bool)
301 23: StLoc[19](loc4: bool)
302 24: MoveLoc[10](Arg10: u64)
303 25: StLoc[20](loc5: u64)
304 26: Call constants::live(): u8
305 27: StLoc[21](loc6: u8)
306 28: MoveLoc[13](Arg13: bool)
307 29: StLoc[22](loc7: bool)
308 30: MoveLoc[14](Arg14: u64)
309 31: StLoc[23](loc8: u64)
310 32: MoveLoc[15](loc0: ID)
311 33: LdU128(0)
312 34: MoveLoc[24](loc9: ID)
313 35: MoveLoc[25](loc10: u64)
314 36: MoveLoc[26](loc11: address)
315 37: MoveLoc[27](loc12: u8)
316 38: MoveLoc[28](loc13: u8)
317 39: MoveLoc[29](loc14: u64)
318 40: MoveLoc[30](loc15: bool)
319 41: MoveLoc[16](loc1: u64)
320 42: MoveLoc[17](loc2: OrderDeepPrice)
321 43: MoveLoc[18](loc3: u64)
322 44: LdU64(0)
323 45: LdU64(0)
324 46: VecPack(29, 0)
325 47: MoveLoc[19](loc4: bool)
326 48: LdU64(0)
327 49: LdU64(0)
328 50: MoveLoc[20](loc5: u64)
329 51: MoveLoc[21](loc6: u8)
330 52: MoveLoc[22](loc7: bool)
331 53: LdFalse
332 54: LdFalse
333 55: MoveLoc[23](loc8: u64)
334 56: Pack[0](OrderInfo)
335 57: Ret
336}
337
338public(friend) market_order(Arg0: &OrderInfo): bool {
339B0:
340 0: MoveLoc[0](Arg0: &OrderInfo)
341 1: ImmBorrowField[22](OrderInfo.market_order: bool)
342 2: ReadRef
343 3: Ret
344}
345
346public(friend) set_order_id(Arg0: &mut OrderInfo, Arg1: u128) {
347B0:
348 0: MoveLoc[1](Arg1: u128)
349 1: MoveLoc[0](Arg0: &mut OrderInfo)
350 2: MutBorrowField[1](OrderInfo.order_id: u128)
351 3: WriteRef
352 4: Ret
353}
354
355public(friend) set_paid_fees(Arg0: &mut OrderInfo, Arg1: u64) {
356B0:
357 0: MoveLoc[1](Arg1: u64)
358 1: MoveLoc[0](Arg0: &mut OrderInfo)
359 2: MutBorrowField[16](OrderInfo.paid_fees: u64)
360 3: WriteRef
361 4: Ret
362}
363
364public(friend) add_fill(Arg0: &mut OrderInfo, Arg1: Fill) {
365B0:
366 0: MoveLoc[0](Arg0: &mut OrderInfo)
367 1: MutBorrowField[14](OrderInfo.fills: vector<Fill>)
368 2: MoveLoc[1](Arg1: Fill)
369 3: VecPushBack(29)
370 4: Ret
371}
372
373public(friend) fills_ref(Arg0: &mut OrderInfo): &mut vector<Fill> {
374B0:
375 0: MoveLoc[0](Arg0: &mut OrderInfo)
376 1: MutBorrowField[14](OrderInfo.fills: vector<Fill>)
377 2: Ret
378}
379
380public(friend) paid_fees_balances(Arg0: &OrderInfo): Balances {
381L1: loc0: Balances
382L2: loc1: Balances
383B0:
384 0: CopyLoc[0](Arg0: &OrderInfo)
385 1: ImmBorrowField[15](OrderInfo.fee_is_deep: bool)
386 2: ReadRef
387 3: BrFalse(12)
388B1:
389 4: LdU64(0)
390 5: LdU64(0)
391 6: MoveLoc[0](Arg0: &OrderInfo)
392 7: ImmBorrowField[16](OrderInfo.paid_fees: u64)
393 8: ReadRef
394 9: Call balances::new(u64, u64, u64): Balances
395 10: StLoc[2](loc1: Balances)
396 11: Branch(33)
397B2:
398 12: CopyLoc[0](Arg0: &OrderInfo)
399 13: ImmBorrowField[8](OrderInfo.is_bid: bool)
400 14: ReadRef
401 15: BrFalse(24)
402B3:
403 16: LdU64(0)
404 17: MoveLoc[0](Arg0: &OrderInfo)
405 18: ImmBorrowField[16](OrderInfo.paid_fees: u64)
406 19: ReadRef
407 20: LdU64(0)
408 21: Call balances::new(u64, u64, u64): Balances
409 22: StLoc[1](loc0: Balances)
410 23: Branch(31)
411B4:
412 24: MoveLoc[0](Arg0: &OrderInfo)
413 25: ImmBorrowField[16](OrderInfo.paid_fees: u64)
414 26: ReadRef
415 27: LdU64(0)
416 28: LdU64(0)
417 29: Call balances::new(u64, u64, u64): Balances
418 30: StLoc[1](loc0: Balances)
419B5:
420 31: MoveLoc[1](loc0: Balances)
421 32: StLoc[2](loc1: Balances)
422B6:
423 33: MoveLoc[2](loc1: Balances)
424 34: Ret
425}
426
427public(friend) calculate_partial_fill_balances(Arg0: &mut OrderInfo, Arg1: u64, Arg2: u64): Balances * Balances {
428L3: loc0: u64
429L4: loc1: &mut Fill
430L5: loc2: Balances
431L6: loc3: &mut vector<Fill>
432L7: loc4: u64
433L8: loc5: Balances
434L9: loc6: u64
435L10: loc7: Balances
436L11: loc8: u64
437L12: loc9: u64
438L13: loc10: Balances
439L14: loc11: Balances
440B0:
441 0: CopyLoc[0](Arg0: &mut OrderInfo)
442 1: ImmBorrowField[10](OrderInfo.order_deep_price: OrderDeepPrice)
443 2: CopyLoc[0](Arg0: &mut OrderInfo)
444 3: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
445 4: ReadRef
446 5: CopyLoc[0](Arg0: &mut OrderInfo)
447 6: ImmBorrowField[13](OrderInfo.cumulative_quote_quantity: u64)
448 7: ReadRef
449 8: CopyLoc[0](Arg0: &mut OrderInfo)
450 9: ImmBorrowField[8](OrderInfo.is_bid: bool)
451 10: ReadRef
452 11: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
453 12: StLoc[14](loc11: Balances)
454 13: MutBorrowLoc[14](loc11: Balances)
455 14: CopyLoc[1](Arg1: u64)
456 15: Call balances::mul(&mut Balances, u64)
457 16: ImmBorrowLoc[14](loc11: Balances)
458 17: Call balances::non_zero_value(&Balances): u64
459 18: CopyLoc[0](Arg0: &mut OrderInfo)
460 19: MutBorrowField[16](OrderInfo.paid_fees: u64)
461 20: WriteRef
462 21: CopyLoc[0](Arg0: &mut OrderInfo)
463 22: MutBorrowField[14](OrderInfo.fills: vector<Fill>)
464 23: StLoc[6](loc3: &mut vector<Fill>)
465 24: LdU64(0)
466 25: StLoc[7](loc4: u64)
467 26: CopyLoc[6](loc3: &mut vector<Fill>)
468 27: FreezeRef
469 28: VecLen(29)
470 29: StLoc[9](loc6: u64)
471B1:
472 30: CopyLoc[7](loc4: u64)
473 31: CopyLoc[9](loc6: u64)
474 32: Lt
475 33: BrFalse(75)
476B2:
477 34: Branch(35)
478B3:
479 35: CopyLoc[6](loc3: &mut vector<Fill>)
480 36: CopyLoc[7](loc4: u64)
481 37: VecMutBorrow(29)
482 38: StLoc[4](loc1: &mut Fill)
483 39: CopyLoc[4](loc1: &mut Fill)
484 40: FreezeRef
485 41: Call fill::expired(&Fill): bool
486 42: Not
487 43: BrFalse(68)
488B4:
489 44: CopyLoc[4](loc1: &mut Fill)
490 45: FreezeRef
491 46: Call fill::base_quantity(&Fill): u64
492 47: StLoc[3](loc0: u64)
493 48: CopyLoc[4](loc1: &mut Fill)
494 49: FreezeRef
495 50: Call fill::quote_quantity(&Fill): u64
496 51: StLoc[11](loc8: u64)
497 52: CopyLoc[0](Arg0: &mut OrderInfo)
498 53: ImmBorrowField[10](OrderInfo.order_deep_price: OrderDeepPrice)
499 54: MoveLoc[3](loc0: u64)
500 55: MoveLoc[11](loc8: u64)
501 56: CopyLoc[0](Arg0: &mut OrderInfo)
502 57: ImmBorrowField[8](OrderInfo.is_bid: bool)
503 58: ReadRef
504 59: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
505 60: StLoc[5](loc2: Balances)
506 61: MutBorrowLoc[5](loc2: Balances)
507 62: CopyLoc[1](Arg1: u64)
508 63: Call balances::mul(&mut Balances, u64)
509 64: MoveLoc[4](loc1: &mut Fill)
510 65: ImmBorrowLoc[5](loc2: Balances)
511 66: Call fill::set_fill_taker_fee(&mut Fill, &Balances)
512 67: Branch(70)
513B5:
514 68: MoveLoc[4](loc1: &mut Fill)
515 69: Pop
516B6:
517 70: MoveLoc[7](loc4: u64)
518 71: LdU64(1)
519 72: Add
520 73: StLoc[7](loc4: u64)
521 74: Branch(30)
522B7:
523 75: MoveLoc[6](loc3: &mut vector<Fill>)
524 76: Pop
525 77: LdU64(0)
526 78: LdU64(0)
527 79: LdU64(0)
528 80: Call balances::new(u64, u64, u64): Balances
529 81: StLoc[13](loc10: Balances)
530 82: LdU64(0)
531 83: LdU64(0)
532 84: LdU64(0)
533 85: Call balances::new(u64, u64, u64): Balances
534 86: StLoc[10](loc7: Balances)
535 87: MutBorrowLoc[10](loc7: Balances)
536 88: MoveLoc[14](loc11: Balances)
537 89: Call balances::add_balances(&mut Balances, Balances)
538 90: CopyLoc[0](Arg0: &mut OrderInfo)
539 91: ImmBorrowField[8](OrderInfo.is_bid: bool)
540 92: ReadRef
541 93: BrFalse(105)
542B8:
543 94: MutBorrowLoc[13](loc10: Balances)
544 95: CopyLoc[0](Arg0: &mut OrderInfo)
545 96: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
546 97: ReadRef
547 98: Call balances::add_base(&mut Balances, u64)
548 99: MutBorrowLoc[10](loc7: Balances)
549 100: CopyLoc[0](Arg0: &mut OrderInfo)
550 101: ImmBorrowField[13](OrderInfo.cumulative_quote_quantity: u64)
551 102: ReadRef
552 103: Call balances::add_quote(&mut Balances, u64)
553 104: Branch(115)
554B9:
555 105: MutBorrowLoc[13](loc10: Balances)
556 106: CopyLoc[0](Arg0: &mut OrderInfo)
557 107: ImmBorrowField[13](OrderInfo.cumulative_quote_quantity: u64)
558 108: ReadRef
559 109: Call balances::add_quote(&mut Balances, u64)
560 110: MutBorrowLoc[10](loc7: Balances)
561 111: CopyLoc[0](Arg0: &mut OrderInfo)
562 112: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
563 113: ReadRef
564 114: Call balances::add_base(&mut Balances, u64)
565B10:
566 115: CopyLoc[0](Arg0: &mut OrderInfo)
567 116: FreezeRef
568 117: Call remaining_quantity(&OrderInfo): u64
569 118: StLoc[12](loc9: u64)
570 119: CopyLoc[0](Arg0: &mut OrderInfo)
571 120: FreezeRef
572 121: Call order_inserted(&OrderInfo): bool
573 122: BrFalse(165)
574B11:
575 123: CopyLoc[0](Arg0: &mut OrderInfo)
576 124: ImmBorrowField[10](OrderInfo.order_deep_price: OrderDeepPrice)
577 125: CopyLoc[12](loc9: u64)
578 126: CopyLoc[12](loc9: u64)
579 127: CopyLoc[0](Arg0: &mut OrderInfo)
580 128: FreezeRef
581 129: Call price(&OrderInfo): u64
582 130: Call math::mul(u64, u64): u64
583 131: CopyLoc[0](Arg0: &mut OrderInfo)
584 132: ImmBorrowField[8](OrderInfo.is_bid: bool)
585 133: ReadRef
586 134: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
587 135: StLoc[8](loc5: Balances)
588 136: MutBorrowLoc[8](loc5: Balances)
589 137: MoveLoc[2](Arg2: u64)
590 138: Call balances::mul(&mut Balances, u64)
591 139: ImmBorrowLoc[8](loc5: Balances)
592 140: Call balances::non_zero_value(&Balances): u64
593 141: CopyLoc[0](Arg0: &mut OrderInfo)
594 142: MutBorrowField[17](OrderInfo.maker_fees: u64)
595 143: WriteRef
596 144: MutBorrowLoc[10](loc7: Balances)
597 145: MoveLoc[8](loc5: Balances)
598 146: Call balances::add_balances(&mut Balances, Balances)
599 147: CopyLoc[0](Arg0: &mut OrderInfo)
600 148: ImmBorrowField[8](OrderInfo.is_bid: bool)
601 149: ReadRef
602 150: BrFalse(159)
603B12:
604 151: MutBorrowLoc[10](loc7: Balances)
605 152: MoveLoc[12](loc9: u64)
606 153: MoveLoc[0](Arg0: &mut OrderInfo)
607 154: FreezeRef
608 155: Call price(&OrderInfo): u64
609 156: Call math::mul(u64, u64): u64
610 157: Call balances::add_quote(&mut Balances, u64)
611 158: Branch(167)
612B13:
613 159: MoveLoc[0](Arg0: &mut OrderInfo)
614 160: Pop
615 161: MutBorrowLoc[10](loc7: Balances)
616 162: MoveLoc[12](loc9: u64)
617 163: Call balances::add_base(&mut Balances, u64)
618 164: Branch(167)
619B14:
620 165: MoveLoc[0](Arg0: &mut OrderInfo)
621 166: Pop
622B15:
623 167: MoveLoc[13](loc10: Balances)
624 168: MoveLoc[10](loc7: Balances)
625 169: Ret
626}
627
628public(friend) to_order(Arg0: &OrderInfo): Order {
629B0:
630 0: CopyLoc[0](Arg0: &OrderInfo)
631 1: ImmBorrowField[1](OrderInfo.order_id: u128)
632 2: ReadRef
633 3: CopyLoc[0](Arg0: &OrderInfo)
634 4: ImmBorrowField[2](OrderInfo.balance_manager_id: ID)
635 5: ReadRef
636 6: CopyLoc[0](Arg0: &OrderInfo)
637 7: ImmBorrowField[3](OrderInfo.client_order_id: u64)
638 8: ReadRef
639 9: CopyLoc[0](Arg0: &OrderInfo)
640 10: ImmBorrowField[9](OrderInfo.original_quantity: u64)
641 11: ReadRef
642 12: CopyLoc[0](Arg0: &OrderInfo)
643 13: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
644 14: ReadRef
645 15: CopyLoc[0](Arg0: &OrderInfo)
646 16: ImmBorrowField[15](OrderInfo.fee_is_deep: bool)
647 17: ReadRef
648 18: CopyLoc[0](Arg0: &OrderInfo)
649 19: ImmBorrowField[10](OrderInfo.order_deep_price: OrderDeepPrice)
650 20: ReadRef
651 21: CopyLoc[0](Arg0: &OrderInfo)
652 22: ImmBorrowField[18](OrderInfo.epoch: u64)
653 23: ReadRef
654 24: CopyLoc[0](Arg0: &OrderInfo)
655 25: ImmBorrowField[19](OrderInfo.status: u8)
656 26: ReadRef
657 27: MoveLoc[0](Arg0: &OrderInfo)
658 28: ImmBorrowField[11](OrderInfo.expire_timestamp: u64)
659 29: ReadRef
660 30: Call order::new(u128, ID, u64, u64, u64, bool, OrderDeepPrice, u64, u8, u64): Order
661 31: Ret
662}
663
664public(friend) validate_inputs(Arg0: &OrderInfo, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: u64) {
665L5: loc0: bool
666L6: loc1: bool
667B0:
668 0: CopyLoc[0](Arg0: &OrderInfo)
669 1: ImmBorrowField[9](OrderInfo.original_quantity: u64)
670 2: ReadRef
671 3: MoveLoc[2](Arg2: u64)
672 4: Ge
673 5: BrFalse(7)
674B1:
675 6: Branch(11)
676B2:
677 7: MoveLoc[0](Arg0: &OrderInfo)
678 8: Pop
679 9: LdConst[1](u64: 1)
680 10: Abort
681B3:
682 11: CopyLoc[0](Arg0: &OrderInfo)
683 12: ImmBorrowField[9](OrderInfo.original_quantity: u64)
684 13: ReadRef
685 14: MoveLoc[3](Arg3: u64)
686 15: Mod
687 16: LdU64(0)
688 17: Eq
689 18: BrFalse(20)
690B4:
691 19: Branch(24)
692B5:
693 20: MoveLoc[0](Arg0: &OrderInfo)
694 21: Pop
695 22: LdConst[2](u64: 2)
696 23: Abort
697B6:
698 24: MoveLoc[4](Arg4: u64)
699 25: CopyLoc[0](Arg0: &OrderInfo)
700 26: ImmBorrowField[11](OrderInfo.expire_timestamp: u64)
701 27: ReadRef
702 28: Le
703 29: BrFalse(31)
704B7:
705 30: Branch(35)
706B8:
707 31: MoveLoc[0](Arg0: &OrderInfo)
708 32: Pop
709 33: LdConst[3](u64: 3)
710 34: Abort
711B9:
712 35: CopyLoc[0](Arg0: &OrderInfo)
713 36: ImmBorrowField[5](OrderInfo.order_type: u8)
714 37: ReadRef
715 38: Call constants::no_restriction(): u8
716 39: Ge
717 40: BrFalse(48)
718B10:
719 41: CopyLoc[0](Arg0: &OrderInfo)
720 42: ImmBorrowField[5](OrderInfo.order_type: u8)
721 43: ReadRef
722 44: Call constants::max_restriction(): u8
723 45: Le
724 46: StLoc[5](loc0: bool)
725 47: Branch(50)
726B11:
727 48: LdFalse
728 49: StLoc[5](loc0: bool)
729B12:
730 50: MoveLoc[5](loc0: bool)
731 51: BrFalse(53)
732B13:
733 52: Branch(57)
734B14:
735 53: MoveLoc[0](Arg0: &OrderInfo)
736 54: Pop
737 55: LdConst[4](u64: 4)
738 56: Abort
739B15:
740 57: CopyLoc[0](Arg0: &OrderInfo)
741 58: ImmBorrowField[22](OrderInfo.market_order: bool)
742 59: ReadRef
743 60: BrFalse(71)
744B16:
745 61: MoveLoc[0](Arg0: &OrderInfo)
746 62: ImmBorrowField[5](OrderInfo.order_type: u8)
747 63: ReadRef
748 64: Call constants::post_only(): u8
749 65: Neq
750 66: BrFalse(68)
751B17:
752 67: Branch(70)
753B18:
754 68: LdConst[7](u64: 7)
755 69: Abort
756B19:
757 70: Ret
758B20:
759 71: CopyLoc[0](Arg0: &OrderInfo)
760 72: ImmBorrowField[7](OrderInfo.price: u64)
761 73: ReadRef
762 74: Call constants::min_price(): u64
763 75: Ge
764 76: BrFalse(84)
765B21:
766 77: CopyLoc[0](Arg0: &OrderInfo)
767 78: ImmBorrowField[7](OrderInfo.price: u64)
768 79: ReadRef
769 80: Call constants::max_price(): u64
770 81: Le
771 82: StLoc[6](loc1: bool)
772 83: Branch(86)
773B22:
774 84: LdFalse
775 85: StLoc[6](loc1: bool)
776B23:
777 86: MoveLoc[6](loc1: bool)
778 87: BrFalse(89)
779B24:
780 88: Branch(93)
781B25:
782 89: MoveLoc[0](Arg0: &OrderInfo)
783 90: Pop
784 91: LdConst[0](u64: 0)
785 92: Abort
786B26:
787 93: MoveLoc[0](Arg0: &OrderInfo)
788 94: ImmBorrowField[7](OrderInfo.price: u64)
789 95: ReadRef
790 96: MoveLoc[1](Arg1: u64)
791 97: Mod
792 98: LdU64(0)
793 99: Eq
794 100: BrFalse(102)
795B27:
796 101: Branch(104)
797B28:
798 102: LdConst[0](u64: 0)
799 103: Abort
800B29:
801 104: Ret
802}
803
804public(friend) assert_execution(Arg0: &mut OrderInfo): bool {
805B0:
806 0: CopyLoc[0](Arg0: &mut OrderInfo)
807 1: ImmBorrowField[5](OrderInfo.order_type: u8)
808 2: ReadRef
809 3: Call constants::post_only(): u8
810 4: Eq
811 5: BrFalse(17)
812B1:
813 6: CopyLoc[0](Arg0: &mut OrderInfo)
814 7: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
815 8: ReadRef
816 9: LdU64(0)
817 10: Eq
818 11: BrFalse(13)
819B2:
820 12: Branch(17)
821B3:
822 13: MoveLoc[0](Arg0: &mut OrderInfo)
823 14: Pop
824 15: LdConst[5](u64: 5)
825 16: Abort
826B4:
827 17: CopyLoc[0](Arg0: &mut OrderInfo)
828 18: ImmBorrowField[5](OrderInfo.order_type: u8)
829 19: ReadRef
830 20: Call constants::fill_or_kill(): u8
831 21: Eq
832 22: BrFalse(36)
833B5:
834 23: CopyLoc[0](Arg0: &mut OrderInfo)
835 24: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
836 25: ReadRef
837 26: CopyLoc[0](Arg0: &mut OrderInfo)
838 27: ImmBorrowField[9](OrderInfo.original_quantity: u64)
839 28: ReadRef
840 29: Eq
841 30: BrFalse(32)
842B6:
843 31: Branch(36)
844B7:
845 32: MoveLoc[0](Arg0: &mut OrderInfo)
846 33: Pop
847 34: LdConst[6](u64: 6)
848 35: Abort
849B8:
850 36: CopyLoc[0](Arg0: &mut OrderInfo)
851 37: ImmBorrowField[5](OrderInfo.order_type: u8)
852 38: ReadRef
853 39: Call constants::immediate_or_cancel(): u8
854 40: Eq
855 41: BrFalse(59)
856B9:
857 42: CopyLoc[0](Arg0: &mut OrderInfo)
858 43: FreezeRef
859 44: Call remaining_quantity(&OrderInfo): u64
860 45: LdU64(0)
861 46: Gt
862 47: BrFalse(53)
863B10:
864 48: Call constants::canceled(): u8
865 49: MoveLoc[0](Arg0: &mut OrderInfo)
866 50: MutBorrowField[19](OrderInfo.status: u8)
867 51: WriteRef
868 52: Branch(57)
869B11:
870 53: Call constants::filled(): u8
871 54: MoveLoc[0](Arg0: &mut OrderInfo)
872 55: MutBorrowField[19](OrderInfo.status: u8)
873 56: WriteRef
874B12:
875 57: LdTrue
876 58: Ret
877B13:
878 59: CopyLoc[0](Arg0: &mut OrderInfo)
879 60: FreezeRef
880 61: Call remaining_quantity(&OrderInfo): u64
881 62: LdU64(0)
882 63: Eq
883 64: BrFalse(71)
884B14:
885 65: Call constants::filled(): u8
886 66: MoveLoc[0](Arg0: &mut OrderInfo)
887 67: MutBorrowField[19](OrderInfo.status: u8)
888 68: WriteRef
889 69: LdTrue
890 70: Ret
891B15:
892 71: MoveLoc[0](Arg0: &mut OrderInfo)
893 72: ImmBorrowField[20](OrderInfo.fill_limit_reached: bool)
894 73: ReadRef
895 74: BrFalse(77)
896B16:
897 75: LdTrue
898 76: Ret
899B17:
900 77: LdFalse
901 78: Ret
902}
903
904public(friend) remaining_quantity(Arg0: &OrderInfo): u64 {
905B0:
906 0: CopyLoc[0](Arg0: &OrderInfo)
907 1: ImmBorrowField[9](OrderInfo.original_quantity: u64)
908 2: ReadRef
909 3: MoveLoc[0](Arg0: &OrderInfo)
910 4: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
911 5: ReadRef
912 6: Sub
913 7: Ret
914}
915
916public(friend) can_match(Arg0: &OrderInfo, Arg1: &Order): bool {
917L2: loc0: bool
918L3: loc1: bool
919L4: loc2: bool
920L5: loc3: bool
921L6: loc4: u64
922B0:
923 0: MoveLoc[1](Arg1: &Order)
924 1: Call order::price(&Order): u64
925 2: StLoc[6](loc4: u64)
926 3: CopyLoc[0](Arg0: &OrderInfo)
927 4: ImmBorrowField[9](OrderInfo.original_quantity: u64)
928 5: ReadRef
929 6: CopyLoc[0](Arg0: &OrderInfo)
930 7: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
931 8: ReadRef
932 9: Sub
933 10: LdU64(0)
934 11: Gt
935 12: BrFalse(54)
936B1:
937 13: CopyLoc[0](Arg0: &OrderInfo)
938 14: ImmBorrowField[8](OrderInfo.is_bid: bool)
939 15: ReadRef
940 16: BrFalse(24)
941B2:
942 17: CopyLoc[0](Arg0: &OrderInfo)
943 18: ImmBorrowField[7](OrderInfo.price: u64)
944 19: ReadRef
945 20: CopyLoc[6](loc4: u64)
946 21: Ge
947 22: StLoc[5](loc3: bool)
948 23: Branch(26)
949B3:
950 24: LdFalse
951 25: StLoc[5](loc3: bool)
952B4:
953 26: MoveLoc[5](loc3: bool)
954 27: BrFalse(33)
955B5:
956 28: MoveLoc[0](Arg0: &OrderInfo)
957 29: Pop
958 30: LdTrue
959 31: StLoc[3](loc1: bool)
960 32: Branch(51)
961B6:
962 33: CopyLoc[0](Arg0: &OrderInfo)
963 34: ImmBorrowField[8](OrderInfo.is_bid: bool)
964 35: ReadRef
965 36: Not
966 37: BrFalse(45)
967B7:
968 38: MoveLoc[0](Arg0: &OrderInfo)
969 39: ImmBorrowField[7](OrderInfo.price: u64)
970 40: ReadRef
971 41: MoveLoc[6](loc4: u64)
972 42: Le
973 43: StLoc[4](loc2: bool)
974 44: Branch(49)
975B8:
976 45: MoveLoc[0](Arg0: &OrderInfo)
977 46: Pop
978 47: LdFalse
979 48: StLoc[4](loc2: bool)
980B9:
981 49: MoveLoc[4](loc2: bool)
982 50: StLoc[3](loc1: bool)
983B10:
984 51: MoveLoc[3](loc1: bool)
985 52: StLoc[2](loc0: bool)
986 53: Branch(58)
987B11:
988 54: MoveLoc[0](Arg0: &OrderInfo)
989 55: Pop
990 56: LdFalse
991 57: StLoc[2](loc0: bool)
992B12:
993 58: MoveLoc[2](loc0: bool)
994 59: Ret
995}
996
997public(friend) match_maker(Arg0: &mut OrderInfo, Arg1: &mut Order, Arg2: u64): bool {
998L3: loc0: bool
999L4: loc1: bool
1000L5: loc2: Fill
1001B0:
1002 0: CopyLoc[0](Arg0: &mut OrderInfo)
1003 1: FreezeRef
1004 2: CopyLoc[1](Arg1: &mut Order)
1005 3: FreezeRef
1006 4: Call can_match(&OrderInfo, &Order): bool
1007 5: Not
1008 6: BrFalse(13)
1009B1:
1010 7: MoveLoc[0](Arg0: &mut OrderInfo)
1011 8: Pop
1012 9: MoveLoc[1](Arg1: &mut Order)
1013 10: Pop
1014 11: LdFalse
1015 12: Ret
1016B2:
1017 13: CopyLoc[0](Arg0: &mut OrderInfo)
1018 14: FreezeRef
1019 15: Call self_matching_option(&OrderInfo): u8
1020 16: Call constants::cancel_taker(): u8
1021 17: Eq
1022 18: BrFalse(34)
1023B3:
1024 19: CopyLoc[1](Arg1: &mut Order)
1025 20: FreezeRef
1026 21: Call order::balance_manager_id(&Order): ID
1027 22: CopyLoc[0](Arg0: &mut OrderInfo)
1028 23: FreezeRef
1029 24: Call balance_manager_id(&OrderInfo): ID
1030 25: Neq
1031 26: BrFalse(28)
1032B4:
1033 27: Branch(34)
1034B5:
1035 28: MoveLoc[0](Arg0: &mut OrderInfo)
1036 29: Pop
1037 30: MoveLoc[1](Arg1: &mut Order)
1038 31: Pop
1039 32: LdConst[8](u64: 8)
1040 33: Abort
1041B6:
1042 34: CopyLoc[0](Arg0: &mut OrderInfo)
1043 35: FreezeRef
1044 36: Call self_matching_option(&OrderInfo): u8
1045 37: Call constants::cancel_maker(): u8
1046 38: Eq
1047 39: BrFalse(49)
1048B7:
1049 40: CopyLoc[1](Arg1: &mut Order)
1050 41: FreezeRef
1051 42: Call order::balance_manager_id(&Order): ID
1052 43: CopyLoc[0](Arg0: &mut OrderInfo)
1053 44: FreezeRef
1054 45: Call balance_manager_id(&OrderInfo): ID
1055 46: Eq
1056 47: StLoc[3](loc0: bool)
1057 48: Branch(51)
1058B8:
1059 49: LdFalse
1060 50: StLoc[3](loc0: bool)
1061B9:
1062 51: MoveLoc[3](loc0: bool)
1063 52: StLoc[4](loc1: bool)
1064 53: MoveLoc[1](Arg1: &mut Order)
1065 54: MoveLoc[2](Arg2: u64)
1066 55: CopyLoc[0](Arg0: &mut OrderInfo)
1067 56: FreezeRef
1068 57: Call remaining_quantity(&OrderInfo): u64
1069 58: CopyLoc[0](Arg0: &mut OrderInfo)
1070 59: ImmBorrowField[8](OrderInfo.is_bid: bool)
1071 60: ReadRef
1072 61: MoveLoc[4](loc1: bool)
1073 62: CopyLoc[0](Arg0: &mut OrderInfo)
1074 63: ImmBorrowField[15](OrderInfo.fee_is_deep: bool)
1075 64: ReadRef
1076 65: Call order::generate_fill(&mut Order, u64, u64, bool, bool, bool): Fill
1077 66: StLoc[5](loc2: Fill)
1078 67: CopyLoc[0](Arg0: &mut OrderInfo)
1079 68: MutBorrowField[14](OrderInfo.fills: vector<Fill>)
1080 69: CopyLoc[5](loc2: Fill)
1081 70: VecPushBack(29)
1082 71: ImmBorrowLoc[5](loc2: Fill)
1083 72: Call fill::expired(&Fill): bool
1084 73: BrFalse(78)
1085B10:
1086 74: MoveLoc[0](Arg0: &mut OrderInfo)
1087 75: Pop
1088 76: LdTrue
1089 77: Ret
1090B11:
1091 78: CopyLoc[0](Arg0: &mut OrderInfo)
1092 79: ImmBorrowField[12](OrderInfo.executed_quantity: u64)
1093 80: ReadRef
1094 81: ImmBorrowLoc[5](loc2: Fill)
1095 82: Call fill::base_quantity(&Fill): u64
1096 83: Add
1097 84: CopyLoc[0](Arg0: &mut OrderInfo)
1098 85: MutBorrowField[12](OrderInfo.executed_quantity: u64)
1099 86: WriteRef
1100 87: CopyLoc[0](Arg0: &mut OrderInfo)
1101 88: ImmBorrowField[13](OrderInfo.cumulative_quote_quantity: u64)
1102 89: ReadRef
1103 90: ImmBorrowLoc[5](loc2: Fill)
1104 91: Call fill::quote_quantity(&Fill): u64
1105 92: Add
1106 93: CopyLoc[0](Arg0: &mut OrderInfo)
1107 94: MutBorrowField[13](OrderInfo.cumulative_quote_quantity: u64)
1108 95: WriteRef
1109 96: Call constants::partially_filled(): u8
1110 97: CopyLoc[0](Arg0: &mut OrderInfo)
1111 98: MutBorrowField[19](OrderInfo.status: u8)
1112 99: WriteRef
1113 100: CopyLoc[0](Arg0: &mut OrderInfo)
1114 101: FreezeRef
1115 102: Call remaining_quantity(&OrderInfo): u64
1116 103: LdU64(0)
1117 104: Eq
1118 105: BrFalse(111)
1119B12:
1120 106: Call constants::filled(): u8
1121 107: MoveLoc[0](Arg0: &mut OrderInfo)
1122 108: MutBorrowField[19](OrderInfo.status: u8)
1123 109: WriteRef
1124 110: Branch(113)
1125B13:
1126 111: MoveLoc[0](Arg0: &mut OrderInfo)
1127 112: Pop
1128B14:
1129 113: LdTrue
1130 114: Ret
1131}
1132
1133public(friend) emit_orders_filled(Arg0: &OrderInfo, Arg1: u64) {
1134L2: loc0: &Fill
1135L3: loc1: u64
1136L4: loc2: u64
1137B0:
1138 0: LdU64(0)
1139 1: StLoc[3](loc1: u64)
1140 2: CopyLoc[0](Arg0: &OrderInfo)
1141 3: ImmBorrowField[14](OrderInfo.fills: vector<Fill>)
1142 4: VecLen(29)
1143 5: StLoc[4](loc2: u64)
1144B1:
1145 6: CopyLoc[3](loc1: u64)
1146 7: CopyLoc[4](loc2: u64)
1147 8: Lt
1148 9: BrFalse(47)
1149B2:
1150 10: Branch(11)
1151B3:
1152 11: CopyLoc[0](Arg0: &OrderInfo)
1153 12: ImmBorrowField[14](OrderInfo.fills: vector<Fill>)
1154 13: CopyLoc[3](loc1: u64)
1155 14: VecImmBorrow(29)
1156 15: StLoc[2](loc0: &Fill)
1157 16: CopyLoc[2](loc0: &Fill)
1158 17: Call fill::expired(&Fill): bool
1159 18: Not
1160 19: BrFalse(26)
1161B4:
1162 20: CopyLoc[0](Arg0: &OrderInfo)
1163 21: MoveLoc[2](loc0: &Fill)
1164 22: CopyLoc[1](Arg1: u64)
1165 23: Call order_filled_from_fill(&OrderInfo, &Fill, u64): OrderFilled
1166 24: Call event::emit<OrderFilled>(OrderFilled)
1167 25: Branch(42)
1168B5:
1169 26: CopyLoc[0](Arg0: &OrderInfo)
1170 27: Call balance_manager_id(&OrderInfo): ID
1171 28: CopyLoc[2](loc0: &Fill)
1172 29: Call fill::balance_manager_id(&Fill): ID
1173 30: Eq
1174 31: BrFalse(37)
1175B6:
1176 32: CopyLoc[0](Arg0: &OrderInfo)
1177 33: MoveLoc[2](loc0: &Fill)
1178 34: CopyLoc[1](Arg1: u64)
1179 35: Call emit_order_canceled_maker_from_fill(&OrderInfo, &Fill, u64)
1180 36: Branch(42)
1181B7:
1182 37: CopyLoc[0](Arg0: &OrderInfo)
1183 38: MoveLoc[2](loc0: &Fill)
1184 39: CopyLoc[1](Arg1: u64)
1185 40: Call order_expired_from_fill(&OrderInfo, &Fill, u64): OrderExpired
1186 41: Call event::emit<OrderExpired>(OrderExpired)
1187B8:
1188 42: MoveLoc[3](loc1: u64)
1189 43: LdU64(1)
1190 44: Add
1191 45: StLoc[3](loc1: u64)
1192 46: Branch(6)
1193B9:
1194 47: MoveLoc[0](Arg0: &OrderInfo)
1195 48: Pop
1196 49: Ret
1197}
1198
1199public(friend) emit_order_placed(Arg0: &OrderInfo) {
1200L1: loc0: ID
1201L2: loc1: u64
1202L3: loc2: ID
1203L4: loc3: u128
1204L5: loc4: u64
1205L6: loc5: bool
1206L7: loc6: address
1207L8: loc7: u64
1208L9: loc8: u64
1209L10: loc9: u64
1210B0:
1211 0: CopyLoc[0](Arg0: &OrderInfo)
1212 1: ImmBorrowField[2](OrderInfo.balance_manager_id: ID)
1213 2: ReadRef
1214 3: StLoc[1](loc0: ID)
1215 4: CopyLoc[0](Arg0: &OrderInfo)
1216 5: ImmBorrowField[0](OrderInfo.pool_id: ID)
1217 6: ReadRef
1218 7: StLoc[3](loc2: ID)
1219 8: CopyLoc[0](Arg0: &OrderInfo)
1220 9: ImmBorrowField[1](OrderInfo.order_id: u128)
1221 10: ReadRef
1222 11: StLoc[4](loc3: u128)
1223 12: CopyLoc[0](Arg0: &OrderInfo)
1224 13: ImmBorrowField[3](OrderInfo.client_order_id: u64)
1225 14: ReadRef
1226 15: StLoc[5](loc4: u64)
1227 16: CopyLoc[0](Arg0: &OrderInfo)
1228 17: ImmBorrowField[8](OrderInfo.is_bid: bool)
1229 18: ReadRef
1230 19: StLoc[6](loc5: bool)
1231 20: CopyLoc[0](Arg0: &OrderInfo)
1232 21: ImmBorrowField[4](OrderInfo.trader: address)
1233 22: ReadRef
1234 23: StLoc[7](loc6: address)
1235 24: CopyLoc[0](Arg0: &OrderInfo)
1236 25: Call remaining_quantity(&OrderInfo): u64
1237 26: StLoc[8](loc7: u64)
1238 27: CopyLoc[0](Arg0: &OrderInfo)
1239 28: ImmBorrowField[7](OrderInfo.price: u64)
1240 29: ReadRef
1241 30: StLoc[9](loc8: u64)
1242 31: CopyLoc[0](Arg0: &OrderInfo)
1243 32: ImmBorrowField[11](OrderInfo.expire_timestamp: u64)
1244 33: ReadRef
1245 34: StLoc[10](loc9: u64)
1246 35: MoveLoc[0](Arg0: &OrderInfo)
1247 36: ImmBorrowField[23](OrderInfo.timestamp: u64)
1248 37: ReadRef
1249 38: StLoc[2](loc1: u64)
1250 39: MoveLoc[1](loc0: ID)
1251 40: MoveLoc[3](loc2: ID)
1252 41: MoveLoc[4](loc3: u128)
1253 42: MoveLoc[5](loc4: u64)
1254 43: MoveLoc[7](loc6: address)
1255 44: MoveLoc[9](loc8: u64)
1256 45: MoveLoc[6](loc5: bool)
1257 46: MoveLoc[8](loc7: u64)
1258 47: MoveLoc[10](loc9: u64)
1259 48: MoveLoc[2](loc1: u64)
1260 49: Pack[2](OrderPlaced)
1261 50: Call event::emit<OrderPlaced>(OrderPlaced)
1262 51: Ret
1263}
1264
1265public(friend) emit_order_info(Arg0: &OrderInfo) {
1266B0:
1267 0: MoveLoc[0](Arg0: &OrderInfo)
1268 1: ReadRef
1269 2: Call event::emit<OrderInfo>(OrderInfo)
1270 3: Ret
1271}
1272
1273public(friend) set_fill_limit_reached(Arg0: &mut OrderInfo) {
1274B0:
1275 0: LdTrue
1276 1: MoveLoc[0](Arg0: &mut OrderInfo)
1277 2: MutBorrowField[20](OrderInfo.fill_limit_reached: bool)
1278 3: WriteRef
1279 4: Ret
1280}
1281
1282public(friend) set_order_inserted(Arg0: &mut OrderInfo) {
1283B0:
1284 0: LdTrue
1285 1: MoveLoc[0](Arg0: &mut OrderInfo)
1286 2: MutBorrowField[21](OrderInfo.order_inserted: bool)
1287 3: WriteRef
1288 4: Ret
1289}
1290
1291order_filled_from_fill(Arg0: &OrderInfo, Arg1: &Fill, Arg2: u64): OrderFilled {
1292B0:
1293 0: CopyLoc[0](Arg0: &OrderInfo)
1294 1: ImmBorrowField[0](OrderInfo.pool_id: ID)
1295 2: ReadRef
1296 3: CopyLoc[1](Arg1: &Fill)
1297 4: Call fill::maker_order_id(&Fill): u128
1298 5: CopyLoc[0](Arg0: &OrderInfo)
1299 6: ImmBorrowField[1](OrderInfo.order_id: u128)
1300 7: ReadRef
1301 8: CopyLoc[1](Arg1: &Fill)
1302 9: Call fill::maker_client_order_id(&Fill): u64
1303 10: CopyLoc[0](Arg0: &OrderInfo)
1304 11: ImmBorrowField[3](OrderInfo.client_order_id: u64)
1305 12: ReadRef
1306 13: CopyLoc[1](Arg1: &Fill)
1307 14: Call fill::execution_price(&Fill): u64
1308 15: CopyLoc[0](Arg0: &OrderInfo)
1309 16: ImmBorrowField[8](OrderInfo.is_bid: bool)
1310 17: ReadRef
1311 18: CopyLoc[1](Arg1: &Fill)
1312 19: Call fill::taker_fee(&Fill): u64
1313 20: CopyLoc[1](Arg1: &Fill)
1314 21: Call fill::taker_fee_is_deep(&Fill): bool
1315 22: CopyLoc[1](Arg1: &Fill)
1316 23: Call fill::maker_fee(&Fill): u64
1317 24: CopyLoc[1](Arg1: &Fill)
1318 25: Call fill::maker_fee_is_deep(&Fill): bool
1319 26: CopyLoc[1](Arg1: &Fill)
1320 27: Call fill::base_quantity(&Fill): u64
1321 28: CopyLoc[1](Arg1: &Fill)
1322 29: Call fill::quote_quantity(&Fill): u64
1323 30: MoveLoc[1](Arg1: &Fill)
1324 31: Call fill::balance_manager_id(&Fill): ID
1325 32: MoveLoc[0](Arg0: &OrderInfo)
1326 33: ImmBorrowField[2](OrderInfo.balance_manager_id: ID)
1327 34: ReadRef
1328 35: MoveLoc[2](Arg2: u64)
1329 36: Pack[1](OrderFilled)
1330 37: Ret
1331}
1332
1333order_expired_from_fill(Arg0: &OrderInfo, Arg1: &Fill, Arg2: u64): OrderExpired {
1334B0:
1335 0: CopyLoc[1](Arg1: &Fill)
1336 1: Call fill::balance_manager_id(&Fill): ID
1337 2: CopyLoc[0](Arg0: &OrderInfo)
1338 3: ImmBorrowField[0](OrderInfo.pool_id: ID)
1339 4: ReadRef
1340 5: CopyLoc[1](Arg1: &Fill)
1341 6: Call fill::maker_order_id(&Fill): u128
1342 7: CopyLoc[1](Arg1: &Fill)
1343 8: Call fill::maker_client_order_id(&Fill): u64
1344 9: CopyLoc[0](Arg0: &OrderInfo)
1345 10: Call trader(&OrderInfo): address
1346 11: CopyLoc[1](Arg1: &Fill)
1347 12: Call fill::execution_price(&Fill): u64
1348 13: MoveLoc[0](Arg0: &OrderInfo)
1349 14: Call is_bid(&OrderInfo): bool
1350 15: Not
1351 16: CopyLoc[1](Arg1: &Fill)
1352 17: Call fill::original_maker_quantity(&Fill): u64
1353 18: MoveLoc[1](Arg1: &Fill)
1354 19: Call fill::base_quantity(&Fill): u64
1355 20: MoveLoc[2](Arg2: u64)
1356 21: Pack[3](OrderExpired)
1357 22: Ret
1358}
1359
1360emit_order_canceled_maker_from_fill(Arg0: &OrderInfo, Arg1: &Fill, Arg2: u64) {
1361B0:
1362 0: CopyLoc[1](Arg1: &Fill)
1363 1: Call fill::balance_manager_id(&Fill): ID
1364 2: CopyLoc[0](Arg0: &OrderInfo)
1365 3: ImmBorrowField[0](OrderInfo.pool_id: ID)
1366 4: ReadRef
1367 5: CopyLoc[1](Arg1: &Fill)
1368 6: Call fill::maker_order_id(&Fill): u128
1369 7: CopyLoc[1](Arg1: &Fill)
1370 8: Call fill::maker_client_order_id(&Fill): u64
1371 9: CopyLoc[0](Arg0: &OrderInfo)
1372 10: Call trader(&OrderInfo): address
1373 11: CopyLoc[1](Arg1: &Fill)
1374 12: Call fill::execution_price(&Fill): u64
1375 13: MoveLoc[0](Arg0: &OrderInfo)
1376 14: Call is_bid(&OrderInfo): bool
1377 15: Not
1378 16: CopyLoc[1](Arg1: &Fill)
1379 17: Call fill::original_maker_quantity(&Fill): u64
1380 18: MoveLoc[1](Arg1: &Fill)
1381 19: Call fill::base_quantity(&Fill): u64
1382 20: MoveLoc[2](Arg2: u64)
1383 21: Call order::emit_cancel_maker(ID, ID, u128, u64, address, u64, bool, u64, u64, u64)
1384 22: Ret
1385}
1386
1387Constants [
1388 0 => u64: 0
1389 1 => u64: 1
1390 2 => u64: 2
1391 3 => u64: 3
1392 4 => u64: 4
1393 5 => u64: 5
1394 6 => u64: 6
1395 7 => u64: 7
1396 8 => u64: 8
1397]
1398}
1399
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/pool.mvb2476 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.pool {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::account;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balance_manager;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
6use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::big_vector;
7use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::book;
8use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
9use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::deep_price;
10use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::governance;
11use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::history;
12use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
13use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order;
14use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order_info;
15use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::registry;
16use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::state;
17use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::trade_params;
18use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::vault;
19use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
20use 0000000000000000000000000000000000000000000000000000000000000002::balance;
21use 0000000000000000000000000000000000000000000000000000000000000002::clock;
22use 0000000000000000000000000000000000000000000000000000000000000002::coin;
23use 0000000000000000000000000000000000000000000000000000000000000002::event;
24use 0000000000000000000000000000000000000000000000000000000000000002::object;
25use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
26use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
27use 0000000000000000000000000000000000000000000000000000000000000002::vec_set;
28use 0000000000000000000000000000000000000000000000000000000000000002::versioned;
29use deeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep;
30
31struct Pool<phantom Ty0, phantom Ty1> has key {
32 id: UID,
33 inner: Versioned
34}
35
36struct PoolInner<phantom Ty0, phantom Ty1> has store {
37 allowed_versions: VecSet<u64>,
38 pool_id: ID,
39 book: Book,
40 state: State,
41 vault: Vault<Ty0, Ty1>,
42 deep_price: DeepPrice,
43 registered_pool: bool
44}
45
46struct PoolCreated<phantom Ty0, phantom Ty1> has copy, drop, store {
47 pool_id: ID,
48 taker_fee: u64,
49 maker_fee: u64,
50 tick_size: u64,
51 lot_size: u64,
52 min_size: u64,
53 whitelisted_pool: bool,
54 treasury_address: address
55}
56
57struct BookParamsUpdated<phantom Ty0, phantom Ty1> has copy, drop, store {
58 pool_id: ID,
59 tick_size: u64,
60 lot_size: u64,
61 min_size: u64,
62 timestamp: u64
63}
64
65struct DeepBurned<phantom Ty0, phantom Ty1> has copy, drop, store {
66 pool_id: ID,
67 deep_burned: u64
68}
69
70public create_permissionless_pool<Ty0, Ty1>(Arg0: &mut Registry, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: Coin<DEEP>, Arg5: &mut TxContext): ID {
71L6: loc0: bool
72L7: loc1: TypeName
73L8: loc2: TypeName
74L9: loc3: bool
75B0:
76 0: ImmBorrowLoc[4](Arg4: Coin<DEEP>)
77 1: Call coin::value<DEEP>(&Coin<DEEP>): u64
78 2: Call constants::pool_creation_fee(): u64
79 3: Eq
80 4: BrFalse(6)
81B1:
82 5: Branch(12)
83B2:
84 6: MoveLoc[0](Arg0: &mut Registry)
85 7: Pop
86 8: MoveLoc[5](Arg5: &mut TxContext)
87 9: Pop
88 10: LdConst[0](u64: 1)
89 11: Abort
90B3:
91 12: Call type_name::get<Ty0>(): TypeName
92 13: StLoc[7](loc1: TypeName)
93 14: Call type_name::get<Ty1>(): TypeName
94 15: StLoc[8](loc2: TypeName)
95 16: CopyLoc[0](Arg0: &mut Registry)
96 17: FreezeRef
97 18: MoveLoc[7](loc1: TypeName)
98 19: Call registry::is_stablecoin(&Registry, TypeName): bool
99 20: BrFalse(27)
100B4:
101 21: CopyLoc[0](Arg0: &mut Registry)
102 22: FreezeRef
103 23: MoveLoc[8](loc2: TypeName)
104 24: Call registry::is_stablecoin(&Registry, TypeName): bool
105 25: StLoc[6](loc0: bool)
106 26: Branch(29)
107B5:
108 27: LdFalse
109 28: StLoc[6](loc0: bool)
110B6:
111 29: MoveLoc[6](loc0: bool)
112 30: StLoc[9](loc3: bool)
113 31: MoveLoc[0](Arg0: &mut Registry)
114 32: MoveLoc[1](Arg1: u64)
115 33: MoveLoc[2](Arg2: u64)
116 34: MoveLoc[3](Arg3: u64)
117 35: MoveLoc[4](Arg4: Coin<DEEP>)
118 36: LdFalse
119 37: MoveLoc[9](loc3: bool)
120 38: MoveLoc[5](Arg5: &mut TxContext)
121 39: Call create_pool<Ty0, Ty1>(&mut Registry, u64, u64, u64, Coin<DEEP>, bool, bool, &mut TxContext): ID
122 40: Ret
123}
124
125public place_limit_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: u64, Arg4: u8, Arg5: u8, Arg6: u64, Arg7: u64, Arg8: bool, Arg9: bool, Arg10: u64, Arg11: &Clock, Arg12: &TxContext): OrderInfo {
126B0:
127 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
128 1: MoveLoc[1](Arg1: &mut BalanceManager)
129 2: MoveLoc[2](Arg2: &TradeProof)
130 3: MoveLoc[3](Arg3: u64)
131 4: MoveLoc[4](Arg4: u8)
132 5: MoveLoc[5](Arg5: u8)
133 6: MoveLoc[6](Arg6: u64)
134 7: MoveLoc[7](Arg7: u64)
135 8: MoveLoc[8](Arg8: bool)
136 9: MoveLoc[9](Arg9: bool)
137 10: MoveLoc[10](Arg10: u64)
138 11: MoveLoc[11](Arg11: &Clock)
139 12: LdFalse
140 13: MoveLoc[12](Arg12: &TxContext)
141 14: Call place_order_int<Ty0, Ty1>(&mut Pool<Ty0, Ty1>, &mut BalanceManager, &TradeProof, u64, u8, u8, u64, u64, bool, bool, u64, &Clock, bool, &TxContext): OrderInfo
142 15: Ret
143}
144
145public place_market_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: u64, Arg4: u8, Arg5: u64, Arg6: bool, Arg7: bool, Arg8: &Clock, Arg9: &TxContext): OrderInfo {
146L10: loc0: u64
147L11: loc1: u8
148L12: loc2: u8
149L13: loc3: u64
150L14: loc4: &TradeProof
151L15: loc5: &mut BalanceManager
152L16: loc6: &mut Pool<Ty0, Ty1>
153B0:
154 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
155 1: StLoc[16](loc6: &mut Pool<Ty0, Ty1>)
156 2: MoveLoc[1](Arg1: &mut BalanceManager)
157 3: StLoc[15](loc5: &mut BalanceManager)
158 4: MoveLoc[2](Arg2: &TradeProof)
159 5: StLoc[14](loc4: &TradeProof)
160 6: MoveLoc[3](Arg3: u64)
161 7: StLoc[13](loc3: u64)
162 8: Call constants::immediate_or_cancel(): u8
163 9: StLoc[12](loc2: u8)
164 10: MoveLoc[4](Arg4: u8)
165 11: StLoc[11](loc1: u8)
166 12: CopyLoc[6](Arg6: bool)
167 13: BrFalse(17)
168B1:
169 14: Call constants::max_price(): u64
170 15: StLoc[10](loc0: u64)
171 16: Branch(19)
172B2:
173 17: Call constants::min_price(): u64
174 18: StLoc[10](loc0: u64)
175B3:
176 19: MoveLoc[16](loc6: &mut Pool<Ty0, Ty1>)
177 20: MoveLoc[15](loc5: &mut BalanceManager)
178 21: MoveLoc[14](loc4: &TradeProof)
179 22: MoveLoc[13](loc3: u64)
180 23: MoveLoc[12](loc2: u8)
181 24: MoveLoc[11](loc1: u8)
182 25: MoveLoc[10](loc0: u64)
183 26: MoveLoc[5](Arg5: u64)
184 27: MoveLoc[6](Arg6: bool)
185 28: MoveLoc[7](Arg7: bool)
186 29: CopyLoc[8](Arg8: &Clock)
187 30: Call clock::timestamp_ms(&Clock): u64
188 31: MoveLoc[8](Arg8: &Clock)
189 32: LdTrue
190 33: MoveLoc[9](Arg9: &TxContext)
191 34: Call place_order_int<Ty0, Ty1>(&mut Pool<Ty0, Ty1>, &mut BalanceManager, &TradeProof, u64, u8, u8, u64, u64, bool, bool, u64, &Clock, bool, &TxContext): OrderInfo
192 35: Ret
193}
194
195public swap_exact_base_for_quote<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: Coin<Ty0>, Arg2: Coin<DEEP>, Arg3: u64, Arg4: &Clock, Arg5: &mut TxContext): Coin<Ty0> * Coin<Ty1> * Coin<DEEP> {
196L6: loc0: Coin<Ty1>
197B0:
198 0: CopyLoc[5](Arg5: &mut TxContext)
199 1: Call coin::zero<Ty1>(&mut TxContext): Coin<Ty1>
200 2: StLoc[6](loc0: Coin<Ty1>)
201 3: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
202 4: MoveLoc[1](Arg1: Coin<Ty0>)
203 5: MoveLoc[6](loc0: Coin<Ty1>)
204 6: MoveLoc[2](Arg2: Coin<DEEP>)
205 7: MoveLoc[3](Arg3: u64)
206 8: MoveLoc[4](Arg4: &Clock)
207 9: MoveLoc[5](Arg5: &mut TxContext)
208 10: Call swap_exact_quantity<Ty0, Ty1>(&mut Pool<Ty0, Ty1>, Coin<Ty0>, Coin<Ty1>, Coin<DEEP>, u64, &Clock, &mut TxContext): Coin<Ty0> * Coin<Ty1> * Coin<DEEP>
209 11: Ret
210}
211
212public swap_exact_quote_for_base<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: Coin<Ty1>, Arg2: Coin<DEEP>, Arg3: u64, Arg4: &Clock, Arg5: &mut TxContext): Coin<Ty0> * Coin<Ty1> * Coin<DEEP> {
213L6: loc0: Coin<Ty0>
214B0:
215 0: CopyLoc[5](Arg5: &mut TxContext)
216 1: Call coin::zero<Ty0>(&mut TxContext): Coin<Ty0>
217 2: StLoc[6](loc0: Coin<Ty0>)
218 3: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
219 4: MoveLoc[6](loc0: Coin<Ty0>)
220 5: MoveLoc[1](Arg1: Coin<Ty1>)
221 6: MoveLoc[2](Arg2: Coin<DEEP>)
222 7: MoveLoc[3](Arg3: u64)
223 8: MoveLoc[4](Arg4: &Clock)
224 9: MoveLoc[5](Arg5: &mut TxContext)
225 10: Call swap_exact_quantity<Ty0, Ty1>(&mut Pool<Ty0, Ty1>, Coin<Ty0>, Coin<Ty1>, Coin<DEEP>, u64, &Clock, &mut TxContext): Coin<Ty0> * Coin<Ty1> * Coin<DEEP>
226 11: Ret
227}
228
229public swap_exact_quantity<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: Coin<Ty0>, Arg2: Coin<Ty1>, Arg3: Coin<DEEP>, Arg4: u64, Arg5: &Clock, Arg6: &mut TxContext): Coin<Ty0> * Coin<Ty1> * Coin<DEEP> {
230L7: loc0: TradeParams
231L8: loc1: u64
232L9: loc2: u64
233L10: loc3: u64
234L11: loc4: Coin<Ty0>
235L12: loc5: u64
236L13: loc6: Coin<DEEP>
237L14: loc7: u64
238L15: loc8: bool
239L16: loc9: bool
240L17: loc10: Coin<Ty1>
241L18: loc11: u64
242L19: loc12: BalanceManager
243L20: loc13: TradeProof
244B0:
245 0: ImmBorrowLoc[1](Arg1: Coin<Ty0>)
246 1: Call coin::value<Ty0>(&Coin<Ty0>): u64
247 2: StLoc[12](loc5: u64)
248 3: ImmBorrowLoc[2](Arg2: Coin<Ty1>)
249 4: Call coin::value<Ty1>(&Coin<Ty1>): u64
250 5: StLoc[18](loc11: u64)
251 6: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
252 7: FreezeRef
253 8: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
254 9: ImmBorrowFieldGeneric[0](PoolInner.state: State)
255 10: Call state::governance(&State): &Governance
256 11: Call governance::trade_params(&Governance): TradeParams
257 12: StLoc[7](loc0: TradeParams)
258 13: ImmBorrowLoc[7](loc0: TradeParams)
259 14: Call trade_params::taker_fee(&TradeParams): u64
260 15: Call constants::fee_penalty_multiplier(): u64
261 16: Call math::mul(u64, u64): u64
262 17: StLoc[14](loc7: u64)
263 18: CopyLoc[12](loc5: u64)
264 19: LdU64(0)
265 20: Gt
266 21: CopyLoc[18](loc11: u64)
267 22: LdU64(0)
268 23: Gt
269 24: Neq
270 25: BrFalse(27)
271B1:
272 26: Branch(35)
273B2:
274 27: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
275 28: Pop
276 29: MoveLoc[6](Arg6: &mut TxContext)
277 30: Pop
278 31: MoveLoc[5](Arg5: &Clock)
279 32: Pop
280 33: LdConst[5](u64: 6)
281 34: Abort
282B3:
283 35: ImmBorrowLoc[3](Arg3: Coin<DEEP>)
284 36: Call coin::value<DEEP>(&Coin<DEEP>): u64
285 37: LdU64(0)
286 38: Gt
287 39: StLoc[16](loc9: bool)
288 40: CopyLoc[18](loc11: u64)
289 41: LdU64(0)
290 42: Gt
291 43: StLoc[15](loc8: bool)
292 44: CopyLoc[15](loc8: bool)
293 45: BrFalse(74)
294B4:
295 46: CopyLoc[16](loc9: bool)
296 47: BrFalse(58)
297B5:
298 48: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
299 49: FreezeRef
300 50: LdU64(0)
301 51: MoveLoc[18](loc11: u64)
302 52: CopyLoc[5](Arg5: &Clock)
303 53: Call get_quantity_out<Ty0, Ty1>(&Pool<Ty0, Ty1>, u64, u64, &Clock): u64 * u64 * u64
304 54: StLoc[10](loc3: u64)
305 55: StLoc[9](loc2: u64)
306 56: StLoc[8](loc1: u64)
307 57: Branch(67)
308B6:
309 58: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
310 59: FreezeRef
311 60: LdU64(0)
312 61: MoveLoc[18](loc11: u64)
313 62: CopyLoc[5](Arg5: &Clock)
314 63: Call get_quantity_out_input_fee<Ty0, Ty1>(&Pool<Ty0, Ty1>, u64, u64, &Clock): u64 * u64 * u64
315 64: StLoc[10](loc3: u64)
316 65: StLoc[9](loc2: u64)
317 66: StLoc[8](loc1: u64)
318B7:
319 67: MoveLoc[8](loc1: u64)
320 68: MoveLoc[9](loc2: u64)
321 69: MoveLoc[10](loc3: u64)
322 70: Pop
323 71: Pop
324 72: StLoc[12](loc5: u64)
325 73: Branch(83)
326B8:
327 74: CopyLoc[16](loc9: bool)
328 75: Not
329 76: BrFalse(83)
330B9:
331 77: MoveLoc[12](loc5: u64)
332 78: Call constants::float_scaling(): u64
333 79: MoveLoc[14](loc7: u64)
334 80: Add
335 81: Call math::div(u64, u64): u64
336 82: StLoc[12](loc5: u64)
337B10:
338 83: CopyLoc[12](loc5: u64)
339 84: MoveLoc[12](loc5: u64)
340 85: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
341 86: FreezeRef
342 87: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
343 88: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
344 89: Call book::lot_size(&Book): u64
345 90: Mod
346 91: Sub
347 92: StLoc[12](loc5: u64)
348 93: CopyLoc[12](loc5: u64)
349 94: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
350 95: FreezeRef
351 96: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
352 97: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
353 98: Call book::min_size(&Book): u64
354 99: Lt
355 100: BrFalse(111)
356B11:
357 101: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
358 102: Pop
359 103: MoveLoc[6](Arg6: &mut TxContext)
360 104: Pop
361 105: MoveLoc[5](Arg5: &Clock)
362 106: Pop
363 107: MoveLoc[1](Arg1: Coin<Ty0>)
364 108: MoveLoc[2](Arg2: Coin<Ty1>)
365 109: MoveLoc[3](Arg3: Coin<DEEP>)
366 110: Ret
367B12:
368 111: CopyLoc[6](Arg6: &mut TxContext)
369 112: Call balance_manager::new(&mut TxContext): BalanceManager
370 113: StLoc[19](loc12: BalanceManager)
371 114: MutBorrowLoc[19](loc12: BalanceManager)
372 115: CopyLoc[6](Arg6: &mut TxContext)
373 116: FreezeRef
374 117: Call balance_manager::generate_proof_as_owner(&mut BalanceManager, &TxContext): TradeProof
375 118: StLoc[20](loc13: TradeProof)
376 119: MutBorrowLoc[19](loc12: BalanceManager)
377 120: MoveLoc[1](Arg1: Coin<Ty0>)
378 121: CopyLoc[6](Arg6: &mut TxContext)
379 122: Call balance_manager::deposit<Ty0>(&mut BalanceManager, Coin<Ty0>, &mut TxContext)
380 123: MutBorrowLoc[19](loc12: BalanceManager)
381 124: MoveLoc[2](Arg2: Coin<Ty1>)
382 125: CopyLoc[6](Arg6: &mut TxContext)
383 126: Call balance_manager::deposit<Ty1>(&mut BalanceManager, Coin<Ty1>, &mut TxContext)
384 127: MutBorrowLoc[19](loc12: BalanceManager)
385 128: MoveLoc[3](Arg3: Coin<DEEP>)
386 129: CopyLoc[6](Arg6: &mut TxContext)
387 130: Call balance_manager::deposit<DEEP>(&mut BalanceManager, Coin<DEEP>, &mut TxContext)
388 131: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
389 132: MutBorrowLoc[19](loc12: BalanceManager)
390 133: ImmBorrowLoc[20](loc13: TradeProof)
391 134: LdU64(0)
392 135: Call constants::self_matching_allowed(): u8
393 136: MoveLoc[12](loc5: u64)
394 137: CopyLoc[15](loc8: bool)
395 138: MoveLoc[16](loc9: bool)
396 139: MoveLoc[5](Arg5: &Clock)
397 140: CopyLoc[6](Arg6: &mut TxContext)
398 141: FreezeRef
399 142: Call place_market_order<Ty0, Ty1>(&mut Pool<Ty0, Ty1>, &mut BalanceManager, &TradeProof, u64, u8, u64, bool, bool, &Clock, &TxContext): OrderInfo
400 143: Pop
401 144: MutBorrowLoc[19](loc12: BalanceManager)
402 145: CopyLoc[6](Arg6: &mut TxContext)
403 146: Call balance_manager::withdraw_all<Ty0>(&mut BalanceManager, &mut TxContext): Coin<Ty0>
404 147: StLoc[11](loc4: Coin<Ty0>)
405 148: MutBorrowLoc[19](loc12: BalanceManager)
406 149: CopyLoc[6](Arg6: &mut TxContext)
407 150: Call balance_manager::withdraw_all<Ty1>(&mut BalanceManager, &mut TxContext): Coin<Ty1>
408 151: StLoc[17](loc10: Coin<Ty1>)
409 152: MutBorrowLoc[19](loc12: BalanceManager)
410 153: MoveLoc[6](Arg6: &mut TxContext)
411 154: Call balance_manager::withdraw_all<DEEP>(&mut BalanceManager, &mut TxContext): Coin<DEEP>
412 155: StLoc[13](loc6: Coin<DEEP>)
413 156: MoveLoc[15](loc8: bool)
414 157: BrFalse(166)
415B13:
416 158: ImmBorrowLoc[11](loc4: Coin<Ty0>)
417 159: Call coin::value<Ty0>(&Coin<Ty0>): u64
418 160: MoveLoc[4](Arg4: u64)
419 161: Ge
420 162: BrFalse(164)
421B14:
422 163: Branch(174)
423B15:
424 164: LdConst[10](u64: 12)
425 165: Abort
426B16:
427 166: ImmBorrowLoc[17](loc10: Coin<Ty1>)
428 167: Call coin::value<Ty1>(&Coin<Ty1>): u64
429 168: MoveLoc[4](Arg4: u64)
430 169: Ge
431 170: BrFalse(172)
432B17:
433 171: Branch(174)
434B18:
435 172: LdConst[10](u64: 12)
436 173: Abort
437B19:
438 174: MoveLoc[19](loc12: BalanceManager)
439 175: Call balance_manager::delete(BalanceManager)
440 176: MoveLoc[11](loc4: Coin<Ty0>)
441 177: MoveLoc[17](loc10: Coin<Ty1>)
442 178: MoveLoc[13](loc6: Coin<DEEP>)
443 179: Ret
444}
445
446public modify_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: u128, Arg4: u64, Arg5: &Clock, Arg6: &TxContext) {
447L7: loc0: Order
448L8: loc1: u64
449L9: loc2: &Order
450L10: loc3: Balances
451L11: loc4: u64
452L12: loc5: &mut PoolInner<Ty0, Ty1>
453L13: loc6: Balances
454B0:
455 0: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
456 1: FreezeRef
457 2: CopyLoc[3](Arg3: u128)
458 3: Call get_order<Ty0, Ty1>(&Pool<Ty0, Ty1>, u128): Order
459 4: StLoc[7](loc0: Order)
460 5: ImmBorrowLoc[7](loc0: Order)
461 6: Call order::quantity(&Order): u64
462 7: StLoc[11](loc4: u64)
463 8: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
464 9: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
465 10: StLoc[12](loc5: &mut PoolInner<Ty0, Ty1>)
466 11: CopyLoc[12](loc5: &mut PoolInner<Ty0, Ty1>)
467 12: MutBorrowFieldGeneric[1](PoolInner.book: Book)
468 13: MoveLoc[3](Arg3: u128)
469 14: MoveLoc[4](Arg4: u64)
470 15: CopyLoc[5](Arg5: &Clock)
471 16: Call clock::timestamp_ms(&Clock): u64
472 17: Call book::modify_order(&mut Book, u128, u64, u64): u64 * &Order
473 18: StLoc[9](loc2: &Order)
474 19: StLoc[8](loc1: u64)
475 20: CopyLoc[9](loc2: &Order)
476 21: Call order::balance_manager_id(&Order): ID
477 22: CopyLoc[1](Arg1: &mut BalanceManager)
478 23: FreezeRef
479 24: Call balance_manager::id(&BalanceManager): ID
480 25: Eq
481 26: BrFalse(28)
482B1:
483 27: Branch(42)
484B2:
485 28: MoveLoc[2](Arg2: &TradeProof)
486 29: Pop
487 30: MoveLoc[12](loc5: &mut PoolInner<Ty0, Ty1>)
488 31: Pop
489 32: MoveLoc[9](loc2: &Order)
490 33: Pop
491 34: MoveLoc[6](Arg6: &TxContext)
492 35: Pop
493 36: MoveLoc[5](Arg5: &Clock)
494 37: Pop
495 38: MoveLoc[1](Arg1: &mut BalanceManager)
496 39: Pop
497 40: LdConst[7](u64: 9)
498 41: Abort
499B3:
500 42: CopyLoc[12](loc5: &mut PoolInner<Ty0, Ty1>)
501 43: MutBorrowFieldGeneric[0](PoolInner.state: State)
502 44: CopyLoc[1](Arg1: &mut BalanceManager)
503 45: FreezeRef
504 46: Call balance_manager::id(&BalanceManager): ID
505 47: MoveLoc[8](loc1: u64)
506 48: CopyLoc[9](loc2: &Order)
507 49: CopyLoc[12](loc5: &mut PoolInner<Ty0, Ty1>)
508 50: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
509 51: ReadRef
510 52: CopyLoc[6](Arg6: &TxContext)
511 53: Call state::process_modify(&mut State, ID, u64, &Order, ID, &TxContext): Balances * Balances
512 54: StLoc[10](loc3: Balances)
513 55: StLoc[13](loc6: Balances)
514 56: CopyLoc[12](loc5: &mut PoolInner<Ty0, Ty1>)
515 57: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
516 58: MoveLoc[13](loc6: Balances)
517 59: MoveLoc[10](loc3: Balances)
518 60: MoveLoc[1](Arg1: &mut BalanceManager)
519 61: MoveLoc[2](Arg2: &TradeProof)
520 62: Call vault::settle_balance_manager<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, Balances, Balances, &mut BalanceManager, &TradeProof)
521 63: MoveLoc[9](loc2: &Order)
522 64: MoveLoc[12](loc5: &mut PoolInner<Ty0, Ty1>)
523 65: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
524 66: ReadRef
525 67: MoveLoc[11](loc4: u64)
526 68: MoveLoc[6](Arg6: &TxContext)
527 69: Call tx_context::sender(&TxContext): address
528 70: MoveLoc[5](Arg5: &Clock)
529 71: Call clock::timestamp_ms(&Clock): u64
530 72: Call order::emit_order_modified(&Order, ID, u64, address, u64)
531 73: Ret
532}
533
534public cancel_order<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: u128, Arg4: &Clock, Arg5: &TxContext) {
535L6: loc0: Order
536L7: loc1: Balances
537L8: loc2: &mut PoolInner<Ty0, Ty1>
538L9: loc3: Balances
539B0:
540 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
541 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
542 2: StLoc[8](loc2: &mut PoolInner<Ty0, Ty1>)
543 3: CopyLoc[8](loc2: &mut PoolInner<Ty0, Ty1>)
544 4: MutBorrowFieldGeneric[1](PoolInner.book: Book)
545 5: MoveLoc[3](Arg3: u128)
546 6: Call book::cancel_order(&mut Book, u128): Order
547 7: StLoc[6](loc0: Order)
548 8: ImmBorrowLoc[6](loc0: Order)
549 9: Call order::balance_manager_id(&Order): ID
550 10: CopyLoc[1](Arg1: &mut BalanceManager)
551 11: FreezeRef
552 12: Call balance_manager::id(&BalanceManager): ID
553 13: Eq
554 14: BrFalse(16)
555B1:
556 15: Branch(28)
557B2:
558 16: MoveLoc[2](Arg2: &TradeProof)
559 17: Pop
560 18: MoveLoc[8](loc2: &mut PoolInner<Ty0, Ty1>)
561 19: Pop
562 20: MoveLoc[5](Arg5: &TxContext)
563 21: Pop
564 22: MoveLoc[4](Arg4: &Clock)
565 23: Pop
566 24: MoveLoc[1](Arg1: &mut BalanceManager)
567 25: Pop
568 26: LdConst[7](u64: 9)
569 27: Abort
570B3:
571 28: CopyLoc[8](loc2: &mut PoolInner<Ty0, Ty1>)
572 29: MutBorrowFieldGeneric[0](PoolInner.state: State)
573 30: MutBorrowLoc[6](loc0: Order)
574 31: CopyLoc[1](Arg1: &mut BalanceManager)
575 32: FreezeRef
576 33: Call balance_manager::id(&BalanceManager): ID
577 34: CopyLoc[8](loc2: &mut PoolInner<Ty0, Ty1>)
578 35: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
579 36: ReadRef
580 37: CopyLoc[5](Arg5: &TxContext)
581 38: Call state::process_cancel(&mut State, &mut Order, ID, ID, &TxContext): Balances * Balances
582 39: StLoc[7](loc1: Balances)
583 40: StLoc[9](loc3: Balances)
584 41: CopyLoc[8](loc2: &mut PoolInner<Ty0, Ty1>)
585 42: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
586 43: MoveLoc[9](loc3: Balances)
587 44: MoveLoc[7](loc1: Balances)
588 45: MoveLoc[1](Arg1: &mut BalanceManager)
589 46: MoveLoc[2](Arg2: &TradeProof)
590 47: Call vault::settle_balance_manager<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, Balances, Balances, &mut BalanceManager, &TradeProof)
591 48: ImmBorrowLoc[6](loc0: Order)
592 49: MoveLoc[8](loc2: &mut PoolInner<Ty0, Ty1>)
593 50: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
594 51: ReadRef
595 52: MoveLoc[5](Arg5: &TxContext)
596 53: Call tx_context::sender(&TxContext): address
597 54: MoveLoc[4](Arg4: &Clock)
598 55: Call clock::timestamp_ms(&Clock): u64
599 56: Call order::emit_order_canceled(&Order, ID, address, u64)
600 57: Ret
601}
602
603public cancel_orders<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: vector<u128>, Arg4: &Clock, Arg5: &TxContext) {
604L6: loc0: u64
605L7: loc1: u64
606L8: loc2: u128
607B0:
608 0: LdU64(0)
609 1: StLoc[6](loc0: u64)
610 2: ImmBorrowLoc[3](Arg3: vector<u128>)
611 3: VecLen(100)
612 4: StLoc[7](loc1: u64)
613B1:
614 5: CopyLoc[6](loc0: u64)
615 6: CopyLoc[7](loc1: u64)
616 7: Lt
617 8: BrFalse(27)
618B2:
619 9: Branch(10)
620B3:
621 10: ImmBorrowLoc[3](Arg3: vector<u128>)
622 11: CopyLoc[6](loc0: u64)
623 12: VecImmBorrow(100)
624 13: ReadRef
625 14: StLoc[8](loc2: u128)
626 15: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
627 16: CopyLoc[1](Arg1: &mut BalanceManager)
628 17: CopyLoc[2](Arg2: &TradeProof)
629 18: MoveLoc[8](loc2: u128)
630 19: CopyLoc[4](Arg4: &Clock)
631 20: CopyLoc[5](Arg5: &TxContext)
632 21: Call cancel_order<Ty0, Ty1>(&mut Pool<Ty0, Ty1>, &mut BalanceManager, &TradeProof, u128, &Clock, &TxContext)
633 22: MoveLoc[6](loc0: u64)
634 23: LdU64(1)
635 24: Add
636 25: StLoc[6](loc0: u64)
637 26: Branch(5)
638B4:
639 27: MoveLoc[2](Arg2: &TradeProof)
640 28: Pop
641 29: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
642 30: Pop
643 31: MoveLoc[5](Arg5: &TxContext)
644 32: Pop
645 33: MoveLoc[4](Arg4: &Clock)
646 34: Pop
647 35: MoveLoc[1](Arg1: &mut BalanceManager)
648 36: Pop
649 37: Ret
650}
651
652public cancel_all_orders<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: &Clock, Arg4: &TxContext) {
653L5: loc0: u64
654L6: loc1: &mut PoolInner<Ty0, Ty1>
655L7: loc2: u64
656L8: loc3: vector<u128>
657L9: loc4: u128
658B0:
659 0: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
660 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
661 2: StLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
662 3: LdConst[14](vector<u128>: 00)
663 4: StLoc[8](loc3: vector<u128>)
664 5: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
665 6: ImmBorrowFieldGeneric[0](PoolInner.state: State)
666 7: CopyLoc[1](Arg1: &mut BalanceManager)
667 8: FreezeRef
668 9: Call balance_manager::id(&BalanceManager): ID
669 10: Call state::account_exists(&State, ID): bool
670 11: BrFalse(22)
671B1:
672 12: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
673 13: ImmBorrowFieldGeneric[0](PoolInner.state: State)
674 14: CopyLoc[1](Arg1: &mut BalanceManager)
675 15: FreezeRef
676 16: Call balance_manager::id(&BalanceManager): ID
677 17: Call state::account(&State, ID): &Account
678 18: Call account::open_orders(&Account): VecSet<u128>
679 19: Call vec_set::into_keys<u128>(VecSet<u128>): vector<u128>
680 20: StLoc[8](loc3: vector<u128>)
681 21: Branch(24)
682B2:
683 22: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
684 23: Pop
685B3:
686 24: LdU64(0)
687 25: StLoc[5](loc0: u64)
688 26: ImmBorrowLoc[8](loc3: vector<u128>)
689 27: VecLen(100)
690 28: StLoc[7](loc2: u64)
691B4:
692 29: CopyLoc[5](loc0: u64)
693 30: CopyLoc[7](loc2: u64)
694 31: Lt
695 32: BrFalse(51)
696B5:
697 33: Branch(34)
698B6:
699 34: ImmBorrowLoc[8](loc3: vector<u128>)
700 35: CopyLoc[5](loc0: u64)
701 36: VecImmBorrow(100)
702 37: ReadRef
703 38: StLoc[9](loc4: u128)
704 39: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
705 40: CopyLoc[1](Arg1: &mut BalanceManager)
706 41: CopyLoc[2](Arg2: &TradeProof)
707 42: MoveLoc[9](loc4: u128)
708 43: CopyLoc[3](Arg3: &Clock)
709 44: CopyLoc[4](Arg4: &TxContext)
710 45: Call cancel_order<Ty0, Ty1>(&mut Pool<Ty0, Ty1>, &mut BalanceManager, &TradeProof, u128, &Clock, &TxContext)
711 46: MoveLoc[5](loc0: u64)
712 47: LdU64(1)
713 48: Add
714 49: StLoc[5](loc0: u64)
715 50: Branch(29)
716B7:
717 51: MoveLoc[2](Arg2: &TradeProof)
718 52: Pop
719 53: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
720 54: Pop
721 55: MoveLoc[4](Arg4: &TxContext)
722 56: Pop
723 57: MoveLoc[3](Arg3: &Clock)
724 58: Pop
725 59: MoveLoc[1](Arg1: &mut BalanceManager)
726 60: Pop
727 61: Ret
728}
729
730public withdraw_settled_amounts<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof) {
731L3: loc0: Balances
732L4: loc1: &mut PoolInner<Ty0, Ty1>
733L5: loc2: Balances
734B0:
735 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
736 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
737 2: StLoc[4](loc1: &mut PoolInner<Ty0, Ty1>)
738 3: CopyLoc[4](loc1: &mut PoolInner<Ty0, Ty1>)
739 4: MutBorrowFieldGeneric[0](PoolInner.state: State)
740 5: CopyLoc[1](Arg1: &mut BalanceManager)
741 6: FreezeRef
742 7: Call balance_manager::id(&BalanceManager): ID
743 8: Call state::withdraw_settled_amounts(&mut State, ID): Balances * Balances
744 9: StLoc[3](loc0: Balances)
745 10: StLoc[5](loc2: Balances)
746 11: MoveLoc[4](loc1: &mut PoolInner<Ty0, Ty1>)
747 12: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
748 13: MoveLoc[5](loc2: Balances)
749 14: MoveLoc[3](loc0: Balances)
750 15: MoveLoc[1](Arg1: &mut BalanceManager)
751 16: MoveLoc[2](Arg2: &TradeProof)
752 17: Call vault::settle_balance_manager<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, Balances, Balances, &mut BalanceManager, &TradeProof)
753 18: Ret
754}
755
756public stake<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: u64, Arg4: &TxContext) {
757L5: loc0: Balances
758L6: loc1: &mut PoolInner<Ty0, Ty1>
759L7: loc2: Balances
760B0:
761 0: CopyLoc[3](Arg3: u64)
762 1: LdU64(0)
763 2: Gt
764 3: BrFalse(5)
765B1:
766 4: Branch(15)
767B2:
768 5: MoveLoc[2](Arg2: &TradeProof)
769 6: Pop
770 7: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
771 8: Pop
772 9: MoveLoc[4](Arg4: &TxContext)
773 10: Pop
774 11: MoveLoc[1](Arg1: &mut BalanceManager)
775 12: Pop
776 13: LdConst[11](u64: 13)
777 14: Abort
778B3:
779 15: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
780 16: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
781 17: StLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
782 18: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
783 19: MutBorrowFieldGeneric[0](PoolInner.state: State)
784 20: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
785 21: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
786 22: ReadRef
787 23: CopyLoc[1](Arg1: &mut BalanceManager)
788 24: FreezeRef
789 25: Call balance_manager::id(&BalanceManager): ID
790 26: MoveLoc[3](Arg3: u64)
791 27: MoveLoc[4](Arg4: &TxContext)
792 28: Call state::process_stake(&mut State, ID, ID, u64, &TxContext): Balances * Balances
793 29: StLoc[5](loc0: Balances)
794 30: StLoc[7](loc2: Balances)
795 31: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
796 32: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
797 33: MoveLoc[7](loc2: Balances)
798 34: MoveLoc[5](loc0: Balances)
799 35: MoveLoc[1](Arg1: &mut BalanceManager)
800 36: MoveLoc[2](Arg2: &TradeProof)
801 37: Call vault::settle_balance_manager<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, Balances, Balances, &mut BalanceManager, &TradeProof)
802 38: Ret
803}
804
805public unstake<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: &TxContext) {
806L4: loc0: Balances
807L5: loc1: &mut PoolInner<Ty0, Ty1>
808L6: loc2: Balances
809B0:
810 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
811 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
812 2: StLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
813 3: CopyLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
814 4: MutBorrowFieldGeneric[0](PoolInner.state: State)
815 5: CopyLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
816 6: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
817 7: ReadRef
818 8: CopyLoc[1](Arg1: &mut BalanceManager)
819 9: FreezeRef
820 10: Call balance_manager::id(&BalanceManager): ID
821 11: MoveLoc[3](Arg3: &TxContext)
822 12: Call state::process_unstake(&mut State, ID, ID, &TxContext): Balances * Balances
823 13: StLoc[4](loc0: Balances)
824 14: StLoc[6](loc2: Balances)
825 15: MoveLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
826 16: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
827 17: MoveLoc[6](loc2: Balances)
828 18: MoveLoc[4](loc0: Balances)
829 19: MoveLoc[1](Arg1: &mut BalanceManager)
830 20: MoveLoc[2](Arg2: &TradeProof)
831 21: Call vault::settle_balance_manager<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, Balances, Balances, &mut BalanceManager, &TradeProof)
832 22: Ret
833}
834
835public submit_proposal<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: &TxContext) {
836L7: loc0: &mut PoolInner<Ty0, Ty1>
837B0:
838 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
839 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
840 2: StLoc[7](loc0: &mut PoolInner<Ty0, Ty1>)
841 3: CopyLoc[1](Arg1: &mut BalanceManager)
842 4: FreezeRef
843 5: MoveLoc[2](Arg2: &TradeProof)
844 6: Call balance_manager::validate_proof(&BalanceManager, &TradeProof)
845 7: CopyLoc[7](loc0: &mut PoolInner<Ty0, Ty1>)
846 8: MutBorrowFieldGeneric[0](PoolInner.state: State)
847 9: MoveLoc[7](loc0: &mut PoolInner<Ty0, Ty1>)
848 10: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
849 11: ReadRef
850 12: MoveLoc[1](Arg1: &mut BalanceManager)
851 13: FreezeRef
852 14: Call balance_manager::id(&BalanceManager): ID
853 15: MoveLoc[3](Arg3: u64)
854 16: MoveLoc[4](Arg4: u64)
855 17: MoveLoc[5](Arg5: u64)
856 18: MoveLoc[6](Arg6: &TxContext)
857 19: Call state::process_proposal(&mut State, ID, ID, u64, u64, u64, &TxContext)
858 20: Ret
859}
860
861public vote<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: ID, Arg4: &TxContext) {
862L5: loc0: &mut PoolInner<Ty0, Ty1>
863B0:
864 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
865 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
866 2: StLoc[5](loc0: &mut PoolInner<Ty0, Ty1>)
867 3: CopyLoc[1](Arg1: &mut BalanceManager)
868 4: FreezeRef
869 5: MoveLoc[2](Arg2: &TradeProof)
870 6: Call balance_manager::validate_proof(&BalanceManager, &TradeProof)
871 7: CopyLoc[5](loc0: &mut PoolInner<Ty0, Ty1>)
872 8: MutBorrowFieldGeneric[0](PoolInner.state: State)
873 9: MoveLoc[5](loc0: &mut PoolInner<Ty0, Ty1>)
874 10: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
875 11: ReadRef
876 12: MoveLoc[1](Arg1: &mut BalanceManager)
877 13: FreezeRef
878 14: Call balance_manager::id(&BalanceManager): ID
879 15: MoveLoc[3](Arg3: ID)
880 16: MoveLoc[4](Arg4: &TxContext)
881 17: Call state::process_vote(&mut State, ID, ID, ID, &TxContext)
882 18: Ret
883}
884
885public claim_rebates<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: &TxContext) {
886L4: loc0: Balances
887L5: loc1: &mut PoolInner<Ty0, Ty1>
888L6: loc2: Balances
889B0:
890 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
891 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
892 2: StLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
893 3: CopyLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
894 4: MutBorrowFieldGeneric[0](PoolInner.state: State)
895 5: CopyLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
896 6: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
897 7: ReadRef
898 8: CopyLoc[1](Arg1: &mut BalanceManager)
899 9: FreezeRef
900 10: MoveLoc[3](Arg3: &TxContext)
901 11: Call state::process_claim_rebates<Ty0, Ty1>(&mut State, ID, &BalanceManager, &TxContext): Balances * Balances
902 12: StLoc[4](loc0: Balances)
903 13: StLoc[6](loc2: Balances)
904 14: MoveLoc[5](loc1: &mut PoolInner<Ty0, Ty1>)
905 15: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
906 16: MoveLoc[6](loc2: Balances)
907 17: MoveLoc[4](loc0: Balances)
908 18: MoveLoc[1](Arg1: &mut BalanceManager)
909 19: MoveLoc[2](Arg2: &TradeProof)
910 20: Call vault::settle_balance_manager<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, Balances, Balances, &mut BalanceManager, &TradeProof)
911 21: Ret
912}
913
914public borrow_flashloan_base<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: &mut TxContext): Coin<Ty0> * FlashLoan {
915L3: loc0: &mut PoolInner<Ty0, Ty1>
916B0:
917 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
918 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
919 2: StLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
920 3: CopyLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
921 4: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
922 5: MoveLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
923 6: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
924 7: ReadRef
925 8: MoveLoc[1](Arg1: u64)
926 9: MoveLoc[2](Arg2: &mut TxContext)
927 10: Call vault::borrow_flashloan_base<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, ID, u64, &mut TxContext): Coin<Ty0> * FlashLoan
928 11: Ret
929}
930
931public borrow_flashloan_quote<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: &mut TxContext): Coin<Ty1> * FlashLoan {
932L3: loc0: &mut PoolInner<Ty0, Ty1>
933B0:
934 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
935 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
936 2: StLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
937 3: CopyLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
938 4: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
939 5: MoveLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
940 6: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
941 7: ReadRef
942 8: MoveLoc[1](Arg1: u64)
943 9: MoveLoc[2](Arg2: &mut TxContext)
944 10: Call vault::borrow_flashloan_quote<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, ID, u64, &mut TxContext): Coin<Ty1> * FlashLoan
945 11: Ret
946}
947
948public return_flashloan_base<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: Coin<Ty0>, Arg2: FlashLoan) {
949L3: loc0: &mut PoolInner<Ty0, Ty1>
950B0:
951 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
952 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
953 2: StLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
954 3: CopyLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
955 4: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
956 5: MoveLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
957 6: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
958 7: ReadRef
959 8: MoveLoc[1](Arg1: Coin<Ty0>)
960 9: MoveLoc[2](Arg2: FlashLoan)
961 10: Call vault::return_flashloan_base<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, ID, Coin<Ty0>, FlashLoan)
962 11: Ret
963}
964
965public return_flashloan_quote<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: Coin<Ty1>, Arg2: FlashLoan) {
966L3: loc0: &mut PoolInner<Ty0, Ty1>
967B0:
968 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
969 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
970 2: StLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
971 3: CopyLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
972 4: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
973 5: MoveLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
974 6: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
975 7: ReadRef
976 8: MoveLoc[1](Arg1: Coin<Ty1>)
977 9: MoveLoc[2](Arg2: FlashLoan)
978 10: Call vault::return_flashloan_quote<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, ID, Coin<Ty1>, FlashLoan)
979 11: Ret
980}
981
982public add_deep_price_point<Ty0, Ty1, Ty2, Ty3>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &Pool<Ty2, Ty3>, Arg2: &Clock) {
983L3: loc0: bool
984L4: loc1: bool
985L5: loc2: TypeName
986L6: loc3: bool
987L7: loc4: u64
988L8: loc5: u64
989L9: loc6: TypeName
990L10: loc7: TypeName
991L11: loc8: bool
992L12: loc9: bool
993L13: loc10: bool
994L14: loc11: TypeName
995L15: loc12: u64
996L16: loc13: TypeName
997L17: loc14: TypeName
998L18: loc15: &mut PoolInner<Ty0, Ty1>
999L19: loc16: TypeName
1000L20: loc17: u64
1001B0:
1002 0: CopyLoc[1](Arg1: &Pool<Ty2, Ty3>)
1003 1: Call whitelisted<Ty2, Ty3>(&Pool<Ty2, Ty3>): bool
1004 2: BrFalse(7)
1005B1:
1006 3: CopyLoc[1](Arg1: &Pool<Ty2, Ty3>)
1007 4: Call registered_pool<Ty2, Ty3>(&Pool<Ty2, Ty3>): bool
1008 5: StLoc[3](loc0: bool)
1009 6: Branch(9)
1010B2:
1011 7: LdFalse
1012 8: StLoc[3](loc0: bool)
1013B3:
1014 9: MoveLoc[3](loc0: bool)
1015 10: BrFalse(12)
1016B4:
1017 11: Branch(20)
1018B5:
1019 12: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1020 13: Pop
1021 14: MoveLoc[1](Arg1: &Pool<Ty2, Ty3>)
1022 15: Pop
1023 16: MoveLoc[2](Arg2: &Clock)
1024 17: Pop
1025 18: LdConst[6](u64: 7)
1026 19: Abort
1027B6:
1028 20: CopyLoc[1](Arg1: &Pool<Ty2, Ty3>)
1029 21: CopyLoc[2](Arg2: &Clock)
1030 22: Call mid_price<Ty2, Ty3>(&Pool<Ty2, Ty3>, &Clock): u64
1031 23: StLoc[15](loc12: u64)
1032 24: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1033 25: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
1034 26: StLoc[18](loc15: &mut PoolInner<Ty0, Ty1>)
1035 27: Call type_name::get<Ty2>(): TypeName
1036 28: StLoc[10](loc7: TypeName)
1037 29: Call type_name::get<Ty3>(): TypeName
1038 30: StLoc[16](loc13: TypeName)
1039 31: Call type_name::get<Ty0>(): TypeName
1040 32: StLoc[17](loc14: TypeName)
1041 33: Call type_name::get<Ty1>(): TypeName
1042 34: StLoc[19](loc16: TypeName)
1043 35: Call type_name::get<DEEP>(): TypeName
1044 36: StLoc[9](loc6: TypeName)
1045 37: MoveLoc[2](Arg2: &Clock)
1046 38: Call clock::timestamp_ms(&Clock): u64
1047 39: StLoc[20](loc17: u64)
1048 40: CopyLoc[10](loc7: TypeName)
1049 41: CopyLoc[9](loc6: TypeName)
1050 42: Eq
1051 43: BrFalse(47)
1052B7:
1053 44: LdTrue
1054 45: StLoc[4](loc1: bool)
1055 46: Branch(51)
1056B8:
1057 47: CopyLoc[16](loc13: TypeName)
1058 48: CopyLoc[9](loc6: TypeName)
1059 49: Eq
1060 50: StLoc[4](loc1: bool)
1061B9:
1062 51: MoveLoc[4](loc1: bool)
1063 52: BrFalse(54)
1064B10:
1065 53: Branch(60)
1066B11:
1067 54: MoveLoc[18](loc15: &mut PoolInner<Ty0, Ty1>)
1068 55: Pop
1069 56: MoveLoc[1](Arg1: &Pool<Ty2, Ty3>)
1070 57: Pop
1071 58: LdConst[8](u64: 10)
1072 59: Abort
1073B12:
1074 60: CopyLoc[10](loc7: TypeName)
1075 61: MoveLoc[9](loc6: TypeName)
1076 62: Eq
1077 63: StLoc[11](loc8: bool)
1078 64: CopyLoc[11](loc8: bool)
1079 65: BrFalse(69)
1080B13:
1081 66: MoveLoc[16](loc13: TypeName)
1082 67: StLoc[5](loc2: TypeName)
1083 68: Branch(71)
1084B14:
1085 69: MoveLoc[10](loc7: TypeName)
1086 70: StLoc[5](loc2: TypeName)
1087B15:
1088 71: MoveLoc[5](loc2: TypeName)
1089 72: StLoc[14](loc11: TypeName)
1090 73: CopyLoc[14](loc11: TypeName)
1091 74: MoveLoc[17](loc14: TypeName)
1092 75: Eq
1093 76: StLoc[12](loc9: bool)
1094 77: MoveLoc[14](loc11: TypeName)
1095 78: MoveLoc[19](loc16: TypeName)
1096 79: Eq
1097 80: StLoc[13](loc10: bool)
1098 81: CopyLoc[12](loc9: bool)
1099 82: BrFalse(86)
1100B16:
1101 83: LdTrue
1102 84: StLoc[6](loc3: bool)
1103 85: Branch(88)
1104B17:
1105 86: MoveLoc[13](loc10: bool)
1106 87: StLoc[6](loc3: bool)
1107B18:
1108 88: MoveLoc[6](loc3: bool)
1109 89: BrFalse(91)
1110B19:
1111 90: Branch(97)
1112B20:
1113 91: MoveLoc[18](loc15: &mut PoolInner<Ty0, Ty1>)
1114 92: Pop
1115 93: MoveLoc[1](Arg1: &Pool<Ty2, Ty3>)
1116 94: Pop
1117 95: LdConst[8](u64: 10)
1118 96: Abort
1119B21:
1120 97: MoveLoc[11](loc8: bool)
1121 98: BrFalse(104)
1122B22:
1123 99: LdU64(1000000000)
1124 100: MoveLoc[15](loc12: u64)
1125 101: Call math::div(u64, u64): u64
1126 102: StLoc[7](loc4: u64)
1127 103: Branch(106)
1128B23:
1129 104: MoveLoc[15](loc12: u64)
1130 105: StLoc[7](loc4: u64)
1131B24:
1132 106: MoveLoc[7](loc4: u64)
1133 107: StLoc[8](loc5: u64)
1134 108: CopyLoc[18](loc15: &mut PoolInner<Ty0, Ty1>)
1135 109: MutBorrowFieldGeneric[4](PoolInner.deep_price: DeepPrice)
1136 110: CopyLoc[8](loc5: u64)
1137 111: CopyLoc[20](loc17: u64)
1138 112: CopyLoc[12](loc9: bool)
1139 113: Call deep_price::add_price_point(&mut DeepPrice, u64, u64, bool)
1140 114: MoveLoc[8](loc5: u64)
1141 115: MoveLoc[20](loc17: u64)
1142 116: MoveLoc[12](loc9: bool)
1143 117: MoveLoc[1](Arg1: &Pool<Ty2, Ty3>)
1144 118: Call load_inner<Ty2, Ty3>(&Pool<Ty2, Ty3>): &PoolInner<Ty2, Ty3>
1145 119: ImmBorrowFieldGeneric[5](PoolInner.pool_id: ID)
1146 120: ReadRef
1147 121: MoveLoc[18](loc15: &mut PoolInner<Ty0, Ty1>)
1148 122: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
1149 123: ReadRef
1150 124: Call deep_price::emit_deep_price_added(u64, u64, bool, ID, ID)
1151 125: Ret
1152}
1153
1154public burn_deep<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut ProtectedTreasury, Arg2: &mut TxContext): u64 {
1155L3: loc0: u64
1156L4: loc1: u64
1157L5: loc2: Coin<DEEP>
1158L6: loc3: &mut PoolInner<Ty0, Ty1>
1159B0:
1160 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1161 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
1162 2: StLoc[6](loc3: &mut PoolInner<Ty0, Ty1>)
1163 3: CopyLoc[6](loc3: &mut PoolInner<Ty0, Ty1>)
1164 4: MutBorrowFieldGeneric[0](PoolInner.state: State)
1165 5: Call state::history_mut(&mut State): &mut History
1166 6: Call history::reset_balance_to_burn(&mut History): u64
1167 7: StLoc[4](loc1: u64)
1168 8: CopyLoc[6](loc3: &mut PoolInner<Ty0, Ty1>)
1169 9: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
1170 10: MoveLoc[4](loc1: u64)
1171 11: Call vault::withdraw_deep_to_burn<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, u64): Balance<DEEP>
1172 12: MoveLoc[2](Arg2: &mut TxContext)
1173 13: Call coin::from_balance<DEEP>(Balance<DEEP>, &mut TxContext): Coin<DEEP>
1174 14: StLoc[5](loc2: Coin<DEEP>)
1175 15: ImmBorrowLoc[5](loc2: Coin<DEEP>)
1176 16: Call coin::value<DEEP>(&Coin<DEEP>): u64
1177 17: StLoc[3](loc0: u64)
1178 18: MoveLoc[1](Arg1: &mut ProtectedTreasury)
1179 19: MoveLoc[5](loc2: Coin<DEEP>)
1180 20: Call deep::burn(&mut ProtectedTreasury, Coin<DEEP>)
1181 21: MoveLoc[6](loc3: &mut PoolInner<Ty0, Ty1>)
1182 22: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
1183 23: ReadRef
1184 24: CopyLoc[3](loc0: u64)
1185 25: PackGeneric[0](DeepBurned<Ty0, Ty1>)
1186 26: Call event::emit<DeepBurned<Ty0, Ty1>>(DeepBurned<Ty0, Ty1>)
1187 27: MoveLoc[3](loc0: u64)
1188 28: Ret
1189}
1190
1191public create_pool_admin<Ty0, Ty1>(Arg0: &mut Registry, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: bool, Arg5: bool, Arg6: &DeepbookAdminCap, Arg7: &mut TxContext): ID {
1192L8: loc0: Coin<DEEP>
1193B0:
1194 0: CopyLoc[7](Arg7: &mut TxContext)
1195 1: Call coin::zero<DEEP>(&mut TxContext): Coin<DEEP>
1196 2: StLoc[8](loc0: Coin<DEEP>)
1197 3: MoveLoc[0](Arg0: &mut Registry)
1198 4: MoveLoc[1](Arg1: u64)
1199 5: MoveLoc[2](Arg2: u64)
1200 6: MoveLoc[3](Arg3: u64)
1201 7: MoveLoc[8](loc0: Coin<DEEP>)
1202 8: MoveLoc[4](Arg4: bool)
1203 9: MoveLoc[5](Arg5: bool)
1204 10: MoveLoc[7](Arg7: &mut TxContext)
1205 11: Call create_pool<Ty0, Ty1>(&mut Registry, u64, u64, u64, Coin<DEEP>, bool, bool, &mut TxContext): ID
1206 12: Ret
1207}
1208
1209public unregister_pool_admin<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut Registry, Arg2: &DeepbookAdminCap) {
1210L3: loc0: &mut PoolInner<Ty0, Ty1>
1211B0:
1212 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1213 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
1214 2: StLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
1215 3: CopyLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
1216 4: ImmBorrowFieldGeneric[6](PoolInner.registered_pool: bool)
1217 5: ReadRef
1218 6: BrFalse(8)
1219B1:
1220 7: Branch(14)
1221B2:
1222 8: MoveLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
1223 9: Pop
1224 10: MoveLoc[1](Arg1: &mut Registry)
1225 11: Pop
1226 12: LdConst[12](u64: 14)
1227 13: Abort
1228B3:
1229 14: LdFalse
1230 15: MoveLoc[3](loc0: &mut PoolInner<Ty0, Ty1>)
1231 16: MutBorrowFieldGeneric[6](PoolInner.registered_pool: bool)
1232 17: WriteRef
1233 18: MoveLoc[1](Arg1: &mut Registry)
1234 19: Call registry::unregister_pool<Ty0, Ty1>(&mut Registry)
1235 20: Ret
1236}
1237
1238public update_allowed_versions<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &Registry, Arg2: &DeepbookAdminCap) {
1239L3: loc0: VecSet<u64>
1240L4: loc1: &mut PoolInner<Ty0, Ty1>
1241B0:
1242 0: MoveLoc[1](Arg1: &Registry)
1243 1: Call registry::allowed_versions(&Registry): VecSet<u64>
1244 2: StLoc[3](loc0: VecSet<u64>)
1245 3: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1246 4: MutBorrowFieldGeneric[7](Pool.inner: Versioned)
1247 5: Call versioned::load_value_mut<PoolInner<Ty0, Ty1>>(&mut Versioned): &mut PoolInner<Ty0, Ty1>
1248 6: StLoc[4](loc1: &mut PoolInner<Ty0, Ty1>)
1249 7: MoveLoc[3](loc0: VecSet<u64>)
1250 8: MoveLoc[4](loc1: &mut PoolInner<Ty0, Ty1>)
1251 9: MutBorrowFieldGeneric[8](PoolInner.allowed_versions: VecSet<u64>)
1252 10: WriteRef
1253 11: Ret
1254}
1255
1256public adjust_tick_size_admin<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: &DeepbookAdminCap, Arg3: &Clock) {
1257L4: loc0: &mut PoolInner<Ty0, Ty1>
1258B0:
1259 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1260 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
1261 2: StLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1262 3: CopyLoc[1](Arg1: u64)
1263 4: LdU64(0)
1264 5: Gt
1265 6: BrFalse(8)
1266B1:
1267 7: Branch(14)
1268B2:
1269 8: MoveLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1270 9: Pop
1271 10: MoveLoc[3](Arg3: &Clock)
1272 11: Pop
1273 12: LdConst[2](u64: 3)
1274 13: Abort
1275B3:
1276 14: CopyLoc[1](Arg1: u64)
1277 15: Call math::is_power_of_ten(u64): bool
1278 16: BrFalse(18)
1279B4:
1280 17: Branch(24)
1281B5:
1282 18: MoveLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1283 19: Pop
1284 20: MoveLoc[3](Arg3: &Clock)
1285 21: Pop
1286 22: LdConst[2](u64: 3)
1287 23: Abort
1288B6:
1289 24: CopyLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1290 25: MutBorrowFieldGeneric[1](PoolInner.book: Book)
1291 26: MoveLoc[1](Arg1: u64)
1292 27: Call book::set_tick_size(&mut Book, u64)
1293 28: CopyLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1294 29: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
1295 30: ReadRef
1296 31: CopyLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1297 32: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1298 33: Call book::tick_size(&Book): u64
1299 34: CopyLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1300 35: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1301 36: Call book::lot_size(&Book): u64
1302 37: MoveLoc[4](loc0: &mut PoolInner<Ty0, Ty1>)
1303 38: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1304 39: Call book::min_size(&Book): u64
1305 40: MoveLoc[3](Arg3: &Clock)
1306 41: Call clock::timestamp_ms(&Clock): u64
1307 42: PackGeneric[1](BookParamsUpdated<Ty0, Ty1>)
1308 43: Call event::emit<BookParamsUpdated<Ty0, Ty1>>(BookParamsUpdated<Ty0, Ty1>)
1309 44: Ret
1310}
1311
1312public adjust_min_lot_size_admin<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64, Arg3: &DeepbookAdminCap, Arg4: &Clock) {
1313L5: loc0: u64
1314L6: loc1: &mut PoolInner<Ty0, Ty1>
1315B0:
1316 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
1317 1: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
1318 2: StLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1319 3: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1320 4: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1321 5: Call book::lot_size(&Book): u64
1322 6: StLoc[5](loc0: u64)
1323 7: CopyLoc[1](Arg1: u64)
1324 8: LdU64(0)
1325 9: Gt
1326 10: BrFalse(12)
1327B1:
1328 11: Branch(18)
1329B2:
1330 12: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1331 13: Pop
1332 14: MoveLoc[4](Arg4: &Clock)
1333 15: Pop
1334 16: LdConst[3](u64: 4)
1335 17: Abort
1336B3:
1337 18: MoveLoc[5](loc0: u64)
1338 19: CopyLoc[1](Arg1: u64)
1339 20: Mod
1340 21: LdU64(0)
1341 22: Eq
1342 23: BrFalse(25)
1343B4:
1344 24: Branch(31)
1345B5:
1346 25: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1347 26: Pop
1348 27: MoveLoc[4](Arg4: &Clock)
1349 28: Pop
1350 29: LdConst[3](u64: 4)
1351 30: Abort
1352B6:
1353 31: CopyLoc[1](Arg1: u64)
1354 32: Call math::is_power_of_ten(u64): bool
1355 33: BrFalse(35)
1356B7:
1357 34: Branch(41)
1358B8:
1359 35: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1360 36: Pop
1361 37: MoveLoc[4](Arg4: &Clock)
1362 38: Pop
1363 39: LdConst[3](u64: 4)
1364 40: Abort
1365B9:
1366 41: CopyLoc[2](Arg2: u64)
1367 42: LdU64(0)
1368 43: Gt
1369 44: BrFalse(46)
1370B10:
1371 45: Branch(52)
1372B11:
1373 46: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1374 47: Pop
1375 48: MoveLoc[4](Arg4: &Clock)
1376 49: Pop
1377 50: LdConst[4](u64: 5)
1378 51: Abort
1379B12:
1380 52: CopyLoc[2](Arg2: u64)
1381 53: CopyLoc[1](Arg1: u64)
1382 54: Mod
1383 55: LdU64(0)
1384 56: Eq
1385 57: BrFalse(59)
1386B13:
1387 58: Branch(65)
1388B14:
1389 59: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1390 60: Pop
1391 61: MoveLoc[4](Arg4: &Clock)
1392 62: Pop
1393 63: LdConst[4](u64: 5)
1394 64: Abort
1395B15:
1396 65: CopyLoc[2](Arg2: u64)
1397 66: Call math::is_power_of_ten(u64): bool
1398 67: BrFalse(69)
1399B16:
1400 68: Branch(75)
1401B17:
1402 69: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1403 70: Pop
1404 71: MoveLoc[4](Arg4: &Clock)
1405 72: Pop
1406 73: LdConst[4](u64: 5)
1407 74: Abort
1408B18:
1409 75: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1410 76: MutBorrowFieldGeneric[1](PoolInner.book: Book)
1411 77: MoveLoc[1](Arg1: u64)
1412 78: Call book::set_lot_size(&mut Book, u64)
1413 79: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1414 80: MutBorrowFieldGeneric[1](PoolInner.book: Book)
1415 81: MoveLoc[2](Arg2: u64)
1416 82: Call book::set_min_size(&mut Book, u64)
1417 83: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1418 84: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
1419 85: ReadRef
1420 86: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1421 87: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1422 88: Call book::tick_size(&Book): u64
1423 89: CopyLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1424 90: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1425 91: Call book::lot_size(&Book): u64
1426 92: MoveLoc[6](loc1: &mut PoolInner<Ty0, Ty1>)
1427 93: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1428 94: Call book::min_size(&Book): u64
1429 95: MoveLoc[4](Arg4: &Clock)
1430 96: Call clock::timestamp_ms(&Clock): u64
1431 97: PackGeneric[1](BookParamsUpdated<Ty0, Ty1>)
1432 98: Call event::emit<BookParamsUpdated<Ty0, Ty1>>(BookParamsUpdated<Ty0, Ty1>)
1433 99: Ret
1434}
1435
1436public whitelisted<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): bool {
1437B0:
1438 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1439 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1440 2: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1441 3: Call state::governance(&State): &Governance
1442 4: Call governance::whitelisted(&Governance): bool
1443 5: Ret
1444}
1445
1446public stable_pool<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): bool {
1447B0:
1448 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1449 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1450 2: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1451 3: Call state::governance(&State): &Governance
1452 4: Call governance::stable(&Governance): bool
1453 5: Ret
1454}
1455
1456public registered_pool<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): bool {
1457B0:
1458 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1459 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1460 2: ImmBorrowFieldGeneric[6](PoolInner.registered_pool: bool)
1461 3: ReadRef
1462 4: Ret
1463}
1464
1465public get_quote_quantity_out<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: &Clock): u64 * u64 * u64 {
1466B0:
1467 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1468 1: MoveLoc[1](Arg1: u64)
1469 2: LdU64(0)
1470 3: MoveLoc[2](Arg2: &Clock)
1471 4: Call get_quantity_out<Ty0, Ty1>(&Pool<Ty0, Ty1>, u64, u64, &Clock): u64 * u64 * u64
1472 5: Ret
1473}
1474
1475public get_base_quantity_out<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: &Clock): u64 * u64 * u64 {
1476B0:
1477 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1478 1: LdU64(0)
1479 2: MoveLoc[1](Arg1: u64)
1480 3: MoveLoc[2](Arg2: &Clock)
1481 4: Call get_quantity_out<Ty0, Ty1>(&Pool<Ty0, Ty1>, u64, u64, &Clock): u64 * u64 * u64
1482 5: Ret
1483}
1484
1485public get_quote_quantity_out_input_fee<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: &Clock): u64 * u64 * u64 {
1486B0:
1487 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1488 1: MoveLoc[1](Arg1: u64)
1489 2: LdU64(0)
1490 3: MoveLoc[2](Arg2: &Clock)
1491 4: Call get_quantity_out_input_fee<Ty0, Ty1>(&Pool<Ty0, Ty1>, u64, u64, &Clock): u64 * u64 * u64
1492 5: Ret
1493}
1494
1495public get_base_quantity_out_input_fee<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: &Clock): u64 * u64 * u64 {
1496B0:
1497 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1498 1: LdU64(0)
1499 2: MoveLoc[1](Arg1: u64)
1500 3: MoveLoc[2](Arg2: &Clock)
1501 4: Call get_quantity_out_input_fee<Ty0, Ty1>(&Pool<Ty0, Ty1>, u64, u64, &Clock): u64 * u64 * u64
1502 5: Ret
1503}
1504
1505public get_quantity_out<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64, Arg3: &Clock): u64 * u64 * u64 {
1506L4: loc0: OrderDeepPrice
1507L5: loc1: TradeParams
1508L6: loc2: &PoolInner<Ty0, Ty1>
1509L7: loc3: u64
1510L8: loc4: bool
1511B0:
1512 0: CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1513 1: Call whitelisted<Ty0, Ty1>(&Pool<Ty0, Ty1>): bool
1514 2: StLoc[8](loc4: bool)
1515 3: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1516 4: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1517 5: StLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1518 6: CopyLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1519 7: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1520 8: Call state::governance(&State): &Governance
1521 9: Call governance::trade_params(&Governance): TradeParams
1522 10: StLoc[5](loc1: TradeParams)
1523 11: ImmBorrowLoc[5](loc1: TradeParams)
1524 12: Call trade_params::taker_fee(&TradeParams): u64
1525 13: ImmBorrowLoc[5](loc1: TradeParams)
1526 14: Call trade_params::maker_fee(&TradeParams): u64
1527 15: Pop
1528 16: StLoc[7](loc3: u64)
1529 17: CopyLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1530 18: ImmBorrowFieldGeneric[4](PoolInner.deep_price: DeepPrice)
1531 19: MoveLoc[8](loc4: bool)
1532 20: Call deep_price::get_order_deep_price(&DeepPrice, bool): OrderDeepPrice
1533 21: StLoc[4](loc0: OrderDeepPrice)
1534 22: CopyLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1535 23: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1536 24: MoveLoc[1](Arg1: u64)
1537 25: MoveLoc[2](Arg2: u64)
1538 26: MoveLoc[7](loc3: u64)
1539 27: MoveLoc[4](loc0: OrderDeepPrice)
1540 28: MoveLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1541 29: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1542 30: Call book::lot_size(&Book): u64
1543 31: LdTrue
1544 32: MoveLoc[3](Arg3: &Clock)
1545 33: Call clock::timestamp_ms(&Clock): u64
1546 34: Call book::get_quantity_out(&Book, u64, u64, u64, OrderDeepPrice, u64, bool, u64): u64 * u64 * u64
1547 35: Ret
1548}
1549
1550public get_quantity_out_input_fee<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64, Arg3: &Clock): u64 * u64 * u64 {
1551L4: loc0: OrderDeepPrice
1552L5: loc1: TradeParams
1553L6: loc2: &PoolInner<Ty0, Ty1>
1554L7: loc3: u64
1555B0:
1556 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1557 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1558 2: StLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1559 3: CopyLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1560 4: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1561 5: Call state::governance(&State): &Governance
1562 6: Call governance::trade_params(&Governance): TradeParams
1563 7: StLoc[5](loc1: TradeParams)
1564 8: ImmBorrowLoc[5](loc1: TradeParams)
1565 9: Call trade_params::taker_fee(&TradeParams): u64
1566 10: ImmBorrowLoc[5](loc1: TradeParams)
1567 11: Call trade_params::maker_fee(&TradeParams): u64
1568 12: Pop
1569 13: StLoc[7](loc3: u64)
1570 14: CopyLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1571 15: ImmBorrowFieldGeneric[4](PoolInner.deep_price: DeepPrice)
1572 16: Call deep_price::empty_deep_price(&DeepPrice): OrderDeepPrice
1573 17: StLoc[4](loc0: OrderDeepPrice)
1574 18: CopyLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1575 19: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1576 20: MoveLoc[1](Arg1: u64)
1577 21: MoveLoc[2](Arg2: u64)
1578 22: MoveLoc[7](loc3: u64)
1579 23: MoveLoc[4](loc0: OrderDeepPrice)
1580 24: MoveLoc[6](loc2: &PoolInner<Ty0, Ty1>)
1581 25: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1582 26: Call book::lot_size(&Book): u64
1583 27: LdFalse
1584 28: MoveLoc[3](Arg3: &Clock)
1585 29: Call clock::timestamp_ms(&Clock): u64
1586 30: Call book::get_quantity_out(&Book, u64, u64, u64, OrderDeepPrice, u64, bool, u64): u64 * u64 * u64
1587 31: Ret
1588}
1589
1590public mid_price<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: &Clock): u64 {
1591B0:
1592 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1593 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1594 2: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1595 3: MoveLoc[1](Arg1: &Clock)
1596 4: Call clock::timestamp_ms(&Clock): u64
1597 5: Call book::mid_price(&Book, u64): u64
1598 6: Ret
1599}
1600
1601public account_open_orders<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: &BalanceManager): VecSet<u128> {
1602L2: loc0: &PoolInner<Ty0, Ty1>
1603B0:
1604 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1605 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1606 2: StLoc[2](loc0: &PoolInner<Ty0, Ty1>)
1607 3: CopyLoc[2](loc0: &PoolInner<Ty0, Ty1>)
1608 4: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1609 5: CopyLoc[1](Arg1: &BalanceManager)
1610 6: Call balance_manager::id(&BalanceManager): ID
1611 7: Call state::account_exists(&State, ID): bool
1612 8: Not
1613 9: BrFalse(16)
1614B1:
1615 10: MoveLoc[2](loc0: &PoolInner<Ty0, Ty1>)
1616 11: Pop
1617 12: MoveLoc[1](Arg1: &BalanceManager)
1618 13: Pop
1619 14: Call vec_set::empty<u128>(): VecSet<u128>
1620 15: Ret
1621B2:
1622 16: MoveLoc[2](loc0: &PoolInner<Ty0, Ty1>)
1623 17: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1624 18: MoveLoc[1](Arg1: &BalanceManager)
1625 19: Call balance_manager::id(&BalanceManager): ID
1626 20: Call state::account(&State, ID): &Account
1627 21: Call account::open_orders(&Account): VecSet<u128>
1628 22: Ret
1629}
1630
1631public get_level2_range<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64, Arg3: bool, Arg4: &Clock): vector<u64> * vector<u64> {
1632B0:
1633 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1634 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1635 2: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1636 3: MoveLoc[1](Arg1: u64)
1637 4: MoveLoc[2](Arg2: u64)
1638 5: Call constants::max_u64(): u64
1639 6: MoveLoc[3](Arg3: bool)
1640 7: MoveLoc[4](Arg4: &Clock)
1641 8: Call clock::timestamp_ms(&Clock): u64
1642 9: Call book::get_level2_range_and_ticks(&Book, u64, u64, u64, bool, u64): vector<u64> * vector<u64>
1643 10: Ret
1644}
1645
1646public get_level2_ticks_from_mid<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: &Clock): vector<u64> * vector<u64> * vector<u64> * vector<u64> {
1647L3: loc0: vector<u64>
1648L4: loc1: vector<u64>
1649L5: loc2: vector<u64>
1650L6: loc3: vector<u64>
1651L7: loc4: &PoolInner<Ty0, Ty1>
1652B0:
1653 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1654 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1655 2: StLoc[7](loc4: &PoolInner<Ty0, Ty1>)
1656 3: CopyLoc[7](loc4: &PoolInner<Ty0, Ty1>)
1657 4: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1658 5: Call constants::min_price(): u64
1659 6: Call constants::max_price(): u64
1660 7: CopyLoc[1](Arg1: u64)
1661 8: LdTrue
1662 9: CopyLoc[2](Arg2: &Clock)
1663 10: Call clock::timestamp_ms(&Clock): u64
1664 11: Call book::get_level2_range_and_ticks(&Book, u64, u64, u64, bool, u64): vector<u64> * vector<u64>
1665 12: StLoc[6](loc3: vector<u64>)
1666 13: StLoc[5](loc2: vector<u64>)
1667 14: MoveLoc[7](loc4: &PoolInner<Ty0, Ty1>)
1668 15: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1669 16: Call constants::min_price(): u64
1670 17: Call constants::max_price(): u64
1671 18: MoveLoc[1](Arg1: u64)
1672 19: LdFalse
1673 20: MoveLoc[2](Arg2: &Clock)
1674 21: Call clock::timestamp_ms(&Clock): u64
1675 22: Call book::get_level2_range_and_ticks(&Book, u64, u64, u64, bool, u64): vector<u64> * vector<u64>
1676 23: StLoc[4](loc1: vector<u64>)
1677 24: StLoc[3](loc0: vector<u64>)
1678 25: MoveLoc[5](loc2: vector<u64>)
1679 26: MoveLoc[6](loc3: vector<u64>)
1680 27: MoveLoc[3](loc0: vector<u64>)
1681 28: MoveLoc[4](loc1: vector<u64>)
1682 29: Ret
1683}
1684
1685public vault_balances<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): u64 * u64 * u64 {
1686B0:
1687 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1688 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1689 2: ImmBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
1690 3: Call vault::balances<Ty0, Ty1>(&Vault<Ty0, Ty1>): u64 * u64 * u64
1691 4: Ret
1692}
1693
1694public get_pool_id_by_asset<Ty0, Ty1>(Arg0: &Registry): ID {
1695B0:
1696 0: MoveLoc[0](Arg0: &Registry)
1697 1: Call registry::get_pool_id<Ty0, Ty1>(&Registry): ID
1698 2: Ret
1699}
1700
1701public get_order<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u128): Order {
1702B0:
1703 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1704 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1705 2: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
1706 3: MoveLoc[1](Arg1: u128)
1707 4: Call book::get_order(&Book, u128): Order
1708 5: Ret
1709}
1710
1711public get_orders<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: vector<u128>): vector<Order> {
1712L2: loc0: u64
1713L3: loc1: u64
1714L4: loc2: u128
1715L5: loc3: vector<Order>
1716B0:
1717 0: VecPack(45, 0)
1718 1: StLoc[5](loc3: vector<Order>)
1719 2: LdU64(0)
1720 3: StLoc[2](loc0: u64)
1721 4: ImmBorrowLoc[1](Arg1: vector<u128>)
1722 5: VecLen(100)
1723 6: StLoc[3](loc1: u64)
1724B1:
1725 7: CopyLoc[2](loc0: u64)
1726 8: CopyLoc[3](loc1: u64)
1727 9: Lt
1728 10: BrFalse(27)
1729B2:
1730 11: Branch(12)
1731B3:
1732 12: ImmBorrowLoc[1](Arg1: vector<u128>)
1733 13: CopyLoc[2](loc0: u64)
1734 14: VecImmBorrow(100)
1735 15: ReadRef
1736 16: StLoc[4](loc2: u128)
1737 17: MutBorrowLoc[5](loc3: vector<Order>)
1738 18: CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1739 19: MoveLoc[4](loc2: u128)
1740 20: Call get_order<Ty0, Ty1>(&Pool<Ty0, Ty1>, u128): Order
1741 21: VecPushBack(45)
1742 22: MoveLoc[2](loc0: u64)
1743 23: LdU64(1)
1744 24: Add
1745 25: StLoc[2](loc0: u64)
1746 26: Branch(7)
1747B4:
1748 27: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1749 28: Pop
1750 29: MoveLoc[5](loc3: vector<Order>)
1751 30: Ret
1752}
1753
1754public get_account_order_details<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: &BalanceManager): vector<Order> {
1755L2: loc0: vector<u128>
1756B0:
1757 0: CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1758 1: MoveLoc[1](Arg1: &BalanceManager)
1759 2: Call account_open_orders<Ty0, Ty1>(&Pool<Ty0, Ty1>, &BalanceManager): VecSet<u128>
1760 3: Call vec_set::into_keys<u128>(VecSet<u128>): vector<u128>
1761 4: StLoc[2](loc0: vector<u128>)
1762 5: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1763 6: MoveLoc[2](loc0: vector<u128>)
1764 7: Call get_orders<Ty0, Ty1>(&Pool<Ty0, Ty1>, vector<u128>): vector<Order>
1765 8: Ret
1766}
1767
1768public get_order_deep_price<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): OrderDeepPrice {
1769L1: loc0: bool
1770B0:
1771 0: CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1772 1: Call whitelisted<Ty0, Ty1>(&Pool<Ty0, Ty1>): bool
1773 2: StLoc[1](loc0: bool)
1774 3: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1775 4: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1776 5: ImmBorrowFieldGeneric[4](PoolInner.deep_price: DeepPrice)
1777 6: MoveLoc[1](loc0: bool)
1778 7: Call deep_price::get_order_deep_price(&DeepPrice, bool): OrderDeepPrice
1779 8: Ret
1780}
1781
1782public get_order_deep_required<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: u64, Arg2: u64): u64 * u64 {
1783L3: loc0: TradeParams
1784L4: loc1: TradeParams
1785L5: loc2: Balances
1786L6: loc3: u64
1787L7: loc4: u64
1788L8: loc5: OrderDeepPrice
1789L9: loc6: &PoolInner<Ty0, Ty1>
1790L10: loc7: u64
1791B0:
1792 0: CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1793 1: Call get_order_deep_price<Ty0, Ty1>(&Pool<Ty0, Ty1>): OrderDeepPrice
1794 2: StLoc[8](loc5: OrderDeepPrice)
1795 3: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1796 4: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1797 5: StLoc[9](loc6: &PoolInner<Ty0, Ty1>)
1798 6: CopyLoc[9](loc6: &PoolInner<Ty0, Ty1>)
1799 7: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1800 8: Call state::governance(&State): &Governance
1801 9: Call governance::trade_params(&Governance): TradeParams
1802 10: StLoc[3](loc0: TradeParams)
1803 11: ImmBorrowLoc[3](loc0: TradeParams)
1804 12: Call trade_params::maker_fee(&TradeParams): u64
1805 13: StLoc[7](loc4: u64)
1806 14: MoveLoc[9](loc6: &PoolInner<Ty0, Ty1>)
1807 15: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1808 16: Call state::governance(&State): &Governance
1809 17: Call governance::trade_params(&Governance): TradeParams
1810 18: StLoc[4](loc1: TradeParams)
1811 19: ImmBorrowLoc[4](loc1: TradeParams)
1812 20: Call trade_params::taker_fee(&TradeParams): u64
1813 21: StLoc[10](loc7: u64)
1814 22: ImmBorrowLoc[8](loc5: OrderDeepPrice)
1815 23: CopyLoc[1](Arg1: u64)
1816 24: MoveLoc[1](Arg1: u64)
1817 25: MoveLoc[2](Arg2: u64)
1818 26: Call math::mul(u64, u64): u64
1819 27: LdTrue
1820 28: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
1821 29: StLoc[5](loc2: Balances)
1822 30: ImmBorrowLoc[5](loc2: Balances)
1823 31: Call balances::deep(&Balances): u64
1824 32: StLoc[6](loc3: u64)
1825 33: MoveLoc[10](loc7: u64)
1826 34: CopyLoc[6](loc3: u64)
1827 35: Call math::mul(u64, u64): u64
1828 36: MoveLoc[7](loc4: u64)
1829 37: MoveLoc[6](loc3: u64)
1830 38: Call math::mul(u64, u64): u64
1831 39: Ret
1832}
1833
1834public locked_balance<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: &BalanceManager): u64 * u64 * u64 {
1835L2: loc0: u64
1836L3: loc1: vector<Order>
1837L4: loc2: u64
1838L5: loc3: u64
1839L6: loc4: u64
1840L7: loc5: u64
1841L8: loc6: Balances
1842L9: loc7: u64
1843L10: loc8: &Order
1844L11: loc9: u64
1845L12: loc10: &PoolInner<Ty0, Ty1>
1846L13: loc11: Balances
1847L14: loc12: u64
1848L15: loc13: &vector<Order>
1849B0:
1850 0: CopyLoc[0](Arg0: &Pool<Ty0, Ty1>)
1851 1: CopyLoc[1](Arg1: &BalanceManager)
1852 2: Call get_account_order_details<Ty0, Ty1>(&Pool<Ty0, Ty1>, &BalanceManager): vector<Order>
1853 3: StLoc[3](loc1: vector<Order>)
1854 4: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1855 5: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1856 6: StLoc[12](loc10: &PoolInner<Ty0, Ty1>)
1857 7: CopyLoc[12](loc10: &PoolInner<Ty0, Ty1>)
1858 8: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1859 9: CopyLoc[1](Arg1: &BalanceManager)
1860 10: Call balance_manager::id(&BalanceManager): ID
1861 11: Call state::account_exists(&State, ID): bool
1862 12: Not
1863 13: BrFalse(22)
1864B1:
1865 14: MoveLoc[12](loc10: &PoolInner<Ty0, Ty1>)
1866 15: Pop
1867 16: MoveLoc[1](Arg1: &BalanceManager)
1868 17: Pop
1869 18: LdU64(0)
1870 19: LdU64(0)
1871 20: LdU64(0)
1872 21: Ret
1873B2:
1874 22: LdU64(0)
1875 23: StLoc[4](loc2: u64)
1876 24: LdU64(0)
1877 25: StLoc[11](loc9: u64)
1878 26: LdU64(0)
1879 27: StLoc[5](loc3: u64)
1880 28: ImmBorrowLoc[3](loc1: vector<Order>)
1881 29: StLoc[15](loc13: &vector<Order>)
1882 30: CopyLoc[15](loc13: &vector<Order>)
1883 31: VecLen(45)
1884 32: StLoc[2](loc0: u64)
1885 33: LdU64(0)
1886 34: StLoc[6](loc4: u64)
1887 35: MoveLoc[2](loc0: u64)
1888 36: StLoc[14](loc12: u64)
1889B3:
1890 37: CopyLoc[6](loc4: u64)
1891 38: CopyLoc[14](loc12: u64)
1892 39: Lt
1893 40: BrFalse(78)
1894B4:
1895 41: CopyLoc[6](loc4: u64)
1896 42: StLoc[7](loc5: u64)
1897 43: CopyLoc[15](loc13: &vector<Order>)
1898 44: MoveLoc[7](loc5: u64)
1899 45: VecImmBorrow(45)
1900 46: StLoc[10](loc8: &Order)
1901 47: CopyLoc[12](loc10: &PoolInner<Ty0, Ty1>)
1902 48: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1903 49: Call state::history(&State): &History
1904 50: CopyLoc[10](loc8: &Order)
1905 51: Call order::epoch(&Order): u64
1906 52: Call history::historic_maker_fee(&History, u64): u64
1907 53: StLoc[9](loc7: u64)
1908 54: MoveLoc[10](loc8: &Order)
1909 55: MoveLoc[9](loc7: u64)
1910 56: Call order::locked_balance(&Order, u64): Balances
1911 57: StLoc[8](loc6: Balances)
1912 58: MoveLoc[4](loc2: u64)
1913 59: ImmBorrowLoc[8](loc6: Balances)
1914 60: Call balances::base(&Balances): u64
1915 61: Add
1916 62: StLoc[4](loc2: u64)
1917 63: MoveLoc[11](loc9: u64)
1918 64: ImmBorrowLoc[8](loc6: Balances)
1919 65: Call balances::quote(&Balances): u64
1920 66: Add
1921 67: StLoc[11](loc9: u64)
1922 68: MoveLoc[5](loc3: u64)
1923 69: ImmBorrowLoc[8](loc6: Balances)
1924 70: Call balances::deep(&Balances): u64
1925 71: Add
1926 72: StLoc[5](loc3: u64)
1927 73: MoveLoc[6](loc4: u64)
1928 74: LdU64(1)
1929 75: Add
1930 76: StLoc[6](loc4: u64)
1931 77: Branch(37)
1932B5:
1933 78: MoveLoc[15](loc13: &vector<Order>)
1934 79: Pop
1935 80: MoveLoc[12](loc10: &PoolInner<Ty0, Ty1>)
1936 81: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1937 82: MoveLoc[1](Arg1: &BalanceManager)
1938 83: Call balance_manager::id(&BalanceManager): ID
1939 84: Call state::account(&State, ID): &Account
1940 85: Call account::settled_balances(&Account): Balances
1941 86: StLoc[13](loc11: Balances)
1942 87: MoveLoc[4](loc2: u64)
1943 88: ImmBorrowLoc[13](loc11: Balances)
1944 89: Call balances::base(&Balances): u64
1945 90: Add
1946 91: StLoc[4](loc2: u64)
1947 92: MoveLoc[11](loc9: u64)
1948 93: ImmBorrowLoc[13](loc11: Balances)
1949 94: Call balances::quote(&Balances): u64
1950 95: Add
1951 96: StLoc[11](loc9: u64)
1952 97: MoveLoc[5](loc3: u64)
1953 98: ImmBorrowLoc[13](loc11: Balances)
1954 99: Call balances::deep(&Balances): u64
1955 100: Add
1956 101: StLoc[5](loc3: u64)
1957 102: MoveLoc[4](loc2: u64)
1958 103: MoveLoc[11](loc9: u64)
1959 104: MoveLoc[5](loc3: u64)
1960 105: Ret
1961}
1962
1963public pool_trade_params<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): u64 * u64 * u64 {
1964L1: loc0: u64
1965L2: loc1: u64
1966L3: loc2: u64
1967L4: loc3: TradeParams
1968B0:
1969 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1970 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1971 2: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1972 3: Call state::governance(&State): &Governance
1973 4: Call governance::trade_params(&Governance): TradeParams
1974 5: StLoc[4](loc3: TradeParams)
1975 6: ImmBorrowLoc[4](loc3: TradeParams)
1976 7: Call trade_params::taker_fee(&TradeParams): u64
1977 8: StLoc[3](loc2: u64)
1978 9: ImmBorrowLoc[4](loc3: TradeParams)
1979 10: Call trade_params::maker_fee(&TradeParams): u64
1980 11: StLoc[1](loc0: u64)
1981 12: ImmBorrowLoc[4](loc3: TradeParams)
1982 13: Call trade_params::stake_required(&TradeParams): u64
1983 14: StLoc[2](loc1: u64)
1984 15: MoveLoc[3](loc2: u64)
1985 16: MoveLoc[1](loc0: u64)
1986 17: MoveLoc[2](loc1: u64)
1987 18: Ret
1988}
1989
1990public pool_trade_params_next<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): u64 * u64 * u64 {
1991L1: loc0: u64
1992L2: loc1: u64
1993L3: loc2: u64
1994L4: loc3: TradeParams
1995B0:
1996 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
1997 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
1998 2: ImmBorrowFieldGeneric[0](PoolInner.state: State)
1999 3: Call state::governance(&State): &Governance
2000 4: Call governance::next_trade_params(&Governance): TradeParams
2001 5: StLoc[4](loc3: TradeParams)
2002 6: ImmBorrowLoc[4](loc3: TradeParams)
2003 7: Call trade_params::taker_fee(&TradeParams): u64
2004 8: StLoc[3](loc2: u64)
2005 9: ImmBorrowLoc[4](loc3: TradeParams)
2006 10: Call trade_params::maker_fee(&TradeParams): u64
2007 11: StLoc[1](loc0: u64)
2008 12: ImmBorrowLoc[4](loc3: TradeParams)
2009 13: Call trade_params::stake_required(&TradeParams): u64
2010 14: StLoc[2](loc1: u64)
2011 15: MoveLoc[3](loc2: u64)
2012 16: MoveLoc[1](loc0: u64)
2013 17: MoveLoc[2](loc1: u64)
2014 18: Ret
2015}
2016
2017public pool_book_params<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): u64 * u64 * u64 {
2018L1: loc0: u64
2019L2: loc1: u64
2020L3: loc2: &PoolInner<Ty0, Ty1>
2021L4: loc3: u64
2022B0:
2023 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
2024 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
2025 2: StLoc[3](loc2: &PoolInner<Ty0, Ty1>)
2026 3: CopyLoc[3](loc2: &PoolInner<Ty0, Ty1>)
2027 4: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
2028 5: Call book::tick_size(&Book): u64
2029 6: StLoc[4](loc3: u64)
2030 7: CopyLoc[3](loc2: &PoolInner<Ty0, Ty1>)
2031 8: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
2032 9: Call book::lot_size(&Book): u64
2033 10: StLoc[1](loc0: u64)
2034 11: MoveLoc[3](loc2: &PoolInner<Ty0, Ty1>)
2035 12: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
2036 13: Call book::min_size(&Book): u64
2037 14: StLoc[2](loc1: u64)
2038 15: MoveLoc[4](loc3: u64)
2039 16: MoveLoc[1](loc0: u64)
2040 17: MoveLoc[2](loc1: u64)
2041 18: Ret
2042}
2043
2044public account<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>, Arg1: &BalanceManager): Account {
2045B0:
2046 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
2047 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
2048 2: ImmBorrowFieldGeneric[0](PoolInner.state: State)
2049 3: MoveLoc[1](Arg1: &BalanceManager)
2050 4: Call balance_manager::id(&BalanceManager): ID
2051 5: Call state::account(&State, ID): &Account
2052 6: ReadRef
2053 7: Ret
2054}
2055
2056public quorum<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): u64 {
2057B0:
2058 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
2059 1: Call load_inner<Ty0, Ty1>(&Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1>
2060 2: ImmBorrowFieldGeneric[0](PoolInner.state: State)
2061 3: Call state::governance(&State): &Governance
2062 4: Call governance::quorum(&Governance): u64
2063 5: Ret
2064}
2065
2066public(friend) create_pool<Ty0, Ty1>(Arg0: &mut Registry, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: Coin<DEEP>, Arg5: bool, Arg6: bool, Arg7: &mut TxContext): ID {
2067L8: loc0: bool
2068L9: loc1: u64
2069L10: loc2: TradeParams
2070L11: loc3: Pool<Ty0, Ty1>
2071L12: loc4: UID
2072L13: loc5: ID
2073L14: loc6: PoolInner<Ty0, Ty1>
2074L15: loc7: u64
2075L16: loc8: address
2076B0:
2077 0: CopyLoc[1](Arg1: u64)
2078 1: LdU64(0)
2079 2: Gt
2080 3: BrFalse(5)
2081B1:
2082 4: Branch(11)
2083B2:
2084 5: MoveLoc[0](Arg0: &mut Registry)
2085 6: Pop
2086 7: MoveLoc[7](Arg7: &mut TxContext)
2087 8: Pop
2088 9: LdConst[2](u64: 3)
2089 10: Abort
2090B3:
2091 11: CopyLoc[1](Arg1: u64)
2092 12: Call math::is_power_of_ten(u64): bool
2093 13: BrFalse(15)
2094B4:
2095 14: Branch(21)
2096B5:
2097 15: MoveLoc[0](Arg0: &mut Registry)
2098 16: Pop
2099 17: MoveLoc[7](Arg7: &mut TxContext)
2100 18: Pop
2101 19: LdConst[2](u64: 3)
2102 20: Abort
2103B6:
2104 21: CopyLoc[2](Arg2: u64)
2105 22: LdU64(1000)
2106 23: Ge
2107 24: BrFalse(26)
2108B7:
2109 25: Branch(32)
2110B8:
2111 26: MoveLoc[0](Arg0: &mut Registry)
2112 27: Pop
2113 28: MoveLoc[7](Arg7: &mut TxContext)
2114 29: Pop
2115 30: LdConst[3](u64: 4)
2116 31: Abort
2117B9:
2118 32: CopyLoc[2](Arg2: u64)
2119 33: Call math::is_power_of_ten(u64): bool
2120 34: BrFalse(36)
2121B10:
2122 35: Branch(42)
2123B11:
2124 36: MoveLoc[0](Arg0: &mut Registry)
2125 37: Pop
2126 38: MoveLoc[7](Arg7: &mut TxContext)
2127 39: Pop
2128 40: LdConst[3](u64: 4)
2129 41: Abort
2130B12:
2131 42: CopyLoc[3](Arg3: u64)
2132 43: LdU64(0)
2133 44: Gt
2134 45: BrFalse(47)
2135B13:
2136 46: Branch(53)
2137B14:
2138 47: MoveLoc[0](Arg0: &mut Registry)
2139 48: Pop
2140 49: MoveLoc[7](Arg7: &mut TxContext)
2141 50: Pop
2142 51: LdConst[4](u64: 5)
2143 52: Abort
2144B15:
2145 53: CopyLoc[3](Arg3: u64)
2146 54: CopyLoc[2](Arg2: u64)
2147 55: Mod
2148 56: LdU64(0)
2149 57: Eq
2150 58: BrFalse(60)
2151B16:
2152 59: Branch(66)
2153B17:
2154 60: MoveLoc[0](Arg0: &mut Registry)
2155 61: Pop
2156 62: MoveLoc[7](Arg7: &mut TxContext)
2157 63: Pop
2158 64: LdConst[4](u64: 5)
2159 65: Abort
2160B18:
2161 66: CopyLoc[3](Arg3: u64)
2162 67: Call math::is_power_of_ten(u64): bool
2163 68: BrFalse(70)
2164B19:
2165 69: Branch(76)
2166B20:
2167 70: MoveLoc[0](Arg0: &mut Registry)
2168 71: Pop
2169 72: MoveLoc[7](Arg7: &mut TxContext)
2170 73: Pop
2171 74: LdConst[4](u64: 5)
2172 75: Abort
2173B21:
2174 76: CopyLoc[5](Arg5: bool)
2175 77: BrFalse(81)
2176B22:
2177 78: CopyLoc[6](Arg6: bool)
2178 79: StLoc[8](loc0: bool)
2179 80: Branch(83)
2180B23:
2181 81: LdFalse
2182 82: StLoc[8](loc0: bool)
2183B24:
2184 83: MoveLoc[8](loc0: bool)
2185 84: Not
2186 85: BrFalse(87)
2187B25:
2188 86: Branch(93)
2189B26:
2190 87: MoveLoc[0](Arg0: &mut Registry)
2191 88: Pop
2192 89: MoveLoc[7](Arg7: &mut TxContext)
2193 90: Pop
2194 91: LdConst[13](u64: 15)
2195 92: Abort
2196B27:
2197 93: Call type_name::get<Ty0>(): TypeName
2198 94: Call type_name::get<Ty1>(): TypeName
2199 95: Neq
2200 96: BrFalse(98)
2201B28:
2202 97: Branch(104)
2203B29:
2204 98: MoveLoc[0](Arg0: &mut Registry)
2205 99: Pop
2206 100: MoveLoc[7](Arg7: &mut TxContext)
2207 101: Pop
2208 102: LdConst[1](u64: 2)
2209 103: Abort
2210B30:
2211 104: CopyLoc[7](Arg7: &mut TxContext)
2212 105: Call object::new(&mut TxContext): UID
2213 106: StLoc[12](loc4: UID)
2214 107: CopyLoc[0](Arg0: &mut Registry)
2215 108: FreezeRef
2216 109: Call registry::allowed_versions(&Registry): VecSet<u64>
2217 110: ImmBorrowLoc[12](loc4: UID)
2218 111: Call object::uid_to_inner(&UID): ID
2219 112: CopyLoc[1](Arg1: u64)
2220 113: CopyLoc[2](Arg2: u64)
2221 114: CopyLoc[3](Arg3: u64)
2222 115: CopyLoc[7](Arg7: &mut TxContext)
2223 116: Call book::empty(u64, u64, u64, &mut TxContext): Book
2224 117: MoveLoc[6](Arg6: bool)
2225 118: CopyLoc[7](Arg7: &mut TxContext)
2226 119: Call state::empty(bool, &mut TxContext): State
2227 120: Call vault::empty<Ty0, Ty1>(): Vault<Ty0, Ty1>
2228 121: Call deep_price::empty(): DeepPrice
2229 122: LdTrue
2230 123: PackGeneric[2](PoolInner<Ty0, Ty1>)
2231 124: StLoc[14](loc6: PoolInner<Ty0, Ty1>)
2232 125: CopyLoc[5](Arg5: bool)
2233 126: BrFalse(131)
2234B31:
2235 127: MutBorrowLoc[14](loc6: PoolInner<Ty0, Ty1>)
2236 128: CopyLoc[7](Arg7: &mut TxContext)
2237 129: FreezeRef
2238 130: Call set_whitelist<Ty0, Ty1>(&mut PoolInner<Ty0, Ty1>, &TxContext)
2239B32:
2240 131: ImmBorrowLoc[14](loc6: PoolInner<Ty0, Ty1>)
2241 132: ImmBorrowFieldGeneric[0](PoolInner.state: State)
2242 133: Call state::governance(&State): &Governance
2243 134: Call governance::trade_params(&Governance): TradeParams
2244 135: StLoc[10](loc2: TradeParams)
2245 136: ImmBorrowLoc[10](loc2: TradeParams)
2246 137: Call trade_params::taker_fee(&TradeParams): u64
2247 138: StLoc[15](loc7: u64)
2248 139: ImmBorrowLoc[10](loc2: TradeParams)
2249 140: Call trade_params::maker_fee(&TradeParams): u64
2250 141: StLoc[9](loc1: u64)
2251 142: CopyLoc[0](Arg0: &mut Registry)
2252 143: FreezeRef
2253 144: Call registry::treasury_address(&Registry): address
2254 145: StLoc[16](loc8: address)
2255 146: MoveLoc[12](loc4: UID)
2256 147: Call constants::current_version(): u64
2257 148: MoveLoc[14](loc6: PoolInner<Ty0, Ty1>)
2258 149: MoveLoc[7](Arg7: &mut TxContext)
2259 150: Call versioned::create<PoolInner<Ty0, Ty1>>(u64, PoolInner<Ty0, Ty1>, &mut TxContext): Versioned
2260 151: PackGeneric[3](Pool<Ty0, Ty1>)
2261 152: StLoc[11](loc3: Pool<Ty0, Ty1>)
2262 153: ImmBorrowLoc[11](loc3: Pool<Ty0, Ty1>)
2263 154: Call object::id<Pool<Ty0, Ty1>>(&Pool<Ty0, Ty1>): ID
2264 155: StLoc[13](loc5: ID)
2265 156: MoveLoc[0](Arg0: &mut Registry)
2266 157: CopyLoc[13](loc5: ID)
2267 158: Call registry::register_pool<Ty0, Ty1>(&mut Registry, ID)
2268 159: CopyLoc[13](loc5: ID)
2269 160: MoveLoc[15](loc7: u64)
2270 161: MoveLoc[9](loc1: u64)
2271 162: MoveLoc[1](Arg1: u64)
2272 163: MoveLoc[2](Arg2: u64)
2273 164: MoveLoc[3](Arg3: u64)
2274 165: MoveLoc[5](Arg5: bool)
2275 166: CopyLoc[16](loc8: address)
2276 167: PackGeneric[4](PoolCreated<Ty0, Ty1>)
2277 168: Call event::emit<PoolCreated<Ty0, Ty1>>(PoolCreated<Ty0, Ty1>)
2278 169: MoveLoc[4](Arg4: Coin<DEEP>)
2279 170: MoveLoc[16](loc8: address)
2280 171: Call transfer::public_transfer<Coin<DEEP>>(Coin<DEEP>, address)
2281 172: MoveLoc[11](loc3: Pool<Ty0, Ty1>)
2282 173: Call transfer::share_object<Pool<Ty0, Ty1>>(Pool<Ty0, Ty1>)
2283 174: MoveLoc[13](loc5: ID)
2284 175: Ret
2285}
2286
2287public(friend) bids<Ty0, Ty1>(Arg0: &PoolInner<Ty0, Ty1>): &BigVector<Order> {
2288B0:
2289 0: MoveLoc[0](Arg0: &PoolInner<Ty0, Ty1>)
2290 1: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
2291 2: Call book::bids(&Book): &BigVector<Order>
2292 3: Ret
2293}
2294
2295public(friend) asks<Ty0, Ty1>(Arg0: &PoolInner<Ty0, Ty1>): &BigVector<Order> {
2296B0:
2297 0: MoveLoc[0](Arg0: &PoolInner<Ty0, Ty1>)
2298 1: ImmBorrowFieldGeneric[1](PoolInner.book: Book)
2299 2: Call book::asks(&Book): &BigVector<Order>
2300 3: Ret
2301}
2302
2303public(friend) load_inner<Ty0, Ty1>(Arg0: &Pool<Ty0, Ty1>): &PoolInner<Ty0, Ty1> {
2304L1: loc0: &PoolInner<Ty0, Ty1>
2305L2: loc1: u64
2306B0:
2307 0: MoveLoc[0](Arg0: &Pool<Ty0, Ty1>)
2308 1: ImmBorrowFieldGeneric[7](Pool.inner: Versioned)
2309 2: Call versioned::load_value<PoolInner<Ty0, Ty1>>(&Versioned): &PoolInner<Ty0, Ty1>
2310 3: StLoc[1](loc0: &PoolInner<Ty0, Ty1>)
2311 4: Call constants::current_version(): u64
2312 5: StLoc[2](loc1: u64)
2313 6: CopyLoc[1](loc0: &PoolInner<Ty0, Ty1>)
2314 7: ImmBorrowFieldGeneric[8](PoolInner.allowed_versions: VecSet<u64>)
2315 8: ImmBorrowLoc[2](loc1: u64)
2316 9: Call vec_set::contains<u64>(&VecSet<u64>, &u64): bool
2317 10: BrFalse(12)
2318B1:
2319 11: Branch(16)
2320B2:
2321 12: MoveLoc[1](loc0: &PoolInner<Ty0, Ty1>)
2322 13: Pop
2323 14: LdConst[9](u64: 11)
2324 15: Abort
2325B3:
2326 16: MoveLoc[1](loc0: &PoolInner<Ty0, Ty1>)
2327 17: Ret
2328}
2329
2330public(friend) load_inner_mut<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1> {
2331L1: loc0: &mut PoolInner<Ty0, Ty1>
2332L2: loc1: u64
2333B0:
2334 0: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
2335 1: MutBorrowFieldGeneric[7](Pool.inner: Versioned)
2336 2: Call versioned::load_value_mut<PoolInner<Ty0, Ty1>>(&mut Versioned): &mut PoolInner<Ty0, Ty1>
2337 3: StLoc[1](loc0: &mut PoolInner<Ty0, Ty1>)
2338 4: Call constants::current_version(): u64
2339 5: StLoc[2](loc1: u64)
2340 6: CopyLoc[1](loc0: &mut PoolInner<Ty0, Ty1>)
2341 7: ImmBorrowFieldGeneric[8](PoolInner.allowed_versions: VecSet<u64>)
2342 8: ImmBorrowLoc[2](loc1: u64)
2343 9: Call vec_set::contains<u64>(&VecSet<u64>, &u64): bool
2344 10: BrFalse(12)
2345B1:
2346 11: Branch(16)
2347B2:
2348 12: MoveLoc[1](loc0: &mut PoolInner<Ty0, Ty1>)
2349 13: Pop
2350 14: LdConst[9](u64: 11)
2351 15: Abort
2352B3:
2353 16: MoveLoc[1](loc0: &mut PoolInner<Ty0, Ty1>)
2354 17: Ret
2355}
2356
2357set_whitelist<Ty0, Ty1>(Arg0: &mut PoolInner<Ty0, Ty1>, Arg1: &TxContext) {
2358B0:
2359 0: MoveLoc[0](Arg0: &mut PoolInner<Ty0, Ty1>)
2360 1: MutBorrowFieldGeneric[0](PoolInner.state: State)
2361 2: MoveLoc[1](Arg1: &TxContext)
2362 3: Call state::governance_mut(&mut State, &TxContext): &mut Governance
2363 4: LdTrue
2364 5: Call governance::set_whitelist(&mut Governance, bool)
2365 6: Ret
2366}
2367
2368place_order_int<Ty0, Ty1>(Arg0: &mut Pool<Ty0, Ty1>, Arg1: &mut BalanceManager, Arg2: &TradeProof, Arg3: u64, Arg4: u8, Arg5: u8, Arg6: u64, Arg7: u64, Arg8: bool, Arg9: bool, Arg10: u64, Arg11: &Clock, Arg12: bool, Arg13: &TxContext): OrderInfo {
2369L14: loc0: OrderDeepPrice
2370L15: loc1: OrderDeepPrice
2371L16: loc2: OrderInfo
2372L17: loc3: Balances
2373L18: loc4: &mut PoolInner<Ty0, Ty1>
2374L19: loc5: Balances
2375L20: loc6: bool
2376B0:
2377 0: CopyLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
2378 1: FreezeRef
2379 2: Call whitelisted<Ty0, Ty1>(&Pool<Ty0, Ty1>): bool
2380 3: StLoc[20](loc6: bool)
2381 4: MoveLoc[0](Arg0: &mut Pool<Ty0, Ty1>)
2382 5: Call load_inner_mut<Ty0, Ty1>(&mut Pool<Ty0, Ty1>): &mut PoolInner<Ty0, Ty1>
2383 6: StLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2384 7: CopyLoc[9](Arg9: bool)
2385 8: BrFalse(15)
2386B1:
2387 9: CopyLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2388 10: ImmBorrowFieldGeneric[4](PoolInner.deep_price: DeepPrice)
2389 11: MoveLoc[20](loc6: bool)
2390 12: Call deep_price::get_order_deep_price(&DeepPrice, bool): OrderDeepPrice
2391 13: StLoc[14](loc0: OrderDeepPrice)
2392 14: Branch(19)
2393B2:
2394 15: CopyLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2395 16: ImmBorrowFieldGeneric[4](PoolInner.deep_price: DeepPrice)
2396 17: Call deep_price::empty_deep_price(&DeepPrice): OrderDeepPrice
2397 18: StLoc[14](loc0: OrderDeepPrice)
2398B3:
2399 19: MoveLoc[14](loc0: OrderDeepPrice)
2400 20: StLoc[15](loc1: OrderDeepPrice)
2401 21: CopyLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2402 22: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
2403 23: ReadRef
2404 24: CopyLoc[1](Arg1: &mut BalanceManager)
2405 25: FreezeRef
2406 26: Call balance_manager::id(&BalanceManager): ID
2407 27: MoveLoc[3](Arg3: u64)
2408 28: CopyLoc[13](Arg13: &TxContext)
2409 29: Call tx_context::sender(&TxContext): address
2410 30: MoveLoc[4](Arg4: u8)
2411 31: MoveLoc[5](Arg5: u8)
2412 32: MoveLoc[6](Arg6: u64)
2413 33: MoveLoc[7](Arg7: u64)
2414 34: MoveLoc[8](Arg8: bool)
2415 35: MoveLoc[9](Arg9: bool)
2416 36: CopyLoc[13](Arg13: &TxContext)
2417 37: Call tx_context::epoch(&TxContext): u64
2418 38: MoveLoc[10](Arg10: u64)
2419 39: MoveLoc[15](loc1: OrderDeepPrice)
2420 40: MoveLoc[12](Arg12: bool)
2421 41: CopyLoc[11](Arg11: &Clock)
2422 42: Call clock::timestamp_ms(&Clock): u64
2423 43: Call order_info::new(ID, ID, u64, address, u8, u8, u64, u64, bool, bool, u64, u64, OrderDeepPrice, bool, u64): OrderInfo
2424 44: StLoc[16](loc2: OrderInfo)
2425 45: CopyLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2426 46: MutBorrowFieldGeneric[1](PoolInner.book: Book)
2427 47: MutBorrowLoc[16](loc2: OrderInfo)
2428 48: CopyLoc[11](Arg11: &Clock)
2429 49: Call clock::timestamp_ms(&Clock): u64
2430 50: Call book::create_order(&mut Book, &mut OrderInfo, u64)
2431 51: CopyLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2432 52: MutBorrowFieldGeneric[0](PoolInner.state: State)
2433 53: MutBorrowLoc[16](loc2: OrderInfo)
2434 54: CopyLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2435 55: ImmBorrowFieldGeneric[2](PoolInner.pool_id: ID)
2436 56: ReadRef
2437 57: MoveLoc[13](Arg13: &TxContext)
2438 58: Call state::process_create(&mut State, &mut OrderInfo, ID, &TxContext): Balances * Balances
2439 59: StLoc[17](loc3: Balances)
2440 60: StLoc[19](loc5: Balances)
2441 61: MoveLoc[18](loc4: &mut PoolInner<Ty0, Ty1>)
2442 62: MutBorrowFieldGeneric[3](PoolInner.vault: Vault<Ty0, Ty1>)
2443 63: MoveLoc[19](loc5: Balances)
2444 64: MoveLoc[17](loc3: Balances)
2445 65: MoveLoc[1](Arg1: &mut BalanceManager)
2446 66: MoveLoc[2](Arg2: &TradeProof)
2447 67: Call vault::settle_balance_manager<Ty0, Ty1>(&mut Vault<Ty0, Ty1>, Balances, Balances, &mut BalanceManager, &TradeProof)
2448 68: ImmBorrowLoc[16](loc2: OrderInfo)
2449 69: Call order_info::emit_order_info(&OrderInfo)
2450 70: ImmBorrowLoc[16](loc2: OrderInfo)
2451 71: MoveLoc[11](Arg11: &Clock)
2452 72: Call clock::timestamp_ms(&Clock): u64
2453 73: Call order_info::emit_orders_filled(&OrderInfo, u64)
2454 74: MoveLoc[16](loc2: OrderInfo)
2455 75: Ret
2456}
2457
2458Constants [
2459 0 => u64: 1
2460 1 => u64: 2
2461 2 => u64: 3
2462 3 => u64: 4
2463 4 => u64: 5
2464 5 => u64: 6
2465 6 => u64: 7
2466 7 => u64: 9
2467 8 => u64: 10
2468 9 => u64: 11
2469 10 => u64: 12
2470 11 => u64: 13
2471 12 => u64: 14
2472 13 => u64: 15
2473 14 => vector<u128>: 00
2474]
2475}
2476
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/state.mvb1012 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.state {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::account;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balance_manager;
5use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
6use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::constants;
7use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::deep_price;
8use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::fill;
9use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::governance;
10use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::history;
11use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::math;
12use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order;
13use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::order_info;
14use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::trade_params;
15use 0000000000000000000000000000000000000000000000000000000000000001::option;
16use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
17use 0000000000000000000000000000000000000000000000000000000000000002::event;
18use 0000000000000000000000000000000000000000000000000000000000000002::object;
19use 0000000000000000000000000000000000000000000000000000000000000002::table;
20use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
21use 0000000000000000000000000000000000000000000000000000000000000002::vec_set;
22use deeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep;
23
24struct State has store {
25 accounts: Table<ID, Account>,
26 history: History,
27 governance: Governance
28}
29
30struct StakeEvent has copy, drop {
31 pool_id: ID,
32 balance_manager_id: ID,
33 epoch: u64,
34 amount: u64,
35 stake: bool
36}
37
38struct ProposalEvent has copy, drop {
39 pool_id: ID,
40 balance_manager_id: ID,
41 epoch: u64,
42 taker_fee: u64,
43 maker_fee: u64,
44 stake_required: u64
45}
46
47struct VoteEvent has copy, drop {
48 pool_id: ID,
49 balance_manager_id: ID,
50 epoch: u64,
51 from_proposal_id: Option<ID>,
52 to_proposal_id: ID,
53 stake: u64
54}
55
56struct RebateEventV2 has copy, drop {
57 pool_id: ID,
58 balance_manager_id: ID,
59 epoch: u64,
60 claim_amount: Balances
61}
62
63struct RebateEvent has copy, drop {
64 pool_id: ID,
65 balance_manager_id: ID,
66 epoch: u64,
67 claim_amount: u64
68}
69
70public(friend) empty(Arg0: bool, Arg1: &mut TxContext): State {
71L2: loc0: History
72L3: loc1: Governance
73L4: loc2: Governance
74B0:
75 0: MoveLoc[0](Arg0: bool)
76 1: CopyLoc[1](Arg1: &mut TxContext)
77 2: FreezeRef
78 3: Call governance::empty(bool, &TxContext): Governance
79 4: StLoc[4](loc2: Governance)
80 5: ImmBorrowLoc[4](loc2: Governance)
81 6: Call governance::trade_params(&Governance): TradeParams
82 7: CopyLoc[1](Arg1: &mut TxContext)
83 8: FreezeRef
84 9: Call tx_context::epoch(&TxContext): u64
85 10: CopyLoc[1](Arg1: &mut TxContext)
86 11: Call history::empty(TradeParams, u64, &mut TxContext): History
87 12: StLoc[2](loc0: History)
88 13: MoveLoc[4](loc2: Governance)
89 14: StLoc[3](loc1: Governance)
90 15: MoveLoc[1](Arg1: &mut TxContext)
91 16: Call table::new<ID, Account>(&mut TxContext): Table<ID, Account>
92 17: MoveLoc[2](loc0: History)
93 18: MoveLoc[3](loc1: Governance)
94 19: Pack[0](State)
95 20: Ret
96}
97
98public(friend) process_create(Arg0: &mut State, Arg1: &mut OrderInfo, Arg2: ID, Arg3: &TxContext): Balances * Balances {
99L4: loc0: u64
100L5: loc1: OrderDeepPrice
101L6: loc2: TradeParams
102L7: loc3: TradeParams
103L8: loc4: VecSet<u128>
104L9: loc5: &mut Account
105L10: loc6: u64
106L11: loc7: u128
107L12: loc8: u128
108L13: loc9: u64
109L14: loc10: &mut vector<Fill>
110L15: loc11: u64
111L16: loc12: Balances
112L17: loc13: Balances
113L18: loc14: Balances
114L19: loc15: Balances
115L20: loc16: u64
116B0:
117 0: CopyLoc[0](Arg0: &mut State)
118 1: MutBorrowField[0](State.governance: Governance)
119 2: CopyLoc[3](Arg3: &TxContext)
120 3: Call governance::update(&mut Governance, &TxContext)
121 4: CopyLoc[0](Arg0: &mut State)
122 5: MutBorrowField[1](State.history: History)
123 6: CopyLoc[0](Arg0: &mut State)
124 7: ImmBorrowField[0](State.governance: Governance)
125 8: Call governance::trade_params(&Governance): TradeParams
126 9: MoveLoc[2](Arg2: ID)
127 10: CopyLoc[3](Arg3: &TxContext)
128 11: Call history::update(&mut History, TradeParams, ID, &TxContext)
129 12: CopyLoc[1](Arg1: &mut OrderInfo)
130 13: Call order_info::fills_ref(&mut OrderInfo): &mut vector<Fill>
131 14: StLoc[14](loc10: &mut vector<Fill>)
132 15: CopyLoc[0](Arg0: &mut State)
133 16: MoveLoc[14](loc10: &mut vector<Fill>)
134 17: CopyLoc[3](Arg3: &TxContext)
135 18: Call process_fills(&mut State, &mut vector<Fill>, &TxContext)
136 19: CopyLoc[0](Arg0: &mut State)
137 20: CopyLoc[1](Arg1: &mut OrderInfo)
138 21: FreezeRef
139 22: Call order_info::balance_manager_id(&OrderInfo): ID
140 23: MoveLoc[3](Arg3: &TxContext)
141 24: Call update_account(&mut State, ID, &TxContext)
142 25: CopyLoc[0](Arg0: &mut State)
143 26: MutBorrowField[2](State.accounts: Table<ID, Account>)
144 27: CopyLoc[1](Arg1: &mut OrderInfo)
145 28: FreezeRef
146 29: Call order_info::balance_manager_id(&OrderInfo): ID
147 30: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
148 31: StLoc[9](loc5: &mut Account)
149 32: CopyLoc[9](loc5: &mut Account)
150 33: FreezeRef
151 34: Call account::total_volume(&Account): u128
152 35: StLoc[11](loc7: u128)
153 36: CopyLoc[9](loc5: &mut Account)
154 37: FreezeRef
155 38: Call account::active_stake(&Account): u64
156 39: StLoc[10](loc6: u64)
157 40: CopyLoc[1](Arg1: &mut OrderInfo)
158 41: FreezeRef
159 42: Call order_info::executed_quantity(&OrderInfo): u64
160 43: LdU64(0)
161 44: Gt
162 45: BrFalse(55)
163B1:
164 46: CopyLoc[1](Arg1: &mut OrderInfo)
165 47: FreezeRef
166 48: Call order_info::cumulative_quote_quantity(&OrderInfo): u64
167 49: CopyLoc[1](Arg1: &mut OrderInfo)
168 50: FreezeRef
169 51: Call order_info::executed_quantity(&OrderInfo): u64
170 52: Call math::div(u64, u64): u64
171 53: StLoc[4](loc0: u64)
172 54: Branch(57)
173B2:
174 55: LdU64(0)
175 56: StLoc[4](loc0: u64)
176B3:
177 57: MoveLoc[4](loc0: u64)
178 58: StLoc[13](loc9: u64)
179 59: CopyLoc[1](Arg1: &mut OrderInfo)
180 60: FreezeRef
181 61: Call order_info::order_deep_price(&OrderInfo): OrderDeepPrice
182 62: StLoc[5](loc1: OrderDeepPrice)
183 63: ImmBorrowLoc[5](loc1: OrderDeepPrice)
184 64: CopyLoc[11](loc7: u128)
185 65: MoveLoc[11](loc7: u128)
186 66: MoveLoc[13](loc9: u64)
187 67: CastU128
188 68: Call math::mul_u128(u128, u128): u128
189 69: Call deep_price::deep_quantity_u128(&OrderDeepPrice, u128, u128): u128
190 70: StLoc[12](loc8: u128)
191 71: CopyLoc[0](Arg0: &mut State)
192 72: ImmBorrowField[0](State.governance: Governance)
193 73: Call governance::trade_params(&Governance): TradeParams
194 74: StLoc[6](loc2: TradeParams)
195 75: ImmBorrowLoc[6](loc2: TradeParams)
196 76: MoveLoc[10](loc6: u64)
197 77: MoveLoc[12](loc8: u128)
198 78: Call trade_params::taker_fee_for_user(&TradeParams, u64, u128): u64
199 79: StLoc[20](loc16: u64)
200 80: CopyLoc[0](Arg0: &mut State)
201 81: ImmBorrowField[0](State.governance: Governance)
202 82: Call governance::trade_params(&Governance): TradeParams
203 83: StLoc[7](loc3: TradeParams)
204 84: ImmBorrowLoc[7](loc3: TradeParams)
205 85: Call trade_params::maker_fee(&TradeParams): u64
206 86: StLoc[15](loc11: u64)
207 87: CopyLoc[1](Arg1: &mut OrderInfo)
208 88: FreezeRef
209 89: Call order_info::order_inserted(&OrderInfo): bool
210 90: BrFalse(114)
211B4:
212 91: CopyLoc[9](loc5: &mut Account)
213 92: FreezeRef
214 93: Call account::open_orders(&Account): VecSet<u128>
215 94: StLoc[8](loc4: VecSet<u128>)
216 95: ImmBorrowLoc[8](loc4: VecSet<u128>)
217 96: Call vec_set::size<u128>(&VecSet<u128>): u64
218 97: Call constants::max_open_orders(): u64
219 98: Lt
220 99: BrFalse(101)
221B5:
222 100: Branch(109)
223B6:
224 101: MoveLoc[0](Arg0: &mut State)
225 102: Pop
226 103: MoveLoc[1](Arg1: &mut OrderInfo)
227 104: Pop
228 105: MoveLoc[9](loc5: &mut Account)
229 106: Pop
230 107: LdConst[1](u64: 2)
231 108: Abort
232B7:
233 109: CopyLoc[9](loc5: &mut Account)
234 110: CopyLoc[1](Arg1: &mut OrderInfo)
235 111: FreezeRef
236 112: Call order_info::order_id(&OrderInfo): u128
237 113: Call account::add_order(&mut Account, u128)
238B8:
239 114: CopyLoc[9](loc5: &mut Account)
240 115: CopyLoc[1](Arg1: &mut OrderInfo)
241 116: FreezeRef
242 117: Call order_info::executed_quantity(&OrderInfo): u64
243 118: Call account::add_taker_volume(&mut Account, u64)
244 119: CopyLoc[1](Arg1: &mut OrderInfo)
245 120: MoveLoc[20](loc16: u64)
246 121: MoveLoc[15](loc11: u64)
247 122: Call order_info::calculate_partial_fill_balances(&mut OrderInfo, u64, u64): Balances * Balances
248 123: StLoc[18](loc14: Balances)
249 124: StLoc[19](loc15: Balances)
250 125: MoveLoc[9](loc5: &mut Account)
251 126: Call account::settle(&mut Account): Balances * Balances
252 127: StLoc[16](loc12: Balances)
253 128: StLoc[17](loc13: Balances)
254 129: MoveLoc[0](Arg0: &mut State)
255 130: MutBorrowField[1](State.history: History)
256 131: MoveLoc[1](Arg1: &mut OrderInfo)
257 132: FreezeRef
258 133: Call order_info::paid_fees_balances(&OrderInfo): Balances
259 134: Call history::add_total_fees_collected(&mut History, Balances)
260 135: MutBorrowLoc[19](loc15: Balances)
261 136: MoveLoc[17](loc13: Balances)
262 137: Call balances::add_balances(&mut Balances, Balances)
263 138: MutBorrowLoc[18](loc14: Balances)
264 139: MoveLoc[16](loc12: Balances)
265 140: Call balances::add_balances(&mut Balances, Balances)
266 141: MoveLoc[19](loc15: Balances)
267 142: MoveLoc[18](loc14: Balances)
268 143: Ret
269}
270
271public(friend) withdraw_settled_amounts(Arg0: &mut State, Arg1: ID): Balances * Balances {
272L2: loc0: Balances
273L3: loc1: Balances
274B0:
275 0: CopyLoc[0](Arg0: &mut State)
276 1: ImmBorrowField[2](State.accounts: Table<ID, Account>)
277 2: CopyLoc[1](Arg1: ID)
278 3: Call table::contains<ID, Account>(&Table<ID, Account>, ID): bool
279 4: BrFalse(13)
280B1:
281 5: MoveLoc[0](Arg0: &mut State)
282 6: MutBorrowField[2](State.accounts: Table<ID, Account>)
283 7: MoveLoc[1](Arg1: ID)
284 8: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
285 9: Call account::settle(&mut Account): Balances * Balances
286 10: StLoc[3](loc1: Balances)
287 11: StLoc[2](loc0: Balances)
288 12: Branch(19)
289B2:
290 13: MoveLoc[0](Arg0: &mut State)
291 14: Pop
292 15: Call balances::empty(): Balances
293 16: Call balances::empty(): Balances
294 17: StLoc[3](loc1: Balances)
295 18: StLoc[2](loc0: Balances)
296B3:
297 19: MoveLoc[2](loc0: Balances)
298 20: MoveLoc[3](loc1: Balances)
299 21: Ret
300}
301
302public(friend) process_cancel(Arg0: &mut State, Arg1: &mut Order, Arg2: ID, Arg3: ID, Arg4: &TxContext): Balances * Balances {
303L5: loc0: &mut Account
304L6: loc1: Balances
305L7: loc2: u64
306L8: loc3: u64
307B0:
308 0: CopyLoc[0](Arg0: &mut State)
309 1: MutBorrowField[0](State.governance: Governance)
310 2: CopyLoc[4](Arg4: &TxContext)
311 3: Call governance::update(&mut Governance, &TxContext)
312 4: CopyLoc[0](Arg0: &mut State)
313 5: MutBorrowField[1](State.history: History)
314 6: CopyLoc[0](Arg0: &mut State)
315 7: ImmBorrowField[0](State.governance: Governance)
316 8: Call governance::trade_params(&Governance): TradeParams
317 9: MoveLoc[3](Arg3: ID)
318 10: CopyLoc[4](Arg4: &TxContext)
319 11: Call history::update(&mut History, TradeParams, ID, &TxContext)
320 12: CopyLoc[0](Arg0: &mut State)
321 13: CopyLoc[2](Arg2: ID)
322 14: MoveLoc[4](Arg4: &TxContext)
323 15: Call update_account(&mut State, ID, &TxContext)
324 16: CopyLoc[1](Arg1: &mut Order)
325 17: Call order::set_canceled(&mut Order)
326 18: CopyLoc[1](Arg1: &mut Order)
327 19: FreezeRef
328 20: Call order::epoch(&Order): u64
329 21: StLoc[7](loc2: u64)
330 22: CopyLoc[0](Arg0: &mut State)
331 23: ImmBorrowField[1](State.history: History)
332 24: MoveLoc[7](loc2: u64)
333 25: Call history::historic_maker_fee(&History, u64): u64
334 26: StLoc[8](loc3: u64)
335 27: CopyLoc[1](Arg1: &mut Order)
336 28: FreezeRef
337 29: MoveLoc[8](loc3: u64)
338 30: Call option::none<u64>(): Option<u64>
339 31: Call order::calculate_cancel_refund(&Order, u64, Option<u64>): Balances
340 32: StLoc[6](loc1: Balances)
341 33: MoveLoc[0](Arg0: &mut State)
342 34: MutBorrowField[2](State.accounts: Table<ID, Account>)
343 35: MoveLoc[2](Arg2: ID)
344 36: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
345 37: StLoc[5](loc0: &mut Account)
346 38: CopyLoc[5](loc0: &mut Account)
347 39: MoveLoc[1](Arg1: &mut Order)
348 40: FreezeRef
349 41: Call order::order_id(&Order): u128
350 42: Call account::remove_order(&mut Account, u128)
351 43: CopyLoc[5](loc0: &mut Account)
352 44: MoveLoc[6](loc1: Balances)
353 45: Call account::add_settled_balances(&mut Account, Balances)
354 46: MoveLoc[5](loc0: &mut Account)
355 47: Call account::settle(&mut Account): Balances * Balances
356 48: Ret
357}
358
359public(friend) process_modify(Arg0: &mut State, Arg1: ID, Arg2: u64, Arg3: &Order, Arg4: ID, Arg5: &TxContext): Balances * Balances {
360L6: loc0: Balances
361L7: loc1: u64
362L8: loc2: u64
363B0:
364 0: CopyLoc[0](Arg0: &mut State)
365 1: MutBorrowField[0](State.governance: Governance)
366 2: CopyLoc[5](Arg5: &TxContext)
367 3: Call governance::update(&mut Governance, &TxContext)
368 4: CopyLoc[0](Arg0: &mut State)
369 5: MutBorrowField[1](State.history: History)
370 6: CopyLoc[0](Arg0: &mut State)
371 7: ImmBorrowField[0](State.governance: Governance)
372 8: Call governance::trade_params(&Governance): TradeParams
373 9: MoveLoc[4](Arg4: ID)
374 10: CopyLoc[5](Arg5: &TxContext)
375 11: Call history::update(&mut History, TradeParams, ID, &TxContext)
376 12: CopyLoc[0](Arg0: &mut State)
377 13: CopyLoc[1](Arg1: ID)
378 14: MoveLoc[5](Arg5: &TxContext)
379 15: Call update_account(&mut State, ID, &TxContext)
380 16: CopyLoc[3](Arg3: &Order)
381 17: Call order::epoch(&Order): u64
382 18: StLoc[7](loc1: u64)
383 19: CopyLoc[0](Arg0: &mut State)
384 20: ImmBorrowField[1](State.history: History)
385 21: MoveLoc[7](loc1: u64)
386 22: Call history::historic_maker_fee(&History, u64): u64
387 23: StLoc[8](loc2: u64)
388 24: MoveLoc[3](Arg3: &Order)
389 25: MoveLoc[8](loc2: u64)
390 26: MoveLoc[2](Arg2: u64)
391 27: Call option::some<u64>(u64): Option<u64>
392 28: Call order::calculate_cancel_refund(&Order, u64, Option<u64>): Balances
393 29: StLoc[6](loc0: Balances)
394 30: CopyLoc[0](Arg0: &mut State)
395 31: MutBorrowField[2](State.accounts: Table<ID, Account>)
396 32: CopyLoc[1](Arg1: ID)
397 33: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
398 34: MoveLoc[6](loc0: Balances)
399 35: Call account::add_settled_balances(&mut Account, Balances)
400 36: MoveLoc[0](Arg0: &mut State)
401 37: MutBorrowField[2](State.accounts: Table<ID, Account>)
402 38: MoveLoc[1](Arg1: ID)
403 39: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
404 40: Call account::settle(&mut Account): Balances * Balances
405 41: Ret
406}
407
408public(friend) process_stake(Arg0: &mut State, Arg1: ID, Arg2: ID, Arg3: u64, Arg4: &TxContext): Balances * Balances {
409L5: loc0: u64
410L6: loc1: u64
411B0:
412 0: CopyLoc[0](Arg0: &mut State)
413 1: MutBorrowField[0](State.governance: Governance)
414 2: CopyLoc[4](Arg4: &TxContext)
415 3: Call governance::update(&mut Governance, &TxContext)
416 4: CopyLoc[0](Arg0: &mut State)
417 5: MutBorrowField[1](State.history: History)
418 6: CopyLoc[0](Arg0: &mut State)
419 7: ImmBorrowField[0](State.governance: Governance)
420 8: Call governance::trade_params(&Governance): TradeParams
421 9: CopyLoc[1](Arg1: ID)
422 10: CopyLoc[4](Arg4: &TxContext)
423 11: Call history::update(&mut History, TradeParams, ID, &TxContext)
424 12: CopyLoc[0](Arg0: &mut State)
425 13: CopyLoc[2](Arg2: ID)
426 14: CopyLoc[4](Arg4: &TxContext)
427 15: Call update_account(&mut State, ID, &TxContext)
428 16: CopyLoc[0](Arg0: &mut State)
429 17: MutBorrowField[2](State.accounts: Table<ID, Account>)
430 18: CopyLoc[2](Arg2: ID)
431 19: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
432 20: CopyLoc[3](Arg3: u64)
433 21: Call account::add_stake(&mut Account, u64): u64 * u64
434 22: StLoc[5](loc0: u64)
435 23: StLoc[6](loc1: u64)
436 24: CopyLoc[0](Arg0: &mut State)
437 25: MutBorrowField[0](State.governance: Governance)
438 26: MoveLoc[6](loc1: u64)
439 27: MoveLoc[5](loc0: u64)
440 28: Call governance::adjust_voting_power(&mut Governance, u64, u64)
441 29: MoveLoc[1](Arg1: ID)
442 30: CopyLoc[2](Arg2: ID)
443 31: MoveLoc[4](Arg4: &TxContext)
444 32: Call tx_context::epoch(&TxContext): u64
445 33: MoveLoc[3](Arg3: u64)
446 34: LdTrue
447 35: Pack[1](StakeEvent)
448 36: Call event::emit<StakeEvent>(StakeEvent)
449 37: MoveLoc[0](Arg0: &mut State)
450 38: MutBorrowField[2](State.accounts: Table<ID, Account>)
451 39: MoveLoc[2](Arg2: ID)
452 40: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
453 41: Call account::settle(&mut Account): Balances * Balances
454 42: Ret
455}
456
457public(friend) process_unstake(Arg0: &mut State, Arg1: ID, Arg2: ID, Arg3: &TxContext): Balances * Balances {
458L4: loc0: &mut Account
459L5: loc1: u64
460L6: loc2: u64
461L7: loc3: Option<ID>
462B0:
463 0: CopyLoc[0](Arg0: &mut State)
464 1: MutBorrowField[0](State.governance: Governance)
465 2: CopyLoc[3](Arg3: &TxContext)
466 3: Call governance::update(&mut Governance, &TxContext)
467 4: CopyLoc[0](Arg0: &mut State)
468 5: MutBorrowField[1](State.history: History)
469 6: CopyLoc[0](Arg0: &mut State)
470 7: ImmBorrowField[0](State.governance: Governance)
471 8: Call governance::trade_params(&Governance): TradeParams
472 9: CopyLoc[1](Arg1: ID)
473 10: CopyLoc[3](Arg3: &TxContext)
474 11: Call history::update(&mut History, TradeParams, ID, &TxContext)
475 12: CopyLoc[0](Arg0: &mut State)
476 13: CopyLoc[2](Arg2: ID)
477 14: CopyLoc[3](Arg3: &TxContext)
478 15: Call update_account(&mut State, ID, &TxContext)
479 16: CopyLoc[0](Arg0: &mut State)
480 17: MutBorrowField[2](State.accounts: Table<ID, Account>)
481 18: CopyLoc[2](Arg2: ID)
482 19: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
483 20: StLoc[4](loc0: &mut Account)
484 21: CopyLoc[4](loc0: &mut Account)
485 22: FreezeRef
486 23: Call account::active_stake(&Account): u64
487 24: StLoc[5](loc1: u64)
488 25: CopyLoc[4](loc0: &mut Account)
489 26: FreezeRef
490 27: Call account::inactive_stake(&Account): u64
491 28: StLoc[6](loc2: u64)
492 29: CopyLoc[4](loc0: &mut Account)
493 30: FreezeRef
494 31: Call account::voted_proposal(&Account): Option<ID>
495 32: StLoc[7](loc3: Option<ID>)
496 33: CopyLoc[4](loc0: &mut Account)
497 34: Call account::remove_stake(&mut Account)
498 35: CopyLoc[0](Arg0: &mut State)
499 36: MutBorrowField[0](State.governance: Governance)
500 37: CopyLoc[5](loc1: u64)
501 38: CopyLoc[6](loc2: u64)
502 39: Add
503 40: LdU64(0)
504 41: Call governance::adjust_voting_power(&mut Governance, u64, u64)
505 42: MoveLoc[0](Arg0: &mut State)
506 43: MutBorrowField[0](State.governance: Governance)
507 44: MoveLoc[7](loc3: Option<ID>)
508 45: Call option::none<ID>(): Option<ID>
509 46: CopyLoc[5](loc1: u64)
510 47: Call governance::adjust_vote(&mut Governance, Option<ID>, Option<ID>, u64)
511 48: MoveLoc[1](Arg1: ID)
512 49: MoveLoc[2](Arg2: ID)
513 50: MoveLoc[3](Arg3: &TxContext)
514 51: Call tx_context::epoch(&TxContext): u64
515 52: MoveLoc[5](loc1: u64)
516 53: MoveLoc[6](loc2: u64)
517 54: Add
518 55: LdFalse
519 56: Pack[1](StakeEvent)
520 57: Call event::emit<StakeEvent>(StakeEvent)
521 58: MoveLoc[4](loc0: &mut Account)
522 59: Call account::settle(&mut Account): Balances * Balances
523 60: Ret
524}
525
526public(friend) process_proposal(Arg0: &mut State, Arg1: ID, Arg2: ID, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: &TxContext) {
527L7: loc0: &mut Account
528L8: loc1: bool
529L9: loc2: u64
530B0:
531 0: CopyLoc[0](Arg0: &mut State)
532 1: MutBorrowField[0](State.governance: Governance)
533 2: CopyLoc[6](Arg6: &TxContext)
534 3: Call governance::update(&mut Governance, &TxContext)
535 4: CopyLoc[0](Arg0: &mut State)
536 5: MutBorrowField[1](State.history: History)
537 6: CopyLoc[0](Arg0: &mut State)
538 7: ImmBorrowField[0](State.governance: Governance)
539 8: Call governance::trade_params(&Governance): TradeParams
540 9: CopyLoc[1](Arg1: ID)
541 10: CopyLoc[6](Arg6: &TxContext)
542 11: Call history::update(&mut History, TradeParams, ID, &TxContext)
543 12: CopyLoc[0](Arg0: &mut State)
544 13: CopyLoc[2](Arg2: ID)
545 14: CopyLoc[6](Arg6: &TxContext)
546 15: Call update_account(&mut State, ID, &TxContext)
547 16: CopyLoc[0](Arg0: &mut State)
548 17: MutBorrowField[2](State.accounts: Table<ID, Account>)
549 18: CopyLoc[2](Arg2: ID)
550 19: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
551 20: StLoc[7](loc0: &mut Account)
552 21: CopyLoc[7](loc0: &mut Account)
553 22: FreezeRef
554 23: Call account::active_stake(&Account): u64
555 24: StLoc[9](loc2: u64)
556 25: CopyLoc[7](loc0: &mut Account)
557 26: FreezeRef
558 27: Call account::created_proposal(&Account): bool
559 28: StLoc[8](loc1: bool)
560 29: CopyLoc[9](loc2: u64)
561 30: LdU64(0)
562 31: Gt
563 32: BrFalse(34)
564B1:
565 33: Branch(42)
566B2:
567 34: MoveLoc[0](Arg0: &mut State)
568 35: Pop
569 36: MoveLoc[6](Arg6: &TxContext)
570 37: Pop
571 38: MoveLoc[7](loc0: &mut Account)
572 39: Pop
573 40: LdConst[0](u64: 1)
574 41: Abort
575B3:
576 42: MoveLoc[8](loc1: bool)
577 43: Not
578 44: BrFalse(46)
579B4:
580 45: Branch(54)
581B5:
582 46: MoveLoc[0](Arg0: &mut State)
583 47: Pop
584 48: MoveLoc[6](Arg6: &TxContext)
585 49: Pop
586 50: MoveLoc[7](loc0: &mut Account)
587 51: Pop
588 52: LdConst[2](u64: 3)
589 53: Abort
590B6:
591 54: MoveLoc[7](loc0: &mut Account)
592 55: LdTrue
593 56: Call account::set_created_proposal(&mut Account, bool)
594 57: CopyLoc[0](Arg0: &mut State)
595 58: MutBorrowField[0](State.governance: Governance)
596 59: CopyLoc[3](Arg3: u64)
597 60: CopyLoc[4](Arg4: u64)
598 61: CopyLoc[5](Arg5: u64)
599 62: MoveLoc[9](loc2: u64)
600 63: CopyLoc[2](Arg2: ID)
601 64: Call governance::add_proposal(&mut Governance, u64, u64, u64, u64, ID)
602 65: MoveLoc[0](Arg0: &mut State)
603 66: CopyLoc[1](Arg1: ID)
604 67: CopyLoc[2](Arg2: ID)
605 68: CopyLoc[2](Arg2: ID)
606 69: CopyLoc[6](Arg6: &TxContext)
607 70: Call process_vote(&mut State, ID, ID, ID, &TxContext)
608 71: MoveLoc[1](Arg1: ID)
609 72: MoveLoc[2](Arg2: ID)
610 73: MoveLoc[6](Arg6: &TxContext)
611 74: Call tx_context::epoch(&TxContext): u64
612 75: MoveLoc[3](Arg3: u64)
613 76: MoveLoc[4](Arg4: u64)
614 77: MoveLoc[5](Arg5: u64)
615 78: Pack[2](ProposalEvent)
616 79: Call event::emit<ProposalEvent>(ProposalEvent)
617 80: Ret
618}
619
620public(friend) process_vote(Arg0: &mut State, Arg1: ID, Arg2: ID, Arg3: ID, Arg4: &TxContext) {
621L5: loc0: &mut Account
622L6: loc1: Option<ID>
623B0:
624 0: CopyLoc[0](Arg0: &mut State)
625 1: MutBorrowField[0](State.governance: Governance)
626 2: CopyLoc[4](Arg4: &TxContext)
627 3: Call governance::update(&mut Governance, &TxContext)
628 4: CopyLoc[0](Arg0: &mut State)
629 5: MutBorrowField[1](State.history: History)
630 6: CopyLoc[0](Arg0: &mut State)
631 7: ImmBorrowField[0](State.governance: Governance)
632 8: Call governance::trade_params(&Governance): TradeParams
633 9: CopyLoc[1](Arg1: ID)
634 10: CopyLoc[4](Arg4: &TxContext)
635 11: Call history::update(&mut History, TradeParams, ID, &TxContext)
636 12: CopyLoc[0](Arg0: &mut State)
637 13: CopyLoc[2](Arg2: ID)
638 14: CopyLoc[4](Arg4: &TxContext)
639 15: Call update_account(&mut State, ID, &TxContext)
640 16: CopyLoc[0](Arg0: &mut State)
641 17: MutBorrowField[2](State.accounts: Table<ID, Account>)
642 18: CopyLoc[2](Arg2: ID)
643 19: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
644 20: StLoc[5](loc0: &mut Account)
645 21: CopyLoc[5](loc0: &mut Account)
646 22: FreezeRef
647 23: Call account::active_stake(&Account): u64
648 24: LdU64(0)
649 25: Gt
650 26: BrFalse(28)
651B1:
652 27: Branch(36)
653B2:
654 28: MoveLoc[0](Arg0: &mut State)
655 29: Pop
656 30: MoveLoc[4](Arg4: &TxContext)
657 31: Pop
658 32: MoveLoc[5](loc0: &mut Account)
659 33: Pop
660 34: LdConst[0](u64: 1)
661 35: Abort
662B3:
663 36: CopyLoc[5](loc0: &mut Account)
664 37: CopyLoc[3](Arg3: ID)
665 38: Call option::some<ID>(ID): Option<ID>
666 39: Call account::set_voted_proposal(&mut Account, Option<ID>): Option<ID>
667 40: StLoc[6](loc1: Option<ID>)
668 41: MoveLoc[0](Arg0: &mut State)
669 42: MutBorrowField[0](State.governance: Governance)
670 43: CopyLoc[6](loc1: Option<ID>)
671 44: CopyLoc[3](Arg3: ID)
672 45: Call option::some<ID>(ID): Option<ID>
673 46: CopyLoc[5](loc0: &mut Account)
674 47: FreezeRef
675 48: Call account::active_stake(&Account): u64
676 49: Call governance::adjust_vote(&mut Governance, Option<ID>, Option<ID>, u64)
677 50: MoveLoc[1](Arg1: ID)
678 51: MoveLoc[2](Arg2: ID)
679 52: MoveLoc[4](Arg4: &TxContext)
680 53: Call tx_context::epoch(&TxContext): u64
681 54: MoveLoc[6](loc1: Option<ID>)
682 55: MoveLoc[3](Arg3: ID)
683 56: MoveLoc[5](loc0: &mut Account)
684 57: FreezeRef
685 58: Call account::active_stake(&Account): u64
686 59: Pack[3](VoteEvent)
687 60: Call event::emit<VoteEvent>(VoteEvent)
688 61: Ret
689}
690
691public(friend) process_claim_rebates<Ty0, Ty1>(Arg0: &mut State, Arg1: ID, Arg2: &BalanceManager, Arg3: &TxContext): Balances * Balances {
692L4: loc0: &mut Account
693L5: loc1: ID
694L6: loc2: Balances
695B0:
696 0: CopyLoc[2](Arg2: &BalanceManager)
697 1: Call balance_manager::id(&BalanceManager): ID
698 2: StLoc[5](loc1: ID)
699 3: CopyLoc[0](Arg0: &mut State)
700 4: MutBorrowField[0](State.governance: Governance)
701 5: CopyLoc[3](Arg3: &TxContext)
702 6: Call governance::update(&mut Governance, &TxContext)
703 7: CopyLoc[0](Arg0: &mut State)
704 8: MutBorrowField[1](State.history: History)
705 9: CopyLoc[0](Arg0: &mut State)
706 10: ImmBorrowField[0](State.governance: Governance)
707 11: Call governance::trade_params(&Governance): TradeParams
708 12: CopyLoc[1](Arg1: ID)
709 13: CopyLoc[3](Arg3: &TxContext)
710 14: Call history::update(&mut History, TradeParams, ID, &TxContext)
711 15: CopyLoc[0](Arg0: &mut State)
712 16: CopyLoc[5](loc1: ID)
713 17: CopyLoc[3](Arg3: &TxContext)
714 18: Call update_account(&mut State, ID, &TxContext)
715 19: MoveLoc[0](Arg0: &mut State)
716 20: MutBorrowField[2](State.accounts: Table<ID, Account>)
717 21: CopyLoc[5](loc1: ID)
718 22: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
719 23: StLoc[4](loc0: &mut Account)
720 24: CopyLoc[4](loc0: &mut Account)
721 25: Call account::claim_rebates(&mut Account): Balances
722 26: StLoc[6](loc2: Balances)
723 27: MoveLoc[1](Arg1: ID)
724 28: MoveLoc[5](loc1: ID)
725 29: MoveLoc[3](Arg3: &TxContext)
726 30: Call tx_context::epoch(&TxContext): u64
727 31: CopyLoc[6](loc2: Balances)
728 32: Pack[4](RebateEventV2)
729 33: Call event::emit<RebateEventV2>(RebateEventV2)
730 34: CopyLoc[2](Arg2: &BalanceManager)
731 35: Call type_name::get<DEEP>(): TypeName
732 36: ImmBorrowLoc[6](loc2: Balances)
733 37: Call balances::deep(&Balances): u64
734 38: LdTrue
735 39: Call balance_manager::emit_balance_event(&BalanceManager, TypeName, u64, bool)
736 40: CopyLoc[2](Arg2: &BalanceManager)
737 41: Call type_name::get<Ty0>(): TypeName
738 42: ImmBorrowLoc[6](loc2: Balances)
739 43: Call balances::base(&Balances): u64
740 44: LdTrue
741 45: Call balance_manager::emit_balance_event(&BalanceManager, TypeName, u64, bool)
742 46: MoveLoc[2](Arg2: &BalanceManager)
743 47: Call type_name::get<Ty1>(): TypeName
744 48: ImmBorrowLoc[6](loc2: Balances)
745 49: Call balances::quote(&Balances): u64
746 50: LdTrue
747 51: Call balance_manager::emit_balance_event(&BalanceManager, TypeName, u64, bool)
748 52: MoveLoc[4](loc0: &mut Account)
749 53: Call account::settle(&mut Account): Balances * Balances
750 54: Ret
751}
752
753public(friend) governance(Arg0: &State): &Governance {
754B0:
755 0: MoveLoc[0](Arg0: &State)
756 1: ImmBorrowField[0](State.governance: Governance)
757 2: Ret
758}
759
760public(friend) governance_mut(Arg0: &mut State, Arg1: &TxContext): &mut Governance {
761B0:
762 0: CopyLoc[0](Arg0: &mut State)
763 1: MutBorrowField[0](State.governance: Governance)
764 2: MoveLoc[1](Arg1: &TxContext)
765 3: Call governance::update(&mut Governance, &TxContext)
766 4: MoveLoc[0](Arg0: &mut State)
767 5: MutBorrowField[0](State.governance: Governance)
768 6: Ret
769}
770
771public(friend) account_exists(Arg0: &State, Arg1: ID): bool {
772B0:
773 0: MoveLoc[0](Arg0: &State)
774 1: ImmBorrowField[2](State.accounts: Table<ID, Account>)
775 2: MoveLoc[1](Arg1: ID)
776 3: Call table::contains<ID, Account>(&Table<ID, Account>, ID): bool
777 4: Ret
778}
779
780public(friend) account(Arg0: &State, Arg1: ID): &Account {
781B0:
782 0: MoveLoc[0](Arg0: &State)
783 1: ImmBorrowField[2](State.accounts: Table<ID, Account>)
784 2: MoveLoc[1](Arg1: ID)
785 3: Call table::borrow<ID, Account>(&Table<ID, Account>, ID): &Account
786 4: Ret
787}
788
789public(friend) history_mut(Arg0: &mut State): &mut History {
790B0:
791 0: MoveLoc[0](Arg0: &mut State)
792 1: MutBorrowField[1](State.history: History)
793 2: Ret
794}
795
796public(friend) history(Arg0: &State): &History {
797B0:
798 0: MoveLoc[0](Arg0: &State)
799 1: ImmBorrowField[1](State.history: History)
800 2: Ret
801}
802
803process_fills(Arg0: &mut State, Arg1: &mut vector<Fill>, Arg2: &TxContext) {
804L3: loc0: OrderDeepPrice
805L4: loc1: &mut Account
806L5: loc2: u64
807L6: loc3: Balances
808L7: loc4: &mut Fill
809L8: loc5: u64
810L9: loc6: u64
811L10: loc7: ID
812L11: loc8: bool
813L12: loc9: u64
814L13: loc10: u64
815B0:
816 0: LdU64(0)
817 1: StLoc[9](loc6: u64)
818 2: CopyLoc[1](Arg1: &mut vector<Fill>)
819 3: FreezeRef
820 4: VecLen(92)
821 5: StLoc[12](loc9: u64)
822B1:
823 6: CopyLoc[9](loc6: u64)
824 7: CopyLoc[12](loc9: u64)
825 8: Lt
826 9: BrFalse(95)
827B2:
828 10: Branch(11)
829B3:
830 11: CopyLoc[1](Arg1: &mut vector<Fill>)
831 12: CopyLoc[9](loc6: u64)
832 13: VecMutBorrow(92)
833 14: StLoc[7](loc4: &mut Fill)
834 15: CopyLoc[7](loc4: &mut Fill)
835 16: FreezeRef
836 17: Call fill::balance_manager_id(&Fill): ID
837 18: StLoc[10](loc7: ID)
838 19: CopyLoc[0](Arg0: &mut State)
839 20: CopyLoc[10](loc7: ID)
840 21: CopyLoc[2](Arg2: &TxContext)
841 22: Call update_account(&mut State, ID, &TxContext)
842 23: CopyLoc[0](Arg0: &mut State)
843 24: MutBorrowField[2](State.accounts: Table<ID, Account>)
844 25: MoveLoc[10](loc7: ID)
845 26: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
846 27: StLoc[4](loc1: &mut Account)
847 28: CopyLoc[4](loc1: &mut Account)
848 29: CopyLoc[7](loc4: &mut Fill)
849 30: FreezeRef
850 31: Call account::process_maker_fill(&mut Account, &Fill)
851 32: CopyLoc[7](loc4: &mut Fill)
852 33: FreezeRef
853 34: Call fill::base_quantity(&Fill): u64
854 35: StLoc[5](loc2: u64)
855 36: CopyLoc[7](loc4: &mut Fill)
856 37: FreezeRef
857 38: Call fill::quote_quantity(&Fill): u64
858 39: StLoc[13](loc10: u64)
859 40: CopyLoc[0](Arg0: &mut State)
860 41: ImmBorrowField[1](State.history: History)
861 42: CopyLoc[7](loc4: &mut Fill)
862 43: FreezeRef
863 44: Call fill::maker_epoch(&Fill): u64
864 45: Call history::historic_maker_fee(&History, u64): u64
865 46: StLoc[8](loc5: u64)
866 47: CopyLoc[7](loc4: &mut Fill)
867 48: FreezeRef
868 49: Call fill::taker_is_bid(&Fill): bool
869 50: Not
870 51: StLoc[11](loc8: bool)
871 52: CopyLoc[7](loc4: &mut Fill)
872 53: FreezeRef
873 54: Call fill::maker_deep_price(&Fill): OrderDeepPrice
874 55: StLoc[3](loc0: OrderDeepPrice)
875 56: ImmBorrowLoc[3](loc0: OrderDeepPrice)
876 57: CopyLoc[5](loc2: u64)
877 58: MoveLoc[13](loc10: u64)
878 59: MoveLoc[11](loc8: bool)
879 60: Call deep_price::fee_quantity(&OrderDeepPrice, u64, u64, bool): Balances
880 61: StLoc[6](loc3: Balances)
881 62: MutBorrowLoc[6](loc3: Balances)
882 63: MoveLoc[8](loc5: u64)
883 64: Call balances::mul(&mut Balances, u64)
884 65: CopyLoc[7](loc4: &mut Fill)
885 66: FreezeRef
886 67: Call fill::expired(&Fill): bool
887 68: Not
888 69: BrFalse(85)
889B4:
890 70: MoveLoc[7](loc4: &mut Fill)
891 71: ImmBorrowLoc[6](loc3: Balances)
892 72: Call fill::set_fill_maker_fee(&mut Fill, &Balances)
893 73: CopyLoc[0](Arg0: &mut State)
894 74: MutBorrowField[1](State.history: History)
895 75: MoveLoc[5](loc2: u64)
896 76: MoveLoc[4](loc1: &mut Account)
897 77: FreezeRef
898 78: Call account::active_stake(&Account): u64
899 79: Call history::add_volume(&mut History, u64, u64)
900 80: CopyLoc[0](Arg0: &mut State)
901 81: MutBorrowField[1](State.history: History)
902 82: MoveLoc[6](loc3: Balances)
903 83: Call history::add_total_fees_collected(&mut History, Balances)
904 84: Branch(90)
905B5:
906 85: MoveLoc[7](loc4: &mut Fill)
907 86: Pop
908 87: MoveLoc[4](loc1: &mut Account)
909 88: MoveLoc[6](loc3: Balances)
910 89: Call account::add_settled_balances(&mut Account, Balances)
911B6:
912 90: MoveLoc[9](loc6: u64)
913 91: LdU64(1)
914 92: Add
915 93: StLoc[9](loc6: u64)
916 94: Branch(6)
917B7:
918 95: MoveLoc[0](Arg0: &mut State)
919 96: Pop
920 97: MoveLoc[1](Arg1: &mut vector<Fill>)
921 98: Pop
922 99: MoveLoc[2](Arg2: &TxContext)
923 100: Pop
924 101: Ret
925}
926
927update_account(Arg0: &mut State, Arg1: ID, Arg2: &TxContext) {
928L3: loc0: bool
929L4: loc1: &mut Account
930L5: loc2: u64
931L6: loc3: u128
932L7: loc4: u64
933L8: loc5: Balances
934B0:
935 0: CopyLoc[0](Arg0: &mut State)
936 1: ImmBorrowField[2](State.accounts: Table<ID, Account>)
937 2: CopyLoc[1](Arg1: ID)
938 3: Call table::contains<ID, Account>(&Table<ID, Account>, ID): bool
939 4: Not
940 5: BrFalse(12)
941B1:
942 6: CopyLoc[0](Arg0: &mut State)
943 7: MutBorrowField[2](State.accounts: Table<ID, Account>)
944 8: CopyLoc[1](Arg1: ID)
945 9: CopyLoc[2](Arg2: &TxContext)
946 10: Call account::empty(&TxContext): Account
947 11: Call table::add<ID, Account>(&mut Table<ID, Account>, ID, Account)
948B2:
949 12: CopyLoc[0](Arg0: &mut State)
950 13: MutBorrowField[2](State.accounts: Table<ID, Account>)
951 14: MoveLoc[1](Arg1: ID)
952 15: Call table::borrow_mut<ID, Account>(&mut Table<ID, Account>, ID): &mut Account
953 16: StLoc[4](loc1: &mut Account)
954 17: CopyLoc[4](loc1: &mut Account)
955 18: MoveLoc[2](Arg2: &TxContext)
956 19: Call account::update(&mut Account, &TxContext): u64 * u128 * u64
957 20: StLoc[5](loc2: u64)
958 21: StLoc[6](loc3: u128)
959 22: StLoc[7](loc4: u64)
960 23: CopyLoc[7](loc4: u64)
961 24: LdU64(0)
962 25: Gt
963 26: BrFalse(39)
964B3:
965 27: CopyLoc[6](loc3: u128)
966 28: LdU128(0)
967 29: Gt
968 30: BrFalse(36)
969B4:
970 31: CopyLoc[5](loc2: u64)
971 32: LdU64(0)
972 33: Gt
973 34: StLoc[3](loc0: bool)
974 35: Branch(41)
975B5:
976 36: LdFalse
977 37: StLoc[3](loc0: bool)
978 38: Branch(41)
979B6:
980 39: LdFalse
981 40: StLoc[3](loc0: bool)
982B7:
983 41: MoveLoc[3](loc0: bool)
984 42: BrFalse(54)
985B8:
986 43: MoveLoc[0](Arg0: &mut State)
987 44: MutBorrowField[1](State.history: History)
988 45: MoveLoc[7](loc4: u64)
989 46: MoveLoc[6](loc3: u128)
990 47: MoveLoc[5](loc2: u64)
991 48: Call history::calculate_rebate_amount(&mut History, u64, u128, u64): Balances
992 49: StLoc[8](loc5: Balances)
993 50: MoveLoc[4](loc1: &mut Account)
994 51: MoveLoc[8](loc5: Balances)
995 52: Call account::add_rebates(&mut Account, Balances)
996 53: Branch(58)
997B9:
998 54: MoveLoc[0](Arg0: &mut State)
999 55: Pop
1000 56: MoveLoc[4](loc1: &mut Account)
1001 57: Pop
1002B10:
1003 58: Ret
1004}
1005
1006Constants [
1007 0 => u64: 1
1008 1 => u64: 2
1009 2 => u64: 3
1010]
1011}
1012
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/trade_params.mvb87 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.trade_params {
3
4struct TradeParams has copy, drop, store {
5 taker_fee: u64,
6 maker_fee: u64,
7 stake_required: u64
8}
9
10public(friend) new(Arg0: u64, Arg1: u64, Arg2: u64): TradeParams {
11B0:
12 0: MoveLoc[0](Arg0: u64)
13 1: MoveLoc[1](Arg1: u64)
14 2: MoveLoc[2](Arg2: u64)
15 3: Pack[0](TradeParams)
16 4: Ret
17}
18
19public(friend) maker_fee(Arg0: &TradeParams): u64 {
20B0:
21 0: MoveLoc[0](Arg0: &TradeParams)
22 1: ImmBorrowField[0](TradeParams.maker_fee: u64)
23 2: ReadRef
24 3: Ret
25}
26
27public(friend) taker_fee(Arg0: &TradeParams): u64 {
28B0:
29 0: MoveLoc[0](Arg0: &TradeParams)
30 1: ImmBorrowField[1](TradeParams.taker_fee: u64)
31 2: ReadRef
32 3: Ret
33}
34
35public(friend) taker_fee_for_user(Arg0: &TradeParams, Arg1: u64, Arg2: u128): u64 {
36L3: loc0: bool
37L4: loc1: u64
38B0:
39 0: MoveLoc[1](Arg1: u64)
40 1: CopyLoc[0](Arg0: &TradeParams)
41 2: ImmBorrowField[2](TradeParams.stake_required: u64)
42 3: ReadRef
43 4: Ge
44 5: BrFalse(14)
45B1:
46 6: MoveLoc[2](Arg2: u128)
47 7: CopyLoc[0](Arg0: &TradeParams)
48 8: ImmBorrowField[2](TradeParams.stake_required: u64)
49 9: ReadRef
50 10: CastU128
51 11: Ge
52 12: StLoc[3](loc0: bool)
53 13: Branch(16)
54B2:
55 14: LdFalse
56 15: StLoc[3](loc0: bool)
57B3:
58 16: MoveLoc[3](loc0: bool)
59 17: BrFalse(25)
60B4:
61 18: MoveLoc[0](Arg0: &TradeParams)
62 19: ImmBorrowField[1](TradeParams.taker_fee: u64)
63 20: ReadRef
64 21: LdU64(2)
65 22: Div
66 23: StLoc[4](loc1: u64)
67 24: Branch(29)
68B5:
69 25: MoveLoc[0](Arg0: &TradeParams)
70 26: ImmBorrowField[1](TradeParams.taker_fee: u64)
71 27: ReadRef
72 28: StLoc[4](loc1: u64)
73B6:
74 29: MoveLoc[4](loc1: u64)
75 30: Ret
76}
77
78public(friend) stake_required(Arg0: &TradeParams): u64 {
79B0:
80 0: MoveLoc[0](Arg0: &TradeParams)
81 1: ImmBorrowField[2](TradeParams.stake_required: u64)
82 2: ReadRef
83 3: Ret
84}
85
86}
87
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/utils.mvb135 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.utils {
3use 0000000000000000000000000000000000000000000000000000000000000001::vector;
4
5public(friend) pop_until<Ty0>(Arg0: &mut vector<Ty0>, Arg1: u64): vector<Ty0> {
6L2: loc0: vector<Ty0>
7B0:
8 0: VecPack(4, 0)
9 1: StLoc[2](loc0: vector<Ty0>)
10B1:
11 2: CopyLoc[0](Arg0: &mut vector<Ty0>)
12 3: FreezeRef
13 4: VecLen(4)
14 5: CopyLoc[1](Arg1: u64)
15 6: Gt
16 7: BrFalse(14)
17B2:
18 8: Branch(9)
19B3:
20 9: MutBorrowLoc[2](loc0: vector<Ty0>)
21 10: CopyLoc[0](Arg0: &mut vector<Ty0>)
22 11: VecPopBack(4)
23 12: VecPushBack(4)
24 13: Branch(2)
25B4:
26 14: MoveLoc[0](Arg0: &mut vector<Ty0>)
27 15: Pop
28 16: MutBorrowLoc[2](loc0: vector<Ty0>)
29 17: Call vector::reverse<Ty0>(&mut vector<Ty0>)
30 18: MoveLoc[2](loc0: vector<Ty0>)
31 19: Ret
32}
33
34public(friend) pop_n<Ty0>(Arg0: &mut vector<Ty0>, Arg1: u64): vector<Ty0> {
35L2: loc0: u64
36L3: loc1: u64
37L4: loc2: vector<Ty0>
38L5: loc3: u64
39B0:
40 0: VecPack(4, 0)
41 1: StLoc[4](loc2: vector<Ty0>)
42 2: MoveLoc[1](Arg1: u64)
43 3: StLoc[2](loc0: u64)
44 4: LdU64(0)
45 5: StLoc[3](loc1: u64)
46 6: MoveLoc[2](loc0: u64)
47 7: StLoc[5](loc3: u64)
48B1:
49 8: CopyLoc[3](loc1: u64)
50 9: CopyLoc[5](loc3: u64)
51 10: Lt
52 11: BrFalse(23)
53B2:
54 12: CopyLoc[3](loc1: u64)
55 13: Pop
56 14: MutBorrowLoc[4](loc2: vector<Ty0>)
57 15: CopyLoc[0](Arg0: &mut vector<Ty0>)
58 16: VecPopBack(4)
59 17: VecPushBack(4)
60 18: MoveLoc[3](loc1: u64)
61 19: LdU64(1)
62 20: Add
63 21: StLoc[3](loc1: u64)
64 22: Branch(8)
65B3:
66 23: MoveLoc[0](Arg0: &mut vector<Ty0>)
67 24: Pop
68 25: MutBorrowLoc[4](loc2: vector<Ty0>)
69 26: Call vector::reverse<Ty0>(&mut vector<Ty0>)
70 27: MoveLoc[4](loc2: vector<Ty0>)
71 28: Ret
72}
73
74public(friend) encode_order_id(Arg0: bool, Arg1: u64, Arg2: u64): u128 {
75L3: loc0: u128
76B0:
77 0: MoveLoc[0](Arg0: bool)
78 1: BrFalse(11)
79B1:
80 2: MoveLoc[1](Arg1: u64)
81 3: CastU128
82 4: LdU8(64)
83 5: Shl
84 6: MoveLoc[2](Arg2: u64)
85 7: CastU128
86 8: Add
87 9: StLoc[3](loc0: u128)
88 10: Branch(21)
89B2:
90 11: LdU128(170141183460469231731687303715884105728)
91 12: MoveLoc[1](Arg1: u64)
92 13: CastU128
93 14: LdU8(64)
94 15: Shl
95 16: Add
96 17: MoveLoc[2](Arg2: u64)
97 18: CastU128
98 19: Add
99 20: StLoc[3](loc0: u128)
100B3:
101 21: MoveLoc[3](loc0: u128)
102 22: Ret
103}
104
105public(friend) decode_order_id(Arg0: u128): bool * u64 * u64 {
106L1: loc0: bool
107L2: loc1: u64
108L3: loc2: u64
109B0:
110 0: CopyLoc[0](Arg0: u128)
111 1: LdU8(127)
112 2: Shr
113 3: LdU128(0)
114 4: Eq
115 5: StLoc[1](loc0: bool)
116 6: CopyLoc[0](Arg0: u128)
117 7: LdU8(64)
118 8: Shr
119 9: CastU64
120 10: LdU64(9223372036854775807)
121 11: BitAnd
122 12: StLoc[3](loc2: u64)
123 13: MoveLoc[0](Arg0: u128)
124 14: LdU128(18446744073709551615)
125 15: BitAnd
126 16: CastU64
127 17: StLoc[2](loc1: u64)
128 18: MoveLoc[1](loc0: bool)
129 19: MoveLoc[3](loc2: u64)
130 20: MoveLoc[2](loc1: u64)
131 21: Ret
132}
133
134}
135
0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a/bytecode/vault.mvb463 lines
1// Move bytecode v6
2module 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809.vault {
3use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balance_manager;
4use 2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::balances;
5use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
6use 0000000000000000000000000000000000000000000000000000000000000002::balance;
7use 0000000000000000000000000000000000000000000000000000000000000002::coin;
8use 0000000000000000000000000000000000000000000000000000000000000002::event;
9use 0000000000000000000000000000000000000000000000000000000000000002::object;
10use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
11use deeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep;
12
13struct Vault<phantom Ty0, phantom Ty1> has store {
14 base_balance: Balance<Ty0>,
15 quote_balance: Balance<Ty1>,
16 deep_balance: Balance<DEEP>
17}
18
19struct FlashLoan {
20 pool_id: ID,
21 borrow_quantity: u64,
22 type_name: TypeName
23}
24
25struct FlashLoanBorrowed has copy, drop {
26 pool_id: ID,
27 borrow_quantity: u64,
28 type_name: TypeName
29}
30
31public(friend) balances<Ty0, Ty1>(Arg0: &Vault<Ty0, Ty1>): u64 * u64 * u64 {
32B0:
33 0: CopyLoc[0](Arg0: &Vault<Ty0, Ty1>)
34 1: ImmBorrowFieldGeneric[0](Vault.base_balance: Balance<Ty0>)
35 2: Call balance::value<Ty0>(&Balance<Ty0>): u64
36 3: CopyLoc[0](Arg0: &Vault<Ty0, Ty1>)
37 4: ImmBorrowFieldGeneric[1](Vault.quote_balance: Balance<Ty1>)
38 5: Call balance::value<Ty1>(&Balance<Ty1>): u64
39 6: MoveLoc[0](Arg0: &Vault<Ty0, Ty1>)
40 7: ImmBorrowFieldGeneric[2](Vault.deep_balance: Balance<DEEP>)
41 8: Call balance::value<DEEP>(&Balance<DEEP>): u64
42 9: Ret
43}
44
45public(friend) empty<Ty0, Ty1>(): Vault<Ty0, Ty1> {
46B0:
47 0: Call balance::zero<Ty0>(): Balance<Ty0>
48 1: Call balance::zero<Ty1>(): Balance<Ty1>
49 2: Call balance::zero<DEEP>(): Balance<DEEP>
50 3: PackGeneric[0](Vault<Ty0, Ty1>)
51 4: Ret
52}
53
54public(friend) settle_balance_manager<Ty0, Ty1>(Arg0: &mut Vault<Ty0, Ty1>, Arg1: Balances, Arg2: Balances, Arg3: &mut BalanceManager, Arg4: &TradeProof) {
55L5: loc0: Balance<Ty0>
56L6: loc1: Balance<Ty1>
57L7: loc2: Balance<DEEP>
58L8: loc3: Balance<Ty0>
59L9: loc4: Balance<Ty1>
60L10: loc5: Balance<DEEP>
61B0:
62 0: CopyLoc[3](Arg3: &mut BalanceManager)
63 1: FreezeRef
64 2: CopyLoc[4](Arg4: &TradeProof)
65 3: Call balance_manager::validate_proof(&BalanceManager, &TradeProof)
66 4: ImmBorrowLoc[1](Arg1: Balances)
67 5: Call balances::base(&Balances): u64
68 6: ImmBorrowLoc[2](Arg2: Balances)
69 7: Call balances::base(&Balances): u64
70 8: Gt
71 9: BrFalse(23)
72B1:
73 10: CopyLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
74 11: MutBorrowFieldGeneric[0](Vault.base_balance: Balance<Ty0>)
75 12: ImmBorrowLoc[1](Arg1: Balances)
76 13: Call balances::base(&Balances): u64
77 14: ImmBorrowLoc[2](Arg2: Balances)
78 15: Call balances::base(&Balances): u64
79 16: Sub
80 17: Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
81 18: StLoc[5](loc0: Balance<Ty0>)
82 19: CopyLoc[3](Arg3: &mut BalanceManager)
83 20: CopyLoc[4](Arg4: &TradeProof)
84 21: MoveLoc[5](loc0: Balance<Ty0>)
85 22: Call balance_manager::deposit_with_proof<Ty0>(&mut BalanceManager, &TradeProof, Balance<Ty0>)
86B2:
87 23: ImmBorrowLoc[1](Arg1: Balances)
88 24: Call balances::quote(&Balances): u64
89 25: ImmBorrowLoc[2](Arg2: Balances)
90 26: Call balances::quote(&Balances): u64
91 27: Gt
92 28: BrFalse(42)
93B3:
94 29: CopyLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
95 30: MutBorrowFieldGeneric[1](Vault.quote_balance: Balance<Ty1>)
96 31: ImmBorrowLoc[1](Arg1: Balances)
97 32: Call balances::quote(&Balances): u64
98 33: ImmBorrowLoc[2](Arg2: Balances)
99 34: Call balances::quote(&Balances): u64
100 35: Sub
101 36: Call balance::split<Ty1>(&mut Balance<Ty1>, u64): Balance<Ty1>
102 37: StLoc[6](loc1: Balance<Ty1>)
103 38: CopyLoc[3](Arg3: &mut BalanceManager)
104 39: CopyLoc[4](Arg4: &TradeProof)
105 40: MoveLoc[6](loc1: Balance<Ty1>)
106 41: Call balance_manager::deposit_with_proof<Ty1>(&mut BalanceManager, &TradeProof, Balance<Ty1>)
107B4:
108 42: ImmBorrowLoc[1](Arg1: Balances)
109 43: Call balances::deep(&Balances): u64
110 44: ImmBorrowLoc[2](Arg2: Balances)
111 45: Call balances::deep(&Balances): u64
112 46: Gt
113 47: BrFalse(61)
114B5:
115 48: CopyLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
116 49: MutBorrowFieldGeneric[2](Vault.deep_balance: Balance<DEEP>)
117 50: ImmBorrowLoc[1](Arg1: Balances)
118 51: Call balances::deep(&Balances): u64
119 52: ImmBorrowLoc[2](Arg2: Balances)
120 53: Call balances::deep(&Balances): u64
121 54: Sub
122 55: Call balance::split<DEEP>(&mut Balance<DEEP>, u64): Balance<DEEP>
123 56: StLoc[7](loc2: Balance<DEEP>)
124 57: CopyLoc[3](Arg3: &mut BalanceManager)
125 58: CopyLoc[4](Arg4: &TradeProof)
126 59: MoveLoc[7](loc2: Balance<DEEP>)
127 60: Call balance_manager::deposit_with_proof<DEEP>(&mut BalanceManager, &TradeProof, Balance<DEEP>)
128B6:
129 61: ImmBorrowLoc[2](Arg2: Balances)
130 62: Call balances::base(&Balances): u64
131 63: ImmBorrowLoc[1](Arg1: Balances)
132 64: Call balances::base(&Balances): u64
133 65: Gt
134 66: BrFalse(82)
135B7:
136 67: CopyLoc[3](Arg3: &mut BalanceManager)
137 68: CopyLoc[4](Arg4: &TradeProof)
138 69: ImmBorrowLoc[2](Arg2: Balances)
139 70: Call balances::base(&Balances): u64
140 71: ImmBorrowLoc[1](Arg1: Balances)
141 72: Call balances::base(&Balances): u64
142 73: Sub
143 74: LdFalse
144 75: Call balance_manager::withdraw_with_proof<Ty0>(&mut BalanceManager, &TradeProof, u64, bool): Balance<Ty0>
145 76: StLoc[8](loc3: Balance<Ty0>)
146 77: CopyLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
147 78: MutBorrowFieldGeneric[0](Vault.base_balance: Balance<Ty0>)
148 79: MoveLoc[8](loc3: Balance<Ty0>)
149 80: Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
150 81: Pop
151B8:
152 82: ImmBorrowLoc[2](Arg2: Balances)
153 83: Call balances::quote(&Balances): u64
154 84: ImmBorrowLoc[1](Arg1: Balances)
155 85: Call balances::quote(&Balances): u64
156 86: Gt
157 87: BrFalse(103)
158B9:
159 88: CopyLoc[3](Arg3: &mut BalanceManager)
160 89: CopyLoc[4](Arg4: &TradeProof)
161 90: ImmBorrowLoc[2](Arg2: Balances)
162 91: Call balances::quote(&Balances): u64
163 92: ImmBorrowLoc[1](Arg1: Balances)
164 93: Call balances::quote(&Balances): u64
165 94: Sub
166 95: LdFalse
167 96: Call balance_manager::withdraw_with_proof<Ty1>(&mut BalanceManager, &TradeProof, u64, bool): Balance<Ty1>
168 97: StLoc[9](loc4: Balance<Ty1>)
169 98: CopyLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
170 99: MutBorrowFieldGeneric[1](Vault.quote_balance: Balance<Ty1>)
171 100: MoveLoc[9](loc4: Balance<Ty1>)
172 101: Call balance::join<Ty1>(&mut Balance<Ty1>, Balance<Ty1>): u64
173 102: Pop
174B10:
175 103: ImmBorrowLoc[2](Arg2: Balances)
176 104: Call balances::deep(&Balances): u64
177 105: ImmBorrowLoc[1](Arg1: Balances)
178 106: Call balances::deep(&Balances): u64
179 107: Gt
180 108: BrFalse(125)
181B11:
182 109: MoveLoc[3](Arg3: &mut BalanceManager)
183 110: MoveLoc[4](Arg4: &TradeProof)
184 111: ImmBorrowLoc[2](Arg2: Balances)
185 112: Call balances::deep(&Balances): u64
186 113: ImmBorrowLoc[1](Arg1: Balances)
187 114: Call balances::deep(&Balances): u64
188 115: Sub
189 116: LdFalse
190 117: Call balance_manager::withdraw_with_proof<DEEP>(&mut BalanceManager, &TradeProof, u64, bool): Balance<DEEP>
191 118: StLoc[10](loc5: Balance<DEEP>)
192 119: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
193 120: MutBorrowFieldGeneric[2](Vault.deep_balance: Balance<DEEP>)
194 121: MoveLoc[10](loc5: Balance<DEEP>)
195 122: Call balance::join<DEEP>(&mut Balance<DEEP>, Balance<DEEP>): u64
196 123: Pop
197 124: Branch(131)
198B12:
199 125: MoveLoc[4](Arg4: &TradeProof)
200 126: Pop
201 127: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
202 128: Pop
203 129: MoveLoc[3](Arg3: &mut BalanceManager)
204 130: Pop
205B13:
206 131: Ret
207}
208
209public(friend) withdraw_deep_to_burn<Ty0, Ty1>(Arg0: &mut Vault<Ty0, Ty1>, Arg1: u64): Balance<DEEP> {
210B0:
211 0: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
212 1: MutBorrowFieldGeneric[2](Vault.deep_balance: Balance<DEEP>)
213 2: MoveLoc[1](Arg1: u64)
214 3: Call balance::split<DEEP>(&mut Balance<DEEP>, u64): Balance<DEEP>
215 4: Ret
216}
217
218public(friend) borrow_flashloan_base<Ty0, Ty1>(Arg0: &mut Vault<Ty0, Ty1>, Arg1: ID, Arg2: u64, Arg3: &mut TxContext): Coin<Ty0> * FlashLoan {
219L4: loc0: Coin<Ty0>
220L5: loc1: TypeName
221L6: loc2: FlashLoan
222B0:
223 0: CopyLoc[2](Arg2: u64)
224 1: LdU64(0)
225 2: Gt
226 3: BrFalse(5)
227B1:
228 4: Branch(11)
229B2:
230 5: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
231 6: Pop
232 7: MoveLoc[3](Arg3: &mut TxContext)
233 8: Pop
234 9: LdConst[2](u64: 3)
235 10: Abort
236B3:
237 11: CopyLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
238 12: ImmBorrowFieldGeneric[0](Vault.base_balance: Balance<Ty0>)
239 13: Call balance::value<Ty0>(&Balance<Ty0>): u64
240 14: CopyLoc[2](Arg2: u64)
241 15: Ge
242 16: BrFalse(18)
243B4:
244 17: Branch(24)
245B5:
246 18: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
247 19: Pop
248 20: MoveLoc[3](Arg3: &mut TxContext)
249 21: Pop
250 22: LdConst[0](u64: 1)
251 23: Abort
252B6:
253 24: Call type_name::get<Ty0>(): TypeName
254 25: StLoc[5](loc1: TypeName)
255 26: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
256 27: MutBorrowFieldGeneric[0](Vault.base_balance: Balance<Ty0>)
257 28: CopyLoc[2](Arg2: u64)
258 29: Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
259 30: MoveLoc[3](Arg3: &mut TxContext)
260 31: Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
261 32: StLoc[4](loc0: Coin<Ty0>)
262 33: CopyLoc[1](Arg1: ID)
263 34: CopyLoc[2](Arg2: u64)
264 35: CopyLoc[5](loc1: TypeName)
265 36: Pack[1](FlashLoan)
266 37: StLoc[6](loc2: FlashLoan)
267 38: MoveLoc[1](Arg1: ID)
268 39: MoveLoc[2](Arg2: u64)
269 40: MoveLoc[5](loc1: TypeName)
270 41: Pack[2](FlashLoanBorrowed)
271 42: Call event::emit<FlashLoanBorrowed>(FlashLoanBorrowed)
272 43: MoveLoc[4](loc0: Coin<Ty0>)
273 44: MoveLoc[6](loc2: FlashLoan)
274 45: Ret
275}
276
277public(friend) borrow_flashloan_quote<Ty0, Ty1>(Arg0: &mut Vault<Ty0, Ty1>, Arg1: ID, Arg2: u64, Arg3: &mut TxContext): Coin<Ty1> * FlashLoan {
278L4: loc0: Coin<Ty1>
279L5: loc1: TypeName
280L6: loc2: FlashLoan
281B0:
282 0: CopyLoc[2](Arg2: u64)
283 1: LdU64(0)
284 2: Gt
285 3: BrFalse(5)
286B1:
287 4: Branch(11)
288B2:
289 5: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
290 6: Pop
291 7: MoveLoc[3](Arg3: &mut TxContext)
292 8: Pop
293 9: LdConst[2](u64: 3)
294 10: Abort
295B3:
296 11: CopyLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
297 12: ImmBorrowFieldGeneric[1](Vault.quote_balance: Balance<Ty1>)
298 13: Call balance::value<Ty1>(&Balance<Ty1>): u64
299 14: CopyLoc[2](Arg2: u64)
300 15: Ge
301 16: BrFalse(18)
302B4:
303 17: Branch(24)
304B5:
305 18: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
306 19: Pop
307 20: MoveLoc[3](Arg3: &mut TxContext)
308 21: Pop
309 22: LdConst[1](u64: 2)
310 23: Abort
311B6:
312 24: Call type_name::get<Ty1>(): TypeName
313 25: StLoc[5](loc1: TypeName)
314 26: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
315 27: MutBorrowFieldGeneric[1](Vault.quote_balance: Balance<Ty1>)
316 28: CopyLoc[2](Arg2: u64)
317 29: Call balance::split<Ty1>(&mut Balance<Ty1>, u64): Balance<Ty1>
318 30: MoveLoc[3](Arg3: &mut TxContext)
319 31: Call coin::from_balance<Ty1>(Balance<Ty1>, &mut TxContext): Coin<Ty1>
320 32: StLoc[4](loc0: Coin<Ty1>)
321 33: CopyLoc[1](Arg1: ID)
322 34: CopyLoc[2](Arg2: u64)
323 35: CopyLoc[5](loc1: TypeName)
324 36: Pack[1](FlashLoan)
325 37: StLoc[6](loc2: FlashLoan)
326 38: MoveLoc[1](Arg1: ID)
327 39: MoveLoc[2](Arg2: u64)
328 40: MoveLoc[5](loc1: TypeName)
329 41: Pack[2](FlashLoanBorrowed)
330 42: Call event::emit<FlashLoanBorrowed>(FlashLoanBorrowed)
331 43: MoveLoc[4](loc0: Coin<Ty1>)
332 44: MoveLoc[6](loc2: FlashLoan)
333 45: Ret
334}
335
336public(friend) return_flashloan_base<Ty0, Ty1>(Arg0: &mut Vault<Ty0, Ty1>, Arg1: ID, Arg2: Coin<Ty0>, Arg3: FlashLoan) {
337B0:
338 0: MoveLoc[1](Arg1: ID)
339 1: ImmBorrowLoc[3](Arg3: FlashLoan)
340 2: ImmBorrowField[3](FlashLoan.pool_id: ID)
341 3: ReadRef
342 4: Eq
343 5: BrFalse(7)
344B1:
345 6: Branch(11)
346B2:
347 7: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
348 8: Pop
349 9: LdConst[3](u64: 4)
350 10: Abort
351B3:
352 11: Call type_name::get<Ty0>(): TypeName
353 12: ImmBorrowLoc[3](Arg3: FlashLoan)
354 13: ImmBorrowField[4](FlashLoan.type_name: TypeName)
355 14: ReadRef
356 15: Eq
357 16: BrFalse(18)
358B4:
359 17: Branch(22)
360B5:
361 18: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
362 19: Pop
363 20: LdConst[4](u64: 5)
364 21: Abort
365B6:
366 22: ImmBorrowLoc[2](Arg2: Coin<Ty0>)
367 23: Call coin::value<Ty0>(&Coin<Ty0>): u64
368 24: ImmBorrowLoc[3](Arg3: FlashLoan)
369 25: ImmBorrowField[5](FlashLoan.borrow_quantity: u64)
370 26: ReadRef
371 27: Eq
372 28: BrFalse(30)
373B7:
374 29: Branch(34)
375B8:
376 30: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
377 31: Pop
378 32: LdConst[5](u64: 6)
379 33: Abort
380B9:
381 34: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
382 35: MutBorrowFieldGeneric[0](Vault.base_balance: Balance<Ty0>)
383 36: MoveLoc[2](Arg2: Coin<Ty0>)
384 37: Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
385 38: Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
386 39: Pop
387 40: MoveLoc[3](Arg3: FlashLoan)
388 41: Unpack[1](FlashLoan)
389 42: Pop
390 43: Pop
391 44: Pop
392 45: Ret
393}
394
395public(friend) return_flashloan_quote<Ty0, Ty1>(Arg0: &mut Vault<Ty0, Ty1>, Arg1: ID, Arg2: Coin<Ty1>, Arg3: FlashLoan) {
396B0:
397 0: MoveLoc[1](Arg1: ID)
398 1: ImmBorrowLoc[3](Arg3: FlashLoan)
399 2: ImmBorrowField[3](FlashLoan.pool_id: ID)
400 3: ReadRef
401 4: Eq
402 5: BrFalse(7)
403B1:
404 6: Branch(11)
405B2:
406 7: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
407 8: Pop
408 9: LdConst[3](u64: 4)
409 10: Abort
410B3:
411 11: Call type_name::get<Ty1>(): TypeName
412 12: ImmBorrowLoc[3](Arg3: FlashLoan)
413 13: ImmBorrowField[4](FlashLoan.type_name: TypeName)
414 14: ReadRef
415 15: Eq
416 16: BrFalse(18)
417B4:
418 17: Branch(22)
419B5:
420 18: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
421 19: Pop
422 20: LdConst[4](u64: 5)
423 21: Abort
424B6:
425 22: ImmBorrowLoc[2](Arg2: Coin<Ty1>)
426 23: Call coin::value<Ty1>(&Coin<Ty1>): u64
427 24: ImmBorrowLoc[3](Arg3: FlashLoan)
428 25: ImmBorrowField[5](FlashLoan.borrow_quantity: u64)
429 26: ReadRef
430 27: Eq
431 28: BrFalse(30)
432B7:
433 29: Branch(34)
434B8:
435 30: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
436 31: Pop
437 32: LdConst[5](u64: 6)
438 33: Abort
439B9:
440 34: MoveLoc[0](Arg0: &mut Vault<Ty0, Ty1>)
441 35: MutBorrowFieldGeneric[1](Vault.quote_balance: Balance<Ty1>)
442 36: MoveLoc[2](Arg2: Coin<Ty1>)
443 37: Call coin::into_balance<Ty1>(Coin<Ty1>): Balance<Ty1>
444 38: Call balance::join<Ty1>(&mut Balance<Ty1>, Balance<Ty1>): u64
445 39: Pop
446 40: MoveLoc[3](Arg3: FlashLoan)
447 41: Unpack[1](FlashLoan)
448 42: Pop
449 43: Pop
450 44: Pop
451 45: Ret
452}
453
454Constants [
455 0 => u64: 1
456 1 => u64: 2
457 2 => u64: 3
458 3 => u64: 4
459 4 => u64: 5
460 5 => u64: 6
461]
462}
463
This is a circuit, not a contract. It declares no ABI and no storage layout, so there is no interface list and no slot mapping to show. The source above is the whole of what it publishes.
Deployments
This code is deployed at one address. Any other address running the same bytecode would appear here too, already verified.