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

API

oracle

Module0x67b3…928a
Move path
0x3492…c267::oracle
Functions
96 public, 0 entry
Structs
2
Friend modules
pool
oracle

Bytecode728 lines

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

// Move bytecode v6
module 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267.oracle {
use 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::errors;
use 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::i32H;
use 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::i64H;
use 3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267::utils;
use 03637b7b60978ef4389124f7683456f0050ab015a0590d52b6e6cadb342af34a::i32;
use 03637b7b60978ef4389124f7683456f0050ab015a0590d52b6e6cadb342af34a::i64;
use 714a63a0dba6da4f017b42d5d0fb78867f18bcde904868e51d951a5a6f5b7f57::i32 as 0i32;
use 714a63a0dba6da4f017b42d5d0fb78867f18bcde904868e51d951a5a6f5b7f57::i64 as 0i64;
use 0000000000000000000000000000000000000000000000000000000000000001::u64;
 
struct ObservationManager has copy, drop, store {
observations: vector<Observation>,
observation_index: u64,
observation_cardinality: u64,
observation_cardinality_next: u64
}
 
struct Observation has copy, drop, store {
timestamp: u64,
tick_cumulative: I64,
seconds_per_liquidity_cumulative: u256,
initialized: bool
}
 
public initialize_manager(Arg0: u64): ObservationManager {
L1: loc0: ObservationManager
L2: loc1: Observation
B0:
0VecPack(3, 0)
1LdU64(0)
2LdU64(1)
3LdU64(1)
4Pack[0](ObservationManager)
5StLoc[1](loc0: ObservationManager)
6Call default_observation(): Observation
7StLoc[2](loc1: Observation)
8MoveLoc[0](Arg0: u64)
9MutBorrowLoc[2](loc1: Observation)
10MutBorrowField[0](Observation.timestamp: u64)
11WriteRef
12LdTrue
13MutBorrowLoc[2](loc1: Observation)
14MutBorrowField[1](Observation.initialized: bool)
15WriteRef
16MutBorrowLoc[1](loc0: ObservationManager)
17MutBorrowField[2](ObservationManager.observations: vector<Observation>)
18MoveLoc[2](loc1: Observation)
19VecPushBack(3)
20MoveLoc[1](loc0: ObservationManager)
21Ret
}
 
public default_observation(): Observation {
B0:
0LdU64(0)
1Call 0i64::zero(): I64
2LdU256(0)
3LdFalse
4Pack[1](Observation)
5Ret
}
 
public observe_single(Arg0: &ObservationManager, Arg1: u64, Arg2: u64, Arg3: I32, Arg4: u128): I64 * u256 {
L5: loc0: I64
L6: loc1: u256
L7: loc2: I64
L8: loc3: u256
L9: loc4: Observation
L10: loc5: Observation
L11: loc6: Observation
L12: loc7: u64
L13: loc8: u64
L14: loc9: u64
B0:
0CopyLoc[2](Arg2: u64)
1LdU64(0)
2Eq
3BrFalse(29)
B1:
4CopyLoc[0](Arg0: &ObservationManager)
5MoveLoc[0](Arg0: &ObservationManager)
6ImmBorrowField[3](ObservationManager.observation_index: u64)
7ReadRef
8Call get_observation(&ObservationManager, u64): Observation
9StLoc[11](loc6: Observation)
10ImmBorrowLoc[11](loc6: Observation)
11ImmBorrowField[0](Observation.timestamp: u64)
12ReadRef
13CopyLoc[1](Arg1: u64)
14Neq
15BrFalse(22)
B2:
16ImmBorrowLoc[11](loc6: Observation)
17MoveLoc[1](Arg1: u64)
18MoveLoc[3](Arg3: I32)
19MoveLoc[4](Arg4: u128)
20Call transform(&Observation, u64, I32, u128): Observation
21StLoc[11](loc6: Observation)
B3:
22ImmBorrowLoc[11](loc6: Observation)
23ImmBorrowField[4](Observation.tick_cumulative: I64)
24ReadRef
25ImmBorrowLoc[11](loc6: Observation)
26ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
27ReadRef
28Ret
B4:
29MoveLoc[1](Arg1: u64)
30MoveLoc[2](Arg2: u64)
31Sub
32StLoc[13](loc8: u64)
33MoveLoc[0](Arg0: &ObservationManager)
34CopyLoc[13](loc8: u64)
35MoveLoc[3](Arg3: I32)
36MoveLoc[4](Arg4: u128)
37Call get_surrounding_observations(&ObservationManager, u64, I32, u128): Observation * Observation
38StLoc[9](loc4: Observation)
39StLoc[10](loc5: Observation)
40CopyLoc[13](loc8: u64)
41ImmBorrowLoc[10](loc5: Observation)
42ImmBorrowField[0](Observation.timestamp: u64)
43ReadRef
44Eq
45BrFalse(55)
B5:
46ImmBorrowLoc[10](loc5: Observation)
47ImmBorrowField[4](Observation.tick_cumulative: I64)
48ReadRef
49ImmBorrowLoc[10](loc5: Observation)
50ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
51ReadRef
52StLoc[8](loc3: u256)
53StLoc[7](loc2: I64)
54Branch(127)
B6:
55CopyLoc[13](loc8: u64)
56ImmBorrowLoc[9](loc4: Observation)
57ImmBorrowField[0](Observation.timestamp: u64)
58ReadRef
59Eq
60BrFalse(70)
B7:
61ImmBorrowLoc[9](loc4: Observation)
62ImmBorrowField[4](Observation.tick_cumulative: I64)
63ReadRef
64ImmBorrowLoc[9](loc4: Observation)
65ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
66ReadRef
67StLoc[6](loc1: u256)
68StLoc[5](loc0: I64)
69Branch(123)
B8:
70ImmBorrowLoc[9](loc4: Observation)
71ImmBorrowField[0](Observation.timestamp: u64)
72ReadRef
73ImmBorrowLoc[10](loc5: Observation)
74ImmBorrowField[0](Observation.timestamp: u64)
75ReadRef
76Sub
77StLoc[12](loc7: u64)
78MoveLoc[13](loc8: u64)
79ImmBorrowLoc[10](loc5: Observation)
80ImmBorrowField[0](Observation.timestamp: u64)
81ReadRef
82Sub
83StLoc[14](loc9: u64)
84ImmBorrowLoc[10](loc5: Observation)
85ImmBorrowField[4](Observation.tick_cumulative: I64)
86ReadRef
87Call i64H::mate_to_lib(I64): I64
88ImmBorrowLoc[9](loc4: Observation)
89ImmBorrowField[4](Observation.tick_cumulative: I64)
90ReadRef
91ImmBorrowLoc[10](loc5: Observation)
92ImmBorrowField[4](Observation.tick_cumulative: I64)
93ReadRef
94Call i64H::sub(I64, I64): I64
95Call i64H::mate_to_lib(I64): I64
96CopyLoc[12](loc7: u64)
97Call i64::from(u64): I64
98Call i64::div(I64, I64): I64
99CopyLoc[14](loc9: u64)
100Call i64::from(u64): I64
101Call i64::mul(I64, I64): I64
102Call i64::add(I64, I64): I64
103Call i64H::lib_to_mate(I64): I64
104ImmBorrowLoc[10](loc5: Observation)
105ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
106ReadRef
107ImmBorrowLoc[9](loc4: Observation)
108ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
109ReadRef
110ImmBorrowLoc[10](loc5: Observation)
111ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
112ReadRef
113Sub
114MoveLoc[14](loc9: u64)
115CastU256
116Mul
117MoveLoc[12](loc7: u64)
118CastU256
119Div
120Add
121StLoc[6](loc1: u256)
122StLoc[5](loc0: I64)
B9:
123MoveLoc[5](loc0: I64)
124MoveLoc[6](loc1: u256)
125StLoc[8](loc3: u256)
126StLoc[7](loc2: I64)
B10:
127MoveLoc[7](loc2: I64)
128MoveLoc[8](loc3: u256)
129Ret
}
 
public transform(Arg0: &Observation, Arg1: u64, Arg2: I32, Arg3: u128): Observation {
L4: loc0: I64
L5: loc1: u128
L6: loc2: u64
L7: loc3: I64
L8: loc4: u256
L9: loc5: I64
L10: loc6: u128
L11: loc7: u64
B0:
0CopyLoc[2](Arg2: I32)
1Call i32H::mate_to_lib(I32): I32
2Call i32::is_neg(I32): bool
3BrFalse(11)
B1:
4MoveLoc[2](Arg2: I32)
5Call i32H::mate_to_lib(I32): I32
6Call i32::abs_u32(I32): u32
7CastU64
8Call i64::neg_from(u64): I64
9StLoc[4](loc0: I64)
10Branch(17)
B2:
11MoveLoc[2](Arg2: I32)
12Call i32H::mate_to_lib(I32): I32
13Call i32::abs_u32(I32): u32
14CastU64
15Call i64::from(u64): I64
16StLoc[4](loc0: I64)
B3:
17MoveLoc[4](loc0: I64)
18StLoc[9](loc5: I64)
19CopyLoc[1](Arg1: u64)
20CopyLoc[0](Arg0: &Observation)
21ImmBorrowField[0](Observation.timestamp: u64)
22ReadRef
23Sub
24StLoc[11](loc7: u64)
25CopyLoc[3](Arg3: u128)
26LdU128(0)
27Eq
28BrFalse(32)
B4:
29LdU128(1)
30StLoc[5](loc1: u128)
31Branch(34)
B5:
32MoveLoc[3](Arg3: u128)
33StLoc[5](loc1: u128)
B6:
34MoveLoc[5](loc1: u128)
35StLoc[10](loc6: u128)
36MoveLoc[1](Arg1: u64)
37StLoc[6](loc2: u64)
38CopyLoc[0](Arg0: &Observation)
39ImmBorrowField[4](Observation.tick_cumulative: I64)
40ReadRef
41MoveLoc[9](loc5: I64)
42CopyLoc[11](loc7: u64)
43Call i64::from(u64): I64
44Call i64::mul(I64, I64): I64
45Call i64H::lib_to_mate(I64): I64
46Call i64H::add(I64, I64): I64
47StLoc[7](loc3: I64)
48MoveLoc[0](Arg0: &Observation)
49ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
50ReadRef
51MoveLoc[11](loc7: u64)
52CastU256
53LdU8(128)
54Shl
55MoveLoc[10](loc6: u128)
56CastU256
57Div
58Call utils::overflow_add(u256, u256): u256
59StLoc[8](loc4: u256)
60MoveLoc[6](loc2: u64)
61MoveLoc[7](loc3: I64)
62MoveLoc[8](loc4: u256)
63LdTrue
64Pack[1](Observation)
65Ret
}
 
public get_surrounding_observations(Arg0: &ObservationManager, Arg1: u64, Arg2: I32, Arg3: u128): Observation * Observation {
L4: loc0: Observation
B0:
0CopyLoc[0](Arg0: &ObservationManager)
1CopyLoc[0](Arg0: &ObservationManager)
2ImmBorrowField[3](ObservationManager.observation_index: u64)
3ReadRef
4Call get_observation(&ObservationManager, u64): Observation
5StLoc[4](loc0: Observation)
6ImmBorrowLoc[4](loc0: Observation)
7ImmBorrowField[0](Observation.timestamp: u64)
8ReadRef
9CopyLoc[1](Arg1: u64)
10Le
11BrFalse(30)
B1:
12MoveLoc[0](Arg0: &ObservationManager)
13Pop
14ImmBorrowLoc[4](loc0: Observation)
15ImmBorrowField[0](Observation.timestamp: u64)
16ReadRef
17CopyLoc[1](Arg1: u64)
18Eq
19BrFalse(23)
B2:
20MoveLoc[4](loc0: Observation)
21Call default_observation(): Observation
22Ret
B3:
23CopyLoc[4](loc0: Observation)
24ImmBorrowLoc[4](loc0: Observation)
25MoveLoc[1](Arg1: u64)
26MoveLoc[2](Arg2: I32)
27MoveLoc[3](Arg3: u128)
28Call transform(&Observation, u64, I32, u128): Observation
29Ret
B4:
30CopyLoc[0](Arg0: &ObservationManager)
31CopyLoc[0](Arg0: &ObservationManager)
32ImmBorrowField[3](ObservationManager.observation_index: u64)
33ReadRef
34LdU64(1)
35Add
36CopyLoc[0](Arg0: &ObservationManager)
37ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
38ReadRef
39Mod
40Call get_observation(&ObservationManager, u64): Observation
41StLoc[4](loc0: Observation)
42ImmBorrowLoc[4](loc0: Observation)
43ImmBorrowField[1](Observation.initialized: bool)
44ReadRef
45Not
46BrFalse(53)
B5:
47CopyLoc[0](Arg0: &ObservationManager)
48ImmBorrowField[2](ObservationManager.observations: vector<Observation>)
49LdU64(0)
50VecImmBorrow(3)
51ReadRef
52StLoc[4](loc0: Observation)
B6:
53ImmBorrowLoc[4](loc0: Observation)
54ImmBorrowField[0](Observation.timestamp: u64)
55ReadRef
56CopyLoc[1](Arg1: u64)
57Le
58BrFalse(60)
B7:
59Branch(64)
B8:
60MoveLoc[0](Arg0: &ObservationManager)
61Pop
62Call errors::invalid_observation_timestamp(): u64
63Abort
B9:
64MoveLoc[0](Arg0: &ObservationManager)
65MoveLoc[1](Arg1: u64)
66Call binary_search(&ObservationManager, u64): Observation * Observation
67Ret
}
 
L2: loc0: bool
L3: loc1: Observation
L4: loc2: Observation
L5: loc3: u64
L6: loc4: u64
L7: loc5: u64
L8: loc6: u64
B0:
0CopyLoc[0](Arg0: &ObservationManager)
1ImmBorrowField[3](ObservationManager.observation_index: u64)
2ReadRef
3LdU64(1)
4Add
5CopyLoc[0](Arg0: &ObservationManager)
6ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
7ReadRef
8Mod
9StLoc[6](loc4: u64)
10CopyLoc[6](loc4: u64)
11StLoc[8](loc6: u64)
12MoveLoc[6](loc4: u64)
13CopyLoc[0](Arg0: &ObservationManager)
14ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
15ReadRef
16Add
17LdU64(1)
18Sub
19StLoc[5](loc3: u64)
B1:
20CopyLoc[8](loc6: u64)
21CopyLoc[5](loc3: u64)
22Add
23LdU64(2)
24Div
25StLoc[7](loc5: u64)
26CopyLoc[0](Arg0: &ObservationManager)
27CopyLoc[7](loc5: u64)
28CopyLoc[0](Arg0: &ObservationManager)
29ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
30ReadRef
31Mod
32Call get_observation(&ObservationManager, u64): Observation
33StLoc[4](loc2: Observation)
34ImmBorrowLoc[4](loc2: Observation)
35ImmBorrowField[1](Observation.initialized: bool)
36ReadRef
37Not
38BrFalse(45)
B2:
39Branch(40)
B3:
40MoveLoc[7](loc5: u64)
41LdU64(1)
42Add
43StLoc[8](loc6: u64)
44Branch(20)
B4:
45CopyLoc[0](Arg0: &ObservationManager)
46CopyLoc[7](loc5: u64)
47LdU64(1)
48Add
49CopyLoc[0](Arg0: &ObservationManager)
50ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
51ReadRef
52Mod
53Call get_observation(&ObservationManager, u64): Observation
54StLoc[3](loc1: Observation)
55ImmBorrowLoc[4](loc2: Observation)
56ImmBorrowField[0](Observation.timestamp: u64)
57ReadRef
58CopyLoc[1](Arg1: u64)
59Le
60BrFalse(68)
B5:
61CopyLoc[1](Arg1: u64)
62ImmBorrowLoc[3](loc1: Observation)
63ImmBorrowField[0](Observation.timestamp: u64)
64ReadRef
65Le
66StLoc[2](loc0: bool)
67Branch(70)
B6:
68LdFalse
69StLoc[2](loc0: bool)
B7:
70MoveLoc[2](loc0: bool)
71BrFalse(73)
B8:
72Branch(89)
B9:
73ImmBorrowLoc[4](loc2: Observation)
74ImmBorrowField[0](Observation.timestamp: u64)
75ReadRef
76CopyLoc[1](Arg1: u64)
77Lt
78BrFalse(84)
B10:
79MoveLoc[7](loc5: u64)
80LdU64(1)
81Add
82StLoc[8](loc6: u64)
83Branch(20)
B11:
84MoveLoc[7](loc5: u64)
85LdU64(1)
86Sub
87StLoc[5](loc3: u64)
88Branch(20)
B12:
89MoveLoc[0](Arg0: &ObservationManager)
90Pop
91MoveLoc[4](loc2: Observation)
92MoveLoc[3](loc1: Observation)
93Ret
}
 
