ordered_map
Module0x116d…9eb5
- Move path
- 0x21d0…5068::ordered_map
- Functions
- 630 public, 0 entry
- Structs
- 4
- Friend modules
- clearing_houseorderbook
ordered_map
Bytecode3532 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module 21d001e8b07da2e3facb3e2d636bbaef43ba3c978bd84810368840b7d57c5068.ordered_map {
use 21d001e8b07da2e3facb3e2d636bbaef43ba3c978bd84810368840b7d57c5068::errors;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct Map<phantom Ty0: copy + drop + store> has store, key {
id: UID,
size: u64,
counter: u64,
root: u64,
first: u64,
branch_min: u64,
branches_merge_max: u64,
branch_max: u64,
leaf_min: u64,
leaves_merge_max: u64,
leaf_max: u64
}
struct Branch has drop, store {
keys: vector<u128>,
kids: vector<u64>
}
struct Pair<Ty0: copy + drop + store> has copy, drop, store {
key: u128,
val: Ty0
}
struct Leaf<Ty0: copy + drop + store> has drop, store {
keys_vals: vector<Pair<Ty0>>,
next: u64
}
public(friend) empty<Ty0: copy + drop + store>(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: &mut TxContext): Map<Ty0> {
L7: loc0: UID
L8: loc1: u64
L9: loc2: u64
L10: loc3: u64
L11: loc4: u64
L12: loc5: u64
L13: loc6: u64
L14: loc7: u64
L15: loc8: u64
L16: loc9: u64
L17: loc10: u64
L18: loc11: u64
L19: loc12: Map<Ty0>
L20: loc13: u64
B0:
0CopyLoc[0](Arg0: u64)
1CopyLoc[1](Arg1: u64)
2CopyLoc[2](Arg2: u64)
3CopyLoc[3](Arg3: u64)
4CopyLoc[4](Arg4: u64)
5CopyLoc[5](Arg5: u64)
6Call check_map_params(u64, u64, u64, u64, u64, u64)
7LdU64(0)
8StLoc[17](loc10: u64)
9LdConst[0](u64: 9223..)
10MutBorrowLoc[17](loc10: u64)
11Call increase_counter(&mut u64): u64
12BitOr
13StLoc[20](loc13: u64)
14CopyLoc[20](loc13: u64)
15StLoc[18](loc11: u64)
16MoveLoc[6](Arg6: &mut TxContext)
17Call object::new(&mut TxContext): UID
18StLoc[7](loc0: UID)
19MoveLoc[17](loc10: u64)
20StLoc[10](loc3: u64)
21CopyLoc[20](loc13: u64)
22StLoc[11](loc4: u64)
23MoveLoc[18](loc11: u64)
24StLoc[12](loc5: u64)
25MoveLoc[0](Arg0: u64)
26StLoc[13](loc6: u64)
27MoveLoc[1](Arg1: u64)
28StLoc[14](loc7: u64)
29MoveLoc[2](Arg2: u64)
30StLoc[15](loc8: u64)
31MoveLoc[3](Arg3: u64)
32StLoc[16](loc9: u64)
33MoveLoc[4](Arg4: u64)
34StLoc[8](loc1: u64)
35MoveLoc[5](Arg5: u64)
36StLoc[9](loc2: u64)
37MoveLoc[7](loc0: UID)
38LdU64(0)
39MoveLoc[10](loc3: u64)
40MoveLoc[11](loc4: u64)
41MoveLoc[12](loc5: u64)
42MoveLoc[13](loc6: u64)
43MoveLoc[14](loc7: u64)
44MoveLoc[15](loc8: u64)
45MoveLoc[16](loc9: u64)
46MoveLoc[8](loc1: u64)
47MoveLoc[9](loc2: u64)
48PackGeneric[0](Map<Ty0>)
49StLoc[19](loc12: Map<Ty0>)
50MutBorrowLoc[19](loc12: Map<Ty0>)
51MutBorrowFieldGeneric[0](Map.id: UID)
52MoveLoc[20](loc13: u64)
53VecPack(58, 0)
54LdU64(0)
55PackGeneric[1](Leaf<Ty0>)
56Call dynamic_field::add<u64, Leaf<Ty0>>(&mut UID, u64, Leaf<Ty0>)
57MoveLoc[19](loc12: Map<Ty0>)
58Ret
}
public(friend) destroy_empty<Ty0: copy + drop + store>(Arg0: Map<Ty0>) {
B0:
0ImmBorrowLoc[0](Arg0: Map<Ty0>)
1Call is_empty<Ty0>(&Map<Ty0>): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4Call errors::destroy_not_empty(): u64
5Abort
B3:
6MoveLoc[0](Arg0: Map<Ty0>)
7UnpackGeneric[0](Map<Ty0>)
8Pop
9Pop
10Pop
11Pop
12Pop
13Pop
14Pop
15Pop
16Pop
17Pop
18Call object::delete(UID)
19Ret
}
public(friend) is_empty<Ty0: copy + drop + store>(Arg0: &Map<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[1](Map.size: u64)
2ReadRef
3LdU64(0)
4Eq
5Ret
}
public(friend) size<Ty0: copy + drop + store>(Arg0: &Map<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[1](Map.size: u64)
2ReadRef
3Ret
}
public(friend) change_params<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: u64) {
L7: loc0: bool
L8: loc1: bool
B0:
0CopyLoc[1](Arg1: u64)
1CopyLoc[2](Arg2: u64)
2CopyLoc[3](Arg3: u64)
3CopyLoc[4](Arg4: u64)
4CopyLoc[5](Arg5: u64)
5CopyLoc[6](Arg6: u64)
6Call check_map_params(u64, u64, u64, u64, u64, u64)
7CopyLoc[0](Arg0: &mut Map<Ty0>)
8ImmBorrowFieldGeneric[1](Map.size: u64)
9ReadRef
10LdU64(3)
11Gt
12BrFalse(14)
B1:
13Branch(18)
B2:
14MoveLoc[0](Arg0: &mut Map<Ty0>)
15Pop
16Call errors::map_too_small(): u64
17Abort
B3:
18CopyLoc[1](Arg1: u64)
19CopyLoc[0](Arg0: &mut Map<Ty0>)
20ImmBorrowFieldGeneric[2](Map.branch_min: u64)
21ReadRef
22Le
23BrFalse(31)
B4:
24CopyLoc[0](Arg0: &mut Map<Ty0>)
25ImmBorrowFieldGeneric[3](Map.branch_max: u64)
26ReadRef
27CopyLoc[3](Arg3: u64)
28Le
29StLoc[7](loc0: bool)
30Branch(33)
B5:
31LdFalse
32StLoc[7](loc0: bool)
B6:
33MoveLoc[7](loc0: bool)
34BrFalse(36)
B7:
35Branch(40)
B8:
36MoveLoc[0](Arg0: &mut Map<Ty0>)
37Pop
38Call errors::invalid_map_parameters(): u64
39Abort
B9:
40CopyLoc[4](Arg4: u64)
41CopyLoc[0](Arg0: &mut Map<Ty0>)
42ImmBorrowFieldGeneric[4](Map.leaf_min: u64)
43ReadRef
44Le
45BrFalse(53)
B10:
46CopyLoc[0](Arg0: &mut Map<Ty0>)
47ImmBorrowFieldGeneric[5](Map.leaf_max: u64)
48ReadRef
49CopyLoc[6](Arg6: u64)
50Le
51StLoc[8](loc1: bool)
52Branch(55)
B11:
53LdFalse
54StLoc[8](loc1: bool)
B12:
55MoveLoc[8](loc1: bool)
56BrFalse(58)
B13:
57Branch(62)
B14:
58MoveLoc[0](Arg0: &mut Map<Ty0>)
59Pop
60Call errors::invalid_map_parameters(): u64
61Abort
B15:
62MoveLoc[1](Arg1: u64)
63CopyLoc[0](Arg0: &mut Map<Ty0>)
64MutBorrowFieldGeneric[2](Map.branch_min: u64)
65WriteRef
66MoveLoc[2](Arg2: u64)
67CopyLoc[0](Arg0: &mut Map<Ty0>)
68MutBorrowFieldGeneric[6](Map.branches_merge_max: u64)
69WriteRef
70MoveLoc[3](Arg3: u64)
71CopyLoc[0](Arg0: &mut Map<Ty0>)
72MutBorrowFieldGeneric[3](Map.branch_max: u64)
73WriteRef
74MoveLoc[4](Arg4: u64)
75CopyLoc[0](Arg0: &mut Map<Ty0>)
76MutBorrowFieldGeneric[4](Map.leaf_min: u64)
77WriteRef
78MoveLoc[5](Arg5: u64)
79CopyLoc[0](Arg0: &mut Map<Ty0>)
80MutBorrowFieldGeneric[7](Map.leaves_merge_max: u64)
81WriteRef
82MoveLoc[6](Arg6: u64)
83MoveLoc[0](Arg0: &mut Map<Ty0>)
84MutBorrowFieldGeneric[5](Map.leaf_max: u64)
85WriteRef
86Ret
}
public(friend) min_key<Ty0: copy + drop + store>(Arg0: &Map<Ty0>): u128 {
B0:
0CopyLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[0](Arg0: &Map<Ty0>)
3ImmBorrowFieldGeneric[8](Map.first: u64)
4ReadRef
5Call dynamic_field::borrow<u64, Leaf<Ty0>>(&UID, u64): &Leaf<Ty0>
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7LdU64(0)
8VecImmBorrow(58)
9ImmBorrowFieldGeneric[10](Pair.key: u128)
10ReadRef
11Ret
}
public(friend) first_leaf_ptr<Ty0: copy + drop + store>(Arg0: &Map<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[8](Map.first: u64)
2ReadRef
3Ret
}
public(friend) get_leaf<Ty0: copy + drop + store>(Arg0: &Map<Ty0>, Arg1: u64): &Leaf<Ty0> {
B0:
0MoveLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::borrow<u64, Leaf<Ty0>>(&UID, u64): &Leaf<Ty0>
4Ret
}
public(friend) get_leaf_mut<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64): &mut Leaf<Ty0> {
B0:
0MoveLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
4Ret
}
public(friend) leaf_size<Ty0: copy + drop + store>(Arg0: &Leaf<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Leaf<Ty0>)
1ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
2VecLen(58)
3Ret
}
public(friend) leaf_elem<Ty0: copy + drop + store>(Arg0: &Leaf<Ty0>, Arg1: u64): u128 * &Ty0 {
L2: loc0: &Pair<Ty0>
B0:
0MoveLoc[0](Arg0: &Leaf<Ty0>)
1ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
2MoveLoc[1](Arg1: u64)
3VecImmBorrow(58)
4StLoc[2](loc0: &Pair<Ty0>)
5CopyLoc[2](loc0: &Pair<Ty0>)
6ImmBorrowFieldGeneric[10](Pair.key: u128)
7ReadRef
8MoveLoc[2](loc0: &Pair<Ty0>)
9ImmBorrowFieldGeneric[11](Pair.val: Ty0)
10Ret
}
public(friend) leaf_elem_mut<Ty0: copy + drop + store>(Arg0: &mut Leaf<Ty0>, Arg1: u64): u128 * &mut Ty0 {
L2: loc0: &mut Pair<Ty0>
B0:
0MoveLoc[0](Arg0: &mut Leaf<Ty0>)
1MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
2MoveLoc[1](Arg1: u64)
3VecMutBorrow(58)
4StLoc[2](loc0: &mut Pair<Ty0>)
5CopyLoc[2](loc0: &mut Pair<Ty0>)
6ImmBorrowFieldGeneric[10](Pair.key: u128)
7ReadRef
8MoveLoc[2](loc0: &mut Pair<Ty0>)
9MutBorrowFieldGeneric[11](Pair.val: Ty0)
10Ret
}
public(friend) leaf_next<Ty0: copy + drop + store>(Arg0: &Leaf<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Leaf<Ty0>)
1ImmBorrowFieldGeneric[12](Leaf.next: u64)
2ReadRef
3Ret
}
public(friend) leaf_find_index<Ty0: copy + drop + store>(Arg0: &Leaf<Ty0>, Arg1: u128): u64 {
L2: loc0: &vector<Pair<Ty0>>
L3: loc1: u64
B0:
0MoveLoc[0](Arg0: &Leaf<Ty0>)
1ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
2StLoc[2](loc0: &vector<Pair<Ty0>>)
3CopyLoc[2](loc0: &vector<Pair<Ty0>>)
4VecLen(58)
5StLoc[3](loc1: u64)
6MoveLoc[2](loc0: &vector<Pair<Ty0>>)
7MoveLoc[3](loc1: u64)
8MoveLoc[1](Arg1: u128)
9Call binary_search_p<Ty0>(&vector<Pair<Ty0>>, u64, u128): u64
10Ret
}
public(friend) find_leaf<Ty0: copy + drop + store>(Arg0: &Map<Ty0>, Arg1: u128): u64 {
L2: loc0: &Branch
L3: loc1: u64
L4: loc2: &vector<u128>
L5: loc3: u64
B0:
0CopyLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[13](Map.root: u64)
2ReadRef
3StLoc[5](loc3: u64)
B1:
4LdConst[0](u64: 9223..)
5CopyLoc[5](loc3: u64)
6BitAnd
7LdU64(0)
8Eq
9BrFalse(32)
B2:
10Branch(11)
B3:
11CopyLoc[0](Arg0: &Map<Ty0>)
12ImmBorrowFieldGeneric[0](Map.id: UID)
13MoveLoc[5](loc3: u64)
14Call dynamic_field::borrow<u64, Branch>(&UID, u64): &Branch
15StLoc[2](loc0: &Branch)
16CopyLoc[2](loc0: &Branch)
17ImmBorrowField[14](Branch.keys: vector<u128>)
18StLoc[4](loc2: &vector<u128>)
19CopyLoc[4](loc2: &vector<u128>)
20MoveLoc[4](loc2: &vector<u128>)
21VecLen(7)
22CopyLoc[1](Arg1: u128)
23Call binary_search(&vector<u128>, u64, u128): u64
24StLoc[3](loc1: u64)
25MoveLoc[2](loc0: &Branch)
26ImmBorrowField[15](Branch.kids: vector<u64>)
27MoveLoc[3](loc1: u64)
28VecImmBorrow(5)
29ReadRef
30StLoc[5](loc3: u64)
31Branch(4)
B4:
32MoveLoc[0](Arg0: &Map<Ty0>)
33Pop
34MoveLoc[5](loc3: u64)
35Ret
}
public(friend) has_key<Ty0: copy + drop + store>(Arg0: &Map<Ty0>, Arg1: u128): bool {
L2: loc0: bool
L3: loc1: u64
L4: loc2: &vector<Pair<Ty0>>
L5: loc3: u64
B0:
0CopyLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[0](Arg0: &Map<Ty0>)
3CopyLoc[1](Arg1: u128)
4Call find_leaf<Ty0>(&Map<Ty0>, u128): u64
5Call dynamic_field::borrow<u64, Leaf<Ty0>>(&UID, u64): &Leaf<Ty0>
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7StLoc[4](loc2: &vector<Pair<Ty0>>)
8CopyLoc[4](loc2: &vector<Pair<Ty0>>)
9VecLen(58)
10StLoc[5](loc3: u64)
11CopyLoc[4](loc2: &vector<Pair<Ty0>>)
12CopyLoc[5](loc3: u64)
13CopyLoc[1](Arg1: u128)
14Call binary_search_p<Ty0>(&vector<Pair<Ty0>>, u64, u128): u64
15StLoc[3](loc1: u64)
16CopyLoc[3](loc1: u64)
17MoveLoc[5](loc3: u64)
18Lt
19BrFalse(29)
B1:
20MoveLoc[1](Arg1: u128)
21MoveLoc[4](loc2: &vector<Pair<Ty0>>)
22MoveLoc[3](loc1: u64)
23VecImmBorrow(58)
24ImmBorrowFieldGeneric[10](Pair.key: u128)
25ReadRef
26Eq
27StLoc[2](loc0: bool)
28Branch(33)
B2:
29MoveLoc[4](loc2: &vector<Pair<Ty0>>)
30Pop
31LdFalse
32StLoc[2](loc0: bool)
B3:
33MoveLoc[2](loc0: bool)
34Ret
}
public(friend) borrow<Ty0: copy + drop + store>(Arg0: &Map<Ty0>, Arg1: u128): &Ty0 {
L2: loc0: u64
L3: loc1: &Pair<Ty0>
L4: loc2: &vector<Pair<Ty0>>
L5: loc3: u64
B0:
0CopyLoc[0](Arg0: &Map<Ty0>)
1ImmBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[0](Arg0: &Map<Ty0>)
3CopyLoc[1](Arg1: u128)
4Call find_leaf<Ty0>(&Map<Ty0>, u128): u64
5Call dynamic_field::borrow<u64, Leaf<Ty0>>(&UID, u64): &Leaf<Ty0>
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7StLoc[4](loc2: &vector<Pair<Ty0>>)
8CopyLoc[4](loc2: &vector<Pair<Ty0>>)
9VecLen(58)
10StLoc[5](loc3: u64)
11CopyLoc[4](loc2: &vector<Pair<Ty0>>)
12MoveLoc[5](loc3: u64)
13CopyLoc[1](Arg1: u128)
14Call binary_search_p<Ty0>(&vector<Pair<Ty0>>, u64, u128): u64
15StLoc[2](loc0: u64)
16MoveLoc[4](loc2: &vector<Pair<Ty0>>)
17MoveLoc[2](loc0: u64)
18VecImmBorrow(58)
19StLoc[3](loc1: &Pair<Ty0>)
20MoveLoc[1](Arg1: u128)
21CopyLoc[3](loc1: &Pair<Ty0>)
22ImmBorrowFieldGeneric[10](Pair.key: u128)
23ReadRef
24Eq
25BrFalse(27)
B1:
26Branch(31)
B2:
27MoveLoc[3](loc1: &Pair<Ty0>)
28Pop
29Call errors::key_not_exist(): u64
30Abort
B3:
31MoveLoc[3](loc1: &Pair<Ty0>)
32ImmBorrowFieldGeneric[11](Pair.val: Ty0)
33Ret
}
public(friend) borrow_mut<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u128): &mut Ty0 {
L2: loc0: u64
L3: loc1: &mut Pair<Ty0>
L4: loc2: &vector<Pair<Ty0>>
L5: loc3: &mut Leaf<Ty0>
L6: loc4: u64
L7: loc5: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1FreezeRef
2CopyLoc[1](Arg1: u128)
3Call find_leaf<Ty0>(&Map<Ty0>, u128): u64
4StLoc[6](loc4: u64)
5MoveLoc[0](Arg0: &mut Map<Ty0>)
6MutBorrowFieldGeneric[0](Map.id: UID)
7MoveLoc[6](loc4: u64)
8Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
9StLoc[5](loc3: &mut Leaf<Ty0>)
10CopyLoc[5](loc3: &mut Leaf<Ty0>)
11ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
12StLoc[4](loc2: &vector<Pair<Ty0>>)
13CopyLoc[4](loc2: &vector<Pair<Ty0>>)
14VecLen(58)
15StLoc[7](loc5: u64)
16MoveLoc[4](loc2: &vector<Pair<Ty0>>)
17MoveLoc[7](loc5: u64)
18CopyLoc[1](Arg1: u128)
19Call binary_search_p<Ty0>(&vector<Pair<Ty0>>, u64, u128): u64
20StLoc[2](loc0: u64)
21MoveLoc[5](loc3: &mut Leaf<Ty0>)
22MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
23MoveLoc[2](loc0: u64)
24VecMutBorrow(58)
25StLoc[3](loc1: &mut Pair<Ty0>)
26MoveLoc[1](Arg1: u128)
27CopyLoc[3](loc1: &mut Pair<Ty0>)
28ImmBorrowFieldGeneric[10](Pair.key: u128)
29ReadRef
30Eq
31BrFalse(33)
B1:
32Branch(37)
B2:
33MoveLoc[3](loc1: &mut Pair<Ty0>)
34Pop
35Call errors::key_not_exist(): u64
36Abort
B3:
37MoveLoc[3](loc1: &mut Pair<Ty0>)
38MutBorrowFieldGeneric[11](Pair.val: Ty0)
39Ret
}
public(friend) insert<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u128, Arg2: Ty0) {
L3: loc0: &Branch
L4: loc1: &mut Branch
L5: loc2: Branch
L6: loc3: u64
L7: loc4: u64
L8: loc5: u64
L9: loc6: u64
L10: loc7: u64
L11: loc8: &vector<u128>
L12: loc9: &mut Leaf<Ty0>
L13: loc10: u64
L14: loc11: u64
L15: loc12: Branch
L16: loc13: Leaf<Ty0>
L17: loc14: u64
L18: loc15: u128
L19: loc16: u64
L20: loc17: vector<u64>
B0:
0LdConst[1](vector<u64>: 00)
1StLoc[20](loc17: vector<u64>)
2CopyLoc[0](Arg0: &mut Map<Ty0>)
3ImmBorrowFieldGeneric[13](Map.root: u64)
4ReadRef
5StLoc[19](loc16: u64)
B1:
6LdConst[0](u64: 9223..)
7CopyLoc[19](loc16: u64)
8BitAnd
9LdU64(0)
10Eq
11BrFalse(40)
B2:
12Branch(13)
B3:
13CopyLoc[0](Arg0: &mut Map<Ty0>)
14ImmBorrowFieldGeneric[0](Map.id: UID)
15CopyLoc[19](loc16: u64)
16Call dynamic_field::borrow<u64, Branch>(&UID, u64): &Branch
17StLoc[3](loc0: &Branch)
18CopyLoc[3](loc0: &Branch)
19ImmBorrowField[14](Branch.keys: vector<u128>)
20StLoc[11](loc8: &vector<u128>)
21CopyLoc[11](loc8: &vector<u128>)
22MoveLoc[11](loc8: &vector<u128>)
23VecLen(7)
24CopyLoc[1](Arg1: u128)
25Call binary_search(&vector<u128>, u64, u128): u64
26StLoc[9](loc6: u64)
27MutBorrowLoc[20](loc17: vector<u64>)
28MoveLoc[19](loc16: u64)
29VecPushBack(5)
30MutBorrowLoc[20](loc17: vector<u64>)
31CopyLoc[9](loc6: u64)
32VecPushBack(5)
33MoveLoc[3](loc0: &Branch)
34ImmBorrowField[15](Branch.kids: vector<u64>)
35MoveLoc[9](loc6: u64)
36VecImmBorrow(5)
37ReadRef
38StLoc[19](loc16: u64)
39Branch(6)
B4:
40CopyLoc[0](Arg0: &mut Map<Ty0>)
41ImmBorrowFieldGeneric[14](Map.counter: u64)
42ReadRef
43StLoc[7](loc4: u64)
44CopyLoc[0](Arg0: &mut Map<Ty0>)
45MutBorrowFieldGeneric[0](Map.id: UID)
46MoveLoc[19](loc16: u64)
47Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
48StLoc[12](loc9: &mut Leaf<Ty0>)
49CopyLoc[12](loc9: &mut Leaf<Ty0>)
50MoveLoc[1](Arg1: u128)
51MoveLoc[2](Arg2: Ty0)
52Call insert_into_leaf<Ty0>(&mut Leaf<Ty0>, u128, Ty0): u64
53StLoc[13](loc10: u64)
54CopyLoc[0](Arg0: &mut Map<Ty0>)
55ImmBorrowFieldGeneric[1](Map.size: u64)
56ReadRef
57LdU64(1)
58Add
59CopyLoc[0](Arg0: &mut Map<Ty0>)
60MutBorrowFieldGeneric[1](Map.size: u64)
61WriteRef
62CopyLoc[13](loc10: u64)
63CopyLoc[0](Arg0: &mut Map<Ty0>)
64ImmBorrowFieldGeneric[5](Map.leaf_max: u64)
65ReadRef
66Gt
67BrFalse(174)
B5:
68MoveLoc[12](loc9: &mut Leaf<Ty0>)
69MutBorrowLoc[7](loc4: u64)
70MoveLoc[13](loc10: u64)
71Call split_leaf<Ty0>(&mut Leaf<Ty0>, &mut u64, u64): u64 * u128 * Leaf<Ty0>
72StLoc[16](loc13: Leaf<Ty0>)
73StLoc[18](loc15: u128)
74StLoc[17](loc14: u64)
75CopyLoc[0](Arg0: &mut Map<Ty0>)
76MutBorrowFieldGeneric[0](Map.id: UID)
77CopyLoc[17](loc14: u64)
78MoveLoc[16](loc13: Leaf<Ty0>)
79Call dynamic_field::add<u64, Leaf<Ty0>>(&mut UID, u64, Leaf<Ty0>)
80ImmBorrowLoc[20](loc17: vector<u64>)
81VecLen(5)
82StLoc[8](loc5: u64)
B6:
83CopyLoc[17](loc14: u64)
84LdU64(0)
85Neq
86BrFalse(169)
B7:
87Branch(88)
B8:
88CopyLoc[8](loc5: u64)
89LdU64(0)
90Gt
91BrFalse(145)
B9:
92MoveLoc[8](loc5: u64)
93LdU64(2)
94Sub
95StLoc[8](loc5: u64)
96MutBorrowLoc[20](loc17: vector<u64>)
97VecPopBack(5)
98StLoc[10](loc7: u64)
99MutBorrowLoc[20](loc17: vector<u64>)
100VecPopBack(5)
101StLoc[6](loc3: u64)
102CopyLoc[0](Arg0: &mut Map<Ty0>)
103MutBorrowFieldGeneric[0](Map.id: UID)
104MoveLoc[6](loc3: u64)
105Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
106StLoc[4](loc1: &mut Branch)
107CopyLoc[4](loc1: &mut Branch)
108MutBorrowField[14](Branch.keys: vector<u128>)
109MoveLoc[18](loc15: u128)
110CopyLoc[10](loc7: u64)
111Call vector::insert<u128>(&mut vector<u128>, u128, u64)
112CopyLoc[4](loc1: &mut Branch)
113MutBorrowField[15](Branch.kids: vector<u64>)
114MoveLoc[17](loc14: u64)
115MoveLoc[10](loc7: u64)
116LdU64(1)
117Add
118Call vector::insert<u64>(&mut vector<u64>, u64, u64)
119CopyLoc[4](loc1: &mut Branch)
120ImmBorrowField[15](Branch.kids: vector<u64>)
121VecLen(5)
122StLoc[14](loc11: u64)
123CopyLoc[14](loc11: u64)
124CopyLoc[0](Arg0: &mut Map<Ty0>)
125ImmBorrowFieldGeneric[3](Map.branch_max: u64)
126ReadRef
127Gt
128BrFalse(142)
B10:
129MoveLoc[4](loc1: &mut Branch)
130MutBorrowLoc[7](loc4: u64)
131MoveLoc[14](loc11: u64)
132Call split_branch(&mut Branch, &mut u64, u64): u64 * u128 * Branch
133StLoc[15](loc12: Branch)
134StLoc[18](loc15: u128)
135StLoc[17](loc14: u64)
136CopyLoc[0](Arg0: &mut Map<Ty0>)
137MutBorrowFieldGeneric[0](Map.id: UID)
138CopyLoc[17](loc14: u64)
139MoveLoc[15](loc12: Branch)
140Call dynamic_field::add<u64, Branch>(&mut UID, u64, Branch)
141Branch(83)
B11:
142MoveLoc[4](loc1: &mut Branch)
143Pop
144Branch(169)
B12:
145CopyLoc[18](loc15: u128)
146VecPack(7, 1)
147CopyLoc[0](Arg0: &mut Map<Ty0>)
148ImmBorrowFieldGeneric[13](Map.root: u64)
149ReadRef
150MoveLoc[17](loc14: u64)
151VecPack(5, 2)
152Pack[1](Branch)
153StLoc[5](loc2: Branch)
154MutBorrowLoc[7](loc4: u64)
155Call increase_counter(&mut u64): u64
156CopyLoc[0](Arg0: &mut Map<Ty0>)
157MutBorrowFieldGeneric[13](Map.root: u64)
158WriteRef
159CopyLoc[0](Arg0: &mut Map<Ty0>)
160MutBorrowFieldGeneric[0](Map.id: UID)
161CopyLoc[0](Arg0: &mut Map<Ty0>)
162ImmBorrowFieldGeneric[13](Map.root: u64)
163ReadRef
164MoveLoc[5](loc2: Branch)
165Call dynamic_field::add<u64, Branch>(&mut UID, u64, Branch)
166LdU64(0)
167StLoc[17](loc14: u64)
168Branch(83)
B13:
169MoveLoc[7](loc4: u64)
170MoveLoc[0](Arg0: &mut Map<Ty0>)
171MutBorrowFieldGeneric[14](Map.counter: u64)
172WriteRef
173Branch(178)
B14:
174MoveLoc[0](Arg0: &mut Map<Ty0>)
175Pop
176MoveLoc[12](loc9: &mut Leaf<Ty0>)
177Pop
B15:
178Ret
}
public(friend) remove<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u128): Ty0 {
L2: loc0: Branch
L3: loc1: u64
L4: loc2: u64
L5: loc3: Ty0
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1ImmBorrowFieldGeneric[13](Map.root: u64)
2ReadRef
3StLoc[4](loc2: u64)
4LdConst[0](u64: 9223..)
5CopyLoc[4](loc2: u64)
6BitAnd
7LdU64(0)
8Eq
9BrFalse(36)
B1:
10CopyLoc[0](Arg0: &mut Map<Ty0>)
11CopyLoc[4](loc2: u64)
12MoveLoc[1](Arg1: u128)
13Call remove_from_branch<Ty0>(&mut Map<Ty0>, u64, u128): Ty0 * u64
14StLoc[3](loc1: u64)
15StLoc[5](loc3: Ty0)
16MoveLoc[3](loc1: u64)
17LdU64(1)
18Eq
19BrFalse(32)
B2:
20CopyLoc[0](Arg0: &mut Map<Ty0>)
21MutBorrowFieldGeneric[0](Map.id: UID)
22MoveLoc[4](loc2: u64)
23Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
24StLoc[2](loc0: Branch)
25MutBorrowLoc[2](loc0: Branch)
26MutBorrowField[15](Branch.kids: vector<u64>)
27VecPopBack(5)
28MoveLoc[0](Arg0: &mut Map<Ty0>)
29MutBorrowFieldGeneric[13](Map.root: u64)
30WriteRef
31Branch(34)
B3:
32MoveLoc[0](Arg0: &mut Map<Ty0>)
33Pop
B4:
34MoveLoc[5](loc3: Ty0)
35Ret
B5:
36MoveLoc[0](Arg0: &mut Map<Ty0>)
37MoveLoc[4](loc2: u64)
38MoveLoc[1](Arg1: u128)
39Call remove_from_leaf<Ty0>(&mut Map<Ty0>, u64, u128): Ty0 * u64
40Pop
41Ret
}
public(friend) clear<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>) {
L1: loc0: Branch
L2: loc1: u64
L3: loc2: &vector<u64>
L4: loc3: u64
L5: loc4: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1ImmBorrowFieldGeneric[13](Map.root: u64)
2ReadRef
3StLoc[5](loc4: u64)
4LdConst[0](u64: 9223..)
5CopyLoc[5](loc4: u64)
6BitAnd
7LdU64(0)
8Eq
9BrFalse(64)
B1:
10CopyLoc[0](Arg0: &mut Map<Ty0>)
11MutBorrowFieldGeneric[0](Map.id: UID)
12MoveLoc[5](loc4: u64)
13Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
14StLoc[1](loc0: Branch)
15ImmBorrowLoc[1](loc0: Branch)
16ImmBorrowField[15](Branch.kids: vector<u64>)
17StLoc[3](loc2: &vector<u64>)
18CopyLoc[3](loc2: &vector<u64>)
19VecLen(5)
20LdU64(1)
21Sub
22StLoc[4](loc3: u64)
23CopyLoc[3](loc2: &vector<u64>)
24CopyLoc[4](loc3: u64)
25VecImmBorrow(5)
26ReadRef
27StLoc[5](loc4: u64)
28LdConst[0](u64: 9223..)
29CopyLoc[5](loc4: u64)
30BitAnd
31LdU64(0)
32Eq
33BrFalse(55)
B2:
34LdU64(0)
35StLoc[2](loc1: u64)
36Branch(37)
B3:
37CopyLoc[2](loc1: u64)
38CopyLoc[4](loc3: u64)
39Lt
40BrFalse(52)
B4:
41CopyLoc[0](Arg0: &mut Map<Ty0>)
42CopyLoc[3](loc2: &vector<u64>)
43CopyLoc[2](loc1: u64)
44VecImmBorrow(5)
45ReadRef
46Call drop_branch<Ty0>(&mut Map<Ty0>, u64)
47MoveLoc[2](loc1: u64)
48LdU64(1)
49Add
50StLoc[2](loc1: u64)
51Branch(37)
B5:
52MoveLoc[3](loc2: &vector<u64>)
53Pop
54Branch(10)
B6:
55MoveLoc[3](loc2: &vector<u64>)
56Pop
57CopyLoc[0](Arg0: &mut Map<Ty0>)
58MoveLoc[4](loc3: u64)
59Call drop_first_leaves<Ty0>(&mut Map<Ty0>, u64)
60CopyLoc[5](loc4: u64)
61CopyLoc[0](Arg0: &mut Map<Ty0>)
62MutBorrowFieldGeneric[13](Map.root: u64)
63WriteRef
B7:
64MoveLoc[0](Arg0: &mut Map<Ty0>)
65MoveLoc[5](loc4: u64)
66Call clear_leaf<Ty0>(&mut Map<Ty0>, u64)
67Ret
}
public(friend) batch_drop<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u128, Arg2: bool) {
B0:
0MoveLoc[2](Arg2: bool)
1Not
2BrFalse(14)
B1:
3CopyLoc[1](Arg1: u128)
4LdU128(0)
5Eq
6BrFalse(10)
B2:
7MoveLoc[0](Arg0: &mut Map<Ty0>)
8Pop
9Ret
B3:
10MoveLoc[1](Arg1: u128)
11LdU128(1)
12Sub
13StLoc[1](Arg1: u128)
B4:
14MoveLoc[0](Arg0: &mut Map<Ty0>)
15MoveLoc[1](Arg1: u128)
16Call batch_drop_from_root<Ty0>(&mut Map<Ty0>, u128)
17Ret
}
check_map_params(Arg0: u64, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64) {
L6: loc0: bool
L7: loc1: bool
L8: loc2: bool
L9: loc3: bool
B0:
0LdU64(2)
1CopyLoc[0](Arg0: u64)
2Le
3BrFalse(11)
B1:
4CopyLoc[0](Arg0: u64)
5CopyLoc[2](Arg2: u64)
6LdU64(2)
7Div
8Le
9StLoc[6](loc0: bool)
10Branch(13)
B2:
11LdFalse
12StLoc[6](loc0: bool)
B3:
13MoveLoc[6](loc0: bool)
14BrFalse(16)
B4:
15Branch(18)
B5:
16Call errors::invalid_map_parameters(): u64
17Abort
B6:
18LdU64(2)
19MoveLoc[0](Arg0: u64)
20Mul
21CopyLoc[1](Arg1: u64)
22Le
23BrFalse(29)
B7:
24MoveLoc[1](Arg1: u64)
25MoveLoc[2](Arg2: u64)
26Le
27StLoc[7](loc1: bool)
28Branch(31)
B8:
29LdFalse
30StLoc[7](loc1: bool)
B9:
31MoveLoc[7](loc1: bool)
32BrFalse(34)
B10:
33Branch(36)
B11:
34Call errors::invalid_map_parameters(): u64
35Abort
B12:
36LdU64(2)
37CopyLoc[3](Arg3: u64)
38Le
39BrFalse(49)
B13:
40CopyLoc[3](Arg3: u64)
41CopyLoc[5](Arg5: u64)
42LdU64(1)
43Add
44LdU64(2)
45Div
46Le
47StLoc[8](loc2: bool)
48Branch(51)
B14:
49LdFalse
50StLoc[8](loc2: bool)
B15:
51MoveLoc[8](loc2: bool)
52BrFalse(54)
B16:
53Branch(56)
B17:
54Call errors::invalid_map_parameters(): u64
55Abort
B18:
56LdU64(2)
57MoveLoc[3](Arg3: u64)
58Mul
59LdU64(1)
60Sub
61CopyLoc[4](Arg4: u64)
62Le
63BrFalse(69)
B19:
64MoveLoc[4](Arg4: u64)
65MoveLoc[5](Arg5: u64)
66Le
67StLoc[9](loc3: bool)
68Branch(71)
B20:
69LdFalse
70StLoc[9](loc3: bool)
B21:
71MoveLoc[9](loc3: bool)
72BrFalse(74)
B22:
73Branch(76)
B23:
74Call errors::invalid_map_parameters(): u64
75Abort
B24:
76Ret
}
clear_leaf<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64) {
L2: loc0: &mut Leaf<Ty0>
L3: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
4StLoc[2](loc0: &mut Leaf<Ty0>)
5CopyLoc[2](loc0: &mut Leaf<Ty0>)
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7VecLen(58)
8StLoc[3](loc1: u64)
9VecPack(58, 0)
10MoveLoc[2](loc0: &mut Leaf<Ty0>)
11MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
12WriteRef
13CopyLoc[0](Arg0: &mut Map<Ty0>)
14ImmBorrowFieldGeneric[1](Map.size: u64)
15ReadRef
16MoveLoc[3](loc1: u64)
17Sub
18MoveLoc[0](Arg0: &mut Map<Ty0>)
19MutBorrowFieldGeneric[1](Map.size: u64)
20WriteRef
21Ret
}
split_leaf<Ty0: copy + drop + store>(Arg0: &mut Leaf<Ty0>, Arg1: &mut u64, Arg2: u64): u64 * u128 * Leaf<Ty0> {
L3: loc0: u64
L4: loc1: vector<Pair<Ty0>>
L5: loc2: Leaf<Ty0>
L6: loc3: u64
L7: loc4: u128
L8: loc5: u64
B0:
0CopyLoc[2](Arg2: u64)
1LdU8(1)
2Shr
3StLoc[3](loc0: u64)
4CopyLoc[0](Arg0: &mut Leaf<Ty0>)
5ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
6MoveLoc[2](Arg2: u64)
7CopyLoc[3](loc0: u64)
8Sub
9LdU64(1)
10Sub
11VecImmBorrow(58)
12ImmBorrowFieldGeneric[10](Pair.key: u128)
13ReadRef
14StLoc[7](loc4: u128)
15CopyLoc[0](Arg0: &mut Leaf<Ty0>)
16MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
17MoveLoc[3](loc0: u64)
18Call cut_right<Pair<Ty0>>(&mut vector<Pair<Ty0>>, u64): vector<Pair<Ty0>>
19StLoc[4](loc1: vector<Pair<Ty0>>)
20LdConst[0](u64: 9223..)
21MoveLoc[1](Arg1: &mut u64)
22Call increase_counter(&mut u64): u64
23BitOr
24StLoc[6](loc3: u64)
25CopyLoc[0](Arg0: &mut Leaf<Ty0>)
26ImmBorrowFieldGeneric[12](Leaf.next: u64)
27ReadRef
28StLoc[8](loc5: u64)
29CopyLoc[6](loc3: u64)
30MoveLoc[0](Arg0: &mut Leaf<Ty0>)
31MutBorrowFieldGeneric[12](Leaf.next: u64)
32WriteRef
33MoveLoc[4](loc1: vector<Pair<Ty0>>)
34MoveLoc[8](loc5: u64)
35PackGeneric[1](Leaf<Ty0>)
36StLoc[5](loc2: Leaf<Ty0>)
37MoveLoc[6](loc3: u64)
38MoveLoc[7](loc4: u128)
39MoveLoc[5](loc2: Leaf<Ty0>)
40Ret
}
insert_into_leaf<Ty0: copy + drop + store>(Arg0: &mut Leaf<Ty0>, Arg1: u128, Arg2: Ty0): u64 {
L3: loc0: bool
L4: loc1: u64
L5: loc2: &vector<Pair<Ty0>>
L6: loc3: u64
B0:
0CopyLoc[0](Arg0: &mut Leaf<Ty0>)
1ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
2StLoc[5](loc2: &vector<Pair<Ty0>>)
3CopyLoc[5](loc2: &vector<Pair<Ty0>>)
4VecLen(58)
5StLoc[6](loc3: u64)
6CopyLoc[5](loc2: &vector<Pair<Ty0>>)
7CopyLoc[6](loc3: u64)
8CopyLoc[1](Arg1: u128)
9Call binary_search_p<Ty0>(&vector<Pair<Ty0>>, u64, u128): u64
10StLoc[4](loc1: u64)
11CopyLoc[4](loc1: u64)
12CopyLoc[6](loc3: u64)
13Eq
14BrFalse(20)
B1:
15MoveLoc[5](loc2: &vector<Pair<Ty0>>)
16Pop
17LdTrue
18StLoc[3](loc0: bool)
19Branch(28)
B2:
20CopyLoc[1](Arg1: u128)
21MoveLoc[5](loc2: &vector<Pair<Ty0>>)
22CopyLoc[4](loc1: u64)
23VecImmBorrow(58)
24ImmBorrowFieldGeneric[10](Pair.key: u128)
25ReadRef
26Neq
27StLoc[3](loc0: bool)
B3:
28MoveLoc[3](loc0: bool)
29BrFalse(31)
B4:
30Branch(35)
B5:
31MoveLoc[0](Arg0: &mut Leaf<Ty0>)
32Pop
33Call errors::key_already_exists(): u64
34Abort
B6:
35MoveLoc[0](Arg0: &mut Leaf<Ty0>)
36MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
37MoveLoc[1](Arg1: u128)
38MoveLoc[2](Arg2: Ty0)
39PackGeneric[2](Pair<Ty0>)
40MoveLoc[4](loc1: u64)
41Call vector::insert<Pair<Ty0>>(&mut vector<Pair<Ty0>>, Pair<Ty0>, u64)
42MoveLoc[6](loc3: u64)
43LdU64(1)
44Add
45Ret
}
split_branch(Arg0: &mut Branch, Arg1: &mut u64, Arg2: u64): u64 * u128 * Branch {
L3: loc0: u64
L4: loc1: vector<u128>
L5: loc2: vector<u64>
L6: loc3: Branch
L7: loc4: u64
L8: loc5: u128
B0:
0MoveLoc[2](Arg2: u64)
1LdU8(1)
2Shr
3StLoc[3](loc0: u64)
4CopyLoc[0](Arg0: &mut Branch)
5MutBorrowField[14](Branch.keys: vector<u128>)
6CopyLoc[3](loc0: u64)
7LdU64(1)
8Sub
9Call cut_right<u128>(&mut vector<u128>, u64): vector<u128>
10StLoc[4](loc1: vector<u128>)
11CopyLoc[0](Arg0: &mut Branch)
12MutBorrowField[15](Branch.kids: vector<u64>)
13MoveLoc[3](loc0: u64)
14Call cut_right<u64>(&mut vector<u64>, u64): vector<u64>
15StLoc[5](loc2: vector<u64>)
16MoveLoc[0](Arg0: &mut Branch)
17MutBorrowField[14](Branch.keys: vector<u128>)
18VecPopBack(7)
19StLoc[8](loc5: u128)
20MoveLoc[1](Arg1: &mut u64)
21Call increase_counter(&mut u64): u64
22StLoc[7](loc4: u64)
23MoveLoc[4](loc1: vector<u128>)
24MoveLoc[5](loc2: vector<u64>)
25Pack[1](Branch)
26StLoc[6](loc3: Branch)
27MoveLoc[7](loc4: u64)
28MoveLoc[8](loc5: u128)
29MoveLoc[6](loc3: Branch)
30Ret
}
remove_from_branch<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u128): Ty0 * u64 {
L3: loc0: &Branch
L4: loc1: u64
L5: loc2: &vector<u128>
L6: loc3: u64
L7: loc4: &vector<u64>
L8: loc5: u64
L9: loc6: u64
L10: loc7: u64
L11: loc8: u64
L12: loc9: u64
L13: loc10: u64
L14: loc11: u64
L15: loc12: u64
L16: loc13: u64
L17: loc14: u64
L18: loc15: u64
L19: loc16: u64
L20: loc17: u64
L21: loc18: u128
L22: loc19: u128
L23: loc20: u128
L24: loc21: u128
L25: loc22: Ty0
L26: loc23: Ty0
L27: loc24: Ty0
L28: loc25: Ty0
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1ImmBorrowFieldGeneric[0](Map.id: UID)
2CopyLoc[1](Arg1: u64)
3Call dynamic_field::borrow<u64, Branch>(&UID, u64): &Branch
4StLoc[3](loc0: &Branch)
5CopyLoc[3](loc0: &Branch)
6ImmBorrowField[14](Branch.keys: vector<u128>)
7StLoc[5](loc2: &vector<u128>)
8CopyLoc[5](loc2: &vector<u128>)
9VecLen(7)
10StLoc[6](loc3: u64)
11CopyLoc[5](loc2: &vector<u128>)
12CopyLoc[6](loc3: u64)
13CopyLoc[2](Arg2: u128)
14Call binary_search(&vector<u128>, u64, u128): u64
15StLoc[4](loc1: u64)
16MoveLoc[3](loc0: &Branch)
17ImmBorrowField[15](Branch.kids: vector<u64>)
18StLoc[7](loc4: &vector<u64>)
19CopyLoc[7](loc4: &vector<u64>)
20CopyLoc[4](loc1: u64)
21VecImmBorrow(5)
22ReadRef
23StLoc[20](loc17: u64)
24LdConst[0](u64: 9223..)
25CopyLoc[20](loc17: u64)
26BitAnd
27LdU64(0)
28Eq
29BrFalse(129)
B1:
30CopyLoc[4](loc1: u64)
31CopyLoc[6](loc3: u64)
32Lt
33BrFalse(82)
B2:
34MoveLoc[5](loc2: &vector<u128>)
35CopyLoc[4](loc1: u64)
36VecImmBorrow(7)
37ReadRef
38StLoc[21](loc18: u128)
39CopyLoc[4](loc1: u64)
40LdU64(1)
41Add
42StLoc[16](loc13: u64)
43MoveLoc[7](loc4: &vector<u64>)
44CopyLoc[16](loc13: u64)
45VecImmBorrow(5)
46ReadRef
47StLoc[12](loc9: u64)
48CopyLoc[0](Arg0: &mut Map<Ty0>)
49CopyLoc[20](loc17: u64)
50MoveLoc[2](Arg2: u128)
51Call remove_from_branch<Ty0>(&mut Map<Ty0>, u64, u128): Ty0 * u64
52StLoc[8](loc5: u64)
53StLoc[25](loc22: Ty0)
54CopyLoc[8](loc5: u64)
55CopyLoc[0](Arg0: &mut Map<Ty0>)
56ImmBorrowFieldGeneric[2](Map.branch_min: u64)
57ReadRef
58Lt
59BrFalse(75)
B3:
60CopyLoc[0](Arg0: &mut Map<Ty0>)
61MoveLoc[20](loc17: u64)
62MoveLoc[8](loc5: u64)
63MoveLoc[21](loc18: u128)
64MoveLoc[12](loc9: u64)
65Call migrate_to_left_branch<Ty0>(&mut Map<Ty0>, u64, u64, u128, u64): u128
66StLoc[21](loc18: u128)
67MoveLoc[0](Arg0: &mut Map<Ty0>)
68MoveLoc[1](Arg1: u64)
69MutBorrowLoc[6](loc3: u64)
70MoveLoc[4](loc1: u64)
71MoveLoc[21](loc18: u128)
72MoveLoc[16](loc13: u64)
73Call update_after_migration<Ty0>(&mut Map<Ty0>, u64, &mut u64, u64, u128, u64)
74Branch(77)
B4:
75MoveLoc[0](Arg0: &mut Map<Ty0>)
76Pop
B5:
77MoveLoc[25](loc22: Ty0)
78MoveLoc[6](loc3: u64)
79LdU64(1)
80Add
81Ret
B6:
82MoveLoc[4](loc1: u64)
83LdU64(1)
84Sub
85StLoc[17](loc14: u64)
86MoveLoc[7](loc4: &vector<u64>)
87CopyLoc[17](loc14: u64)
88VecImmBorrow(5)
89ReadRef
90StLoc[13](loc10: u64)
91MoveLoc[5](loc2: &vector<u128>)
92CopyLoc[17](loc14: u64)
93VecImmBorrow(7)
94ReadRef
95StLoc[22](loc19: u128)
96CopyLoc[0](Arg0: &mut Map<Ty0>)
97CopyLoc[20](loc17: u64)
98MoveLoc[2](Arg2: u128)
99Call remove_from_branch<Ty0>(&mut Map<Ty0>, u64, u128): Ty0 * u64
100StLoc[9](loc6: u64)
101StLoc[26](loc23: Ty0)
102CopyLoc[9](loc6: u64)
103CopyLoc[0](Arg0: &mut Map<Ty0>)
104ImmBorrowFieldGeneric[2](Map.branch_min: u64)
105ReadRef
106Lt
107BrFalse(122)
B7:
108CopyLoc[0](Arg0: &mut Map<Ty0>)
109MoveLoc[13](loc10: u64)
110MoveLoc[22](loc19: u128)
111MoveLoc[20](loc17: u64)
112MoveLoc[9](loc6: u64)
113Call migrate_to_right_branch<Ty0>(&mut Map<Ty0>, u64, u128, u64, u64): u128
114StLoc[22](loc19: u128)
115MoveLoc[0](Arg0: &mut Map<Ty0>)
116MoveLoc[1](Arg1: u64)
117MutBorrowLoc[6](loc3: u64)
118MoveLoc[17](loc14: u64)
119MoveLoc[22](loc19: u128)
120Call update_after_migration_last<Ty0>(&mut Map<Ty0>, u64, &mut u64, u64, u128)
121Branch(124)
B8:
122MoveLoc[0](Arg0: &mut Map<Ty0>)
123Pop
B9:
124MoveLoc[26](loc23: Ty0)
125MoveLoc[6](loc3: u64)
126LdU64(1)
127Add
128Ret
B10:
129MoveLoc[5](loc2: &vector<u128>)
130Pop
131CopyLoc[4](loc1: u64)
132CopyLoc[6](loc3: u64)
133Lt
134BrFalse(177)
B11:
135CopyLoc[4](loc1: u64)
136LdU64(1)
137Add
138StLoc[18](loc15: u64)
139MoveLoc[7](loc4: &vector<u64>)
140CopyLoc[18](loc15: u64)
141VecImmBorrow(5)
142ReadRef
143StLoc[14](loc11: u64)
144CopyLoc[0](Arg0: &mut Map<Ty0>)
145CopyLoc[20](loc17: u64)
146MoveLoc[2](Arg2: u128)
147Call remove_from_leaf<Ty0>(&mut Map<Ty0>, u64, u128): Ty0 * u64
148StLoc[10](loc7: u64)
149StLoc[27](loc24: Ty0)
150CopyLoc[10](loc7: u64)
151CopyLoc[0](Arg0: &mut Map<Ty0>)
152ImmBorrowFieldGeneric[4](Map.leaf_min: u64)
153ReadRef
154Lt
155BrFalse(170)
B12:
156CopyLoc[0](Arg0: &mut Map<Ty0>)
157MoveLoc[20](loc17: u64)
158MoveLoc[10](loc7: u64)
159MoveLoc[14](loc11: u64)
160Call migrate_to_left_leaf<Ty0>(&mut Map<Ty0>, u64, u64, u64): u128
161StLoc[23](loc20: u128)
162MoveLoc[0](Arg0: &mut Map<Ty0>)
163MoveLoc[1](Arg1: u64)
164MutBorrowLoc[6](loc3: u64)
165MoveLoc[4](loc1: u64)
166MoveLoc[23](loc20: u128)
167MoveLoc[18](loc15: u64)
168Call update_after_migration<Ty0>(&mut Map<Ty0>, u64, &mut u64, u64, u128, u64)
169Branch(172)
B13:
170MoveLoc[0](Arg0: &mut Map<Ty0>)
171Pop
B14:
172MoveLoc[27](loc24: Ty0)
173MoveLoc[6](loc3: u64)
174LdU64(1)
175Add
176Ret
B15:
177MoveLoc[4](loc1: u64)
178LdU64(1)
179Sub
180StLoc[19](loc16: u64)
181MoveLoc[7](loc4: &vector<u64>)
182CopyLoc[19](loc16: u64)
183VecImmBorrow(5)
184ReadRef
185StLoc[15](loc12: u64)
186CopyLoc[0](Arg0: &mut Map<Ty0>)
187CopyLoc[20](loc17: u64)
188MoveLoc[2](Arg2: u128)
189Call remove_from_leaf<Ty0>(&mut Map<Ty0>, u64, u128): Ty0 * u64
190StLoc[11](loc8: u64)
191StLoc[28](loc25: Ty0)
192CopyLoc[11](loc8: u64)
193CopyLoc[0](Arg0: &mut Map<Ty0>)
194ImmBorrowFieldGeneric[4](Map.leaf_min: u64)
195ReadRef
196Lt
197BrFalse(211)
B16:
198CopyLoc[0](Arg0: &mut Map<Ty0>)
199MoveLoc[15](loc12: u64)
200MoveLoc[20](loc17: u64)
201MoveLoc[11](loc8: u64)
202Call migrate_to_right_leaf<Ty0>(&mut Map<Ty0>, u64, u64, u64): u128
203StLoc[24](loc21: u128)
204MoveLoc[0](Arg0: &mut Map<Ty0>)
205MoveLoc[1](Arg1: u64)
206MutBorrowLoc[6](loc3: u64)
207MoveLoc[19](loc16: u64)
208MoveLoc[24](loc21: u128)
209Call update_after_migration_last<Ty0>(&mut Map<Ty0>, u64, &mut u64, u64, u128)
210Branch(213)
B17:
211MoveLoc[0](Arg0: &mut Map<Ty0>)
212Pop
B18:
213MoveLoc[28](loc25: Ty0)
214MoveLoc[6](loc3: u64)
215LdU64(1)
216Add
217Ret
}
migrate_to_left_branch<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u64, Arg3: u128, Arg4: u64): u128 {
L5: loc0: u64
L6: loc1: vector<u128>
L7: loc2: vector<u64>
L8: loc3: &mut Branch
L9: loc4: u128
L10: loc5: &mut Branch
L11: loc6: u64
L12: loc7: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2CopyLoc[4](Arg4: u64)
3Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
4StLoc[10](loc5: &mut Branch)
5CopyLoc[10](loc5: &mut Branch)
6ImmBorrowField[15](Branch.kids: vector<u64>)
7VecLen(5)
8StLoc[11](loc6: u64)
9CopyLoc[2](Arg2: u64)
10MoveLoc[11](loc6: u64)
11Add
12StLoc[12](loc7: u64)
13CopyLoc[12](loc7: u64)
14CopyLoc[0](Arg0: &mut Map<Ty0>)
15ImmBorrowFieldGeneric[6](Map.branches_merge_max: u64)
16ReadRef
17Le
18BrFalse(28)
B1:
19MoveLoc[10](loc5: &mut Branch)
20Pop
21MoveLoc[0](Arg0: &mut Map<Ty0>)
22MoveLoc[1](Arg1: u64)
23MoveLoc[3](Arg3: u128)
24MoveLoc[4](Arg4: u64)
25Call merge_branches<Ty0>(&mut Map<Ty0>, u64, u128, u64)
26LdU128(0)
27Ret
B2:
28MoveLoc[12](loc7: u64)
29LdU64(1)
30Add
31LdU64(2)
32Div
33MoveLoc[2](Arg2: u64)
34Sub
35StLoc[5](loc0: u64)
36CopyLoc[10](loc5: &mut Branch)
37MutBorrowField[14](Branch.keys: vector<u128>)
38CopyLoc[5](loc0: u64)
39Call cut_reversed_left1<u128>(&mut vector<u128>, u64): u128 * vector<u128>
40StLoc[6](loc1: vector<u128>)
41StLoc[9](loc4: u128)
42MoveLoc[10](loc5: &mut Branch)
43MutBorrowField[15](Branch.kids: vector<u64>)
44MoveLoc[5](loc0: u64)
45Call cut_reversed_left<u64>(&mut vector<u64>, u64): vector<u64>
46StLoc[7](loc2: vector<u64>)
47MoveLoc[0](Arg0: &mut Map<Ty0>)
48MutBorrowFieldGeneric[0](Map.id: UID)
49MoveLoc[1](Arg1: u64)
50Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
51StLoc[8](loc3: &mut Branch)
52CopyLoc[8](loc3: &mut Branch)
53MutBorrowField[14](Branch.keys: vector<u128>)
54MoveLoc[3](Arg3: u128)
55VecPushBack(7)
56CopyLoc[8](loc3: &mut Branch)
57MutBorrowField[14](Branch.keys: vector<u128>)
58MoveLoc[6](loc1: vector<u128>)
59Call append_reversed_right<u128>(&mut vector<u128>, vector<u128>)
60MoveLoc[8](loc3: &mut Branch)
61MutBorrowField[15](Branch.kids: vector<u64>)
62MoveLoc[7](loc2: vector<u64>)
63Call append_reversed_right<u64>(&mut vector<u64>, vector<u64>)
64MoveLoc[9](loc4: u128)
65Ret
}
migrate_to_right_branch<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64, Arg4: u64): u128 {
L5: loc0: u64
L6: loc1: vector<u128>
L7: loc2: vector<u64>
L8: loc3: &mut Branch
L9: loc4: u128
L10: loc5: &mut Branch
L11: loc6: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2CopyLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
4StLoc[8](loc3: &mut Branch)
5CopyLoc[8](loc3: &mut Branch)
6ImmBorrowField[15](Branch.kids: vector<u64>)
7VecLen(5)
8CopyLoc[4](Arg4: u64)
9Add
10StLoc[11](loc6: u64)
11CopyLoc[11](loc6: u64)
12CopyLoc[0](Arg0: &mut Map<Ty0>)
13ImmBorrowFieldGeneric[6](Map.branches_merge_max: u64)
14ReadRef
15Le
16BrFalse(26)
B1:
17MoveLoc[8](loc3: &mut Branch)
18Pop
19MoveLoc[0](Arg0: &mut Map<Ty0>)
20MoveLoc[1](Arg1: u64)
21MoveLoc[2](Arg2: u128)
22MoveLoc[3](Arg3: u64)
23Call merge_branches<Ty0>(&mut Map<Ty0>, u64, u128, u64)
24LdU128(0)
25Ret
B2:
26MoveLoc[11](loc6: u64)
27LdU64(2)
28Div
29MoveLoc[4](Arg4: u64)
30Sub
31StLoc[5](loc0: u64)
32CopyLoc[8](loc3: &mut Branch)
33MutBorrowField[14](Branch.keys: vector<u128>)
34CopyLoc[5](loc0: u64)
35LdU64(1)
36Sub
37Call cut_right<u128>(&mut vector<u128>, u64): vector<u128>
38StLoc[6](loc1: vector<u128>)
39CopyLoc[8](loc3: &mut Branch)
40MutBorrowField[14](Branch.keys: vector<u128>)
41VecPopBack(7)
42StLoc[9](loc4: u128)
43MoveLoc[8](loc3: &mut Branch)
44MutBorrowField[15](Branch.kids: vector<u64>)
45MoveLoc[5](loc0: u64)
46Call cut_right<u64>(&mut vector<u64>, u64): vector<u64>
47StLoc[7](loc2: vector<u64>)
48MoveLoc[0](Arg0: &mut Map<Ty0>)
49MutBorrowFieldGeneric[0](Map.id: UID)
50MoveLoc[3](Arg3: u64)
51Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
52StLoc[10](loc5: &mut Branch)
53MutBorrowLoc[6](loc1: vector<u128>)
54MoveLoc[2](Arg2: u128)
55VecPushBack(7)
56MoveLoc[6](loc1: vector<u128>)
57CopyLoc[10](loc5: &mut Branch)
58MutBorrowField[14](Branch.keys: vector<u128>)
59Call append_left<u128>(vector<u128>, &mut vector<u128>)
60MoveLoc[7](loc2: vector<u64>)
61MoveLoc[10](loc5: &mut Branch)
62MutBorrowField[15](Branch.kids: vector<u64>)
63Call append_left<u64>(vector<u64>, &mut vector<u64>)
64MoveLoc[9](loc4: u128)
65Ret
}
merge_branches<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64) {
L4: loc0: &mut Branch
L5: loc1: vector<u128>
L6: loc2: vector<u64>
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[3](Arg3: u64)
3Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
4Unpack[1](Branch)
5StLoc[6](loc2: vector<u64>)
6StLoc[5](loc1: vector<u128>)
7MoveLoc[0](Arg0: &mut Map<Ty0>)
8MutBorrowFieldGeneric[0](Map.id: UID)
9MoveLoc[1](Arg1: u64)
10Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
11StLoc[4](loc0: &mut Branch)
12CopyLoc[4](loc0: &mut Branch)
13MutBorrowField[14](Branch.keys: vector<u128>)
14MoveLoc[2](Arg2: u128)
15VecPushBack(7)
16CopyLoc[4](loc0: &mut Branch)
17MutBorrowField[14](Branch.keys: vector<u128>)
18ImmBorrowLoc[5](loc1: vector<u128>)
19Call append_right<u128>(&mut vector<u128>, &vector<u128>)
20MoveLoc[4](loc0: &mut Branch)
21MutBorrowField[15](Branch.kids: vector<u64>)
22ImmBorrowLoc[6](loc2: vector<u64>)
23Call append_right<u64>(&mut vector<u64>, &vector<u64>)
24Ret
}
update_after_migration<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: &mut u64, Arg3: u64, Arg4: u128, Arg5: u64) {
L6: loc0: &mut Branch
B0:
0MoveLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
4StLoc[6](loc0: &mut Branch)
5CopyLoc[4](Arg4: u128)
6LdU128(0)
7Eq
8BrFalse(26)
B1:
9CopyLoc[6](loc0: &mut Branch)
10MutBorrowField[14](Branch.keys: vector<u128>)
11MoveLoc[3](Arg3: u64)
12Call remove_at<u128>(&mut vector<u128>, u64): u128
13Pop
14MoveLoc[6](loc0: &mut Branch)
15MutBorrowField[15](Branch.kids: vector<u64>)
16MoveLoc[5](Arg5: u64)
17Call remove_at<u64>(&mut vector<u64>, u64): u64
18Pop
19CopyLoc[2](Arg2: &mut u64)
20ReadRef
21LdU64(1)
22Sub
23MoveLoc[2](Arg2: &mut u64)
24WriteRef
25Ret
B2:
26MoveLoc[2](Arg2: &mut u64)
27Pop
28MoveLoc[4](Arg4: u128)
29MoveLoc[6](loc0: &mut Branch)
30MutBorrowField[14](Branch.keys: vector<u128>)
31MoveLoc[3](Arg3: u64)
32VecMutBorrow(7)
33WriteRef
34Ret
}
update_after_migration_last<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: &mut u64, Arg3: u64, Arg4: u128) {
L5: loc0: &mut Branch
B0:
0MoveLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
4StLoc[5](loc0: &mut Branch)
5CopyLoc[4](Arg4: u128)
6LdU128(0)
7Eq
8BrFalse(24)
B1:
9CopyLoc[5](loc0: &mut Branch)
10MutBorrowField[14](Branch.keys: vector<u128>)
11VecPopBack(7)
12Pop
13MoveLoc[5](loc0: &mut Branch)
14MutBorrowField[15](Branch.kids: vector<u64>)
15VecPopBack(5)
16Pop
17CopyLoc[2](Arg2: &mut u64)
18ReadRef
19LdU64(1)
20Sub
21MoveLoc[2](Arg2: &mut u64)
22WriteRef
23Ret
B2:
24MoveLoc[2](Arg2: &mut u64)
25Pop
26MoveLoc[4](Arg4: u128)
27MoveLoc[5](loc0: &mut Branch)
28MutBorrowField[14](Branch.keys: vector<u128>)
29MoveLoc[3](Arg3: u64)
30VecMutBorrow(7)
31WriteRef
32Ret
}
remove_from_leaf<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u128): Ty0 * u64 {
L3: loc0: u64
L4: loc1: Pair<Ty0>
L5: loc2: &vector<Pair<Ty0>>
L6: loc3: &mut Leaf<Ty0>
L7: loc4: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
4StLoc[6](loc3: &mut Leaf<Ty0>)
5CopyLoc[6](loc3: &mut Leaf<Ty0>)
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7StLoc[5](loc2: &vector<Pair<Ty0>>)
8CopyLoc[5](loc2: &vector<Pair<Ty0>>)
9VecLen(58)
10StLoc[7](loc4: u64)
11MoveLoc[5](loc2: &vector<Pair<Ty0>>)
12CopyLoc[7](loc4: u64)
13CopyLoc[2](Arg2: u128)
14Call binary_search_p<Ty0>(&vector<Pair<Ty0>>, u64, u128): u64
15StLoc[3](loc0: u64)
16MoveLoc[6](loc3: &mut Leaf<Ty0>)
17MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
18MoveLoc[3](loc0: u64)
19Call remove_at<Pair<Ty0>>(&mut vector<Pair<Ty0>>, u64): Pair<Ty0>
20StLoc[4](loc1: Pair<Ty0>)
21MoveLoc[2](Arg2: u128)
22ImmBorrowLoc[4](loc1: Pair<Ty0>)
23ImmBorrowFieldGeneric[10](Pair.key: u128)
24ReadRef
25Eq
26BrFalse(28)
B1:
27Branch(32)
B2:
28MoveLoc[0](Arg0: &mut Map<Ty0>)
29Pop
30Call errors::key_not_exist(): u64
31Abort
B3:
32CopyLoc[0](Arg0: &mut Map<Ty0>)
33ImmBorrowFieldGeneric[1](Map.size: u64)
34ReadRef
35LdU64(1)
36Sub
37MoveLoc[0](Arg0: &mut Map<Ty0>)
38MutBorrowFieldGeneric[1](Map.size: u64)
39WriteRef
40ImmBorrowLoc[4](loc1: Pair<Ty0>)
41ImmBorrowFieldGeneric[11](Pair.val: Ty0)
42ReadRef
43MoveLoc[7](loc4: u64)
44LdU64(1)
45Sub
46Ret
}
migrate_to_left_leaf<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u64, Arg3: u64): u128 {
L4: loc0: u64
L5: loc1: vector<Pair<Ty0>>
L6: loc2: &mut Leaf<Ty0>
L7: loc3: &mut Leaf<Ty0>
L8: loc4: u64
L9: loc5: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2CopyLoc[3](Arg3: u64)
3Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
4StLoc[7](loc3: &mut Leaf<Ty0>)
5CopyLoc[7](loc3: &mut Leaf<Ty0>)
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7VecLen(58)
8StLoc[8](loc4: u64)
9CopyLoc[2](Arg2: u64)
10MoveLoc[8](loc4: u64)
11Add
12StLoc[9](loc5: u64)
13CopyLoc[9](loc5: u64)
14CopyLoc[0](Arg0: &mut Map<Ty0>)
15ImmBorrowFieldGeneric[7](Map.leaves_merge_max: u64)
16ReadRef
17Le
18BrFalse(27)
B1:
19MoveLoc[7](loc3: &mut Leaf<Ty0>)
20Pop
21MoveLoc[0](Arg0: &mut Map<Ty0>)
22MoveLoc[1](Arg1: u64)
23MoveLoc[3](Arg3: u64)
24Call merge_leaves<Ty0>(&mut Map<Ty0>, u64, u64)
25LdU128(0)
26Ret
B2:
27MoveLoc[9](loc5: u64)
28LdU64(2)
29Div
30MoveLoc[2](Arg2: u64)
31Sub
32StLoc[4](loc0: u64)
33MoveLoc[7](loc3: &mut Leaf<Ty0>)
34MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
35MoveLoc[4](loc0: u64)
36Call cut_reversed_left<Pair<Ty0>>(&mut vector<Pair<Ty0>>, u64): vector<Pair<Ty0>>
37StLoc[5](loc1: vector<Pair<Ty0>>)
38MoveLoc[0](Arg0: &mut Map<Ty0>)
39MutBorrowFieldGeneric[0](Map.id: UID)
40MoveLoc[1](Arg1: u64)
41Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
42StLoc[6](loc2: &mut Leaf<Ty0>)
43CopyLoc[6](loc2: &mut Leaf<Ty0>)
44MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
45MoveLoc[5](loc1: vector<Pair<Ty0>>)
46Call append_reversed_right<Pair<Ty0>>(&mut vector<Pair<Ty0>>, vector<Pair<Ty0>>)
47MoveLoc[6](loc2: &mut Leaf<Ty0>)
48ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
49Call last<Pair<Ty0>>(&vector<Pair<Ty0>>): &Pair<Ty0>
50ImmBorrowFieldGeneric[10](Pair.key: u128)
51ReadRef
52Ret
}
migrate_to_right_leaf<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u64, Arg3: u64): u128 {
L4: loc0: u64
L5: loc1: vector<Pair<Ty0>>
L6: loc2: u128
L7: loc3: &mut Leaf<Ty0>
L8: loc4: &mut Leaf<Ty0>
L9: loc5: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2CopyLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
4StLoc[7](loc3: &mut Leaf<Ty0>)
5CopyLoc[7](loc3: &mut Leaf<Ty0>)
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7VecLen(58)
8CopyLoc[3](Arg3: u64)
9Add
10StLoc[9](loc5: u64)
11CopyLoc[9](loc5: u64)
12CopyLoc[0](Arg0: &mut Map<Ty0>)
13ImmBorrowFieldGeneric[7](Map.leaves_merge_max: u64)
14ReadRef
15Le
16BrFalse(25)
B1:
17MoveLoc[7](loc3: &mut Leaf<Ty0>)
18Pop
19MoveLoc[0](Arg0: &mut Map<Ty0>)
20MoveLoc[1](Arg1: u64)
21MoveLoc[2](Arg2: u64)
22Call merge_leaves<Ty0>(&mut Map<Ty0>, u64, u64)
23LdU128(0)
24Ret
B2:
25MoveLoc[9](loc5: u64)
26LdU64(2)
27Div
28MoveLoc[3](Arg3: u64)
29Sub
30StLoc[4](loc0: u64)
31CopyLoc[7](loc3: &mut Leaf<Ty0>)
32MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
33MoveLoc[4](loc0: u64)
34Call cut_right<Pair<Ty0>>(&mut vector<Pair<Ty0>>, u64): vector<Pair<Ty0>>
35StLoc[5](loc1: vector<Pair<Ty0>>)
36MoveLoc[7](loc3: &mut Leaf<Ty0>)
37ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
38Call last<Pair<Ty0>>(&vector<Pair<Ty0>>): &Pair<Ty0>
39ImmBorrowFieldGeneric[10](Pair.key: u128)
40ReadRef
41StLoc[6](loc2: u128)
42MoveLoc[0](Arg0: &mut Map<Ty0>)
43MutBorrowFieldGeneric[0](Map.id: UID)
44MoveLoc[2](Arg2: u64)
45Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
46StLoc[8](loc4: &mut Leaf<Ty0>)
47MoveLoc[5](loc1: vector<Pair<Ty0>>)
48MoveLoc[8](loc4: &mut Leaf<Ty0>)
49MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
50Call append_left<Pair<Ty0>>(vector<Pair<Ty0>>, &mut vector<Pair<Ty0>>)
51MoveLoc[6](loc2: u128)
52Ret
}
merge_leaves<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u64) {
L3: loc0: vector<Pair<Ty0>>
L4: loc1: &mut Leaf<Ty0>
L5: loc2: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[2](Arg2: u64)
3Call dynamic_field::remove<u64, Leaf<Ty0>>(&mut UID, u64): Leaf<Ty0>
4UnpackGeneric[1](Leaf<Ty0>)
5StLoc[5](loc2: u64)
6StLoc[3](loc0: vector<Pair<Ty0>>)
7MoveLoc[0](Arg0: &mut Map<Ty0>)
8MutBorrowFieldGeneric[0](Map.id: UID)
9MoveLoc[1](Arg1: u64)
10Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
11StLoc[4](loc1: &mut Leaf<Ty0>)
12CopyLoc[4](loc1: &mut Leaf<Ty0>)
13MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
14ImmBorrowLoc[3](loc0: vector<Pair<Ty0>>)
15Call append_right<Pair<Ty0>>(&mut vector<Pair<Ty0>>, &vector<Pair<Ty0>>)
16MoveLoc[5](loc2: u64)
17MoveLoc[4](loc1: &mut Leaf<Ty0>)
18MutBorrowFieldGeneric[12](Leaf.next: u64)
19WriteRef
20Ret
}
batch_drop_from_root<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u128) {
L2: loc0: bool
L3: loc1: &mut Branch
L4: loc2: Branch
L5: loc3: &mut Branch
L6: loc4: Branch
L7: loc5: &mut Branch
L8: loc6: Branch
L9: loc7: u64
L10: loc8: bool
L11: loc9: u64
L12: loc10: &vector<u128>
L13: loc11: u64
L14: loc12: u64
L15: loc13: bool
L16: loc14: u64
L17: loc15: u64
L18: loc16: u128
L19: loc17: &mut vector<u64>
L20: loc18: u128
L21: loc19: vector<u64>
L22: loc20: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1ImmBorrowFieldGeneric[13](Map.root: u64)
2ReadRef
3StLoc[22](loc20: u64)
B1:
4LdConst[0](u64: 9223..)
5CopyLoc[22](loc20: u64)
6BitAnd
7LdU64(0)
8Neq
9BrFalse(17)
B2:
10Branch(11)
B3:
11MoveLoc[0](Arg0: &mut Map<Ty0>)
12MoveLoc[22](loc20: u64)
13MoveLoc[1](Arg1: u128)
14Call batch_drop_from_leaf<Ty0>(&mut Map<Ty0>, u64, u128): u64
15Pop
16Ret
B4:
17CopyLoc[0](Arg0: &mut Map<Ty0>)
18MutBorrowFieldGeneric[0](Map.id: UID)
19CopyLoc[22](loc20: u64)
20Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
21StLoc[3](loc1: &mut Branch)
22CopyLoc[3](loc1: &mut Branch)
23ImmBorrowField[14](Branch.keys: vector<u128>)
24StLoc[12](loc10: &vector<u128>)
25CopyLoc[12](loc10: &vector<u128>)
26VecLen(7)
27StLoc[13](loc11: u64)
28CopyLoc[12](loc10: &vector<u128>)
29CopyLoc[13](loc11: u64)
30CopyLoc[1](Arg1: u128)
31Call binary_search(&vector<u128>, u64, u128): u64
32StLoc[11](loc9: u64)
33CopyLoc[11](loc9: u64)
34CopyLoc[13](loc11: u64)
35Lt
36BrFalse(45)
B5:
37MoveLoc[12](loc10: &vector<u128>)
38CopyLoc[11](loc9: u64)
39VecImmBorrow(7)
40ReadRef
41CopyLoc[1](Arg1: u128)
42Eq
43StLoc[2](loc0: bool)
44Branch(49)
B6:
45MoveLoc[12](loc10: &vector<u128>)
46Pop
47LdFalse
48StLoc[2](loc0: bool)
B7:
49MoveLoc[2](loc0: bool)
50StLoc[10](loc8: bool)
51CopyLoc[10](loc8: bool)
52BrFalse(58)
B8:
53CopyLoc[11](loc9: u64)
54LdU64(1)
55Add
56StLoc[9](loc7: u64)
57Branch(60)
B9:
58CopyLoc[11](loc9: u64)
59StLoc[9](loc7: u64)
B10:
60CopyLoc[3](loc1: &mut Branch)
61MutBorrowField[15](Branch.kids: vector<u64>)
62StLoc[19](loc17: &mut vector<u64>)
63CopyLoc[19](loc17: &mut vector<u64>)
64MoveLoc[11](loc9: u64)
65VecMutBorrow(5)
66ReadRef
67StLoc[14](loc12: u64)
68LdConst[0](u64: 9223..)
69CopyLoc[14](loc12: u64)
70BitAnd
71LdU64(0)
72Eq
73StLoc[15](loc13: bool)
74CopyLoc[3](loc1: &mut Branch)
75MutBorrowField[14](Branch.keys: vector<u128>)
76CopyLoc[9](loc7: u64)
77Call drop_left<u128>(&mut vector<u128>, u64)
78CopyLoc[15](loc13: bool)
79BrFalse(85)
B11:
80CopyLoc[19](loc17: &mut vector<u64>)
81CopyLoc[9](loc7: u64)
82Call cut_reversed_left<u64>(&mut vector<u64>, u64): vector<u64>
83StLoc[21](loc19: vector<u64>)
84Branch(90)
B12:
85CopyLoc[19](loc17: &mut vector<u64>)
86CopyLoc[9](loc7: u64)
87Call drop_left<u64>(&mut vector<u64>, u64)
88LdConst[1](vector<u64>: 00)
89StLoc[21](loc19: vector<u64>)
B13:
90MoveLoc[13](loc11: u64)
91CopyLoc[9](loc7: u64)
92Sub
93StLoc[13](loc11: u64)
94CopyLoc[13](loc11: u64)
95LdU64(0)
96Eq
97BrFalse(125)
B14:
98MoveLoc[19](loc17: &mut vector<u64>)
99Pop
100MoveLoc[3](loc1: &mut Branch)
101Pop
102CopyLoc[0](Arg0: &mut Map<Ty0>)
103MoveLoc[9](loc7: u64)
104MoveLoc[15](loc13: bool)
105MoveLoc[21](loc19: vector<u64>)
106Call drop_kids<Ty0>(&mut Map<Ty0>, u64, bool, vector<u64>)
107CopyLoc[0](Arg0: &mut Map<Ty0>)
108MutBorrowFieldGeneric[0](Map.id: UID)
109MoveLoc[22](loc20: u64)
110Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
111StLoc[4](loc2: Branch)
112MutBorrowLoc[4](loc2: Branch)
113MutBorrowField[15](Branch.kids: vector<u64>)
114VecPopBack(5)
115StLoc[22](loc20: u64)
116CopyLoc[22](loc20: u64)
117CopyLoc[0](Arg0: &mut Map<Ty0>)
118MutBorrowFieldGeneric[13](Map.root: u64)
119WriteRef
120MoveLoc[10](loc8: bool)
121BrFalse(4)
B15:
122MoveLoc[0](Arg0: &mut Map<Ty0>)
123Pop
124Ret
B16:
125MoveLoc[10](loc8: bool)
126BrFalse(137)
B17:
127MoveLoc[19](loc17: &mut vector<u64>)
128Pop
129MoveLoc[3](loc1: &mut Branch)
130Pop
131MoveLoc[0](Arg0: &mut Map<Ty0>)
132MoveLoc[9](loc7: u64)
133MoveLoc[15](loc13: bool)
134MoveLoc[21](loc19: vector<u64>)
135Call drop_kids<Ty0>(&mut Map<Ty0>, u64, bool, vector<u64>)
136Ret
B18:
137MoveLoc[3](loc1: &mut Branch)
138MutBorrowField[14](Branch.keys: vector<u128>)
139LdU64(0)
140VecMutBorrow(7)
141ReadRef
142StLoc[18](loc16: u128)
143MoveLoc[19](loc17: &mut vector<u64>)
144LdU64(1)
145VecMutBorrow(5)
146ReadRef
147StLoc[17](loc15: u64)
148CopyLoc[0](Arg0: &mut Map<Ty0>)
149MoveLoc[9](loc7: u64)
150CopyLoc[15](loc13: bool)
151MoveLoc[21](loc19: vector<u64>)
152Call drop_kids<Ty0>(&mut Map<Ty0>, u64, bool, vector<u64>)
153MoveLoc[15](loc13: bool)
154BrFalse(212)
B19:
155CopyLoc[0](Arg0: &mut Map<Ty0>)
156MoveLoc[14](loc12: u64)
157CopyLoc[18](loc16: u128)
158MoveLoc[17](loc15: u64)
159MoveLoc[1](Arg1: u128)
160Call batch_drop_from_branch<Ty0>(&mut Map<Ty0>, u64, u128, u64, u128): u128
161StLoc[20](loc18: u128)
162CopyLoc[20](loc18: u128)
163MoveLoc[18](loc16: u128)
164Neq
165BrFalse(209)
B20:
166CopyLoc[0](Arg0: &mut Map<Ty0>)
167MutBorrowFieldGeneric[0](Map.id: UID)
168CopyLoc[22](loc20: u64)
169Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
170StLoc[5](loc3: &mut Branch)
171CopyLoc[20](loc18: u128)
172LdU128(0)
173Eq
174BrFalse(200)
B21:
175CopyLoc[5](loc3: &mut Branch)
176MutBorrowField[14](Branch.keys: vector<u128>)
177Call drop_first<u128>(&mut vector<u128>)
178MoveLoc[5](loc3: &mut Branch)
179MutBorrowField[15](Branch.kids: vector<u64>)
180Call drop_second<u64>(&mut vector<u64>)
181MoveLoc[13](loc11: u64)
182LdU64(1)
183Eq
184BrFalse(197)
B22:
185CopyLoc[0](Arg0: &mut Map<Ty0>)
186MutBorrowFieldGeneric[0](Map.id: UID)
187MoveLoc[22](loc20: u64)
188Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
189StLoc[6](loc4: Branch)
190MutBorrowLoc[6](loc4: Branch)
191MutBorrowField[15](Branch.kids: vector<u64>)
192VecPopBack(5)
193MoveLoc[0](Arg0: &mut Map<Ty0>)
194MutBorrowFieldGeneric[13](Map.root: u64)
195WriteRef
196Ret
B23:
197MoveLoc[0](Arg0: &mut Map<Ty0>)
198Pop
199Ret
B24:
200MoveLoc[0](Arg0: &mut Map<Ty0>)
201Pop
202MoveLoc[20](loc18: u128)
203MoveLoc[5](loc3: &mut Branch)
204MutBorrowField[14](Branch.keys: vector<u128>)
205LdU64(0)
206VecMutBorrow(7)
207WriteRef
208Ret
B25:
209MoveLoc[0](Arg0: &mut Map<Ty0>)
210Pop
211Ret
B26:
212CopyLoc[0](Arg0: &mut Map<Ty0>)
213CopyLoc[14](loc12: u64)
214MoveLoc[1](Arg1: u128)
215Call batch_drop_from_leaf<Ty0>(&mut Map<Ty0>, u64, u128): u64
216StLoc[16](loc14: u64)
217CopyLoc[16](loc14: u64)
218CopyLoc[0](Arg0: &mut Map<Ty0>)
219ImmBorrowFieldGeneric[4](Map.leaf_min: u64)
220ReadRef
221Lt
222BrFalse(272)
B27:
223CopyLoc[0](Arg0: &mut Map<Ty0>)
224MoveLoc[14](loc12: u64)
225MoveLoc[16](loc14: u64)
226MoveLoc[17](loc15: u64)
227Call migrate_to_left_leaf<Ty0>(&mut Map<Ty0>, u64, u64, u64): u128
228StLoc[18](loc16: u128)
229CopyLoc[0](Arg0: &mut Map<Ty0>)
230MutBorrowFieldGeneric[0](Map.id: UID)
231CopyLoc[22](loc20: u64)
232Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
233StLoc[7](loc5: &mut Branch)
234CopyLoc[18](loc16: u128)
235LdU128(0)
236Eq
237BrFalse(263)
B28:
238CopyLoc[7](loc5: &mut Branch)
239MutBorrowField[14](Branch.keys: vector<u128>)
240Call drop_first<u128>(&mut vector<u128>)
241MoveLoc[7](loc5: &mut Branch)
242MutBorrowField[15](Branch.kids: vector<u64>)
243Call drop_second<u64>(&mut vector<u64>)
244MoveLoc[13](loc11: u64)
245LdU64(1)
246Eq
247BrFalse(260)
B29:
248CopyLoc[0](Arg0: &mut Map<Ty0>)
249MutBorrowFieldGeneric[0](Map.id: UID)
250MoveLoc[22](loc20: u64)
251Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
252StLoc[8](loc6: Branch)
253MutBorrowLoc[8](loc6: Branch)
254MutBorrowField[15](Branch.kids: vector<u64>)
255VecPopBack(5)
256MoveLoc[0](Arg0: &mut Map<Ty0>)
257MutBorrowFieldGeneric[13](Map.root: u64)
258WriteRef
259Ret
B30:
260MoveLoc[0](Arg0: &mut Map<Ty0>)
261Pop
262Ret
B31:
263MoveLoc[0](Arg0: &mut Map<Ty0>)
264Pop
265MoveLoc[18](loc16: u128)
266MoveLoc[7](loc5: &mut Branch)
267MutBorrowField[14](Branch.keys: vector<u128>)
268LdU64(0)
269VecMutBorrow(7)
270WriteRef
271Ret
B32:
272MoveLoc[0](Arg0: &mut Map<Ty0>)
273Pop
274Ret
}
batch_drop_from_branch<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u128, Arg3: u64, Arg4: u128): u128 {
L5: loc0: bool
L6: loc1: &mut Branch
L7: loc2: &mut Branch
L8: loc3: &mut Branch
L9: loc4: u64
L10: loc5: bool
L11: loc6: u64
L12: loc7: &vector<u128>
L13: loc8: u64
L14: loc9: u64
L15: loc10: bool
L16: loc11: u64
L17: loc12: u64
L18: loc13: u128
L19: loc14: &mut vector<u64>
L20: loc15: u64
L21: loc16: u128
L22: loc17: vector<u64>
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2CopyLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
4StLoc[6](loc1: &mut Branch)
5CopyLoc[6](loc1: &mut Branch)
6ImmBorrowField[14](Branch.keys: vector<u128>)
7StLoc[12](loc7: &vector<u128>)
8CopyLoc[12](loc7: &vector<u128>)
9VecLen(7)
10StLoc[13](loc8: u64)
11CopyLoc[12](loc7: &vector<u128>)
12CopyLoc[13](loc8: u64)
13CopyLoc[4](Arg4: u128)
14Call binary_search(&vector<u128>, u64, u128): u64
15StLoc[11](loc6: u64)
16CopyLoc[11](loc6: u64)
17CopyLoc[13](loc8: u64)
18Lt
19BrFalse(28)
B1:
20MoveLoc[12](loc7: &vector<u128>)
21CopyLoc[11](loc6: u64)
22VecImmBorrow(7)
23ReadRef
24CopyLoc[4](Arg4: u128)
25Eq
26StLoc[5](loc0: bool)
27Branch(32)
B2:
28MoveLoc[12](loc7: &vector<u128>)
29Pop
30LdFalse
31StLoc[5](loc0: bool)
B3:
32MoveLoc[5](loc0: bool)
33StLoc[10](loc5: bool)
34CopyLoc[10](loc5: bool)
35BrFalse(41)
B4:
36CopyLoc[11](loc6: u64)
37LdU64(1)
38Add
39StLoc[9](loc4: u64)
40Branch(43)
B5:
41CopyLoc[11](loc6: u64)
42StLoc[9](loc4: u64)
B6:
43CopyLoc[6](loc1: &mut Branch)
44MutBorrowField[15](Branch.kids: vector<u64>)
45StLoc[19](loc14: &mut vector<u64>)
46CopyLoc[19](loc14: &mut vector<u64>)
47MoveLoc[11](loc6: u64)
48VecMutBorrow(5)
49ReadRef
50StLoc[14](loc9: u64)
51LdConst[0](u64: 9223..)
52CopyLoc[14](loc9: u64)
53BitAnd
54LdU64(0)
55Eq
56StLoc[15](loc10: bool)
57CopyLoc[6](loc1: &mut Branch)
58MutBorrowField[14](Branch.keys: vector<u128>)
59CopyLoc[9](loc4: u64)
60Call drop_left<u128>(&mut vector<u128>, u64)
61CopyLoc[15](loc10: bool)
62BrFalse(68)
B7:
63CopyLoc[19](loc14: &mut vector<u64>)
64CopyLoc[9](loc4: u64)
65Call cut_reversed_left<u64>(&mut vector<u64>, u64): vector<u64>
66StLoc[22](loc17: vector<u64>)
67Branch(73)
B8:
68CopyLoc[19](loc14: &mut vector<u64>)
69CopyLoc[9](loc4: u64)
70Call drop_left<u64>(&mut vector<u64>, u64)
71LdConst[1](vector<u64>: 00)
72StLoc[22](loc17: vector<u64>)
B9:
73MoveLoc[13](loc8: u64)
74CopyLoc[9](loc4: u64)
75Sub
76LdU64(1)
77Add
78StLoc[20](loc15: u64)
79MoveLoc[10](loc5: bool)
80BrFalse(105)
B10:
81MoveLoc[19](loc14: &mut vector<u64>)
82Pop
83MoveLoc[6](loc1: &mut Branch)
84Pop
85CopyLoc[20](loc15: u64)
86CopyLoc[0](Arg0: &mut Map<Ty0>)
87ImmBorrowFieldGeneric[2](Map.branch_min: u64)
88ReadRef
89Lt
90BrFalse(98)
B11:
91CopyLoc[0](Arg0: &mut Map<Ty0>)
92MoveLoc[1](Arg1: u64)
93MoveLoc[20](loc15: u64)
94MoveLoc[2](Arg2: u128)
95MoveLoc[3](Arg3: u64)
96Call migrate_to_left_branch<Ty0>(&mut Map<Ty0>, u64, u64, u128, u64): u128
97StLoc[2](Arg2: u128)
B12:
98MoveLoc[0](Arg0: &mut Map<Ty0>)
99MoveLoc[9](loc4: u64)
100MoveLoc[15](loc10: bool)
101MoveLoc[22](loc17: vector<u64>)
102Call drop_kids<Ty0>(&mut Map<Ty0>, u64, bool, vector<u64>)
103MoveLoc[2](Arg2: u128)
104Ret
B13:
105CopyLoc[20](loc15: u64)
106CopyLoc[0](Arg0: &mut Map<Ty0>)
107ImmBorrowFieldGeneric[2](Map.branch_min: u64)
108ReadRef
109Le
110BrFalse(125)
B14:
111MoveLoc[19](loc14: &mut vector<u64>)
112Pop
113MoveLoc[6](loc1: &mut Branch)
114Pop
115CopyLoc[0](Arg0: &mut Map<Ty0>)
116CopyLoc[1](Arg1: u64)
117MoveLoc[20](loc15: u64)
118MoveLoc[2](Arg2: u128)
119MoveLoc[3](Arg3: u64)
120Call migrate_to_left_branch1<Ty0>(&mut Map<Ty0>, u64, u64, u128, u64): u128 * u128 * u64
121StLoc[17](loc12: u64)
122StLoc[18](loc13: u128)
123StLoc[2](Arg2: u128)
124Branch(136)
B15:
125MoveLoc[6](loc1: &mut Branch)
126MutBorrowField[14](Branch.keys: vector<u128>)
127LdU64(0)
128VecMutBorrow(7)
129ReadRef
130StLoc[18](loc13: u128)
131MoveLoc[19](loc14: &mut vector<u64>)
132LdU64(1)
133VecMutBorrow(5)
134ReadRef
135StLoc[17](loc12: u64)
B16:
136CopyLoc[0](Arg0: &mut Map<Ty0>)
137MoveLoc[9](loc4: u64)
138CopyLoc[15](loc10: bool)
139MoveLoc[22](loc17: vector<u64>)
140Call drop_kids<Ty0>(&mut Map<Ty0>, u64, bool, vector<u64>)
141MoveLoc[15](loc10: bool)
142BrFalse(183)
B17:
143CopyLoc[0](Arg0: &mut Map<Ty0>)
144MoveLoc[14](loc9: u64)
145CopyLoc[18](loc13: u128)
146MoveLoc[17](loc12: u64)
147MoveLoc[4](Arg4: u128)
148Call batch_drop_from_branch<Ty0>(&mut Map<Ty0>, u64, u128, u64, u128): u128
149StLoc[21](loc16: u128)
150CopyLoc[21](loc16: u128)
151MoveLoc[18](loc13: u128)
152Neq
153BrFalse(179)
B18:
154MoveLoc[0](Arg0: &mut Map<Ty0>)
155MutBorrowFieldGeneric[0](Map.id: UID)
156MoveLoc[1](Arg1: u64)
157Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
158StLoc[7](loc2: &mut Branch)
159CopyLoc[21](loc16: u128)
160LdU128(0)
161Eq
162BrFalse(171)
B19:
163CopyLoc[7](loc2: &mut Branch)
164MutBorrowField[14](Branch.keys: vector<u128>)
165Call drop_first<u128>(&mut vector<u128>)
166MoveLoc[7](loc2: &mut Branch)
167MutBorrowField[15](Branch.kids: vector<u64>)
168Call drop_second<u64>(&mut vector<u64>)
169MoveLoc[2](Arg2: u128)
170Ret
B20:
171MoveLoc[21](loc16: u128)
172MoveLoc[7](loc2: &mut Branch)
173MutBorrowField[14](Branch.keys: vector<u128>)
174LdU64(0)
175VecMutBorrow(7)
176WriteRef
177MoveLoc[2](Arg2: u128)
178Ret
B21:
179MoveLoc[0](Arg0: &mut Map<Ty0>)
180Pop
181MoveLoc[2](Arg2: u128)
182Ret
B22:
183CopyLoc[0](Arg0: &mut Map<Ty0>)
184CopyLoc[14](loc9: u64)
185MoveLoc[4](Arg4: u128)
186Call batch_drop_from_leaf<Ty0>(&mut Map<Ty0>, u64, u128): u64
187StLoc[16](loc11: u64)
188CopyLoc[16](loc11: u64)
189CopyLoc[0](Arg0: &mut Map<Ty0>)
190ImmBorrowFieldGeneric[4](Map.leaf_min: u64)
191ReadRef
192Lt
193BrFalse(225)
B23:
194CopyLoc[0](Arg0: &mut Map<Ty0>)
195MoveLoc[14](loc9: u64)
196MoveLoc[16](loc11: u64)
197MoveLoc[17](loc12: u64)
198Call migrate_to_left_leaf<Ty0>(&mut Map<Ty0>, u64, u64, u64): u128
199StLoc[18](loc13: u128)
200MoveLoc[0](Arg0: &mut Map<Ty0>)
201MutBorrowFieldGeneric[0](Map.id: UID)
202MoveLoc[1](Arg1: u64)
203Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
204StLoc[8](loc3: &mut Branch)
205CopyLoc[18](loc13: u128)
206LdU128(0)
207Eq
208BrFalse(217)
B24:
209CopyLoc[8](loc3: &mut Branch)
210MutBorrowField[14](Branch.keys: vector<u128>)
211Call drop_first<u128>(&mut vector<u128>)
212MoveLoc[8](loc3: &mut Branch)
213MutBorrowField[15](Branch.kids: vector<u64>)
214Call drop_second<u64>(&mut vector<u64>)
215MoveLoc[2](Arg2: u128)
216Ret
B25:
217MoveLoc[18](loc13: u128)
218MoveLoc[8](loc3: &mut Branch)
219MutBorrowField[14](Branch.keys: vector<u128>)
220LdU64(0)
221VecMutBorrow(7)
222WriteRef
223MoveLoc[2](Arg2: u128)
224Ret
B26:
225MoveLoc[0](Arg0: &mut Map<Ty0>)
226Pop
227MoveLoc[2](Arg2: u128)
228Ret
}
drop_kids<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: bool, Arg3: vector<u64>) {
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Eq
3BrFalse(7)
B1:
4MoveLoc[0](Arg0: &mut Map<Ty0>)
5Pop
6Ret
B2:
7MoveLoc[2](Arg2: bool)
8BrFalse(25)
B3:
9CopyLoc[1](Arg1: u64)
10LdU64(0)
11Gt
12BrFalse(22)
B4:
13MoveLoc[1](Arg1: u64)
14LdU64(1)
15Sub
16StLoc[1](Arg1: u64)
17CopyLoc[0](Arg0: &mut Map<Ty0>)
18MutBorrowLoc[3](Arg3: vector<u64>)
19VecPopBack(5)
20Call drop_branch<Ty0>(&mut Map<Ty0>, u64)
21Branch(9)
B5:
22MoveLoc[0](Arg0: &mut Map<Ty0>)
23Pop
24Branch(28)
B6:
25MoveLoc[0](Arg0: &mut Map<Ty0>)
26MoveLoc[1](Arg1: u64)
27Call drop_first_leaves<Ty0>(&mut Map<Ty0>, u64)
B7:
28Ret
}
migrate_to_left_branch1<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u64, Arg3: u128, Arg4: u64): u128 * u128 * u64 {
L5: loc0: u64
L6: loc1: vector<u128>
L7: loc2: vector<u128>
L8: loc3: vector<u64>
L9: loc4: vector<u64>
L10: loc5: &mut Branch
L11: loc6: &mut Branch
L12: loc7: &mut vector<u128>
L13: loc8: &mut vector<u128>
L14: loc9: &mut vector<u64>
L15: loc10: &mut vector<u64>
L16: loc11: u128
L17: loc12: &mut Branch
L18: loc13: u64
L19: loc14: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2CopyLoc[4](Arg4: u64)
3Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
4StLoc[17](loc12: &mut Branch)
5CopyLoc[17](loc12: &mut Branch)
6ImmBorrowField[15](Branch.kids: vector<u64>)
7VecLen(5)
8StLoc[18](loc13: u64)
9CopyLoc[2](Arg2: u64)
10MoveLoc[18](loc13: u64)
11Add
12StLoc[19](loc14: u64)
13CopyLoc[19](loc14: u64)
14CopyLoc[0](Arg0: &mut Map<Ty0>)
15ImmBorrowFieldGeneric[6](Map.branches_merge_max: u64)
16ReadRef
17Le
18BrFalse(58)
B1:
19MoveLoc[17](loc12: &mut Branch)
20Pop
21CopyLoc[0](Arg0: &mut Map<Ty0>)
22MutBorrowFieldGeneric[0](Map.id: UID)
23MoveLoc[4](Arg4: u64)
24Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
25Unpack[1](Branch)
26StLoc[8](loc3: vector<u64>)
27StLoc[6](loc1: vector<u128>)
28MoveLoc[0](Arg0: &mut Map<Ty0>)
29MutBorrowFieldGeneric[0](Map.id: UID)
30MoveLoc[1](Arg1: u64)
31Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
32StLoc[10](loc5: &mut Branch)
33CopyLoc[10](loc5: &mut Branch)
34MutBorrowField[14](Branch.keys: vector<u128>)
35StLoc[12](loc7: &mut vector<u128>)
36MoveLoc[10](loc5: &mut Branch)
37MutBorrowField[15](Branch.kids: vector<u64>)
38StLoc[14](loc9: &mut vector<u64>)
39CopyLoc[12](loc7: &mut vector<u128>)
40MoveLoc[3](Arg3: u128)
41VecPushBack(7)
42CopyLoc[12](loc7: &mut vector<u128>)
43ImmBorrowLoc[6](loc1: vector<u128>)
44Call append_right<u128>(&mut vector<u128>, &vector<u128>)
45CopyLoc[14](loc9: &mut vector<u64>)
46ImmBorrowLoc[8](loc3: vector<u64>)
47Call append_right<u64>(&mut vector<u64>, &vector<u64>)
48LdU128(0)
49MoveLoc[12](loc7: &mut vector<u128>)
50LdU64(0)
51VecMutBorrow(7)
52ReadRef
53MoveLoc[14](loc9: &mut vector<u64>)
54LdU64(1)
55VecMutBorrow(5)
56ReadRef
57Ret
B2:
58MoveLoc[19](loc14: u64)
59LdU64(1)
60Add
61LdU64(2)
62Div
63MoveLoc[2](Arg2: u64)
64Sub
65StLoc[5](loc0: u64)
66CopyLoc[17](loc12: &mut Branch)
67MutBorrowField[14](Branch.keys: vector<u128>)
68CopyLoc[5](loc0: u64)
69Call cut_reversed_left1<u128>(&mut vector<u128>, u64): u128 * vector<u128>
70StLoc[7](loc2: vector<u128>)
71StLoc[16](loc11: u128)
72MoveLoc[17](loc12: &mut Branch)
73MutBorrowField[15](Branch.kids: vector<u64>)
74MoveLoc[5](loc0: u64)
75Call cut_reversed_left<u64>(&mut vector<u64>, u64): vector<u64>
76StLoc[9](loc4: vector<u64>)
77MoveLoc[0](Arg0: &mut Map<Ty0>)
78MutBorrowFieldGeneric[0](Map.id: UID)
79MoveLoc[1](Arg1: u64)
80Call dynamic_field::borrow_mut<u64, Branch>(&mut UID, u64): &mut Branch
81StLoc[11](loc6: &mut Branch)
82CopyLoc[11](loc6: &mut Branch)
83MutBorrowField[14](Branch.keys: vector<u128>)
84StLoc[13](loc8: &mut vector<u128>)
85MoveLoc[11](loc6: &mut Branch)
86MutBorrowField[15](Branch.kids: vector<u64>)
87StLoc[15](loc10: &mut vector<u64>)
88CopyLoc[13](loc8: &mut vector<u128>)
89MoveLoc[3](Arg3: u128)
90VecPushBack(7)
91CopyLoc[13](loc8: &mut vector<u128>)
92MoveLoc[7](loc2: vector<u128>)
93Call append_reversed_right<u128>(&mut vector<u128>, vector<u128>)
94CopyLoc[15](loc10: &mut vector<u64>)
95MoveLoc[9](loc4: vector<u64>)
96Call append_reversed_right<u64>(&mut vector<u64>, vector<u64>)
97MoveLoc[16](loc11: u128)
98MoveLoc[13](loc8: &mut vector<u128>)
99LdU64(0)
100VecMutBorrow(7)
101ReadRef
102MoveLoc[15](loc10: &mut vector<u64>)
103LdU64(1)
104VecMutBorrow(5)
105ReadRef
106Ret
}
batch_drop_from_leaf<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64, Arg2: u128): u64 {
L3: loc0: u64
L4: loc1: &vector<Pair<Ty0>>
L5: loc2: &mut Leaf<Ty0>
L6: loc3: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::borrow_mut<u64, Leaf<Ty0>>(&mut UID, u64): &mut Leaf<Ty0>
4StLoc[5](loc2: &mut Leaf<Ty0>)
5CopyLoc[5](loc2: &mut Leaf<Ty0>)
6ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
7StLoc[4](loc1: &vector<Pair<Ty0>>)
8CopyLoc[4](loc1: &vector<Pair<Ty0>>)
9VecLen(58)
10StLoc[6](loc3: u64)
11MoveLoc[4](loc1: &vector<Pair<Ty0>>)
12CopyLoc[6](loc3: u64)
13MoveLoc[2](Arg2: u128)
14Call binary_search_rightmost<Ty0>(&vector<Pair<Ty0>>, u64, u128): u64
15StLoc[3](loc0: u64)
16MoveLoc[5](loc2: &mut Leaf<Ty0>)
17MutBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
18CopyLoc[3](loc0: u64)
19Call drop_left<Pair<Ty0>>(&mut vector<Pair<Ty0>>, u64)
20CopyLoc[0](Arg0: &mut Map<Ty0>)
21ImmBorrowFieldGeneric[1](Map.size: u64)
22ReadRef
23CopyLoc[3](loc0: u64)
24Sub
25MoveLoc[0](Arg0: &mut Map<Ty0>)
26MutBorrowFieldGeneric[1](Map.size: u64)
27WriteRef
28MoveLoc[6](loc3: u64)
29MoveLoc[3](loc0: u64)
30Sub
31Ret
}
drop_branch<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64) {
L2: loc0: Branch
L3: loc1: u64
L4: loc2: &vector<u64>
L5: loc3: u64
L6: loc4: u64
B0:
0CopyLoc[0](Arg0: &mut Map<Ty0>)
1MutBorrowFieldGeneric[0](Map.id: UID)
2MoveLoc[1](Arg1: u64)
3Call dynamic_field::remove<u64, Branch>(&mut UID, u64): Branch
4StLoc[2](loc0: Branch)
5ImmBorrowLoc[2](loc0: Branch)
6ImmBorrowField[15](Branch.kids: vector<u64>)
7StLoc[4](loc2: &vector<u64>)
8CopyLoc[4](loc2: &vector<u64>)
9VecLen(5)
10StLoc[5](loc3: u64)
11CopyLoc[4](loc2: &vector<u64>)
12LdU64(0)
13VecImmBorrow(5)
14ReadRef
15StLoc[6](loc4: u64)
16LdConst[0](u64: 9223..)
17CopyLoc[6](loc4: u64)
18BitAnd
19LdU64(0)
20Eq
21BrFalse(48)
B1:
22CopyLoc[0](Arg0: &mut Map<Ty0>)
23MoveLoc[6](loc4: u64)
24Call drop_branch<Ty0>(&mut Map<Ty0>, u64)
25LdU64(1)
26StLoc[3](loc1: u64)
B2:
27CopyLoc[3](loc1: u64)
28CopyLoc[5](loc3: u64)
29Lt
30BrFalse(43)
B3:
31Branch(32)
B4:
32CopyLoc[0](Arg0: &mut Map<Ty0>)
33CopyLoc[4](loc2: &vector<u64>)
34CopyLoc[3](loc1: u64)
35VecImmBorrow(5)
36ReadRef
37Call drop_branch<Ty0>(&mut Map<Ty0>, u64)
38MoveLoc[3](loc1: u64)
39LdU64(1)
40Add
41StLoc[3](loc1: u64)
42Branch(27)
B5:
43MoveLoc[0](Arg0: &mut Map<Ty0>)
44Pop
45MoveLoc[4](loc2: &vector<u64>)
46Pop
47Ret
B6:
48MoveLoc[4](loc2: &vector<u64>)
49Pop
50MoveLoc[0](Arg0: &mut Map<Ty0>)
51MoveLoc[5](loc3: u64)
52Call drop_first_leaves<Ty0>(&mut Map<Ty0>, u64)
53Ret
}
drop_first_leaves<Ty0: copy + drop + store>(Arg0: &mut Map<Ty0>, Arg1: u64) {
L2: loc0: Leaf<Ty0>
L3: loc1: u64
L4: loc2: u64
B0:
0LdU64(0)
1StLoc[4](loc2: u64)
2CopyLoc[0](Arg0: &mut Map<Ty0>)
3ImmBorrowFieldGeneric[8](Map.first: u64)
4ReadRef
5StLoc[3](loc1: u64)
B1:
6CopyLoc[1](Arg1: u64)
7LdU64(0)
8Gt
9BrFalse(31)
B2:
10Branch(11)
B3:
11CopyLoc[0](Arg0: &mut Map<Ty0>)
12MutBorrowFieldGeneric[0](Map.id: UID)
13MoveLoc[3](loc1: u64)
14Call dynamic_field::remove<u64, Leaf<Ty0>>(&mut UID, u64): Leaf<Ty0>
15StLoc[2](loc0: Leaf<Ty0>)
16MoveLoc[4](loc2: u64)
17ImmBorrowLoc[2](loc0: Leaf<Ty0>)
18ImmBorrowFieldGeneric[9](Leaf.keys_vals: vector<Pair<Ty0>>)
19VecLen(58)
20Add
21StLoc[4](loc2: u64)
22ImmBorrowLoc[2](loc0: Leaf<Ty0>)
23ImmBorrowFieldGeneric[12](Leaf.next: u64)
24ReadRef
25StLoc[3](loc1: u64)
26MoveLoc[1](Arg1: u64)
27LdU64(1)
28Sub
29StLoc[1](Arg1: u64)
30Branch(6)
B4:
31CopyLoc[0](Arg0: &mut Map<Ty0>)
32ImmBorrowFieldGeneric[1](Map.size: u64)
33ReadRef
34MoveLoc[4](loc2: u64)
35Sub
36CopyLoc[0](Arg0: &mut Map<Ty0>)
37MutBorrowFieldGeneric[1](Map.size: u64)
38WriteRef
39MoveLoc[3](loc1: u64)
40MoveLoc[0](Arg0: &mut Map<Ty0>)
41MutBorrowFieldGeneric[8](Map.first: u64)
42WriteRef
43Ret
}
increase_counter(Arg0: &mut u64): u64 {
B0:
0CopyLoc[0](Arg0: &mut u64)
1ReadRef
2LdU64(1)
3Add
4CopyLoc[0](Arg0: &mut u64)
5WriteRef
6MoveLoc[0](Arg0: &mut u64)
7ReadRef
8Ret
}
reverse<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>) {
L1: loc0: u64
L2: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut vector<Ty0>)
1FreezeRef
2VecLen(22)
3StLoc[2](loc1: u64)
4CopyLoc[2](loc1: u64)
5LdU64(1)
6Le
7BrFalse(11)
B1:
8MoveLoc[0](Arg0: &mut vector<Ty0>)
9Pop
10Ret
B2:
11CopyLoc[2](loc1: u64)
12LdU64(2)
13Div
14StLoc[1](loc0: u64)
15MoveLoc[2](loc1: u64)
16LdU64(1)
17Sub
18StLoc[2](loc1: u64)
B3:
19CopyLoc[1](loc0: u64)
20LdU64(0)
21Gt
22BrFalse(34)
B4:
23MoveLoc[1](loc0: u64)
24LdU64(1)
25Sub
26StLoc[1](loc0: u64)
27CopyLoc[0](Arg0: &mut vector<Ty0>)
28CopyLoc[1](loc0: u64)
29CopyLoc[2](loc1: u64)
30CopyLoc[1](loc0: u64)
31Sub
32VecSwap(22)
33Branch(19)
B5:
34MoveLoc[0](Arg0: &mut vector<Ty0>)
35Pop
36Ret
}
remove_at<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: u64): Ty0 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut vector<Ty0>)
1FreezeRef
2VecLen(22)
3LdU64(1)
4Sub
5StLoc[2](loc0: u64)
B1:
6CopyLoc[2](loc0: u64)
7CopyLoc[1](Arg1: u64)
8Neq
9BrFalse(20)
B2:
10Branch(11)
B3:
11CopyLoc[0](Arg0: &mut vector<Ty0>)
12CopyLoc[1](Arg1: u64)
13CopyLoc[2](loc0: u64)
14VecSwap(22)
15MoveLoc[2](loc0: u64)
16LdU64(1)
17Sub
18StLoc[2](loc0: u64)
19Branch(6)
B4:
20MoveLoc[0](Arg0: &mut vector<Ty0>)
21VecPopBack(22)
22Ret
}
last<Ty0: copy + drop + store>(Arg0: &vector<Ty0>): &Ty0 {
B0:
0CopyLoc[0](Arg0: &vector<Ty0>)
1MoveLoc[0](Arg0: &vector<Ty0>)
2VecLen(22)
3LdU64(1)
4Sub
5VecImmBorrow(22)
6Ret
}
binary_search(Arg0: &vector<u128>, Arg1: u64, Arg2: u128): u64 {
L3: loc0: u64
L4: loc1: u64
B0:
0LdU64(0)
1StLoc[3](loc0: u64)
B1:
2CopyLoc[3](loc0: u64)
3CopyLoc[1](Arg1: u64)
4Lt
5BrFalse(28)
B2:
6Branch(7)
B3:
7CopyLoc[3](loc0: u64)
8CopyLoc[1](Arg1: u64)
9Add
10LdU8(1)
11Shr
12StLoc[4](loc1: u64)
13CopyLoc[0](Arg0: &vector<u128>)
14CopyLoc[4](loc1: u64)
15VecImmBorrow(7)
16ReadRef
17CopyLoc[2](Arg2: u128)
18Lt
19BrFalse(25)
B4:
20MoveLoc[4](loc1: u64)
21LdU64(1)
22Add
23StLoc[3](loc0: u64)
24Branch(2)
B5:
25MoveLoc[4](loc1: u64)
26StLoc[1](Arg1: u64)
27Branch(2)
B6:
28MoveLoc[0](Arg0: &vector<u128>)
29Pop
30MoveLoc[3](loc0: u64)
31Ret
}
binary_search_p<Ty0: copy + drop + store>(Arg0: &vector<Pair<Ty0>>, Arg1: u64, Arg2: u128): u64 {
L3: loc0: u64
L4: loc1: u64
B0:
0LdU64(0)
1StLoc[3](loc0: u64)
B1:
2CopyLoc[3](loc0: u64)
3CopyLoc[1](Arg1: u64)
4Lt
5BrFalse(29)
B2:
6Branch(7)
B3:
7CopyLoc[3](loc0: u64)
8CopyLoc[1](Arg1: u64)
9Add
10LdU8(1)
11Shr
12StLoc[4](loc1: u64)
13CopyLoc[0](Arg0: &vector<Pair<Ty0>>)
14CopyLoc[4](loc1: u64)
15VecImmBorrow(58)
16ImmBorrowFieldGeneric[10](Pair.key: u128)
17ReadRef
18CopyLoc[2](Arg2: u128)
19Lt
20BrFalse(26)
B4:
21MoveLoc[4](loc1: u64)
22LdU64(1)
23Add
24StLoc[3](loc0: u64)
25Branch(2)
B5:
26MoveLoc[4](loc1: u64)
27StLoc[1](Arg1: u64)
28Branch(2)
B6:
29MoveLoc[0](Arg0: &vector<Pair<Ty0>>)
30Pop
31MoveLoc[3](loc0: u64)
32Ret
}
binary_search_rightmost<Ty0: copy + drop + store>(Arg0: &vector<Pair<Ty0>>, Arg1: u64, Arg2: u128): u64 {
L3: loc0: u64
L4: loc1: u64
B0:
0LdU64(0)
1StLoc[3](loc0: u64)
B1:
2CopyLoc[3](loc0: u64)
3CopyLoc[1](Arg1: u64)
4Lt
5BrFalse(29)
B2:
6Branch(7)
B3:
7CopyLoc[3](loc0: u64)
8CopyLoc[1](Arg1: u64)
9Add
10LdU8(1)
11Shr
12StLoc[4](loc1: u64)
13CopyLoc[0](Arg0: &vector<Pair<Ty0>>)
14CopyLoc[4](loc1: u64)
15VecImmBorrow(58)
16ImmBorrowFieldGeneric[10](Pair.key: u128)
17ReadRef
18CopyLoc[2](Arg2: u128)
19Gt
20BrFalse(24)
B4:
21MoveLoc[4](loc1: u64)
22StLoc[1](Arg1: u64)
23Branch(2)
B5:
24MoveLoc[4](loc1: u64)
25LdU64(1)
26Add
27StLoc[3](loc0: u64)
28Branch(2)
B6:
29MoveLoc[0](Arg0: &vector<Pair<Ty0>>)
30Pop
31MoveLoc[1](Arg1: u64)
32Ret
}
copy_slice<Ty0: copy + drop + store>(Arg0: &vector<Ty0>, Arg1: u64, Arg2: u64): vector<Ty0> {
L3: loc0: vector<Ty0>
B0:
0VecPack(22, 0)
1StLoc[3](loc0: vector<Ty0>)
B1:
2CopyLoc[1](Arg1: u64)
3CopyLoc[2](Arg2: u64)
4Lt
5BrFalse(18)
B2:
6Branch(7)
B3:
7MutBorrowLoc[3](loc0: vector<Ty0>)
8CopyLoc[0](Arg0: &vector<Ty0>)
9CopyLoc[1](Arg1: u64)
10VecImmBorrow(22)
11ReadRef
12VecPushBack(22)
13MoveLoc[1](Arg1: u64)
14LdU64(1)
15Add
16StLoc[1](Arg1: u64)
17Branch(2)
B4:
18MoveLoc[0](Arg0: &vector<Ty0>)
19Pop
20MoveLoc[3](loc0: vector<Ty0>)
21Ret
}
cut_reversed_right<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: u64): vector<Ty0> {
L2: loc0: vector<Ty0>
B0:
0VecPack(22, 0)
1StLoc[2](loc0: vector<Ty0>)
B1:
2CopyLoc[1](Arg1: u64)
3LdU64(0)
4Gt
5BrFalse(16)
B2:
6Branch(7)
B3:
7MutBorrowLoc[2](loc0: vector<Ty0>)
8CopyLoc[0](Arg0: &mut vector<Ty0>)
9VecPopBack(22)
10VecPushBack(22)
11MoveLoc[1](Arg1: u64)
12LdU64(1)
13Sub
14StLoc[1](Arg1: u64)
15Branch(2)
B4:
16MoveLoc[0](Arg0: &mut vector<Ty0>)
17Pop
18MoveLoc[2](loc0: vector<Ty0>)
19Ret
}
cut_right<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: u64): vector<Ty0> {
L2: loc0: vector<Ty0>
B0:
0MoveLoc[0](Arg0: &mut vector<Ty0>)
1MoveLoc[1](Arg1: u64)
2Call cut_reversed_right<Ty0>(&mut vector<Ty0>, u64): vector<Ty0>
3StLoc[2](loc0: vector<Ty0>)
4MutBorrowLoc[2](loc0: vector<Ty0>)
5Call reverse<Ty0>(&mut vector<Ty0>)
6MoveLoc[2](loc0: vector<Ty0>)
7Ret
}
append_reversed_right<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: vector<Ty0>) {
B0:
0ImmBorrowLoc[1](Arg1: vector<Ty0>)
1VecLen(22)
2LdU64(0)
3Gt
4BrFalse(11)
B1:
5Branch(6)
B2:
6CopyLoc[0](Arg0: &mut vector<Ty0>)
7MutBorrowLoc[1](Arg1: vector<Ty0>)
8VecPopBack(22)
9VecPushBack(22)
10Branch(0)
B3:
11MoveLoc[0](Arg0: &mut vector<Ty0>)
12Pop
13MoveLoc[1](Arg1: vector<Ty0>)
14VecUnpack(22, 0)
15Ret
}
append_right<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: &vector<Ty0>) {
L2: loc0: u64
B0:
0LdU64(0)
1StLoc[2](loc0: u64)
B1:
2CopyLoc[2](loc0: u64)
3CopyLoc[1](Arg1: &vector<Ty0>)
4VecLen(22)
5Lt
6BrFalse(19)
B2:
7Branch(8)
B3:
8CopyLoc[0](Arg0: &mut vector<Ty0>)
9CopyLoc[1](Arg1: &vector<Ty0>)
10CopyLoc[2](loc0: u64)
11VecImmBorrow(22)
12ReadRef
13VecPushBack(22)
14MoveLoc[2](loc0: u64)
15LdU64(1)
16Add
17StLoc[2](loc0: u64)
18Branch(2)
B4:
19MoveLoc[1](Arg1: &vector<Ty0>)
20Pop
21MoveLoc[0](Arg0: &mut vector<Ty0>)
22Pop
23Ret
}
cut_reversed_left<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: u64): vector<Ty0> {
L2: loc0: u64
L3: loc1: vector<Ty0>
B0:
0VecPack(22, 0)
1StLoc[3](loc1: vector<Ty0>)
2CopyLoc[1](Arg1: u64)
3StLoc[2](loc0: u64)
B1:
4CopyLoc[2](loc0: u64)
5LdU64(0)
6Gt
7BrFalse(20)
B2:
8Branch(9)
B3:
9MoveLoc[2](loc0: u64)
10LdU64(1)
11Sub
12StLoc[2](loc0: u64)
13MutBorrowLoc[3](loc1: vector<Ty0>)
14CopyLoc[0](Arg0: &mut vector<Ty0>)
15CopyLoc[2](loc0: u64)
16VecMutBorrow(22)
17ReadRef
18VecPushBack(22)
19Branch(4)
B4:
20MoveLoc[0](Arg0: &mut vector<Ty0>)
21MoveLoc[1](Arg1: u64)
22Call drop_left<Ty0>(&mut vector<Ty0>, u64)
23MoveLoc[3](loc1: vector<Ty0>)
24Ret
}
cut_reversed_left1<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: u64): Ty0 * vector<Ty0> {
L2: loc0: u64
L3: loc1: vector<Ty0>
L4: loc2: Ty0
B0:
0VecPack(22, 0)
1StLoc[3](loc1: vector<Ty0>)
2CopyLoc[1](Arg1: u64)
3LdU64(1)
4Sub
5StLoc[2](loc0: u64)
6CopyLoc[0](Arg0: &mut vector<Ty0>)
7CopyLoc[2](loc0: u64)
8VecMutBorrow(22)
9ReadRef
10StLoc[4](loc2: Ty0)
B1:
11CopyLoc[2](loc0: u64)
12LdU64(0)
13Gt
14BrFalse(27)
B2:
15Branch(16)
B3:
16MoveLoc[2](loc0: u64)
17LdU64(1)
18Sub
19StLoc[2](loc0: u64)
20MutBorrowLoc[3](loc1: vector<Ty0>)
21CopyLoc[0](Arg0: &mut vector<Ty0>)
22CopyLoc[2](loc0: u64)
23VecMutBorrow(22)
24ReadRef
25VecPushBack(22)
26Branch(11)
B4:
27MoveLoc[0](Arg0: &mut vector<Ty0>)
28MoveLoc[1](Arg1: u64)
29Call drop_left<Ty0>(&mut vector<Ty0>, u64)
30MoveLoc[4](loc2: Ty0)
31MoveLoc[3](loc1: vector<Ty0>)
32Ret
}
append_left<Ty0: copy + drop + store>(Arg0: vector<Ty0>, Arg1: &mut vector<Ty0>) {
B0:
0CopyLoc[1](Arg1: &mut vector<Ty0>)
1Call reverse<Ty0>(&mut vector<Ty0>)
2CopyLoc[1](Arg1: &mut vector<Ty0>)
3MoveLoc[0](Arg0: vector<Ty0>)
4Call append_reversed_right<Ty0>(&mut vector<Ty0>, vector<Ty0>)
5MoveLoc[1](Arg1: &mut vector<Ty0>)
6Call reverse<Ty0>(&mut vector<Ty0>)
7Ret
}
drop_right<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: u64) {
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Gt
3BrFalse(13)
B1:
4Branch(5)
B2:
5CopyLoc[0](Arg0: &mut vector<Ty0>)
6VecPopBack(22)
7Pop
8MoveLoc[1](Arg1: u64)
9LdU64(1)
10Sub
11StLoc[1](Arg1: u64)
12Branch(0)
B3:
13MoveLoc[0](Arg0: &mut vector<Ty0>)
14Pop
15Ret
}
drop_left<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>, Arg1: u64) {
L2: loc0: u64
L3: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut vector<Ty0>)
1FreezeRef
2VecLen(22)
3StLoc[3](loc1: u64)
4LdU64(2)
5CopyLoc[1](Arg1: u64)
6Mul
7CopyLoc[3](loc1: u64)
8Gt
9BrFalse(18)
B1:
10CopyLoc[0](Arg0: &mut vector<Ty0>)
11FreezeRef
12MoveLoc[1](Arg1: u64)
13MoveLoc[3](loc1: u64)
14Call copy_slice<Ty0>(&vector<Ty0>, u64, u64): vector<Ty0>
15MoveLoc[0](Arg0: &mut vector<Ty0>)
16WriteRef
17Ret
B2:
18CopyLoc[1](Arg1: u64)
19StLoc[2](loc0: u64)
B3:
20CopyLoc[2](loc0: u64)
21CopyLoc[3](loc1: u64)
22Lt
23BrFalse(35)
B4:
24CopyLoc[0](Arg0: &mut vector<Ty0>)
25CopyLoc[2](loc0: u64)
26CopyLoc[1](Arg1: u64)
27Sub
28CopyLoc[2](loc0: u64)
29VecSwap(22)
30MoveLoc[2](loc0: u64)
31LdU64(1)
32Add
33StLoc[2](loc0: u64)
34Branch(20)
B5:
35MoveLoc[0](Arg0: &mut vector<Ty0>)
36MoveLoc[1](Arg1: u64)
37Call drop_right<Ty0>(&mut vector<Ty0>, u64)
38Ret
}
drop_first<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>) {
L1: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut vector<Ty0>)
1FreezeRef
2VecLen(22)
3StLoc[1](loc0: u64)
B1:
4CopyLoc[1](loc0: u64)
5LdU64(1)
6Gt
7BrFalse(18)
B2:
8Branch(9)
B3:
9MoveLoc[1](loc0: u64)
10LdU64(1)
11Sub
12StLoc[1](loc0: u64)
13CopyLoc[0](Arg0: &mut vector<Ty0>)
14LdU64(0)
15CopyLoc[1](loc0: u64)
16VecSwap(22)
17Branch(4)
B4:
18MoveLoc[0](Arg0: &mut vector<Ty0>)
19VecPopBack(22)
20Pop
21Ret
}
drop_second<Ty0: copy + drop + store>(Arg0: &mut vector<Ty0>) {
L1: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut vector<Ty0>)
1FreezeRef
2VecLen(22)
3StLoc[1](loc0: u64)
B1:
4CopyLoc[1](loc0: u64)
5LdU64(2)
6Neq
7BrFalse(18)
B2:
8Branch(9)
B3:
9MoveLoc[1](loc0: u64)
10LdU64(1)
11Sub
12StLoc[1](loc0: u64)
13CopyLoc[0](Arg0: &mut vector<Ty0>)
14LdU64(1)
15CopyLoc[1](loc0: u64)
16VecSwap(22)
17Branch(4)
B4:
18MoveLoc[0](Arg0: &mut vector<Ty0>)
19VecPopBack(22)
20Pop
21Ret
}
Constants [
0 => u64: 9223372036854775808
1 => vector<u64>: 00
]
}