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

API

position

Module0x9196…8dec
Move path
0x9196…8dec::position
Functions
3533 public, 0 entry
Structs
1
Friend modules
None
position

Bytecode2326 lines

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

// Move bytecode v7
module 9196fffe0341b2f0ca7424926b22d9e9e35b4807a1f625fc20eeea1382d08dec.position {
use 4b4703a7581781d74a4c7b0fb0836b2a67f34f1a377fb81aab6f5cad29d78760::ifixed;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
 
struct Position has store {
collateral: u256,
base_asset_amount: u256,
quote_asset_notional_amount: u256,
cum_funding_rate_long: u256,
cum_funding_rate_short: u256,
asks_quantity: u256,
bids_quantity: u256,
pending_orders: u64,
initial_margin_ratio: u256
}
 
public create_position(Arg0: u256, Arg1: u256): Position {
L2: loc0: u256
L3: loc1: u256
B0:
0MoveLoc[0](Arg0: u256)
1StLoc[2](loc0: u256)
2MoveLoc[1](Arg1: u256)
3StLoc[3](loc1: u256)
4LdU256(0)
5LdU256(0)
6LdU256(0)
7MoveLoc[2](loc0: u256)
8MoveLoc[3](loc1: u256)
9LdU256(0)
10LdU256(0)
11LdU64(0)
12LdU256(1000000000000000000)
13Pack[0](Position)
14Ret
}
 
public is_long_or_flat(Arg0: &Position): bool {
B0:
0MoveLoc[0](Arg0: &Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3Call ifixed::is_neg(u256): bool
4Not
5Ret
}
 
public collateral(Arg0: &Position): u256 {
B0:
0MoveLoc[0](Arg0: &Position)
1ImmBorrowField[1](Position.collateral: u256)
2ReadRef
3Ret
}
 
public base_and_quote_amounts(Arg0: &Position): u256 * u256 {
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3MoveLoc[0](Arg0: &Position)
4ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
5ReadRef
6Ret
}
 
public pending_base_amounts_by_side(Arg0: &Position): u256 * u256 {
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[3](Position.asks_quantity: u256)
2ReadRef
3MoveLoc[0](Arg0: &Position)
4ImmBorrowField[4](Position.bids_quantity: u256)
5ReadRef
6Ret
}
 
public funding_rate_snapshots(Arg0: &Position): u256 * u256 {
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[5](Position.cum_funding_rate_long: u256)
2ReadRef
3MoveLoc[0](Arg0: &Position)
4ImmBorrowField[6](Position.cum_funding_rate_short: u256)
5ReadRef
6Ret
}
 
public pending_order_count(Arg0: &Position): u64 {
B0:
0MoveLoc[0](Arg0: &Position)
1ImmBorrowField[7](Position.pending_orders: u64)
2ReadRef
3Ret
}
 
public initial_margin_ratio(Arg0: &Position): u256 {
B0:
0MoveLoc[0](Arg0: &Position)
1ImmBorrowField[8](Position.initial_margin_ratio: u256)
2ReadRef
3Ret
}
 
public effective_initial_margin_ratio(Arg0: &Position, Arg1: u256): u256 {
B0:
0MoveLoc[0](Arg0: &Position)
1ImmBorrowField[8](Position.initial_margin_ratio: u256)
2ReadRef
3MoveLoc[1](Arg1: u256)
4Call ifixed::max(u256, u256): u256
5Ret
}
 
public add_to_collateral(Arg0: &mut Position, Arg1: u256) {
B0:
0CopyLoc[0](Arg0: &mut Position)
1ImmBorrowField[1](Position.collateral: u256)
2ReadRef
3MoveLoc[1](Arg1: u256)
4Call ifixed::add(u256, u256): u256
5MoveLoc[0](Arg0: &mut Position)
6MutBorrowField[1](Position.collateral: u256)
7WriteRef
8Ret
}
 
public sub_from_collateral(Arg0: &mut Position, Arg1: u256) {
B0:
0CopyLoc[0](Arg0: &mut Position)
1ImmBorrowField[1](Position.collateral: u256)
2ReadRef
3MoveLoc[1](Arg1: u256)
4Call ifixed::sub(u256, u256): u256
5MoveLoc[0](Arg0: &mut Position)
6MutBorrowField[1](Position.collateral: u256)
7WriteRef
8Ret
}
 
public reset_collateral(Arg0: &mut Position): u256 {
L1: loc0: u256
B0:
0CopyLoc[0](Arg0: &mut Position)
1ImmBorrowField[1](Position.collateral: u256)
2ReadRef
3StLoc[1](loc0: u256)
4LdU256(0)
5MoveLoc[0](Arg0: &mut Position)
6MutBorrowField[1](Position.collateral: u256)
7WriteRef
8MoveLoc[1](loc0: u256)
9Call ifixed::abs(u256): u256
10Ret
}
 
public add_to_collateral_usd(Arg0: &mut Position, Arg1: u256, Arg2: u256): u256 {
L3: loc0: u256
L4: loc1: u256
L5: loc2: u256
L6: loc3: u256
B0:
0CopyLoc[1](Arg1: u256)
1LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
2Ge
3BrFalse(62)
B1:
4MoveLoc[1](Arg1: u256)
5LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
6Xor
7LdU256(1)
8Add
9LdU256(1000000000000000000)
10Mul
11LdU256(1)
12Sub
13MoveLoc[2](Arg2: u256)
14Div
15LdU256(1)
16Add
17StLoc[5](loc2: u256)
18CopyLoc[0](Arg0: &mut Position)
19ImmBorrowField[1](Position.collateral: u256)
20ReadRef
21LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
22Ge
23BrFalse(38)
B2:
24CopyLoc[0](Arg0: &mut Position)
25ImmBorrowField[1](Position.collateral: u256)
26ReadRef
27MoveLoc[5](loc2: u256)
28Sub
29StLoc[4](loc1: u256)
30CopyLoc[4](loc1: u256)
31LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
32Lt
33BrFalse(114)
B3:
34MoveLoc[0](Arg0: &mut Position)
35Pop
36LdU64(2000)
37Abort
B4:
38CopyLoc[0](Arg0: &mut Position)
39ImmBorrowField[1](Position.collateral: u256)
40ReadRef
41CopyLoc[5](loc2: u256)
42Ge
43BrFalse(51)
B5:
44CopyLoc[0](Arg0: &mut Position)
45ImmBorrowField[1](Position.collateral: u256)
46ReadRef
47MoveLoc[5](loc2: u256)
48Sub
49StLoc[4](loc1: u256)
50Branch(114)
B6:
51MoveLoc[5](loc2: u256)
52CopyLoc[0](Arg0: &mut Position)
53ImmBorrowField[1](Position.collateral: u256)
54ReadRef
55Sub
56LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
57Xor
58LdU256(1)
59Add
60StLoc[4](loc1: u256)
61Branch(114)
B7:
62MoveLoc[1](Arg1: u256)
63LdU256(1000000000000000000)
64Mul
65MoveLoc[2](Arg2: u256)
66Div
67StLoc[6](loc3: u256)
68CopyLoc[0](Arg0: &mut Position)
69ImmBorrowField[1](Position.collateral: u256)
70ReadRef
71LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
72Ge
73BrFalse(100)
B8:
74CopyLoc[0](Arg0: &mut Position)
75ImmBorrowField[1](Position.collateral: u256)
76ReadRef
77LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
78Xor
79LdU256(1)
80Add
81StLoc[3](loc0: u256)
82CopyLoc[6](loc3: u256)
83CopyLoc[3](loc0: u256)
84Ge
85BrFalse(91)
B9:
86MoveLoc[6](loc3: u256)
87MoveLoc[3](loc0: u256)
88Sub
89StLoc[4](loc1: u256)
90Branch(114)
B10:
91MoveLoc[3](loc0: u256)
92MoveLoc[6](loc3: u256)
93Sub
94LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
95Xor
96LdU256(1)
97Add
98StLoc[4](loc1: u256)
99Branch(114)
B11:
100CopyLoc[0](Arg0: &mut Position)
101ImmBorrowField[1](Position.collateral: u256)
102ReadRef
103MoveLoc[6](loc3: u256)
104Add
105StLoc[4](loc1: u256)
106CopyLoc[4](loc1: u256)
107LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
108Ge
109BrFalse(114)
B12:
110MoveLoc[0](Arg0: &mut Position)
111Pop
112LdU64(2000)
113Abort
B13:
114CopyLoc[4](loc1: u256)
115MoveLoc[0](Arg0: &mut Position)
116MutBorrowField[1](Position.collateral: u256)
117WriteRef
118MoveLoc[4](loc1: u256)
119Ret
}
 
public add_base_to_position(Arg0: &mut Position, Arg1: bool, Arg2: u256, Arg3: u256): u256 * u256 {
L4: loc0: u256
L5: loc1: u256
L6: loc2: u256
L7: loc3: u256
L8: loc4: u256
L9: loc5: u256
L10: loc6: u256
L11: loc7: u256
L12: loc8: u256
L13: loc9: u256
L14: loc10: u256
L15: loc11: u256
L16: loc12: u256
B0:
0CopyLoc[0](Arg0: &mut Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3StLoc[6](loc2: u256)
4MoveLoc[1](Arg1: bool)
5BrFalse(177)
B1:
6CopyLoc[6](loc2: u256)
7LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
8Lt
9BrFalse(116)
B2:
10CopyLoc[0](Arg0: &mut Position)
11ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
12ReadRef
13StLoc[14](loc10: u256)
14CopyLoc[2](Arg2: u256)
15CopyLoc[6](loc2: u256)
16Le
17BrFalse(64)
B3:
18CopyLoc[14](loc10: u256)
19CopyLoc[2](Arg2: u256)
20Mul
21CopyLoc[6](loc2: u256)
22Add
23LdU256(1)
24Sub
25CopyLoc[6](loc2: u256)
26Div
27StLoc[15](loc11: u256)
28MoveLoc[6](loc2: u256)
29MoveLoc[2](Arg2: u256)
30Sub
31CopyLoc[0](Arg0: &mut Position)
32MutBorrowField[0](Position.base_asset_amount: u256)
33WriteRef
34MoveLoc[14](loc10: u256)
35CopyLoc[15](loc11: u256)
36Sub
37CopyLoc[0](Arg0: &mut Position)
38MutBorrowField[2](Position.quote_asset_notional_amount: u256)
39WriteRef
40CopyLoc[3](Arg3: u256)
41CopyLoc[15](loc11: u256)
42Ge
43BrFalse(51)
B4:
44MoveLoc[3](Arg3: u256)
45MoveLoc[15](loc11: u256)
46Sub
47MoveLoc[0](Arg0: &mut Position)
48ImmBorrowField[0](Position.base_asset_amount: u256)
49ReadRef
50Ret
B5:
51MoveLoc[15](loc11: u256)
52MoveLoc[3](Arg3: u256)
53Sub
54LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
55Xor
56LdU256(1)
57Add
58LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
59Xor
60MoveLoc[0](Arg0: &mut Position)
61ImmBorrowField[0](Position.base_asset_amount: u256)
62ReadRef
63Ret
B6:
64CopyLoc[3](Arg3: u256)
65CopyLoc[6](loc2: u256)
66Mul
67CopyLoc[2](Arg2: u256)
68Div
69StLoc[7](loc3: u256)
70CopyLoc[7](loc3: u256)
71CopyLoc[14](loc10: u256)
72Ge
73BrFalse(79)
B7:
74CopyLoc[7](loc3: u256)
75MoveLoc[14](loc10: u256)
76Sub
77StLoc[13](loc9: u256)
78Branch(89)
B8:
79MoveLoc[14](loc10: u256)
80CopyLoc[7](loc3: u256)
81Sub
82LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
83Xor
84LdU256(1)
85Add
86LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
87Xor
88StLoc[13](loc9: u256)
B9:
89MoveLoc[2](Arg2: u256)
90MoveLoc[6](loc2: u256)
91Sub
92LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
93Xor
94LdU256(1)
95Add
96CopyLoc[0](Arg0: &mut Position)
97MutBorrowField[0](Position.base_asset_amount: u256)
98WriteRef
99MoveLoc[3](Arg3: u256)
100MoveLoc[7](loc3: u256)
101Sub
102LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
103Xor
104LdU256(1)
105Add
106LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
107Xor
108CopyLoc[0](Arg0: &mut Position)
109MutBorrowField[2](Position.quote_asset_notional_amount: u256)
110WriteRef
111MoveLoc[13](loc9: u256)
112MoveLoc[0](Arg0: &mut Position)
113ImmBorrowField[0](Position.base_asset_amount: u256)
114ReadRef
115Ret
B10:
116MoveLoc[6](loc2: u256)
117LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
118Xor
119LdU256(1)
120Add
121MoveLoc[2](Arg2: u256)
122Add
123StLoc[10](loc6: u256)
124CopyLoc[10](loc6: u256)
125LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
126Lt
127BrFalse(129)
B11:
128Branch(133)
B12:
129MoveLoc[0](Arg0: &mut Position)
130Pop
131LdU64(2000)
132Abort
B13:
133MoveLoc[10](loc6: u256)
134LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
135Xor
136LdU256(1)
137Add
138CopyLoc[0](Arg0: &mut Position)
139MutBorrowField[0](Position.base_asset_amount: u256)
140WriteRef
141CopyLoc[0](Arg0: &mut Position)
142ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
143ReadRef
144LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
145Xor
146LdU256(1)
147Add
148LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
149Xor
150MoveLoc[3](Arg3: u256)
151Add
152StLoc[12](loc8: u256)
153CopyLoc[12](loc8: u256)
154LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
155Lt
156BrFalse(158)
B14:
157Branch(162)
B15:
158MoveLoc[0](Arg0: &mut Position)
159Pop
160LdU64(2000)
161Abort
B16:
162MoveLoc[12](loc8: u256)
163LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
164Xor
165LdU256(1)
166Add
167LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
168Xor
169CopyLoc[0](Arg0: &mut Position)
170MutBorrowField[2](Position.quote_asset_notional_amount: u256)
171WriteRef
172LdU256(0)
173MoveLoc[0](Arg0: &mut Position)
174ImmBorrowField[0](Position.base_asset_amount: u256)
175ReadRef
176Ret
B17:
177CopyLoc[6](loc2: u256)
178LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
179Lt
180BrFalse(222)
B18:
181MoveLoc[6](loc2: u256)
182MoveLoc[2](Arg2: u256)
183Add
184StLoc[9](loc5: u256)
185CopyLoc[9](loc5: u256)
186LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
187Lt
188BrFalse(190)
B19:
189Branch(194)
B20:
190MoveLoc[0](Arg0: &mut Position)
191Pop
192LdU64(2000)
193Abort
B21:
194CopyLoc[0](Arg0: &mut Position)
195ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
196ReadRef
197MoveLoc[3](Arg3: u256)
198Add
199StLoc[11](loc7: u256)
200CopyLoc[11](loc7: u256)
201LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
202Lt
203BrFalse(205)
B22:
204Branch(209)
B23:
205MoveLoc[0](Arg0: &mut Position)
206Pop
207LdU64(2000)
208Abort
B24:
209MoveLoc[9](loc5: u256)
210CopyLoc[0](Arg0: &mut Position)
211MutBorrowField[0](Position.base_asset_amount: u256)
212WriteRef
213MoveLoc[11](loc7: u256)
214CopyLoc[0](Arg0: &mut Position)
215MutBorrowField[2](Position.quote_asset_notional_amount: u256)
216WriteRef
217LdU256(0)
218MoveLoc[0](Arg0: &mut Position)
219ImmBorrowField[0](Position.base_asset_amount: u256)
220ReadRef
221Ret
B25:
222MoveLoc[6](loc2: u256)
223LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
224Xor
225LdU256(1)
226Add
227StLoc[4](loc0: u256)
228CopyLoc[0](Arg0: &mut Position)
229ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
230ReadRef
231LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
232Xor
233LdU256(1)
234Add
235LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
236Xor
237StLoc[5](loc1: u256)
238CopyLoc[2](Arg2: u256)
239CopyLoc[4](loc0: u256)
240Le
241BrFalse(296)
B26:
242CopyLoc[5](loc1: u256)
243CopyLoc[2](Arg2: u256)
244Mul
245CopyLoc[4](loc0: u256)
246Div
247StLoc[16](loc12: u256)
248MoveLoc[4](loc0: u256)
249MoveLoc[2](Arg2: u256)
250Sub
251LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
252Xor
253LdU256(1)
254Add
255LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
256Xor
257CopyLoc[0](Arg0: &mut Position)
258MutBorrowField[0](Position.base_asset_amount: u256)
259WriteRef
260MoveLoc[5](loc1: u256)
261CopyLoc[16](loc12: u256)
262Sub
263LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
264Xor
265LdU256(1)
266Add
267LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
268Xor
269CopyLoc[0](Arg0: &mut Position)
270MutBorrowField[2](Position.quote_asset_notional_amount: u256)
271WriteRef
272CopyLoc[16](loc12: u256)
273CopyLoc[3](Arg3: u256)
274Ge
275BrFalse(283)
B27:
276MoveLoc[16](loc12: u256)
277MoveLoc[3](Arg3: u256)
278Sub
279MoveLoc[0](Arg0: &mut Position)
280ImmBorrowField[0](Position.base_asset_amount: u256)
281ReadRef
282Ret
B28:
283MoveLoc[3](Arg3: u256)
284MoveLoc[16](loc12: u256)
285Sub
286LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
287Xor
288LdU256(1)
289Add
290LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
291Xor
292MoveLoc[0](Arg0: &mut Position)
293ImmBorrowField[0](Position.base_asset_amount: u256)
294ReadRef
295Ret
B29:
296CopyLoc[2](Arg2: u256)
297CopyLoc[4](loc0: u256)
298Sub
299CopyLoc[0](Arg0: &mut Position)
300MutBorrowField[0](Position.base_asset_amount: u256)
301WriteRef
302CopyLoc[3](Arg3: u256)
303MoveLoc[4](loc0: u256)
304Mul
305LdU256(1)
306Sub
307MoveLoc[2](Arg2: u256)
308Div
309LdU256(1)
310Add
311StLoc[8](loc4: u256)
312CopyLoc[5](loc1: u256)
313CopyLoc[8](loc4: u256)
314Ge
315BrFalse(321)
B30:
316MoveLoc[5](loc1: u256)
317CopyLoc[8](loc4: u256)
318Sub
319StLoc[13](loc9: u256)
320Branch(331)
B31:
321CopyLoc[8](loc4: u256)
322MoveLoc[5](loc1: u256)
323Sub
324LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
325Xor
326LdU256(1)
327Add
328LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
329Xor
330StLoc[13](loc9: u256)
B32:
331MoveLoc[3](Arg3: u256)
332MoveLoc[8](loc4: u256)
333Sub
334CopyLoc[0](Arg0: &mut Position)
335MutBorrowField[2](Position.quote_asset_notional_amount: u256)
336WriteRef
337MoveLoc[13](loc9: u256)
338MoveLoc[0](Arg0: &mut Position)
339ImmBorrowField[0](Position.base_asset_amount: u256)
340ReadRef
341Ret
}
 
public apply_taker_fills_and_settle(Arg0: &mut Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256, Arg7: u256): u256 * u256 * u256 * u256 {
L8: loc0: u256
L9: loc1: u256
L10: loc2: u256
L11: loc3: u256
L12: loc4: u256
L13: loc5: u256
L14: loc6: u256
L15: loc7: u256
L16: loc8: u256
L17: loc9: bool
L18: loc10: u256
L19: loc11: u256
L20: loc12: u256
B0:
0CopyLoc[0](Arg0: &mut Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3StLoc[9](loc1: u256)
4CopyLoc[2](Arg2: u256)
5LdU256(0)
6Neq
7BrFalse(16)
B1:
8CopyLoc[0](Arg0: &mut Position)
9LdTrue
10MoveLoc[2](Arg2: u256)
11CopyLoc[3](Arg3: u256)
12Call add_base_to_position(&mut Position, bool, u256, u256): u256 * u256
13StLoc[8](loc0: u256)
14StLoc[13](loc5: u256)
15Branch(20)
B2:
16LdU256(0)
17StLoc[13](loc5: u256)
18CopyLoc[9](loc1: u256)
19StLoc[8](loc0: u256)
B3:
20CopyLoc[4](Arg4: u256)
21LdU256(0)
22Neq
23BrFalse(32)
B4:
24CopyLoc[0](Arg0: &mut Position)
25LdFalse
26MoveLoc[4](Arg4: u256)
27CopyLoc[5](Arg5: u256)
28Call add_base_to_position(&mut Position, bool, u256, u256): u256 * u256
29StLoc[8](loc0: u256)
30StLoc[14](loc6: u256)
31Branch(34)
B5:
32LdU256(0)
33StLoc[14](loc6: u256)
B6:
34CopyLoc[8](loc0: u256)
35LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
36Lt
37BrFalse(63)
B7:
38CopyLoc[9](loc1: u256)
39LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
40Lt
41BrFalse(60)
B8:
42CopyLoc[8](loc0: u256)
43CopyLoc[9](loc1: u256)
44Ge
45BrFalse(51)
B9:
46MoveLoc[8](loc0: u256)
47MoveLoc[9](loc1: u256)
48Sub
49StLoc[12](loc4: u256)
50Branch(78)
B10:
51MoveLoc[9](loc1: u256)
52MoveLoc[8](loc0: u256)
53Sub
54LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
55Xor
56LdU256(1)
57Add
58StLoc[12](loc4: u256)
59Branch(78)
B11:
60MoveLoc[8](loc0: u256)
61StLoc[12](loc4: u256)
62Branch(78)
B12:
63CopyLoc[9](loc1: u256)
64LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
65Lt
66BrFalse(76)
B13:
67MoveLoc[9](loc1: u256)
68LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
69Xor
70LdU256(1)
71Add
72LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
73Xor
74StLoc[12](loc4: u256)
75Branch(78)
B14:
76LdU256(0)
77StLoc[12](loc4: u256)
B15:
78MoveLoc[13](loc5: u256)
79MoveLoc[14](loc6: u256)
80Call ifixed::add(u256, u256): u256
81StLoc[15](loc7: u256)
82MoveLoc[3](Arg3: u256)
83MoveLoc[5](Arg5: u256)
84Add
85StLoc[20](loc12: u256)
86CopyLoc[6](Arg6: u256)
87LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
88Ge
89StLoc[17](loc9: bool)
90CopyLoc[17](loc9: bool)
91BrFalse(99)
B16:
92MoveLoc[6](Arg6: u256)
93LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
94Xor
95LdU256(1)
96Add
97StLoc[16](loc8: u256)
98Branch(101)
B17:
99MoveLoc[6](Arg6: u256)
100StLoc[16](loc8: u256)
B18:
101MoveLoc[16](loc8: u256)
102CopyLoc[20](loc12: u256)
103Mul
104LdU256(1000000000000000000)
105Div
106StLoc[19](loc11: u256)
107MoveLoc[17](loc9: bool)
108BrFalse(118)
B19:
109MoveLoc[19](loc11: u256)
110LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
111Xor
112LdU256(1)
113Add
114LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
115Xor
116StLoc[18](loc10: u256)
117Branch(120)
B20:
118MoveLoc[19](loc11: u256)
119StLoc[18](loc10: u256)
B21:
120MoveLoc[7](Arg7: u256)
121MoveLoc[20](loc12: u256)
122Mul
123LdU256(1000000000000000000)
124Div
125StLoc[11](loc3: u256)
126CopyLoc[15](loc7: u256)
127CopyLoc[18](loc10: u256)
128CopyLoc[11](loc3: u256)
129Call ifixed::add(u256, u256): u256
130Call ifixed::sub(u256, u256): u256
131StLoc[10](loc2: u256)
132MoveLoc[0](Arg0: &mut Position)
133MoveLoc[10](loc2: u256)
134MoveLoc[1](Arg1: u256)
135Call add_to_collateral_usd(&mut Position, u256, u256): u256
136Pop
137MoveLoc[15](loc7: u256)
138MoveLoc[18](loc10: u256)
139MoveLoc[11](loc3: u256)
140MoveLoc[12](loc4: u256)
141Ret
}
 
public add_to_pending_amount(Arg0: &mut Position, Arg1: bool, Arg2: u256) {
B0:
0MoveLoc[1](Arg1: bool)
1BrFalse(11)
B1:
2CopyLoc[0](Arg0: &mut Position)
3ImmBorrowField[3](Position.asks_quantity: u256)
4ReadRef
5MoveLoc[2](Arg2: u256)
6Call ifixed::add(u256, u256): u256
7MoveLoc[0](Arg0: &mut Position)
8MutBorrowField[3](Position.asks_quantity: u256)
9WriteRef
10Branch(19)
B2:
11CopyLoc[0](Arg0: &mut Position)
12ImmBorrowField[4](Position.bids_quantity: u256)
13ReadRef
14MoveLoc[2](Arg2: u256)
15Call ifixed::add(u256, u256): u256
16MoveLoc[0](Arg0: &mut Position)
17MutBorrowField[4](Position.bids_quantity: u256)
18WriteRef
B3:
19Ret
}
 
public sub_from_pending_amount(Arg0: &mut Position, Arg1: bool, Arg2: u256) {
B0:
0MoveLoc[1](Arg1: bool)
1BrFalse(11)
B1:
2CopyLoc[0](Arg0: &mut Position)
3ImmBorrowField[3](Position.asks_quantity: u256)
4ReadRef
5MoveLoc[2](Arg2: u256)
6Call ifixed::sub(u256, u256): u256
7MoveLoc[0](Arg0: &mut Position)
8MutBorrowField[3](Position.asks_quantity: u256)
9WriteRef
10Branch(19)
B2:
11CopyLoc[0](Arg0: &mut Position)
12ImmBorrowField[4](Position.bids_quantity: u256)
13ReadRef
14MoveLoc[2](Arg2: u256)
15Call ifixed::sub(u256, u256): u256
16MoveLoc[0](Arg0: &mut Position)
17MutBorrowField[4](Position.bids_quantity: u256)
18WriteRef
B3:
19Ret
}
 
public update_pending_orders(Arg0: &mut Position, Arg1: bool, Arg2: u64) {
B0:
0MoveLoc[1](Arg1: bool)
1BrFalse(11)
B1:
2CopyLoc[0](Arg0: &mut Position)
3ImmBorrowField[7](Position.pending_orders: u64)
4ReadRef
5MoveLoc[2](Arg2: u64)
6Add
7MoveLoc[0](Arg0: &mut Position)
8MutBorrowField[7](Position.pending_orders: u64)
9WriteRef
10Branch(19)
B2:
11CopyLoc[0](Arg0: &mut Position)
12ImmBorrowField[7](Position.pending_orders: u64)
13ReadRef
14MoveLoc[2](Arg2: u64)
15Sub
16MoveLoc[0](Arg0: &mut Position)
17MutBorrowField[7](Position.pending_orders: u64)
18WriteRef
B3:
19Ret
}
 
public set_initial_margin_ratio(Arg0: &mut Position, Arg1: u256, Arg2: u256) {
L3: loc0: bool
B0:
0CopyLoc[1](Arg1: u256)
1MoveLoc[2](Arg2: u256)
2Call ifixed::greater_than_eq(u256, u256): bool
3BrFalse(9)
B1:
4CopyLoc[1](Arg1: u256)
5LdU256(1000000000000000000)
6Call ifixed::less_than_eq(u256, u256): bool
7StLoc[3](loc0: bool)
8Branch(11)
B2:
9LdFalse
10StLoc[3](loc0: bool)
B3:
11MoveLoc[3](loc0: bool)
12BrFalse(14)
B4:
13Branch(18)
B5:
14MoveLoc[0](Arg0: &mut Position)
15Pop
16LdU64(2003)
17Abort
B6:
18MoveLoc[1](Arg1: u256)
19MoveLoc[0](Arg0: &mut Position)
20MutBorrowField[8](Position.initial_margin_ratio: u256)
21WriteRef
22Ret
}
 
public compute_free_collateral_with_fundings(Arg0: &Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256): u256 {
L7: loc0: bool
L8: loc1: u256
L9: loc2: u256
L10: loc3: u256
L11: loc4: u256
L12: loc5: u256
L13: loc6: u256
L14: loc7: u256
L15: loc8: u256
L16: loc9: u256
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[7](Position.pending_orders: u64)
2ReadRef
3LdU64(0)
4Eq
5BrFalse(13)
B1:
6CopyLoc[0](Arg0: &Position)
7ImmBorrowField[0](Position.base_asset_amount: u256)
8ReadRef
9LdU256(0)
10Eq
11StLoc[7](loc0: bool)
12Branch(15)
B2:
13LdFalse
14StLoc[7](loc0: bool)
B3:
15MoveLoc[7](loc0: bool)
16BrFalse(23)
B4:
17LdU256(0)
18MoveLoc[0](Arg0: &Position)
19ImmBorrowField[1](Position.collateral: u256)
20ReadRef
21Call ifixed::max(u256, u256): u256
22Ret
B5:
23CopyLoc[0](Arg0: &Position)
24MoveLoc[4](Arg4: u256)
25MoveLoc[5](Arg5: u256)
26Call calculate_position_funding_internal(&Position, u256, u256): u256
27StLoc[14](loc7: u256)
28CopyLoc[0](Arg0: &Position)
29CopyLoc[2](Arg2: u256)
30Call unrealized_pnl(&Position, u256): u256
31StLoc[16](loc9: u256)
32CopyLoc[0](Arg0: &Position)
33MoveLoc[2](Arg2: u256)
34MoveLoc[3](Arg3: u256)
35Call margin_requirement(&Position, u256, u256): u256
36StLoc[15](loc8: u256)
37MoveLoc[0](Arg0: &Position)
38CopyLoc[1](Arg1: u256)
39CopyLoc[6](Arg6: u256)
40MoveLoc[14](loc7: u256)
41Call effective_collateral_usd_value_with_funding(&Position, u256, u256, u256): u256
42StLoc[12](loc5: u256)
43CopyLoc[16](loc9: u256)
44LdU256(0)
45Call ifixed::less_than(u256, u256): bool
46BrFalse(52)
B6:
47MoveLoc[12](loc5: u256)
48MoveLoc[16](loc9: u256)
49Call ifixed::add(u256, u256): u256
50StLoc[8](loc1: u256)
51Branch(54)
B7:
52MoveLoc[12](loc5: u256)
53StLoc[8](loc1: u256)
B8:
54MoveLoc[8](loc1: u256)
55StLoc[11](loc4: u256)
56CopyLoc[11](loc4: u256)
57CopyLoc[15](loc8: u256)
58Call ifixed::greater_than_eq(u256, u256): bool
59BrFalse(82)
B9:
60MoveLoc[11](loc4: u256)
61MoveLoc[15](loc8: u256)
62Call ifixed::sub(u256, u256): u256
63MoveLoc[1](Arg1: u256)
64Call ifixed::div(u256, u256): u256
65StLoc[13](loc6: u256)
66CopyLoc[6](Arg6: u256)
67LdU256(0)
68Neq
69BrFalse(77)
B10:
70MoveLoc[13](loc6: u256)
71LdU256(1000000000000000000)
72MoveLoc[6](Arg6: u256)
73Call ifixed::sub(u256, u256): u256
74Call ifixed::div(u256, u256): u256
75StLoc[9](loc2: u256)
76Branch(79)
B11:
77MoveLoc[13](loc6: u256)
78StLoc[9](loc2: u256)
B12:
79MoveLoc[9](loc2: u256)
80StLoc[10](loc3: u256)
81Branch(84)
B13:
82LdU256(0)
83StLoc[10](loc3: u256)
B14:
84MoveLoc[10](loc3: u256)
85Ret
}
 
public compute_free_collateral(Arg0: &Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256): u256 {
L5: loc0: bool
L6: loc1: u256
L7: loc2: u256
L8: loc3: u256
L9: loc4: u256
L10: loc5: u256
L11: loc6: u256
L12: loc7: u256
L13: loc8: u256
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[7](Position.pending_orders: u64)
2ReadRef
3LdU64(0)
4Eq
5BrFalse(13)
B1:
6CopyLoc[0](Arg0: &Position)
7ImmBorrowField[0](Position.base_asset_amount: u256)
8ReadRef
9LdU256(0)
10Eq
11StLoc[5](loc0: bool)
12Branch(15)
B2:
13LdFalse
14StLoc[5](loc0: bool)
B3:
15MoveLoc[5](loc0: bool)
16BrFalse(23)
B4:
17LdU256(0)
18MoveLoc[0](Arg0: &Position)
19ImmBorrowField[1](Position.collateral: u256)
20ReadRef
21Call ifixed::max(u256, u256): u256
22Ret
B5:
23CopyLoc[0](Arg0: &Position)
24CopyLoc[2](Arg2: u256)
25Call unrealized_pnl(&Position, u256): u256
26StLoc[13](loc8: u256)
27CopyLoc[0](Arg0: &Position)
28MoveLoc[2](Arg2: u256)
29MoveLoc[3](Arg3: u256)
30Call margin_requirement(&Position, u256, u256): u256
31StLoc[12](loc7: u256)
32MoveLoc[0](Arg0: &Position)
33CopyLoc[1](Arg1: u256)
34CopyLoc[4](Arg4: u256)
35Call effective_collateral_usd_value(&Position, u256, u256): u256
36StLoc[10](loc5: u256)
37CopyLoc[13](loc8: u256)
38LdU256(0)
39Call ifixed::less_than(u256, u256): bool
40BrFalse(46)
B6:
41MoveLoc[10](loc5: u256)
42MoveLoc[13](loc8: u256)
43Call ifixed::add(u256, u256): u256
44StLoc[6](loc1: u256)
45Branch(48)
B7:
46MoveLoc[10](loc5: u256)
47StLoc[6](loc1: u256)
B8:
48MoveLoc[6](loc1: u256)
49StLoc[9](loc4: u256)
50CopyLoc[9](loc4: u256)
51CopyLoc[12](loc7: u256)
52Call ifixed::greater_than_eq(u256, u256): bool
53BrFalse(76)
B9:
54MoveLoc[9](loc4: u256)
55MoveLoc[12](loc7: u256)
56Call ifixed::sub(u256, u256): u256
57MoveLoc[1](Arg1: u256)
58Call ifixed::div(u256, u256): u256
59StLoc[11](loc6: u256)
60CopyLoc[4](Arg4: u256)
61LdU256(0)
62Neq
63BrFalse(71)
B10:
64MoveLoc[11](loc6: u256)
65LdU256(1000000000000000000)
66MoveLoc[4](Arg4: u256)
67Call ifixed::sub(u256, u256): u256
68Call ifixed::div(u256, u256): u256
69StLoc[7](loc2: u256)
70Branch(73)
B11:
71MoveLoc[11](loc6: u256)
72StLoc[7](loc2: u256)
B12:
73MoveLoc[7](loc2: u256)
74StLoc[8](loc3: u256)
75Branch(78)
B13:
76LdU256(0)
77StLoc[8](loc3: u256)
B14:
78MoveLoc[8](loc3: u256)
79Ret
}
 
public compute_margin_and_free_collateral(Arg0: &Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256): u256 * u256 * u256 {
L5: loc0: bool
L6: loc1: u256
L7: loc2: u256
L8: loc3: u256
L9: loc4: u256
L10: loc5: u256
L11: loc6: u256
L12: loc7: u256
L13: loc8: u256
L14: loc9: u256
L15: loc10: u256
L16: loc11: u256
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[7](Position.pending_orders: u64)
2ReadRef
3LdU64(0)
4Eq
5BrFalse(13)
B1:
6CopyLoc[0](Arg0: &Position)
7ImmBorrowField[0](Position.base_asset_amount: u256)
8ReadRef
9LdU256(0)
10Eq
11StLoc[5](loc0: bool)
12Branch(15)
B2:
13LdFalse
14StLoc[5](loc0: bool)
B3:
15MoveLoc[5](loc0: bool)
16BrFalse(30)
B4:
17CopyLoc[0](Arg0: &Position)
18ImmBorrowField[1](Position.collateral: u256)
19ReadRef
20StLoc[10](loc5: u256)
21MoveLoc[0](Arg0: &Position)
22MoveLoc[1](Arg1: u256)
23MoveLoc[4](Arg4: u256)
24Call effective_collateral_usd_value(&Position, u256, u256): u256
25LdU256(0)
26LdU256(0)
27MoveLoc[10](loc5: u256)
28Call ifixed::max(u256, u256): u256
29Ret
B5:
30CopyLoc[0](Arg0: &Position)
31CopyLoc[2](Arg2: u256)
32Call unrealized_pnl(&Position, u256): u256
33StLoc[16](loc11: u256)
34CopyLoc[0](Arg0: &Position)
35MoveLoc[2](Arg2: u256)
36MoveLoc[3](Arg3: u256)
37Call margin_requirement(&Position, u256, u256): u256
38StLoc[15](loc10: u256)
39MoveLoc[0](Arg0: &Position)
40CopyLoc[1](Arg1: u256)
41CopyLoc[4](Arg4: u256)
42Call effective_collateral_usd_value(&Position, u256, u256): u256
43StLoc[11](loc6: u256)
44CopyLoc[11](loc6: u256)
45CopyLoc[16](loc11: u256)
46Call ifixed::add(u256, u256): u256
47StLoc[14](loc9: u256)
48CopyLoc[15](loc10: u256)
49CopyLoc[14](loc9: u256)
50Call ifixed::greater_than(u256, u256): bool
51BrFalse(56)
B6:
52MoveLoc[14](loc9: u256)
53MoveLoc[15](loc10: u256)
54LdU256(0)
55Ret
B7:
56MoveLoc[16](loc11: u256)
57LdU256(0)
58Call ifixed::less_than(u256, u256): bool
59BrFalse(63)
B8:
60CopyLoc[14](loc9: u256)
61StLoc[6](loc1: u256)
62Branch(65)
B9:
63MoveLoc[11](loc6: u256)
64StLoc[6](loc1: u256)
B10:
65MoveLoc[6](loc1: u256)
66StLoc[9](loc4: u256)
67CopyLoc[9](loc4: u256)
68CopyLoc[15](loc10: u256)
69Call ifixed::greater_than_eq(u256, u256): bool
70BrFalse(93)
B11:
71MoveLoc[9](loc4: u256)
72CopyLoc[15](loc10: u256)
73Call ifixed::sub(u256, u256): u256
74MoveLoc[1](Arg1: u256)
75Call ifixed::div(u256, u256): u256
76StLoc[12](loc7: u256)
77CopyLoc[4](Arg4: u256)
78LdU256(0)
79Neq
80BrFalse(88)
B12:
81MoveLoc[12](loc7: u256)
82LdU256(1000000000000000000)
83MoveLoc[4](Arg4: u256)
84Call ifixed::sub(u256, u256): u256
85Call ifixed::div(u256, u256): u256
86StLoc[7](loc2: u256)
87Branch(90)
B13:
88MoveLoc[12](loc7: u256)
89StLoc[7](loc2: u256)
B14:
90MoveLoc[7](loc2: u256)
91StLoc[8](loc3: u256)
92Branch(95)
B15:
93LdU256(0)
94StLoc[8](loc3: u256)
B16:
95MoveLoc[8](loc3: u256)
96StLoc[13](loc8: u256)
97MoveLoc[14](loc9: u256)
98MoveLoc[15](loc10: u256)
99MoveLoc[13](loc8: u256)
100Ret
}
 
public compute_margin_with_fundings(Arg0: &Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256): u256 * u256 {
L7: loc0: u256
L8: loc1: u256
L9: loc2: u256
B0:
0CopyLoc[0](Arg0: &Position)
1MoveLoc[4](Arg4: u256)
2MoveLoc[5](Arg5: u256)
3Call calculate_position_funding_internal(&Position, u256, u256): u256
4StLoc[7](loc0: u256)
5CopyLoc[0](Arg0: &Position)
6CopyLoc[2](Arg2: u256)
7Call unrealized_pnl(&Position, u256): u256
8StLoc[9](loc2: u256)
9CopyLoc[0](Arg0: &Position)
10MoveLoc[2](Arg2: u256)
11MoveLoc[3](Arg3: u256)
12Call margin_requirement(&Position, u256, u256): u256
13StLoc[8](loc1: u256)
14MoveLoc[0](Arg0: &Position)
15MoveLoc[1](Arg1: u256)
16MoveLoc[6](Arg6: u256)
17MoveLoc[7](loc0: u256)
18Call effective_collateral_usd_value_with_funding(&Position, u256, u256, u256): u256
19MoveLoc[9](loc2: u256)
20Call ifixed::add(u256, u256): u256
21MoveLoc[8](loc1: u256)
22Ret
}
 
public compute_margin_and_requirement(Arg0: &Position, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256): u256 * u256 {
L5: loc0: u256
L6: loc1: u256
B0:
0CopyLoc[0](Arg0: &Position)
1CopyLoc[2](Arg2: u256)
2Call unrealized_pnl(&Position, u256): u256
3StLoc[6](loc1: u256)
4CopyLoc[0](Arg0: &Position)
5MoveLoc[2](Arg2: u256)
6MoveLoc[3](Arg3: u256)
7Call margin_requirement(&Position, u256, u256): u256
8StLoc[5](loc0: u256)
9MoveLoc[0](Arg0: &Position)
10MoveLoc[1](Arg1: u256)
11MoveLoc[4](Arg4: u256)
12Call effective_collateral_usd_value(&Position, u256, u256): u256
13MoveLoc[6](loc1: u256)
14Call ifixed::add(u256, u256): u256
15MoveLoc[5](loc0: u256)
16Ret
}
 
public apply_maker_fill_or_restore_if_bad_debt(Arg0: &mut Position, Arg1: bool, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256, Arg6: u256, Arg7: u256, Arg8: u256, Arg9: Option<u256>): bool * u256 * u256 {
L10: loc0: bool
L11: loc1: u256
L12: loc2: u256
L13: loc3: u256
L14: loc4: u256
L15: loc5: u256
L16: loc6: u256
L17: loc7: u256
L18: loc8: u256
L19: loc9: u256
B0:
0CopyLoc[0](Arg0: &mut Position)
1ImmBorrowField[1](Position.collateral: u256)
2ReadRef
3StLoc[15](loc5: u256)
4CopyLoc[0](Arg0: &mut Position)
5ImmBorrowField[0](Position.base_asset_amount: u256)
6ReadRef
7StLoc[14](loc4: u256)
8CopyLoc[0](Arg0: &mut Position)
9ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
10ReadRef
11StLoc[19](loc9: u256)
12CopyLoc[0](Arg0: &mut Position)
13MoveLoc[1](Arg1: bool)
14MoveLoc[2](Arg2: u256)
15MoveLoc[3](Arg3: u256)
16Call add_base_to_position(&mut Position, bool, u256, u256): u256 * u256
17StLoc[13](loc3: u256)
18StLoc[17](loc7: u256)
19CopyLoc[0](Arg0: &mut Position)
20CopyLoc[17](loc7: u256)
21MoveLoc[4](Arg4: u256)
22Call ifixed::sub(u256, u256): u256
23CopyLoc[6](Arg6: u256)
24Call add_to_collateral_usd(&mut Position, u256, u256): u256
25Pop
26CopyLoc[0](Arg0: &mut Position)
27FreezeRef
28CopyLoc[7](Arg7: u256)
29Call unrealized_pnl(&Position, u256): u256
30StLoc[18](loc8: u256)
31CopyLoc[0](Arg0: &mut Position)
32FreezeRef
33MoveLoc[6](Arg6: u256)
34MoveLoc[8](Arg8: u256)
35Call effective_collateral_usd_value(&Position, u256, u256): u256
36MoveLoc[18](loc8: u256)
37Call ifixed::add(u256, u256): u256
38StLoc[16](loc6: u256)
39CopyLoc[16](loc6: u256)
40LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
41Ge
42BrFalse(44)
B1:
43Branch(104)
B2:
44CopyLoc[0](Arg0: &mut Position)
45ImmBorrowField[0](Position.base_asset_amount: u256)
46ReadRef
47StLoc[12](loc2: u256)
48CopyLoc[12](loc2: u256)
49LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
50Ge
51BrFalse(59)
B3:
52MoveLoc[12](loc2: u256)
53LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
54Xor
55LdU256(1)
56Add
57StLoc[11](loc1: u256)
58Branch(61)
B4:
59MoveLoc[12](loc2: u256)
60StLoc[11](loc1: u256)
B5:
61CopyLoc[11](loc1: u256)
62MoveLoc[7](Arg7: u256)
63Mul
64LdU256(1000000000000000000)
65Div
66MoveLoc[5](Arg5: u256)
67Mul
68LdU256(1000000000000000000)
69Div
70MoveLoc[16](loc6: u256)
71Gt
72BrFalse(74)
B6:
73Branch(104)
B7:
74ImmBorrowLoc[9](Arg9: Option<u256>)
75Call option::is_some<u256>(&Option<u256>): bool
76BrFalse(93)
B8:
77CopyLoc[13](loc3: u256)
78Call ifixed::abs(u256): u256
79CopyLoc[14](loc4: u256)
80Call ifixed::abs(u256): u256
81Call ifixed::greater_than(u256, u256): bool
82BrFalse(90)
B9:
83MoveLoc[11](loc1: u256)
84ImmBorrowLoc[9](Arg9: Option<u256>)
85Call option::borrow<u256>(&Option<u256>): &u256
86ReadRef
87Call ifixed::greater_than(u256, u256): bool
88StLoc[10](loc0: bool)
89Branch(95)
B10:
90LdFalse
91StLoc[10](loc0: bool)
92Branch(95)
B11:
93LdFalse
94StLoc[10](loc0: bool)
B12:
95MoveLoc[10](loc0: bool)
96BrFalse(98)
B13:
97Branch(104)
B14:
98MoveLoc[0](Arg0: &mut Position)
99Pop
100LdTrue
101MoveLoc[17](loc7: u256)
102MoveLoc[13](loc3: u256)
103Ret
B15:
104MoveLoc[15](loc5: u256)
105CopyLoc[0](Arg0: &mut Position)
106MutBorrowField[1](Position.collateral: u256)
107WriteRef
108CopyLoc[14](loc4: u256)
109CopyLoc[0](Arg0: &mut Position)
110MutBorrowField[0](Position.base_asset_amount: u256)
111WriteRef
112MoveLoc[19](loc9: u256)
113MoveLoc[0](Arg0: &mut Position)
114MutBorrowField[2](Position.quote_asset_notional_amount: u256)
115WriteRef
116LdFalse
117LdU256(0)
118MoveLoc[14](loc4: u256)
119Ret
}
 
effective_collateral_usd_value(Arg0: &Position, Arg1: u256, Arg2: u256): u256 {
L3: loc0: bool
L4: loc1: u256
L5: loc2: u256
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[1](Position.collateral: u256)
2ReadRef
3MoveLoc[1](Arg1: u256)
4Call ifixed::mul(u256, u256): u256
5StLoc[5](loc2: u256)
6CopyLoc[2](Arg2: u256)
7LdU256(0)
8Neq
9BrFalse(17)
B1:
10MoveLoc[0](Arg0: &Position)
11ImmBorrowField[1](Position.collateral: u256)
12ReadRef
13Call ifixed::is_neg(u256): bool
14Not
15StLoc[3](loc0: bool)
16Branch(21)
B2:
17MoveLoc[0](Arg0: &Position)
18Pop
19LdFalse
20StLoc[3](loc0: bool)
B3:
21MoveLoc[3](loc0: bool)
22BrFalse(30)
B4:
23MoveLoc[5](loc2: u256)
24LdU256(1000000000000000000)
25MoveLoc[2](Arg2: u256)
26Call ifixed::sub(u256, u256): u256
27Call ifixed::mul(u256, u256): u256
28StLoc[4](loc1: u256)
29Branch(32)
B5:
30MoveLoc[5](loc2: u256)
31StLoc[4](loc1: u256)
B6:
32MoveLoc[4](loc1: u256)
33Ret
}
 
effective_collateral_usd_value_with_funding(Arg0: &Position, Arg1: u256, Arg2: u256, Arg3: u256): u256 {
L4: loc0: bool
L5: loc1: u256
L6: loc2: u256
B0:
0MoveLoc[0](Arg0: &Position)
1ImmBorrowField[1](Position.collateral: u256)
2ReadRef
3MoveLoc[1](Arg1: u256)
4Call ifixed::mul(u256, u256): u256
5MoveLoc[3](Arg3: u256)
6Call ifixed::add(u256, u256): u256
7StLoc[6](loc2: u256)
8CopyLoc[2](Arg2: u256)
9LdU256(0)
10Neq
11BrFalse(17)
B1:
12CopyLoc[6](loc2: u256)
13Call ifixed::is_neg(u256): bool
14Not
15StLoc[4](loc0: bool)
16Branch(19)
B2:
17LdFalse
18StLoc[4](loc0: bool)
B3:
19MoveLoc[4](loc0: bool)
20BrFalse(28)
B4:
21MoveLoc[6](loc2: u256)
22LdU256(1000000000000000000)
23MoveLoc[2](Arg2: u256)
24Call ifixed::sub(u256, u256): u256
25Call ifixed::mul(u256, u256): u256
26StLoc[5](loc1: u256)
27Branch(30)
B5:
28MoveLoc[6](loc2: u256)
29StLoc[5](loc1: u256)
B6:
30MoveLoc[5](loc1: u256)
31Ret
}
 
public ensure_margin_requirements(Arg0: u256, Arg1: u256, Arg2: u256, Arg3: u256, Arg4: u256, Arg5: u256) {
L6: loc0: bool
L7: loc1: bool
L8: loc2: bool
L9: loc3: bool
L10: loc4: bool
B0:
0CopyLoc[2](Arg2: u256)
1CopyLoc[3](Arg3: u256)
2Call ifixed::greater_than_eq(u256, u256): bool
3BrFalse(5)
B1:
4Ret
B2:
5CopyLoc[1](Arg1: u256)
6LdU256(0)
7Neq
8BrFalse(10)
B3:
9Branch(12)
B4:
10LdU64(2001)
11Abort
B5:
12CopyLoc[2](Arg2: u256)
13Call ifixed::is_neg(u256): bool
14Not
15BrFalse(21)
B6:
16CopyLoc[0](Arg0: u256)
17Call ifixed::is_neg(u256): bool
18Not
19StLoc[6](loc0: bool)
20Branch(23)
B7:
21LdFalse
22StLoc[6](loc0: bool)
B8:
23MoveLoc[6](loc0: bool)
24BrFalse(26)
B9:
25Branch(28)
B10:
26LdU64(2002)
27Abort
B11:
28CopyLoc[3](Arg3: u256)
29CopyLoc[1](Arg1: u256)
30Call ifixed::less_than_eq(u256, u256): bool
31StLoc[10](loc4: bool)
32CopyLoc[4](Arg4: u256)
33LdU256(0)
34Eq
35BrFalse(39)
B12:
36LdTrue
37StLoc[7](loc1: bool)
38Branch(52)
B13:
39CopyLoc[5](Arg5: u256)
40LdU256(0)
41Eq
42BrFalse(46)
B14:
43LdTrue
44StLoc[7](loc1: bool)
45Branch(52)
B15:
46MoveLoc[4](Arg4: u256)
47Call ifixed::is_neg(u256): bool
48MoveLoc[5](Arg5: u256)
49Call ifixed::is_neg(u256): bool
50Eq
51StLoc[7](loc1: bool)
B16:
52MoveLoc[7](loc1: bool)
53StLoc[9](loc3: bool)
54MoveLoc[10](loc4: bool)
55BrFalse(59)
B17:
56MoveLoc[9](loc3: bool)
57StLoc[8](loc2: bool)
58Branch(61)
B18:
59LdFalse
60StLoc[8](loc2: bool)
B19:
61MoveLoc[8](loc2: bool)
62BrFalse(64)
B20:
63Branch(66)
B21:
64LdU64(2001)
65Abort
B22:
66CopyLoc[2](Arg2: u256)
67CopyLoc[0](Arg0: u256)
68Call ifixed::greater_than_eq(u256, u256): bool
69BrFalse(71)
B23:
70Ret
B24:
71CopyLoc[3](Arg3: u256)
72CopyLoc[1](Arg1: u256)
73Neq
74BrFalse(76)
B25:
75Branch(78)
B26:
76LdU64(2001)
77Abort
B27:
78MoveLoc[2](Arg2: u256)
79MoveLoc[1](Arg1: u256)
80Call ifixed::mul(u256, u256): u256
81MoveLoc[0](Arg0: u256)
82MoveLoc[3](Arg3: u256)
83Call ifixed::mul(u256, u256): u256
84Call ifixed::greater_than_eq(u256, u256): bool
85BrFalse(87)
B28:
86Branch(89)
B29:
87LdU64(2001)
88Abort
B30:
89Ret
}
 
public unrealized_pnl(Arg0: &Position, Arg1: u256): u256 {
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3MoveLoc[1](Arg1: u256)
4Call ifixed::mul(u256, u256): u256
5MoveLoc[0](Arg0: &Position)
6ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
7ReadRef
8Call ifixed::sub(u256, u256): u256
9Ret
}
 
public margin_requirement(Arg0: &Position, Arg1: u256, Arg2: u256): u256 {
B0:
0MoveLoc[0](Arg0: &Position)
1Call abs_net_base(&Position): u256
2MoveLoc[1](Arg1: u256)
3Call ifixed::mul(u256, u256): u256
4MoveLoc[2](Arg2: u256)
5Call ifixed::mul(u256, u256): u256
6Ret
}
 
public abs_net_base(Arg0: &Position): u256 {
L1: loc0: u256
L2: loc1: u256
L3: loc2: u256
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3StLoc[2](loc1: u256)
4CopyLoc[2](loc1: u256)
5CopyLoc[0](Arg0: &Position)
6ImmBorrowField[4](Position.bids_quantity: u256)
7ReadRef
8Call ifixed::add(u256, u256): u256
9Call ifixed::abs(u256): u256
10StLoc[3](loc2: u256)
11MoveLoc[2](loc1: u256)
12MoveLoc[0](Arg0: &Position)
13ImmBorrowField[3](Position.asks_quantity: u256)
14ReadRef
15Call ifixed::sub(u256, u256): u256
16Call ifixed::abs(u256): u256
17StLoc[1](loc0: u256)
18MoveLoc[3](loc2: u256)
19MoveLoc[1](loc0: u256)
20Call ifixed::max(u256, u256): u256
21Ret
}
 
public settle_position_funding(Arg0: &mut Position, Arg1: u256, Arg2: u256, Arg3: u256): bool * u256 * u256 {
L4: loc0: bool
L5: loc1: u256
L6: loc2: u256
L7: loc3: u256
L8: loc4: u256
L9: loc5: u256
L10: loc6: u256
L11: loc7: u256
L12: loc8: bool
L13: loc9: bool
L14: loc10: bool
L15: loc11: u256
L16: loc12: u256
L17: loc13: u256
L18: loc14: bool
B0:
0CopyLoc[0](Arg0: &mut Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
4Ge
5StLoc[12](loc8: bool)
6CopyLoc[12](loc8: bool)
7BrFalse(23)
B1:
8CopyLoc[3](Arg3: u256)
9StLoc[17](loc13: u256)
10CopyLoc[0](Arg0: &mut Position)
11ImmBorrowField[6](Position.cum_funding_rate_short: u256)
12ReadRef
13StLoc[16](loc12: u256)
14CopyLoc[0](Arg0: &mut Position)
15ImmBorrowField[0](Position.base_asset_amount: u256)
16ReadRef
17LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
18Xor
19LdU256(1)
20Add
21StLoc[5](loc1: u256)
22Branch(33)
B2:
23CopyLoc[2](Arg2: u256)
24StLoc[17](loc13: u256)
25CopyLoc[0](Arg0: &mut Position)
26ImmBorrowField[5](Position.cum_funding_rate_long: u256)
27ReadRef
28StLoc[16](loc12: u256)
29CopyLoc[0](Arg0: &mut Position)
30ImmBorrowField[0](Position.base_asset_amount: u256)
31ReadRef
32StLoc[5](loc1: u256)
B3:
33CopyLoc[17](loc13: u256)
34CopyLoc[16](loc12: u256)
35Neq
36BrFalse(235)
B4:
37CopyLoc[5](loc1: u256)
38LdU256(0)
39Neq
40BrFalse(235)
B5:
41CopyLoc[17](loc13: u256)
42LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
43Ge
44StLoc[14](loc10: bool)
45CopyLoc[16](loc12: u256)
46LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
47Ge
48CopyLoc[14](loc10: bool)
49Eq
50BrFalse(69)
B6:
51CopyLoc[17](loc13: u256)
52CopyLoc[16](loc12: u256)
53Ge
54BrFalse(62)
B7:
55MoveLoc[17](loc13: u256)
56MoveLoc[16](loc12: u256)
57Sub
58StLoc[7](loc3: u256)
59LdFalse
60StLoc[13](loc9: bool)
61Branch(90)
B8:
62MoveLoc[16](loc12: u256)
63MoveLoc[17](loc13: u256)
64Sub
65StLoc[7](loc3: u256)
66LdTrue
67StLoc[13](loc9: bool)
68Branch(90)
B9:
69CopyLoc[14](loc10: bool)
70StLoc[13](loc9: bool)
71MoveLoc[14](loc10: bool)
72BrFalse(82)
B10:
73MoveLoc[17](loc13: u256)
74LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
75Xor
76LdU256(1)
77Add
78MoveLoc[16](loc12: u256)
79Add
80StLoc[7](loc3: u256)
81Branch(90)
B11:
82MoveLoc[16](loc12: u256)
83LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
84Xor
85LdU256(1)
86Add
87MoveLoc[17](loc13: u256)
88Add
89StLoc[7](loc3: u256)
B12:
90MoveLoc[7](loc3: u256)
91MoveLoc[5](loc1: u256)
92Mul
93StLoc[15](loc11: u256)
94MoveLoc[12](loc8: bool)
95MoveLoc[13](loc9: bool)
96Neq
97BrFalse(166)
B13:
98CopyLoc[15](loc11: u256)
99MoveLoc[1](Arg1: u256)
100Div
101StLoc[9](loc5: u256)
102MoveLoc[15](loc11: u256)
103LdU256(1000000000000000000)
104Div
105StLoc[11](loc7: u256)
106CopyLoc[9](loc5: u256)
107LdU256(0)
108Neq
109BrFalse(161)
B14:
110CopyLoc[0](Arg0: &mut Position)
111ImmBorrowField[1](Position.collateral: u256)
112ReadRef
113LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
114Ge
115BrFalse(140)
B15:
116CopyLoc[0](Arg0: &mut Position)
117ImmBorrowField[1](Position.collateral: u256)
118ReadRef
119LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
120Xor
121LdU256(1)
122Add
123StLoc[6](loc2: u256)
124CopyLoc[9](loc5: u256)
125CopyLoc[6](loc2: u256)
126Ge
127BrFalse(133)
B16:
128MoveLoc[9](loc5: u256)
129MoveLoc[6](loc2: u256)
130Sub
131StLoc[8](loc4: u256)
132Branch(156)
B17:
133CopyLoc[0](Arg0: &mut Position)
134ImmBorrowField[1](Position.collateral: u256)
135ReadRef
136MoveLoc[9](loc5: u256)
137Add
138StLoc[8](loc4: u256)
139Branch(156)
B18:
140CopyLoc[0](Arg0: &mut Position)
141ImmBorrowField[1](Position.collateral: u256)
142ReadRef
143MoveLoc[9](loc5: u256)
144Add
145StLoc[8](loc4: u256)
146CopyLoc[8](loc4: u256)
147LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
148Ge
149Not
150BrFalse(152)
B19:
151Branch(156)
B20:
152MoveLoc[0](Arg0: &mut Position)
153Pop
154LdU64(2000)
155Abort
B21:
156CopyLoc[8](loc4: u256)
157CopyLoc[0](Arg0: &mut Position)
158MutBorrowField[1](Position.collateral: u256)
159WriteRef
160Branch(241)
B22:
161CopyLoc[0](Arg0: &mut Position)
162ImmBorrowField[1](Position.collateral: u256)
163ReadRef
164StLoc[8](loc4: u256)
165Branch(241)
B23:
166CopyLoc[15](loc11: u256)
167CopyLoc[1](Arg1: u256)
168Add
169LdU256(1)
170Sub
171MoveLoc[1](Arg1: u256)
172Div
173StLoc[10](loc6: u256)
174CopyLoc[0](Arg0: &mut Position)
175ImmBorrowField[1](Position.collateral: u256)
176ReadRef
177LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
178Ge
179BrFalse(195)
B24:
180CopyLoc[0](Arg0: &mut Position)
181ImmBorrowField[1](Position.collateral: u256)
182ReadRef
183MoveLoc[10](loc6: u256)
184Sub
185StLoc[8](loc4: u256)
186CopyLoc[8](loc4: u256)
187LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
188Ge
189BrFalse(191)
B25:
190Branch(218)
B26:
191MoveLoc[0](Arg0: &mut Position)
192Pop
193LdU64(2000)
194Abort
B27:
195CopyLoc[0](Arg0: &mut Position)
196ImmBorrowField[1](Position.collateral: u256)
197ReadRef
198CopyLoc[10](loc6: u256)
199Ge
200BrFalse(208)
B28:
201CopyLoc[0](Arg0: &mut Position)
202ImmBorrowField[1](Position.collateral: u256)
203ReadRef
204MoveLoc[10](loc6: u256)
205Sub
206StLoc[8](loc4: u256)
207Branch(218)
B29:
208MoveLoc[10](loc6: u256)
209CopyLoc[0](Arg0: &mut Position)
210ImmBorrowField[1](Position.collateral: u256)
211ReadRef
212Sub
213LdU256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
214Xor
215LdU256(1)
216Add
217StLoc[8](loc4: u256)
B30:
218MoveLoc[15](loc11: u256)
219LdU256(999999999999999999)
220Add
221LdU256(1000000000000000000)
222Div
223LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819967)
224Xor
225LdU256(1)
226Add
227LdU256(57896044618658097711785492504343953926634992332820282019728792003956564819968)
228Xor
229StLoc[11](loc7: u256)
230CopyLoc[8](loc4: u256)
231CopyLoc[0](Arg0: &mut Position)
232MutBorrowField[1](Position.collateral: u256)
233WriteRef
234Branch(241)
B31:
235CopyLoc[0](Arg0: &mut Position)
236ImmBorrowField[1](Position.collateral: u256)
237ReadRef
238StLoc[8](loc4: u256)
239LdU256(0)
240StLoc[11](loc7: u256)
B32:
241CopyLoc[11](loc7: u256)
242LdU256(0)
243Neq
244BrFalse(248)
B33:
245LdTrue
246StLoc[4](loc0: bool)
247Branch(263)
B34:
248CopyLoc[0](Arg0: &mut Position)
249ImmBorrowField[5](Position.cum_funding_rate_long: u256)
250ReadRef
251CopyLoc[2](Arg2: u256)
252Neq
253BrFalse(257)
B35:
254LdTrue
255StLoc[4](loc0: bool)
256Branch(263)
B36:
257CopyLoc[0](Arg0: &mut Position)
258ImmBorrowField[6](Position.cum_funding_rate_short: u256)
259ReadRef
260CopyLoc[3](Arg3: u256)
261Neq
262StLoc[4](loc0: bool)
B37:
263MoveLoc[4](loc0: bool)
264StLoc[18](loc14: bool)
265MoveLoc[2](Arg2: u256)
266CopyLoc[0](Arg0: &mut Position)
267MutBorrowField[5](Position.cum_funding_rate_long: u256)
268WriteRef
269MoveLoc[3](Arg3: u256)
270MoveLoc[0](Arg0: &mut Position)
271MutBorrowField[6](Position.cum_funding_rate_short: u256)
272WriteRef
273MoveLoc[18](loc14: bool)
274MoveLoc[11](loc7: u256)
275MoveLoc[8](loc4: u256)
276Ret
}
 
public calculate_position_funding_internal(Arg0: &Position, Arg1: u256, Arg2: u256): u256 {
L3: loc0: u256
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3Call ifixed::is_neg(u256): bool
4BrFalse(15)
B1:
5MoveLoc[2](Arg2: u256)
6CopyLoc[0](Arg0: &Position)
7ImmBorrowField[6](Position.cum_funding_rate_short: u256)
8ReadRef
9MoveLoc[0](Arg0: &Position)
10ImmBorrowField[0](Position.base_asset_amount: u256)
11ReadRef
12Call unrealized_funding(u256, u256, u256): u256
13StLoc[3](loc0: u256)
14Branch(24)
B2:
15MoveLoc[1](Arg1: u256)
16CopyLoc[0](Arg0: &Position)
17ImmBorrowField[5](Position.cum_funding_rate_long: u256)
18ReadRef
19MoveLoc[0](Arg0: &Position)
20ImmBorrowField[0](Position.base_asset_amount: u256)
21ReadRef
22Call unrealized_funding(u256, u256, u256): u256
23StLoc[3](loc0: u256)
B3:
24MoveLoc[3](loc0: u256)
25Ret
}
 
public unrealized_funding(Arg0: u256, Arg1: u256, Arg2: u256): u256 {
B0:
0CopyLoc[0](Arg0: u256)
1CopyLoc[1](Arg1: u256)
2Eq
3BrFalse(6)
B1:
4LdU256(0)
5Ret
B2:
6MoveLoc[0](Arg0: u256)
7MoveLoc[1](Arg1: u256)
8Call ifixed::sub(u256, u256): u256
9MoveLoc[2](Arg2: u256)
10Call ifixed::neg(u256): u256
11Call ifixed::mul(u256, u256): u256
12Ret
}
 
public calculate_bankruptcy_price(Arg0: &Position, Arg1: u256, Arg2: u64): u64 {
L3: loc0: bool
L4: loc1: bool
L5: loc2: u256
L6: loc3: bool
L7: loc4: u256
L8: loc5: u256
L9: loc6: u64
L10: loc7: u64
B0:
0CopyLoc[0](Arg0: &Position)
1ImmBorrowField[0](Position.base_asset_amount: u256)
2ReadRef
3StLoc[5](loc2: u256)
4CopyLoc[5](loc2: u256)
5LdU256(0)
6Eq
7BrFalse(12)
B1:
8MoveLoc[0](Arg0: &Position)
9Pop
10LdU64(0)
11Ret
B2:
12CopyLoc[5](loc2: u256)
13Call ifixed::is_neg(u256): bool
14Not
15StLoc[6](loc3: bool)
16CopyLoc[0](Arg0: &Position)
17ImmBorrowField[2](Position.quote_asset_notional_amount: u256)
18ReadRef
19MoveLoc[1](Arg1: u256)
20MoveLoc[0](Arg0: &Position)
21ImmBorrowField[1](Position.collateral: u256)
22ReadRef
23Call ifixed::mul(u256, u256): u256
24Call ifixed::sub(u256, u256): u256
25StLoc[7](loc4: u256)
26CopyLoc[7](loc4: u256)
27CopyLoc[5](loc2: u256)
28Call ifixed::div(u256, u256): u256
29StLoc[8](loc5: u256)
30CopyLoc[6](loc3: bool)
31BrFalse(39)
B3:
32MoveLoc[7](loc4: u256)
33CopyLoc[8](loc5: u256)
34MoveLoc[5](loc2: u256)
35Call ifixed::mul(u256, u256): u256
36Neq
37StLoc[3](loc0: bool)
38Branch(41)
B4:
39LdFalse
40StLoc[3](loc0: bool)
B5:
41MoveLoc[3](loc0: bool)
42BrFalse(47)
B6:
43MoveLoc[8](loc5: u256)
44LdU256(1)
45Call ifixed::add(u256, u256): u256
46StLoc[8](loc5: u256)
B7:
47MoveLoc[8](loc5: u256)
48LdU256(0)
49Call ifixed::max(u256, u256): u256
50StLoc[8](loc5: u256)
51CopyLoc[8](loc5: u256)
52LdU256(1000000000)
53Call ifixed::to_balance(u256, u256): u64
54StLoc[9](loc6: u64)
55CopyLoc[6](loc3: bool)
56BrFalse(64)
B8:
57CopyLoc[9](loc6: u64)
58LdU256(1000000000)
59Call ifixed::from_balance(u64, u256): u256
60MoveLoc[8](loc5: u256)
61Neq
62StLoc[4](loc1: bool)
63Branch(66)
B9:
64LdFalse
65StLoc[4](loc1: bool)
B10:
66MoveLoc[4](loc1: bool)
67BrFalse(72)
B11:
68MoveLoc[9](loc6: u64)
69LdU64(1)
70Add
71StLoc[9](loc6: u64)
B12:
72CopyLoc[9](loc6: u64)
73CopyLoc[2](Arg2: u64)
74Mod
75StLoc[10](loc7: u64)
76CopyLoc[10](loc7: u64)
77LdU64(0)
78Neq
79BrFalse(93)
B13:
80MoveLoc[6](loc3: bool)
81BrFalse(89)
B14:
82MoveLoc[9](loc6: u64)
83MoveLoc[2](Arg2: u64)
84Add
85MoveLoc[10](loc7: u64)
86Sub
87StLoc[9](loc6: u64)
88Branch(93)
B15:
89MoveLoc[9](loc6: u64)
90MoveLoc[10](loc7: u64)
91Sub
92StLoc[9](loc6: u64)
B16:
93MoveLoc[9](loc6: u64)
94Ret
}
 
}