public(friend) update(Arg0: &mut ObservationManager, Arg1: I32, Arg2: u128, Arg3: u64) {
L4: loc0: bool
L5: loc1: u64
L6: loc2: u64
L7: loc3: u64
L8: loc4: &Observation
B0:
0CopyLoc[0](Arg0: &mut ObservationManager)
1ImmBorrowField[2](ObservationManager.observations: vector<Observation>)
2CopyLoc[0](Arg0: &mut ObservationManager)
3ImmBorrowField[3](ObservationManager.observation_index: u64)
4ReadRef
5VecImmBorrow(3)
6StLoc[8](loc4: &Observation)
7CopyLoc[8](loc4: &Observation)
8ImmBorrowField[0](Observation.timestamp: u64)
9ReadRef
10CopyLoc[3](Arg3: u64)
11Eq
12BrFalse(18)
B1:
13MoveLoc[8](loc4: &Observation)
14Pop
15MoveLoc[0](Arg0: &mut ObservationManager)
16Pop
17Ret
B2:
18CopyLoc[0](Arg0: &mut ObservationManager)
19ImmBorrowField[7](ObservationManager.observation_cardinality_next: u64)
20ReadRef
21CopyLoc[0](Arg0: &mut ObservationManager)
22ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
23ReadRef
24Gt
25BrFalse(37)
B3:
26CopyLoc[0](Arg0: &mut ObservationManager)
27ImmBorrowField[3](ObservationManager.observation_index: u64)
28ReadRef
29CopyLoc[0](Arg0: &mut ObservationManager)
30ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
31ReadRef
32LdU64(1)
33Sub
34Eq
35StLoc[4](loc0: bool)
36Branch(39)
B4:
37LdFalse
38StLoc[4](loc0: bool)
B5:
39MoveLoc[4](loc0: bool)
40BrFalse(46)
B6:
41CopyLoc[0](Arg0: &mut ObservationManager)
42ImmBorrowField[7](ObservationManager.observation_cardinality_next: u64)
43ReadRef
44StLoc[5](loc1: u64)
45Branch(50)
B7:
46CopyLoc[0](Arg0: &mut ObservationManager)
47ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
48ReadRef
49StLoc[5](loc1: u64)
B8:
50MoveLoc[5](loc1: u64)
51StLoc[6](loc2: u64)
52CopyLoc[0](Arg0: &mut ObservationManager)
53ImmBorrowField[3](ObservationManager.observation_index: u64)
54ReadRef
55LdU64(1)
56Add
57CopyLoc[6](loc2: u64)
58Mod
59StLoc[7](loc3: u64)
60MoveLoc[8](loc4: &Observation)
61MoveLoc[3](Arg3: u64)
62MoveLoc[1](Arg1: I32)
63MoveLoc[2](Arg2: u128)
64Call transform(&Observation, u64, I32, u128): Observation
65CopyLoc[0](Arg0: &mut ObservationManager)
66MutBorrowField[2](ObservationManager.observations: vector<Observation>)
67CopyLoc[7](loc3: u64)
68VecMutBorrow(3)
69WriteRef
70MoveLoc[7](loc3: u64)
71CopyLoc[0](Arg0: &mut ObservationManager)
72MutBorrowField[3](ObservationManager.observation_index: u64)
73WriteRef
74MoveLoc[6](loc2: u64)
75MoveLoc[0](Arg0: &mut ObservationManager)
76MutBorrowField[6](ObservationManager.observation_cardinality: u64)
77WriteRef
78Ret
}
 
