-
Notifications
You must be signed in to change notification settings - Fork 1
/
graph.dot
208 lines (208 loc) · 10.7 KB
/
graph.dot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
digraph {
0 [ label = "0x80" color = "blue"]
1 [ label = "0x40" color = "blue"]
2 [ label = "0x80" color = "blue"]
3 [ label = "0x40" color = "blue"]
4 [ label = "Mstore(0x40, 0x80)" color = "green"]
5 [ label = "0x4" color = "blue"]
6 [ label = "0x4" color = "blue"]
7 [ label = "Intrinsic::CallDataSize" color = "blue"]
8 [ label = "Lt(Intrinsic::CallDataSize, 0x4)" color = "blue"]
9 [ label = "IsZero(Lt(Intrinsic::CallDataSize, 0x4))" color = "blue"]
10 [ label = "0x16" color = "blue"]
11 [ label = "Jumpi(0x16, IsZero(Lt(Intrinsic::CallDataSize, 0x4)))" color = "orange"]
12 [ label = "0x0" color = "blue"]
13 [ label = "0x0" color = "blue"]
14 [ label = "CalldataLoad { offset: 0x0 }" color = "blue"]
15 [ label = "0xe0" color = "blue"]
16 [ label = "Shr(0xe0, CalldataLoad { offset: 0x0 })" color = "blue"]
17 [ label = "Shr(0xe0, CalldataLoad { offset: 0x0 })" color = "blue"]
18 [ label = "0x799320bb" color = "blue"]
19 [ label = "Eq(0x799320bb, Shr(0xe0, CalldataLoad { offset: 0x0 }))" color = "blue"]
20 [ label = "0x82d" color = "blue"]
21 [ label = "Jumpi(0x82d, Eq(0x799320bb, Shr(0xe0, CalldataLoad { offset: 0x0 })))" color = "orange"]
22 [ label = "0xc64b3bb5" color = "blue"]
23 [ label = "Eq(0xc64b3bb5, Shr(0xe0, CalldataLoad { offset: 0x0 }))" color = "blue"]
24 [ label = "0x3a" color = "blue"]
25 [ label = "Jumpi(0x3a, Eq(0xc64b3bb5, Shr(0xe0, CalldataLoad { offset: 0x0 })))" color = "orange"]
26 [ label = "Intrinsic::CallValue" color = "blue"]
27 [ label = "0x829" color = "blue"]
28 [ label = "Jumpi(0x829, Intrinsic::CallValue)" color = "orange"]
29 [ label = "0x20" color = "blue"]
30 [ label = "0x20" color = "blue"]
31 [ label = "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc" color = "blue"]
32 [ label = "Intrinsic::CallDataSize" color = "blue"]
33 [ label = "Add(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc, Intrinsic::CallDataSize)" color = "blue"]
34 [ label = "Slt(Add(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc, Intrinsic::CallDataSize), 0x20)" color = "blue"]
35 [ label = "0x825" color = "blue"]
36 [ label = "Jumpi(0x825, Slt(Add(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc, Intrinsic::CallDataSize), 0x20))" color = "orange"]
37 [ label = "0x4" color = "blue"]
38 [ label = "CalldataLoad { offset: 0x4 }" color = "blue"]
39 [ label = "0xffffffffffffffff" color = "blue"]
40 [ label = "0xffffffffffffffff" color = "blue"]
41 [ label = "CalldataLoad { offset: 0x4 }" color = "blue"]
42 [ label = "Gt(CalldataLoad { offset: 0x4 }, 0xffffffffffffffff)" color = "blue"]
43 [ label = "0x822" color = "blue"]
44 [ label = "Jumpi(0x822, Gt(CalldataLoad { offset: 0x4 }, 0xffffffffffffffff))" color = "orange"]
45 [ label = "Intrinsic::CallDataSize" color = "blue"]
46 [ label = "0x23" color = "blue"]
47 [ label = "CalldataLoad { offset: 0x4 }" color = "blue"]
48 [ label = "Add(0x23, CalldataLoad { offset: 0x4 })" color = "blue"]
49 [ label = "Slt(Add(0x23, CalldataLoad { offset: 0x4 }), Intrinsic::CallDataSize)" color = "blue"]
50 [ label = "IsZero(Slt(Add(0x23, CalldataLoad { offset: 0x4 }), Intrinsic::CallDataSize))" color = "blue"]
51 [ label = "0x822" color = "blue"]
52 [ label = "Jumpi(0x822, IsZero(Slt(Add(0x23, CalldataLoad { offset: 0x4 }), Intrinsic::CallDataSize)))" color = "orange"]
53 [ label = "CalldataLoad { offset: 0x4 }" color = "blue"]
54 [ label = "0x4" color = "blue"]
55 [ label = "Add(CalldataLoad { offset: 0x4 }, 0x4)" color = "blue"]
56 [ label = "CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }" color = "blue"]
57 [ label = "CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }" color = "blue"]
58 [ label = "Gt(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, 0xffffffffffffffff)" color = "blue"]
59 [ label = "0x822" color = "blue"]
60 [ label = "Jumpi(0x822, Gt(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, 0xffffffffffffffff))" color = "orange"]
61 [ label = "0x24" color = "blue"]
62 [ label = "0x24" color = "blue"]
63 [ label = "CalldataLoad { offset: 0x4 }" color = "blue"]
64 [ label = "Add(0x24, CalldataLoad { offset: 0x4 })" color = "blue"]
65 [ label = "Intrinsic::CallDataSize" color = "blue"]
66 [ label = "0x24" color = "blue"]
67 [ label = "CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }" color = "blue"]
68 [ label = "CalldataLoad { offset: 0x4 }" color = "blue"]
69 [ label = "Add(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, CalldataLoad { offset: 0x4 })" color = "blue"]
70 [ label = "Add(0x24, Add(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, CalldataLoad { offset: 0x4 }))" color = "blue"]
71 [ label = "Gt(Add(0x24, Add(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, CalldataLoad { offset: 0x4 })), Intrinsic::CallDataSize)" color = "blue"]
72 [ label = "0x822" color = "blue"]
73 [ label = "Jumpi(0x822, Gt(Add(0x24, Add(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, CalldataLoad { offset: 0x4 })), Intrinsic::CallDataSize))" color = "orange"]
74 [ label = "0xb2" color = "blue"]
75 [ label = "0x2a" color = "blue"]
76 [ label = "CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }" color = "blue"]
77 [ label = "Eq(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, 0x2a)" color = "blue"]
78 [ label = "0x86a" color = "blue"]
79 [ label = "Jump(0x86a)" color = "orange"]
80 [ label = "IsZero(Eq(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, 0x2a))" color = "blue"]
81 [ label = "0x871" color = "blue"]
82 [ label = "Jumpi(0x871, IsZero(Eq(CalldataLoad { offset: Add(CalldataLoad { offset: 0x4 }, 0x4) }, 0x2a)))" color = "orange"]
83 [ label = "0x64" color = "blue"]
84 [ label = "0x40" color = "blue"]
85 [ label = "Mload(0x40)" color = "blue"]
86 [ label = "0x8c379a000000000000000000000000000000000000000000000000000000000" color = "blue"]
87 [ label = "Mload(0x40)" color = "blue"]
88 [ label = "Mstore(Mload(0x40), 0x8c379a000000000000000000000000000000000000000000000000000000000)" color = "green"]
89 [ label = "0x20" color = "blue"]
90 [ label = "0x4" color = "blue"]
91 [ label = "Mload(0x40)" color = "blue"]
92 [ label = "Add(0x4, Mload(0x40))" color = "blue"]
93 [ label = "Mstore(Add(0x4, Mload(0x40)), 0x20)" color = "green"]
94 [ label = "0xc" color = "blue"]
95 [ label = "0x24" color = "blue"]
96 [ label = "Mload(0x40)" color = "blue"]
97 [ label = "Add(0x24, Mload(0x40))" color = "blue"]
98 [ label = "Mstore(Add(0x24, Mload(0x40)), 0xc)" color = "green"]
99 [ label = "0x696e76616c696420666c61670000000000000000000000000000000000000000" color = "blue"]
100 [ label = "0x44" color = "blue"]
101 [ label = "Mload(0x40)" color = "blue"]
102 [ label = "Add(0x44, Mload(0x40))" color = "blue"]
103 [ label = "Mstore(Add(0x44, Mload(0x40)), 0x696e76616c696420666c61670000000000000000000000000000000000000000)" color = "green"]
104 [ label = "Revert(Mload(0x40), 0x64)" color = "red"]
0 -> 2 [ label = Duplicant]
1 -> 3 [ label = Duplicant]
3 -> 4 [ label = MstoreLoc]
2 -> 4 [ label = MstoreVal]
5 -> 6 [ label = Duplicant]
7 -> 8 [ label = LtLhs]
6 -> 8 [ label = LtRhs]
8 -> 9 [ label = IsZero]
10 -> 11 [ label = ConditionalJumpLoc]
9 -> 11 [ label = ConditionalJumpConditional]
12 -> 13 [ label = Duplicant]
13 -> 14 [ label = CalldataOffset]
15 -> 16 [ label = RShiftor]
14 -> 16 [ label = RShiftee]
16 -> 17 [ label = Duplicant]
18 -> 19 [ label = EqLhs]
17 -> 19 [ label = EqRhs]
20 -> 21 [ label = ConditionalJumpLoc]
19 -> 21 [ label = ConditionalJumpConditional]
22 -> 23 [ label = EqLhs]
16 -> 23 [ label = EqRhs]
24 -> 25 [ label = ConditionalJumpLoc]
23 -> 25 [ label = ConditionalJumpConditional]
27 -> 28 [ label = ConditionalJumpLoc]
26 -> 28 [ label = ConditionalJumpConditional]
29 -> 30 [ label = Duplicant]
32 -> 33 [ label = Addend]
31 -> 33 [ label = Addend]
33 -> 34 [ label = SltLhs]
30 -> 34 [ label = SltRhs]
35 -> 36 [ label = ConditionalJumpLoc]
34 -> 36 [ label = ConditionalJumpConditional]
5 -> 37 [ label = Duplicant]
37 -> 38 [ label = CalldataOffset]
39 -> 40 [ label = Duplicant]
38 -> 41 [ label = Duplicant]
41 -> 42 [ label = GtLhs]
40 -> 42 [ label = GtRhs]
43 -> 44 [ label = ConditionalJumpLoc]
42 -> 44 [ label = ConditionalJumpConditional]
38 -> 47 [ label = Duplicant]
47 -> 48 [ label = Addend]
46 -> 48 [ label = Addend]
48 -> 49 [ label = SltLhs]
45 -> 49 [ label = SltRhs]
49 -> 50 [ label = IsZero]
51 -> 52 [ label = ConditionalJumpLoc]
50 -> 52 [ label = ConditionalJumpConditional]
38 -> 53 [ label = Duplicant]
5 -> 54 [ label = Duplicant]
54 -> 55 [ label = Addend]
53 -> 55 [ label = Addend]
55 -> 56 [ label = CalldataOffset]
56 -> 57 [ label = Duplicant]
57 -> 58 [ label = GtLhs]
39 -> 58 [ label = GtRhs]
59 -> 60 [ label = ConditionalJumpLoc]
58 -> 60 [ label = ConditionalJumpConditional]
61 -> 62 [ label = Duplicant]
38 -> 63 [ label = Duplicant]
63 -> 64 [ label = Addend]
62 -> 64 [ label = Addend]
61 -> 66 [ label = Duplicant]
56 -> 67 [ label = Duplicant]
38 -> 68 [ label = Duplicant]
68 -> 69 [ label = Addend]
67 -> 69 [ label = Addend]
69 -> 70 [ label = Addend]
66 -> 70 [ label = Addend]
70 -> 71 [ label = GtLhs]
65 -> 71 [ label = GtRhs]
72 -> 73 [ label = ConditionalJumpLoc]
71 -> 73 [ label = ConditionalJumpConditional]
56 -> 76 [ label = Duplicant]
76 -> 77 [ label = EqLhs]
75 -> 77 [ label = EqRhs]
78 -> 79 [ label = JumpLoc]
77 -> 80 [ label = IsZero]
81 -> 82 [ label = ConditionalJumpLoc]
80 -> 82 [ label = ConditionalJumpConditional]
84 -> 85 [ label = MloadLoc]
85 -> 87 [ label = Duplicant]
87 -> 88 [ label = MstoreLoc]
86 -> 88 [ label = MstoreVal]
85 -> 91 [ label = Duplicant]
91 -> 92 [ label = Addend]
90 -> 92 [ label = Addend]
92 -> 93 [ label = MstoreLoc]
89 -> 93 [ label = MstoreVal]
85 -> 96 [ label = Duplicant]
96 -> 97 [ label = Addend]
95 -> 97 [ label = Addend]
97 -> 98 [ label = MstoreLoc]
94 -> 98 [ label = MstoreVal]
85 -> 101 [ label = Duplicant]
101 -> 102 [ label = Addend]
100 -> 102 [ label = Addend]
102 -> 103 [ label = MstoreLoc]
99 -> 103 [ label = MstoreVal]
85 -> 104 [ label = RevertMemLoc]
83 -> 104 [ label = RevertMemSize]
}