tree_math
Module0x01ac…6d5c
- Move path
- 0x5a5c…83ac::tree_math
- Functions
- 95 public, 0 entry
- Structs
- 1
- Friend modules
- bin_managerlb_pair
tree_math
Bytecode882 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac.tree_math {
use 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac::bit_math;
use 0000000000000000000000000000000000000000000000000000000000000002::table;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct TreeUint24 has store {
level0: u256,
level1: Table<u64, u256>,
level2: Table<u64, u256>
}
public max_id(): u32 {
B0:
0LdConst[0](u32: 1677..)
1Ret
}
public(friend) empty(Arg0: &mut TxContext): TreeUint24 {
B0:
0LdU256(0)
1CopyLoc[0](Arg0: &mut TxContext)
2Call table::new<u64, u256>(&mut TxContext): Table<u64, u256>
3MoveLoc[0](Arg0: &mut TxContext)
4Call table::new<u64, u256>(&mut TxContext): Table<u64, u256>
5Pack[0](TreeUint24)
6Ret
}
safe_borrow_table(Arg0: &Table<u64, u256>, Arg1: u64): u256 {
L2: loc0: u256
B0:
0CopyLoc[0](Arg0: &Table<u64, u256>)
1CopyLoc[1](Arg1: u64)
2Call table::contains<u64, u256>(&Table<u64, u256>, u64): bool
3BrFalse(10)
B1:
4MoveLoc[0](Arg0: &Table<u64, u256>)
5MoveLoc[1](Arg1: u64)
6Call table::borrow<u64, u256>(&Table<u64, u256>, u64): &u256
7ReadRef
8StLoc[2](loc0: u256)
9Branch(14)
B2:
10MoveLoc[0](Arg0: &Table<u64, u256>)
11Pop
12LdU256(0)
13StLoc[2](loc0: u256)
B3:
14MoveLoc[2](loc0: u256)
15Ret
}
public contains(Arg0: &TreeUint24, Arg1: u32): bool {
L2: loc0: u8
L3: loc1: u64
B0:
0CopyLoc[1](Arg1: u32)
1LdConst[0](u32: 1677..)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &TreeUint24)
6Pop
7LdConst[4](u64: 65536)
8Abort
B3:
9CopyLoc[0](Arg0: &TreeUint24)
10ImmBorrowField[0](TreeUint24.level0: u256)
11ReadRef
12LdU256(0)
13Eq
14BrFalse(19)
B4:
15MoveLoc[0](Arg0: &TreeUint24)
16Pop
17LdFalse
18Ret
B5:
19CopyLoc[1](Arg1: u32)
20LdConst[3](u8: 8)
21Shr
22CastU64
23StLoc[3](loc1: u64)
24MoveLoc[1](Arg1: u32)
25LdConst[1](u8: 255)
26CastU32
27BitAnd
28CastU8
29StLoc[2](loc0: u8)
30MoveLoc[0](Arg0: &TreeUint24)
31ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
32MoveLoc[3](loc1: u64)
33Call safe_borrow_table(&Table<u64, u256>, u64): u256
34LdU256(1)
35MoveLoc[2](loc0: u8)
36Shl
37BitAnd
38LdU256(0)
39Neq
40Ret
}
public(friend) add(Arg0: &mut TreeUint24, Arg1: u32): bool {
L2: loc0: bool
L3: loc1: u8
L4: loc2: u8
L5: loc3: u8
L6: loc4: u256
L7: loc5: u256
L8: loc6: u64
L9: loc7: u64
L10: loc8: u256
L11: loc9: u256
B0:
0CopyLoc[1](Arg1: u32)
1LdConst[0](u32: 1677..)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut TreeUint24)
6Pop
7LdConst[4](u64: 65536)
8Abort
B3:
9CopyLoc[1](Arg1: u32)
10LdConst[3](u8: 8)
11Shr
12CastU64
13StLoc[9](loc7: u64)
14MoveLoc[1](Arg1: u32)
15LdConst[1](u8: 255)
16CastU32
17BitAnd
18CastU8
19StLoc[5](loc3: u8)
20CopyLoc[0](Arg0: &mut TreeUint24)
21ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
22CopyLoc[9](loc7: u64)
23Call safe_borrow_table(&Table<u64, u256>, u64): u256
24StLoc[7](loc5: u256)
25CopyLoc[7](loc5: u256)
26LdU256(1)
27MoveLoc[5](loc3: u8)
28Shl
29BitOr
30StLoc[11](loc9: u256)
31CopyLoc[7](loc5: u256)
32CopyLoc[11](loc9: u256)
33Eq
34BrFalse(40)
B4:
35MoveLoc[0](Arg0: &mut TreeUint24)
36Pop
37LdFalse
38StLoc[2](loc0: bool)
39Branch(125)
B5:
40CopyLoc[7](loc5: u256)
41LdU256(0)
42Eq
43BrFalse(50)
B6:
44CopyLoc[0](Arg0: &mut TreeUint24)
45MutBorrowField[1](TreeUint24.level2: Table<u64, u256>)
46CopyLoc[9](loc7: u64)
47MoveLoc[11](loc9: u256)
48Call table::add<u64, u256>(&mut Table<u64, u256>, u64, u256)
49Branch(56)
B7:
50MoveLoc[11](loc9: u256)
51CopyLoc[0](Arg0: &mut TreeUint24)
52MutBorrowField[1](TreeUint24.level2: Table<u64, u256>)
53CopyLoc[9](loc7: u64)
54Call table::borrow_mut<u64, u256>(&mut Table<u64, u256>, u64): &mut u256
55WriteRef
B8:
56MoveLoc[7](loc5: u256)
57LdU256(0)
58Eq
59BrFalse(121)
B9:
60CopyLoc[9](loc7: u64)
61LdConst[3](u8: 8)
62Shr
63StLoc[8](loc6: u64)
64MoveLoc[9](loc7: u64)
65LdConst[1](u8: 255)
66CastU64
67BitAnd
68CastU8
69StLoc[4](loc2: u8)
70CopyLoc[0](Arg0: &mut TreeUint24)
71ImmBorrowField[2](TreeUint24.level1: Table<u64, u256>)
72CopyLoc[8](loc6: u64)
73Call safe_borrow_table(&Table<u64, u256>, u64): u256
74StLoc[6](loc4: u256)
75CopyLoc[6](loc4: u256)
76LdU256(1)
77MoveLoc[4](loc2: u8)
78Shl
79BitOr
80StLoc[10](loc8: u256)
81CopyLoc[6](loc4: u256)
82LdU256(0)
83Eq
84BrFalse(91)
B10:
85CopyLoc[0](Arg0: &mut TreeUint24)
86MutBorrowField[2](TreeUint24.level1: Table<u64, u256>)
87CopyLoc[8](loc6: u64)
88MoveLoc[10](loc8: u256)
89Call table::add<u64, u256>(&mut Table<u64, u256>, u64, u256)
90Branch(97)
B11:
91MoveLoc[10](loc8: u256)
92CopyLoc[0](Arg0: &mut TreeUint24)
93MutBorrowField[2](TreeUint24.level1: Table<u64, u256>)
94CopyLoc[8](loc6: u64)
95Call table::borrow_mut<u64, u256>(&mut Table<u64, u256>, u64): &mut u256
96WriteRef
B12:
97MoveLoc[6](loc4: u256)
98LdU256(0)
99Eq
100BrFalse(118)
B13:
101MoveLoc[8](loc6: u64)
102LdConst[1](u8: 255)
103CastU64
104BitAnd
105CastU8
106StLoc[3](loc1: u8)
107CopyLoc[0](Arg0: &mut TreeUint24)
108ImmBorrowField[0](TreeUint24.level0: u256)
109ReadRef
110LdU256(1)
111MoveLoc[3](loc1: u8)
112Shl
113BitOr
114MoveLoc[0](Arg0: &mut TreeUint24)
115MutBorrowField[0](TreeUint24.level0: u256)
116WriteRef
117Branch(120)
B14:
118MoveLoc[0](Arg0: &mut TreeUint24)
119Pop
B15:
120Branch(123)
B16:
121MoveLoc[0](Arg0: &mut TreeUint24)
122Pop
B17:
123LdTrue
124StLoc[2](loc0: bool)
B18:
125MoveLoc[2](loc0: bool)
126Ret
}
public(friend) remove(Arg0: &mut TreeUint24, Arg1: u32): bool {
L2: loc0: bool
L3: loc1: u8
L4: loc2: u8
L5: loc3: u8
L6: loc4: u256
L7: loc5: u64
L8: loc6: u64
L9: loc7: u256
L10: loc8: u256
B0:
0CopyLoc[1](Arg1: u32)
1LdConst[0](u32: 1677..)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut TreeUint24)
6Pop
7LdConst[4](u64: 65536)
8Abort
B3:
9CopyLoc[0](Arg0: &mut TreeUint24)
10ImmBorrowField[0](TreeUint24.level0: u256)
11ReadRef
12LdU256(0)
13Eq
14BrFalse(19)
B4:
15MoveLoc[0](Arg0: &mut TreeUint24)
16Pop
17LdFalse
18Ret
B5:
19CopyLoc[1](Arg1: u32)
20LdConst[3](u8: 8)
21Shr
22CastU64
23StLoc[8](loc6: u64)
24MoveLoc[1](Arg1: u32)
25LdConst[1](u8: 255)
26CastU32
27BitAnd
28CastU8
29StLoc[5](loc3: u8)
30CopyLoc[0](Arg0: &mut TreeUint24)
31ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
32CopyLoc[8](loc6: u64)
33Call table::contains<u64, u256>(&Table<u64, u256>, u64): bool
34Not
35BrFalse(40)
B6:
36MoveLoc[0](Arg0: &mut TreeUint24)
37Pop
38LdFalse
39Ret
B7:
40CopyLoc[0](Arg0: &mut TreeUint24)
41ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
42CopyLoc[8](loc6: u64)
43Call table::borrow<u64, u256>(&Table<u64, u256>, u64): &u256
44ReadRef
45StLoc[6](loc4: u256)
46CopyLoc[6](loc4: u256)
47LdConst[2](u256: 1157..)
48LdU256(1)
49MoveLoc[5](loc3: u8)
50Shl
51Xor
52BitAnd
53StLoc[10](loc8: u256)
54MoveLoc[6](loc4: u256)
55CopyLoc[10](loc8: u256)
56Eq
57BrFalse(63)
B8:
58MoveLoc[0](Arg0: &mut TreeUint24)
59Pop
60LdFalse
61StLoc[2](loc0: bool)
62Branch(159)
B9:
63CopyLoc[10](loc8: u256)
64LdU256(0)
65Eq
66BrFalse(73)
B10:
67CopyLoc[0](Arg0: &mut TreeUint24)
68MutBorrowField[1](TreeUint24.level2: Table<u64, u256>)
69CopyLoc[8](loc6: u64)
70Call table::remove<u64, u256>(&mut Table<u64, u256>, u64): u256
71Pop
72Branch(79)
B11:
73CopyLoc[10](loc8: u256)
74CopyLoc[0](Arg0: &mut TreeUint24)
75MutBorrowField[1](TreeUint24.level2: Table<u64, u256>)
76CopyLoc[8](loc6: u64)
77Call table::borrow_mut<u64, u256>(&mut Table<u64, u256>, u64): &mut u256
78WriteRef
B12:
79MoveLoc[10](loc8: u256)
80LdU256(0)
81Eq
82BrFalse(155)
B13:
83CopyLoc[8](loc6: u64)
84LdConst[3](u8: 8)
85Shr
86StLoc[7](loc5: u64)
87MoveLoc[8](loc6: u64)
88LdConst[1](u8: 255)
89CastU64
90BitAnd
91CastU8
92StLoc[4](loc2: u8)
93CopyLoc[0](Arg0: &mut TreeUint24)
94ImmBorrowField[2](TreeUint24.level1: Table<u64, u256>)
95CopyLoc[7](loc5: u64)
96Call table::contains<u64, u256>(&Table<u64, u256>, u64): bool
97BrFalse(152)
B14:
98CopyLoc[0](Arg0: &mut TreeUint24)
99ImmBorrowField[2](TreeUint24.level1: Table<u64, u256>)
100CopyLoc[7](loc5: u64)
101Call table::borrow<u64, u256>(&Table<u64, u256>, u64): &u256
102ReadRef
103LdConst[2](u256: 1157..)
104LdU256(1)
105MoveLoc[4](loc2: u8)
106Shl
107Xor
108BitAnd
109StLoc[9](loc7: u256)
110CopyLoc[9](loc7: u256)
111LdU256(0)
112Eq
113BrFalse(120)
B15:
114CopyLoc[0](Arg0: &mut TreeUint24)
115MutBorrowField[2](TreeUint24.level1: Table<u64, u256>)
116CopyLoc[7](loc5: u64)
117Call table::remove<u64, u256>(&mut Table<u64, u256>, u64): u256
118Pop
119Branch(126)
B16:
120CopyLoc[9](loc7: u256)
121CopyLoc[0](Arg0: &mut TreeUint24)
122MutBorrowField[2](TreeUint24.level1: Table<u64, u256>)
123CopyLoc[7](loc5: u64)
124Call table::borrow_mut<u64, u256>(&mut Table<u64, u256>, u64): &mut u256
125WriteRef
B17:
126MoveLoc[9](loc7: u256)
127LdU256(0)
128Eq
129BrFalse(149)
B18:
130MoveLoc[7](loc5: u64)
131LdConst[1](u8: 255)
132CastU64
133BitAnd
134CastU8
135StLoc[3](loc1: u8)
136CopyLoc[0](Arg0: &mut TreeUint24)
137ImmBorrowField[0](TreeUint24.level0: u256)
138ReadRef
139LdConst[2](u256: 1157..)
140LdU256(1)
141MoveLoc[3](loc1: u8)
142Shl
143Xor
144BitAnd
145MoveLoc[0](Arg0: &mut TreeUint24)
146MutBorrowField[0](TreeUint24.level0: u256)
147WriteRef
148Branch(151)
B19:
149MoveLoc[0](Arg0: &mut TreeUint24)
150Pop
B20:
151Branch(154)
B21:
152MoveLoc[0](Arg0: &mut TreeUint24)
153Pop
B22:
154Branch(157)
B23:
155MoveLoc[0](Arg0: &mut TreeUint24)
156Pop
B24:
157LdTrue
158StLoc[2](loc0: bool)
B25:
159MoveLoc[2](loc0: bool)
160Ret
}
public find_first_right(Arg0: &TreeUint24, Arg1: u32): u32 {
L2: loc0: u8
L3: loc1: u8
L4: loc2: u8
L5: loc3: u256
L6: loc4: u256
L7: loc5: u256
L8: loc6: u64
L9: loc7: u64
L10: loc8: u256
L11: loc9: u256
L12: loc10: u256
L13: loc11: u256
L14: loc12: u256
L15: loc13: u256
B0:
0CopyLoc[1](Arg1: u32)
1LdConst[0](u32: 1677..)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &TreeUint24)
6Pop
7LdConst[4](u64: 65536)
8Abort
B3:
9CopyLoc[0](Arg0: &TreeUint24)
10ImmBorrowField[0](TreeUint24.level0: u256)
11ReadRef
12LdU256(0)
13Eq
14BrFalse(19)
B4:
15MoveLoc[0](Arg0: &TreeUint24)
16Pop
17LdConst[0](u32: 1677..)
18Ret
B5:
19CopyLoc[1](Arg1: u32)
20LdConst[3](u8: 8)
21Shr
22CastU64
23StLoc[9](loc7: u64)
24MoveLoc[1](Arg1: u32)
25LdConst[1](u8: 255)
26CastU32
27BitAnd
28CastU8
29StLoc[4](loc2: u8)
30CopyLoc[4](loc2: u8)
31LdU8(0)
32Gt
33BrFalse(57)
B6:
34CopyLoc[0](Arg0: &TreeUint24)
35ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
36CopyLoc[9](loc7: u64)
37Call safe_borrow_table(&Table<u64, u256>, u64): u256
38MoveLoc[4](loc2: u8)
39LdU8(1)
40Sub
41Call bit_math::closest_bit_right_u256(u256, u8): u256
42StLoc[5](loc3: u256)
43CopyLoc[5](loc3: u256)
44Call bit_math::invalid_bit(): u256
45Neq
46BrFalse(57)
B7:
47MoveLoc[0](Arg0: &TreeUint24)
48Pop
49MoveLoc[9](loc7: u64)
50CastU256
51LdConst[3](u8: 8)
52Shl
53MoveLoc[5](loc3: u256)
54BitOr
55CastU32
56Ret
B8:
57CopyLoc[9](loc7: u64)
58LdConst[3](u8: 8)
59Shr
60StLoc[8](loc6: u64)
61MoveLoc[9](loc7: u64)
62LdConst[1](u8: 255)
63CastU64
64BitAnd
65CastU8
66StLoc[3](loc1: u8)
67CopyLoc[3](loc1: u8)
68LdU8(0)
69Gt
70BrFalse(106)
B9:
71CopyLoc[0](Arg0: &TreeUint24)
72ImmBorrowField[2](TreeUint24.level1: Table<u64, u256>)
73CopyLoc[8](loc6: u64)
74Call safe_borrow_table(&Table<u64, u256>, u64): u256
75MoveLoc[3](loc1: u8)
76LdU8(1)
77Sub
78Call bit_math::closest_bit_right_u256(u256, u8): u256
79StLoc[6](loc4: u256)
80CopyLoc[6](loc4: u256)
81Call bit_math::invalid_bit(): u256
82Neq
83BrFalse(106)
B10:
84MoveLoc[8](loc6: u64)
85CastU256
86LdConst[3](u8: 8)
87Shl
88MoveLoc[6](loc4: u256)
89BitOr
90StLoc[14](loc12: u256)
91MoveLoc[0](Arg0: &TreeUint24)
92ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
93CopyLoc[14](loc12: u256)
94CastU64
95Call safe_borrow_table(&Table<u64, u256>, u64): u256
96Call bit_math::most_significant_bit_u256(u256): u8
97CastU256
98StLoc[10](loc8: u256)
99MoveLoc[14](loc12: u256)
100LdConst[3](u8: 8)
101Shl
102MoveLoc[10](loc8: u256)
103BitOr
104CastU32
105Ret
B11:
106MoveLoc[8](loc6: u64)
107LdConst[1](u8: 255)
108CastU64
109BitAnd
110CastU8
111StLoc[2](loc0: u8)
112CopyLoc[2](loc0: u8)
113LdU8(0)
114Gt
115BrFalse(162)
B12:
116CopyLoc[0](Arg0: &TreeUint24)
117ImmBorrowField[0](TreeUint24.level0: u256)
118ReadRef
119MoveLoc[2](loc0: u8)
120LdU8(1)
121Sub
122Call bit_math::closest_bit_right_u256(u256, u8): u256
123StLoc[7](loc5: u256)
124CopyLoc[7](loc5: u256)
125Call bit_math::invalid_bit(): u256
126Neq
127BrFalse(159)
B13:
128MoveLoc[7](loc5: u256)
129StLoc[13](loc11: u256)
130CopyLoc[0](Arg0: &TreeUint24)
131ImmBorrowField[2](TreeUint24.level1: Table<u64, u256>)
132CopyLoc[13](loc11: u256)
133CastU64
134Call safe_borrow_table(&Table<u64, u256>, u64): u256
135Call bit_math::most_significant_bit_u256(u256): u8
136CastU256
137StLoc[11](loc9: u256)
138MoveLoc[13](loc11: u256)
139LdConst[3](u8: 8)
140Shl
141MoveLoc[11](loc9: u256)
142BitOr
143StLoc[15](loc13: u256)
144MoveLoc[0](Arg0: &TreeUint24)
145ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
146CopyLoc[15](loc13: u256)
147CastU64
148Call safe_borrow_table(&Table<u64, u256>, u64): u256
149Call bit_math::most_significant_bit_u256(u256): u8
150CastU256
151StLoc[12](loc10: u256)
152MoveLoc[15](loc13: u256)
153LdConst[3](u8: 8)
154Shl
155MoveLoc[12](loc10: u256)
156BitOr
157CastU32
158Ret
B14:
159MoveLoc[0](Arg0: &TreeUint24)
160Pop
161Branch(164)
B15:
162MoveLoc[0](Arg0: &TreeUint24)
163Pop
B16:
164LdConst[0](u32: 1677..)
165Ret
}
public find_first_left(Arg0: &TreeUint24, Arg1: u32): u32 {
L2: loc0: u8
L3: loc1: u8
L4: loc2: u8
L5: loc3: u256
L6: loc4: u256
L7: loc5: u256
L8: loc6: u64
L9: loc7: u64
L10: loc8: u256
L11: loc9: u256
L12: loc10: u256
L13: loc11: u256
L14: loc12: u256
L15: loc13: u256
B0:
0CopyLoc[1](Arg1: u32)
1LdConst[0](u32: 1677..)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &TreeUint24)
6Pop
7LdConst[4](u64: 65536)
8Abort
B3:
9CopyLoc[0](Arg0: &TreeUint24)
10ImmBorrowField[0](TreeUint24.level0: u256)
11ReadRef
12LdU256(0)
13Eq
14BrFalse(19)
B4:
15MoveLoc[0](Arg0: &TreeUint24)
16Pop
17LdU32(0)
18Ret
B5:
19CopyLoc[1](Arg1: u32)
20LdConst[3](u8: 8)
21Shr
22CastU64
23StLoc[9](loc7: u64)
24MoveLoc[1](Arg1: u32)
25LdConst[1](u8: 255)
26CastU32
27BitAnd
28CastU8
29StLoc[4](loc2: u8)
30CopyLoc[4](loc2: u8)
31LdConst[1](u8: 255)
32Lt
33BrFalse(57)
B6:
34CopyLoc[0](Arg0: &TreeUint24)
35ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
36CopyLoc[9](loc7: u64)
37Call safe_borrow_table(&Table<u64, u256>, u64): u256
38MoveLoc[4](loc2: u8)
39LdU8(1)
40Add
41Call bit_math::closest_bit_left_u256(u256, u8): u256
42StLoc[5](loc3: u256)
43CopyLoc[5](loc3: u256)
44Call bit_math::invalid_bit(): u256
45Neq
46BrFalse(57)
B7:
47MoveLoc[0](Arg0: &TreeUint24)
48Pop
49MoveLoc[9](loc7: u64)
50CastU256
51LdConst[3](u8: 8)
52Shl
53MoveLoc[5](loc3: u256)
54BitOr
55CastU32
56Ret
B8:
57CopyLoc[9](loc7: u64)
58LdConst[3](u8: 8)
59Shr
60StLoc[8](loc6: u64)
61MoveLoc[9](loc7: u64)
62LdConst[1](u8: 255)
63CastU64
64BitAnd
65CastU8
66StLoc[3](loc1: u8)
67CopyLoc[3](loc1: u8)
68LdConst[1](u8: 255)
69Lt
70BrFalse(106)
B9:
71CopyLoc[0](Arg0: &TreeUint24)
72ImmBorrowField[2](TreeUint24.level1: Table<u64, u256>)
73CopyLoc[8](loc6: u64)
74Call safe_borrow_table(&Table<u64, u256>, u64): u256
75MoveLoc[3](loc1: u8)
76LdU8(1)
77Add
78Call bit_math::closest_bit_left_u256(u256, u8): u256
79StLoc[6](loc4: u256)
80CopyLoc[6](loc4: u256)
81Call bit_math::invalid_bit(): u256
82Neq
83BrFalse(106)
B10:
84MoveLoc[8](loc6: u64)
85CastU256
86LdConst[3](u8: 8)
87Shl
88MoveLoc[6](loc4: u256)
89BitOr
90StLoc[14](loc12: u256)
91MoveLoc[0](Arg0: &TreeUint24)
92ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
93CopyLoc[14](loc12: u256)
94CastU64
95Call safe_borrow_table(&Table<u64, u256>, u64): u256
96Call bit_math::least_significant_bit_u256(u256): u8
97CastU256
98StLoc[10](loc8: u256)
99MoveLoc[14](loc12: u256)
100LdConst[3](u8: 8)
101Shl
102MoveLoc[10](loc8: u256)
103BitOr
104CastU32
105Ret
B11:
106MoveLoc[8](loc6: u64)
107LdConst[1](u8: 255)
108CastU64
109BitAnd
110CastU8
111StLoc[2](loc0: u8)
112CopyLoc[2](loc0: u8)
113LdConst[1](u8: 255)
114Lt
115BrFalse(162)
B12:
116CopyLoc[0](Arg0: &TreeUint24)
117ImmBorrowField[0](TreeUint24.level0: u256)
118ReadRef
119MoveLoc[2](loc0: u8)
120LdU8(1)
121Add
122Call bit_math::closest_bit_left_u256(u256, u8): u256
123StLoc[7](loc5: u256)
124CopyLoc[7](loc5: u256)
125Call bit_math::invalid_bit(): u256
126Neq
127BrFalse(159)
B13:
128MoveLoc[7](loc5: u256)
129StLoc[13](loc11: u256)
130CopyLoc[0](Arg0: &TreeUint24)
131ImmBorrowField[2](TreeUint24.level1: Table<u64, u256>)
132CopyLoc[13](loc11: u256)
133CastU64
134Call safe_borrow_table(&Table<u64, u256>, u64): u256
135Call bit_math::least_significant_bit_u256(u256): u8
136CastU256
137StLoc[11](loc9: u256)
138MoveLoc[13](loc11: u256)
139LdConst[3](u8: 8)
140Shl
141MoveLoc[11](loc9: u256)
142BitOr
143StLoc[15](loc13: u256)
144MoveLoc[0](Arg0: &TreeUint24)
145ImmBorrowField[1](TreeUint24.level2: Table<u64, u256>)
146CopyLoc[15](loc13: u256)
147CastU64
148Call safe_borrow_table(&Table<u64, u256>, u64): u256
149Call bit_math::least_significant_bit_u256(u256): u8
150CastU256
151StLoc[12](loc10: u256)
152MoveLoc[15](loc13: u256)
153LdConst[3](u8: 8)
154Shl
155MoveLoc[12](loc10: u256)
156BitOr
157CastU32
158Ret
B14:
159MoveLoc[0](Arg0: &TreeUint24)
160Pop
161Branch(164)
B15:
162MoveLoc[0](Arg0: &TreeUint24)
163Pop
B16:
164LdU32(0)
165Ret
}
public is_empty(Arg0: &TreeUint24): bool {
B0:
0MoveLoc[0](Arg0: &TreeUint24)
1ImmBorrowField[0](TreeUint24.level0: u256)
2ReadRef
3LdU256(0)
4Eq
5Ret
}
Constants [
0 => u32: 16777215
1 => u8: 255
2 => u256: 115792089237316195423570985008687907853269984665640564039457584007913129639935
3 => u8: 8
4 => u64: 65536
]
}