public(friend) grow(Arg0: &mut ObservationManager, Arg1: u64): u64 * u64 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut ObservationManager)
1ImmBorrowField[7](ObservationManager.observation_cardinality_next: u64)
2ReadRef
3StLoc[2](loc0: u64)
B1:
4CopyLoc[2](loc0: u64)
5CopyLoc[1](Arg1: u64)
6Lt
7BrFalse(18)
B2:
8Branch(9)
B3:
9CopyLoc[0](Arg0: &mut ObservationManager)
10MutBorrowField[2](ObservationManager.observations: vector<Observation>)
11Call default_observation(): Observation
12VecPushBack(3)
13MoveLoc[2](loc0: u64)
14LdU64(1)
15Add
16StLoc[2](loc0: u64)
17Branch(4)
B4:
18CopyLoc[2](loc0: u64)
19MoveLoc[1](Arg1: u64)
20Call u64::max(u64, u64): u64
21CopyLoc[0](Arg0: &mut ObservationManager)
22MutBorrowField[7](ObservationManager.observation_cardinality_next: u64)
23WriteRef
24MoveLoc[2](loc0: u64)
25MoveLoc[0](Arg0: &mut ObservationManager)
26ImmBorrowField[7](ObservationManager.observation_cardinality_next: u64)
27ReadRef
28Ret
}
 
public observation_index(Arg0: &ObservationManager): u64 {
B0:
0MoveLoc[0](Arg0: &ObservationManager)
1ImmBorrowField[3](ObservationManager.observation_index: u64)
2ReadRef
3Ret
}
 
public observation_cardinality(Arg0: &ObservationManager): u64 {
B0:
0MoveLoc[0](Arg0: &ObservationManager)
1ImmBorrowField[6](ObservationManager.observation_cardinality: u64)
2ReadRef
3Ret
}
 
public observation_cardinality_next(Arg0: &ObservationManager): u64 {
B0:
0MoveLoc[0](Arg0: &ObservationManager)
1ImmBorrowField[7](ObservationManager.observation_cardinality_next: u64)
2ReadRef
3Ret
}
 
public observations_length(Arg0: &ObservationManager): u64 {
B0:
0MoveLoc[0](Arg0: &ObservationManager)
1ImmBorrowField[2](ObservationManager.observations: vector<Observation>)
2VecLen(3)
3Ret
}
 
public timestamp(Arg0: &Observation): u64 {
B0:
0MoveLoc[0](Arg0: &Observation)
1ImmBorrowField[0](Observation.timestamp: u64)
2ReadRef
3Ret
}
 
public tick_cumulative(Arg0: &Observation): I64 {
B0:
0MoveLoc[0](Arg0: &Observation)
1ImmBorrowField[4](Observation.tick_cumulative: I64)
2ReadRef
3Ret
}
 
public seconds_per_liquidity_cumulative(Arg0: &Observation): u256 {
B0:
0MoveLoc[0](Arg0: &Observation)
1ImmBorrowField[5](Observation.seconds_per_liquidity_cumulative: u256)
2ReadRef
3Ret
}
 
public initialized(Arg0: &Observation): bool {
B0:
0MoveLoc[0](Arg0: &Observation)
1ImmBorrowField[1](Observation.initialized: bool)
2ReadRef
3Ret
}
 
get_observation(Arg0: &ObservationManager, Arg1: u64): Observation {
L2: loc0: Observation
B0:
0CopyLoc[1](Arg1: u64)
1CopyLoc[0](Arg0: &ObservationManager)
2ImmBorrowField[2](ObservationManager.observations: vector<Observation>)
3VecLen(3)
4Lt
5BrFalse(13)
B1:
6MoveLoc[0](Arg0: &ObservationManager)
7ImmBorrowField[2](ObservationManager.observations: vector<Observation>)
8MoveLoc[1](Arg1: u64)
9VecImmBorrow(3)
10ReadRef
11StLoc[2](loc0: Observation)
12Branch(17)
B2:
13MoveLoc[0](Arg0: &ObservationManager)
14Pop
15Call default_observation(): Observation
16StLoc[2](loc0: Observation)
B3:
17MoveLoc[2](loc0: Observation)
18Ret
}
 
}