JIT: Multiplication management
[scilab.git] / scilab / modules / jit / src / cpp / llvm-wrapper-generated.cpp
1 // Generated by llvm2cpp - DO NOT MODIFY!
2
3
4 Module* makeLLVMModuleContents(Module *mod)
5 {
6
7     mod->setModuleIdentifier("<stdin>");
8
9     // Type Definitions
10     StructType *StructTy_class_std__ios_base__Init = mod->getTypeByName("class.std::ios_base::Init");
11     if (!StructTy_class_std__ios_base__Init)
12     {
13         StructTy_class_std__ios_base__Init = StructType::create(mod->getContext(), "class.std::ios_base::Init");
14     }
15     std::vector<Type*>StructTy_class_std__ios_base__Init_fields;
16     StructTy_class_std__ios_base__Init_fields.push_back(IntegerType::get(mod->getContext(), 8));
17     if (StructTy_class_std__ios_base__Init->isOpaque())
18     {
19         StructTy_class_std__ios_base__Init->setBody(StructTy_class_std__ios_base__Init_fields, /*isPacked=*/false);
20     }
21
22     PointerType* PointerTy_0 = PointerType::get(StructTy_class_std__ios_base__Init, 0);
23
24     PointerType* PointerTy_1 = PointerType::get(IntegerType::get(mod->getContext(), 8), 0);
25
26     std::vector<Type*>StructTy_3_fields;
27     StructTy_3_fields.push_back(IntegerType::get(mod->getContext(), 32));
28     std::vector<Type*>FuncTy_5_args;
29     FunctionType* FuncTy_5 = FunctionType::get(
30                                  /*Result=*/Type::getVoidTy(mod->getContext()),
31                                  /*Params=*/FuncTy_5_args,
32                                  /*isVarArg=*/false);
33
34     PointerType* PointerTy_4 = PointerType::get(FuncTy_5, 0);
35
36     StructTy_3_fields.push_back(PointerTy_4);
37     StructType *StructTy_3 = StructType::get(mod->getContext(), StructTy_3_fields, /*isPacked=*/false);
38
39     ArrayType* ArrayTy_2 = ArrayType::get(StructTy_3, 1);
40
41     PointerType* PointerTy_6 = PointerType::get(ArrayTy_2, 0);
42
43     std::vector<Type*>FuncTy_8_args;
44     FuncTy_8_args.push_back(PointerTy_0);
45     FunctionType* FuncTy_8 = FunctionType::get(
46                                  /*Result=*/Type::getVoidTy(mod->getContext()),
47                                  /*Params=*/FuncTy_8_args,
48                                  /*isVarArg=*/false);
49
50     PointerType* PointerTy_7 = PointerType::get(FuncTy_8, 0);
51
52     std::vector<Type*>FuncTy_10_args;
53     FuncTy_10_args.push_back(PointerTy_1);
54     FunctionType* FuncTy_10 = FunctionType::get(
55                                   /*Result=*/Type::getVoidTy(mod->getContext()),
56                                   /*Params=*/FuncTy_10_args,
57                                   /*isVarArg=*/false);
58
59     PointerType* PointerTy_9 = PointerType::get(FuncTy_10, 0);
60
61     std::vector<Type*>FuncTy_12_args;
62     FuncTy_12_args.push_back(PointerTy_9);
63     FuncTy_12_args.push_back(PointerTy_1);
64     FuncTy_12_args.push_back(PointerTy_1);
65     FunctionType* FuncTy_12 = FunctionType::get(
66                                   /*Result=*/IntegerType::get(mod->getContext(), 32),
67                                   /*Params=*/FuncTy_12_args,
68                                   /*isVarArg=*/false);
69
70     PointerType* PointerTy_11 = PointerType::get(FuncTy_12, 0);
71
72     std::vector<Type*>FuncTy_13_args;
73     FunctionType* FuncTy_13 = FunctionType::get(
74                                   /*Result=*/IntegerType::get(mod->getContext(), 32),
75                                   /*Params=*/FuncTy_13_args,
76                                   /*isVarArg=*/false);
77
78     StructType *StructTy_class_types__Double = mod->getTypeByName("class.types::Double");
79     if (!StructTy_class_types__Double)
80     {
81         StructTy_class_types__Double = StructType::create(mod->getContext(), "class.types::Double");
82     }
83     std::vector<Type*>StructTy_class_types__Double_fields;
84     StructType *StructTy_class_types__ArrayOf = mod->getTypeByName("class.types::ArrayOf");
85     if (!StructTy_class_types__ArrayOf)
86     {
87         StructTy_class_types__ArrayOf = StructType::create(mod->getContext(), "class.types::ArrayOf");
88     }
89     std::vector<Type*>StructTy_class_types__ArrayOf_fields;
90     StructType *StructTy_class_types__GenericType = mod->getTypeByName("class.types::GenericType");
91     if (!StructTy_class_types__GenericType)
92     {
93         StructTy_class_types__GenericType = StructType::create(mod->getContext(), "class.types::GenericType");
94     }
95     std::vector<Type*>StructTy_class_types__GenericType_fields;
96     ArrayType* ArrayTy_16 = ArrayType::get(IntegerType::get(mod->getContext(), 8), 36);
97
98     StructTy_class_types__GenericType_fields.push_back(ArrayTy_16);
99     StructTy_class_types__GenericType_fields.push_back(IntegerType::get(mod->getContext(), 32));
100     StructTy_class_types__GenericType_fields.push_back(IntegerType::get(mod->getContext(), 32));
101     StructTy_class_types__GenericType_fields.push_back(IntegerType::get(mod->getContext(), 32));
102     StructTy_class_types__GenericType_fields.push_back(IntegerType::get(mod->getContext(), 32));
103     ArrayType* ArrayTy_17 = ArrayType::get(IntegerType::get(mod->getContext(), 32), 50);
104
105     StructTy_class_types__GenericType_fields.push_back(ArrayTy_17);
106     StructTy_class_types__GenericType_fields.push_back(IntegerType::get(mod->getContext(), 32));
107     if (StructTy_class_types__GenericType->isOpaque())
108     {
109         StructTy_class_types__GenericType->setBody(StructTy_class_types__GenericType_fields, /*isPacked=*/false);
110     }
111
112     StructTy_class_types__ArrayOf_fields.push_back(StructTy_class_types__GenericType);
113     StructTy_class_types__ArrayOf_fields.push_back(IntegerType::get(mod->getContext(), 8));
114     PointerType* PointerTy_18 = PointerType::get(Type::getDoubleTy(mod->getContext()), 0);
115
116     StructTy_class_types__ArrayOf_fields.push_back(PointerTy_18);
117     StructTy_class_types__ArrayOf_fields.push_back(PointerTy_18);
118     if (StructTy_class_types__ArrayOf->isOpaque())
119     {
120         StructTy_class_types__ArrayOf->setBody(StructTy_class_types__ArrayOf_fields, /*isPacked=*/false);
121     }
122
123     StructTy_class_types__Double_fields.push_back(StructTy_class_types__ArrayOf);
124     StructTy_class_types__Double_fields.push_back(IntegerType::get(mod->getContext(), 8));
125     StructTy_class_types__Double_fields.push_back(IntegerType::get(mod->getContext(), 8));
126     if (StructTy_class_types__Double->isOpaque())
127     {
128         StructTy_class_types__Double->setBody(StructTy_class_types__Double_fields, /*isPacked=*/false);
129     }
130
131     PointerType* PointerTy_15 = PointerType::get(StructTy_class_types__Double, 0);
132
133     PointerType* PointerTy_14 = PointerType::get(PointerTy_15, 0);
134
135     StructType *StructTy_class_types__Bool = mod->getTypeByName("class.types::Bool");
136     if (!StructTy_class_types__Bool)
137     {
138         StructTy_class_types__Bool = StructType::create(mod->getContext(), "class.types::Bool");
139     }
140     std::vector<Type*>StructTy_class_types__Bool_fields;
141     StructType *StructTy_class_types__ArrayOf_0 = mod->getTypeByName("class.types::ArrayOf.0");
142     if (!StructTy_class_types__ArrayOf_0)
143     {
144         StructTy_class_types__ArrayOf_0 = StructType::create(mod->getContext(), "class.types::ArrayOf.0");
145     }
146     std::vector<Type*>StructTy_class_types__ArrayOf_0_fields;
147     StructTy_class_types__ArrayOf_0_fields.push_back(StructTy_class_types__GenericType);
148     StructTy_class_types__ArrayOf_0_fields.push_back(IntegerType::get(mod->getContext(), 8));
149     PointerType* PointerTy_21 = PointerType::get(IntegerType::get(mod->getContext(), 32), 0);
150
151     StructTy_class_types__ArrayOf_0_fields.push_back(PointerTy_21);
152     StructTy_class_types__ArrayOf_0_fields.push_back(PointerTy_21);
153     if (StructTy_class_types__ArrayOf_0->isOpaque())
154     {
155         StructTy_class_types__ArrayOf_0->setBody(StructTy_class_types__ArrayOf_0_fields, /*isPacked=*/false);
156     }
157
158     StructTy_class_types__Bool_fields.push_back(StructTy_class_types__ArrayOf_0);
159     if (StructTy_class_types__Bool->isOpaque())
160     {
161         StructTy_class_types__Bool->setBody(StructTy_class_types__Bool_fields, /*isPacked=*/false);
162     }
163
164     PointerType* PointerTy_20 = PointerType::get(StructTy_class_types__Bool, 0);
165
166     PointerType* PointerTy_19 = PointerType::get(PointerTy_20, 0);
167
168     StructType *StructTy_class_symbol__Symbol = mod->getTypeByName("class.symbol::Symbol");
169     if (!StructTy_class_symbol__Symbol)
170     {
171         StructTy_class_symbol__Symbol = StructType::create(mod->getContext(), "class.symbol::Symbol");
172     }
173     std::vector<Type*>StructTy_class_symbol__Symbol_fields;
174     StructType *StructTy_struct_std___Rb_tree_const_iterator = mod->getTypeByName("struct.std::_Rb_tree_const_iterator");
175     if (!StructTy_struct_std___Rb_tree_const_iterator)
176     {
177         StructTy_struct_std___Rb_tree_const_iterator = StructType::create(mod->getContext(), "struct.std::_Rb_tree_const_iterator");
178     }
179     std::vector<Type*>StructTy_struct_std___Rb_tree_const_iterator_fields;
180     StructType *StructTy_struct_std___Rb_tree_node_base = mod->getTypeByName("struct.std::_Rb_tree_node_base");
181     if (!StructTy_struct_std___Rb_tree_node_base)
182     {
183         StructTy_struct_std___Rb_tree_node_base = StructType::create(mod->getContext(), "struct.std::_Rb_tree_node_base");
184     }
185     std::vector<Type*>StructTy_struct_std___Rb_tree_node_base_fields;
186     StructTy_struct_std___Rb_tree_node_base_fields.push_back(IntegerType::get(mod->getContext(), 32));
187     PointerType* PointerTy_24 = PointerType::get(StructTy_struct_std___Rb_tree_node_base, 0);
188
189     StructTy_struct_std___Rb_tree_node_base_fields.push_back(PointerTy_24);
190     StructTy_struct_std___Rb_tree_node_base_fields.push_back(PointerTy_24);
191     StructTy_struct_std___Rb_tree_node_base_fields.push_back(PointerTy_24);
192     if (StructTy_struct_std___Rb_tree_node_base->isOpaque())
193     {
194         StructTy_struct_std___Rb_tree_node_base->setBody(StructTy_struct_std___Rb_tree_node_base_fields, /*isPacked=*/false);
195     }
196
197
198     StructTy_struct_std___Rb_tree_const_iterator_fields.push_back(PointerTy_24);
199     if (StructTy_struct_std___Rb_tree_const_iterator->isOpaque())
200     {
201         StructTy_struct_std___Rb_tree_const_iterator->setBody(StructTy_struct_std___Rb_tree_const_iterator_fields, /*isPacked=*/false);
202     }
203
204     StructTy_class_symbol__Symbol_fields.push_back(StructTy_struct_std___Rb_tree_const_iterator);
205     if (StructTy_class_symbol__Symbol->isOpaque())
206     {
207         StructTy_class_symbol__Symbol->setBody(StructTy_class_symbol__Symbol_fields, /*isPacked=*/false);
208     }
209
210     PointerType* PointerTy_23 = PointerType::get(StructTy_class_symbol__Symbol, 0);
211
212     PointerType* PointerTy_22 = PointerType::get(PointerTy_23, 0);
213
214     std::vector<Type*>FuncTy_26_args;
215     FunctionType* FuncTy_26 = FunctionType::get(
216                                   /*Result=*/PointerTy_15,
217                                   /*Params=*/FuncTy_26_args,
218                                   /*isVarArg=*/false);
219
220     PointerType* PointerTy_25 = PointerType::get(FuncTy_26, 0);
221
222     std::vector<Type*>FuncTy_28_args;
223     FuncTy_28_args.push_back(PointerTy_15);
224     FuncTy_28_args.push_back(PointerTy_15);
225     FuncTy_28_args.push_back(PointerTy_14);
226     FunctionType* FuncTy_28 = FunctionType::get(
227                                   /*Result=*/IntegerType::get(mod->getContext(), 32),
228                                   /*Params=*/FuncTy_28_args,
229                                   /*isVarArg=*/false);
230
231     PointerType* PointerTy_27 = PointerType::get(FuncTy_28, 0);
232
233     std::vector<Type*>FuncTy_30_args;
234     FuncTy_30_args.push_back(PointerTy_15);
235     FuncTy_30_args.push_back(PointerTy_15);
236     FuncTy_30_args.push_back(PointerTy_19);
237     FunctionType* FuncTy_30 = FunctionType::get(
238                                   /*Result=*/IntegerType::get(mod->getContext(), 32),
239                                   /*Params=*/FuncTy_30_args,
240                                   /*isVarArg=*/false);
241
242     PointerType* PointerTy_29 = PointerType::get(FuncTy_30, 0);
243
244     StructType *StructTy_class_symbol__Context = mod->getTypeByName("class.symbol::Context");
245     if (!StructTy_class_symbol__Context)
246     {
247         StructTy_class_symbol__Context = StructType::create(mod->getContext(), "class.symbol::Context");
248     }
249     std::vector<Type*>StructTy_class_symbol__Context_fields;
250     StructType *StructTy_class_symbol__Stack = mod->getTypeByName("class.symbol::Stack");
251     if (!StructTy_class_symbol__Stack)
252     {
253         StructTy_class_symbol__Stack = StructType::create(mod->getContext(), "class.symbol::Stack");
254     }
255     std::vector<Type*>StructTy_class_symbol__Stack_fields;
256     StructType *StructTy_class_symbol__Table = mod->getTypeByName("class.symbol::Table");
257     if (!StructTy_class_symbol__Table)
258     {
259         StructTy_class_symbol__Table = StructType::create(mod->getContext(), "class.symbol::Table");
260     }
261     std::vector<Type*>StructTy_class_symbol__Table_fields;
262     std::vector<Type*>FuncTy_34_args;
263     FunctionType* FuncTy_34 = FunctionType::get(
264                                   /*Result=*/IntegerType::get(mod->getContext(), 32),
265                                   /*Params=*/FuncTy_34_args,
266                                   /*isVarArg=*/true);
267
268     PointerType* PointerTy_33 = PointerType::get(FuncTy_34, 0);
269
270     PointerType* PointerTy_32 = PointerType::get(PointerTy_33, 0);
271
272     StructTy_class_symbol__Table_fields.push_back(PointerTy_32);
273     StructType *StructTy_class_std__list = mod->getTypeByName("class.std::list");
274     if (!StructTy_class_std__list)
275     {
276         StructTy_class_std__list = StructType::create(mod->getContext(), "class.std::list");
277     }
278     std::vector<Type*>StructTy_class_std__list_fields;
279     StructType *StructTy_class_std___List_base = mod->getTypeByName("class.std::_List_base");
280     if (!StructTy_class_std___List_base)
281     {
282         StructTy_class_std___List_base = StructType::create(mod->getContext(), "class.std::_List_base");
283     }
284     std::vector<Type*>StructTy_class_std___List_base_fields;
285     StructType *StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl = mod->getTypeByName("struct.std::_List_base<symbol::Scope *, std::allocator<symbol::Scope *> >::_List_impl");
286     if (!StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl)
287     {
288         StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl = StructType::create(mod->getContext(), "struct.std::_List_base<symbol::Scope *, std::allocator<symbol::Scope *> >::_List_impl");
289     }
290     std::vector<Type*>StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl_fields;
291     StructType *StructTy_struct_std____detail___List_node_base = mod->getTypeByName("struct.std::__detail::_List_node_base");
292     if (!StructTy_struct_std____detail___List_node_base)
293     {
294         StructTy_struct_std____detail___List_node_base = StructType::create(mod->getContext(), "struct.std::__detail::_List_node_base");
295     }
296     std::vector<Type*>StructTy_struct_std____detail___List_node_base_fields;
297     PointerType* PointerTy_35 = PointerType::get(StructTy_struct_std____detail___List_node_base, 0);
298
299     StructTy_struct_std____detail___List_node_base_fields.push_back(PointerTy_35);
300     StructTy_struct_std____detail___List_node_base_fields.push_back(PointerTy_35);
301     if (StructTy_struct_std____detail___List_node_base->isOpaque())
302     {
303         StructTy_struct_std____detail___List_node_base->setBody(StructTy_struct_std____detail___List_node_base_fields, /*isPacked=*/false);
304     }
305
306     StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl_fields.push_back(StructTy_struct_std____detail___List_node_base);
307     if (StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl->isOpaque())
308     {
309         StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl->setBody(StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl_fields, /*isPacked=*/false);
310     }
311
312     StructTy_class_std___List_base_fields.push_back(StructTy_struct_std___List_base_symbol__Scope____std__allocator_symbol__Scope________List_impl);
313     if (StructTy_class_std___List_base->isOpaque())
314     {
315         StructTy_class_std___List_base->setBody(StructTy_class_std___List_base_fields, /*isPacked=*/false);
316     }
317
318     StructTy_class_std__list_fields.push_back(StructTy_class_std___List_base);
319     if (StructTy_class_std__list->isOpaque())
320     {
321         StructTy_class_std__list->setBody(StructTy_class_std__list_fields, /*isPacked=*/false);
322     }
323
324     StructTy_class_symbol__Table_fields.push_back(StructTy_class_std__list);
325     if (StructTy_class_symbol__Table->isOpaque())
326     {
327         StructTy_class_symbol__Table->setBody(StructTy_class_symbol__Table_fields, /*isPacked=*/false);
328     }
329
330     StructTy_class_symbol__Stack_fields.push_back(StructTy_class_symbol__Table);
331     if (StructTy_class_symbol__Stack->isOpaque())
332     {
333         StructTy_class_symbol__Stack->setBody(StructTy_class_symbol__Stack_fields, /*isPacked=*/false);
334     }
335
336     StructTy_class_symbol__Context_fields.push_back(StructTy_class_symbol__Stack);
337     StructType *StructTy_class_symbol__Heap = mod->getTypeByName("class.symbol::Heap");
338     if (!StructTy_class_symbol__Heap)
339     {
340         StructTy_class_symbol__Heap = StructType::create(mod->getContext(), "class.symbol::Heap");
341     }
342     std::vector<Type*>StructTy_class_symbol__Heap_fields;
343     StructTy_class_symbol__Heap_fields.push_back(PointerTy_20);
344     StructType *StructTy_class_std__map = mod->getTypeByName("class.std::map");
345     if (!StructTy_class_std__map)
346     {
347         StructTy_class_std__map = StructType::create(mod->getContext(), "class.std::map");
348     }
349     std::vector<Type*>StructTy_class_std__map_fields;
350     StructType *StructTy_class_std___Rb_tree = mod->getTypeByName("class.std::_Rb_tree");
351     if (!StructTy_class_std___Rb_tree)
352     {
353         StructTy_class_std___Rb_tree = StructType::create(mod->getContext(), "class.std::_Rb_tree");
354     }
355     std::vector<Type*>StructTy_class_std___Rb_tree_fields;
356     StructType *StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl = mod->getTypeByName("struct.std::_Rb_tree<symbol::Symbol, std::pair<const symbol::Symbol, std::list<symbol::Scope *, std::allocator<symbol::Scope *> > *>, std::_Select1st<std::pair<const symbol::Symbol, std::list<symbol::Scope *, std::allocator<symbol::Scope *> > *> >, std::less<symbol::Symbol>, std::allocator<std::pair<const symbol::Symbol, std::list<symbol::Scope *, std::allocator<symbol::Scope *> > *> > >::_Rb_tree_impl");
357     if (!StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl)
358     {
359         StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl = StructType::create(mod->getContext(), "struct.std::_Rb_tree<symbol::Symbol, std::pair<const symbol::Symbol, std::list<symbol::Scope *, std::allocator<symbol::Scope *> > *>, std::_Select1st<std::pair<const symbol::Symbol, std::list<symbol::Scope *, std::allocator<symbol::Scope *> > *> >, std::less<symbol::Symbol>, std::allocator<std::pair<const symbol::Symbol, std::list<symbol::Scope *, std::allocator<symbol::Scope *> > *> > >::_Rb_tree_impl");
360     }
361     std::vector<Type*>StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl_fields;
362     StructType *StructTy_struct_std__less = mod->getTypeByName("struct.std::less");
363     if (!StructTy_struct_std__less)
364     {
365         StructTy_struct_std__less = StructType::create(mod->getContext(), "struct.std::less");
366     }
367     std::vector<Type*>StructTy_struct_std__less_fields;
368     StructTy_struct_std__less_fields.push_back(IntegerType::get(mod->getContext(), 8));
369     if (StructTy_struct_std__less->isOpaque())
370     {
371         StructTy_struct_std__less->setBody(StructTy_struct_std__less_fields, /*isPacked=*/false);
372     }
373
374     StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl_fields.push_back(StructTy_struct_std__less);
375     StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl_fields.push_back(StructTy_struct_std___Rb_tree_node_base);
376     StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl_fields.push_back(IntegerType::get(mod->getContext(), 64));
377     if (StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl->isOpaque())
378     {
379         StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl->setBody(StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl_fields, /*isPacked=*/false);
380     }
381
382     StructTy_class_std___Rb_tree_fields.push_back(StructTy_struct_std___Rb_tree_symbol__Symbol__std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope__________std___Select1st_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope____________std__less_symbol__Symbol___std__allocator_std__pair_const_symbol__Symbol__std__list_symbol__Scope____std__allocator_symbol__Scope_______________Rb_tree_impl);
383     if (StructTy_class_std___Rb_tree->isOpaque())
384     {
385         StructTy_class_std___Rb_tree->setBody(StructTy_class_std___Rb_tree_fields, /*isPacked=*/false);
386     }
387
388     StructTy_class_std__map_fields.push_back(StructTy_class_std___Rb_tree);
389     if (StructTy_class_std__map->isOpaque())
390     {
391         StructTy_class_std__map->setBody(StructTy_class_std__map_fields, /*isPacked=*/false);
392     }
393
394     StructTy_class_symbol__Heap_fields.push_back(StructTy_class_std__map);
395     StructTy_class_symbol__Heap_fields.push_back(StructTy_class_std__list);
396     if (StructTy_class_symbol__Heap->isOpaque())
397     {
398         StructTy_class_symbol__Heap->setBody(StructTy_class_symbol__Heap_fields, /*isPacked=*/false);
399     }
400
401     StructTy_class_symbol__Context_fields.push_back(StructTy_class_symbol__Heap);
402     StructTy_class_symbol__Context_fields.push_back(StructTy_class_symbol__Stack);
403     if (StructTy_class_symbol__Context->isOpaque())
404     {
405         StructTy_class_symbol__Context->setBody(StructTy_class_symbol__Context_fields, /*isPacked=*/false);
406     }
407
408     PointerType* PointerTy_31 = PointerType::get(StructTy_class_symbol__Context, 0);
409
410     std::vector<Type*>FuncTy_37_args;
411     FunctionType* FuncTy_37 = FunctionType::get(
412                                   /*Result=*/PointerTy_31,
413                                   /*Params=*/FuncTy_37_args,
414                                   /*isVarArg=*/false);
415
416     PointerType* PointerTy_36 = PointerType::get(FuncTy_37, 0);
417
418     StructType *StructTy_class_types__InternalType = mod->getTypeByName("class.types::InternalType");
419     if (!StructTy_class_types__InternalType)
420     {
421         StructTy_class_types__InternalType = StructType::create(mod->getContext(), "class.types::InternalType");
422     }
423     std::vector<Type*>StructTy_class_types__InternalType_fields;
424     StructTy_class_types__InternalType_fields.push_back(PointerTy_32);
425     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 32));
426     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 8));
427     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 8));
428     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 32));
429     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 32));
430     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 32));
431     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 32));
432     StructTy_class_types__InternalType_fields.push_back(IntegerType::get(mod->getContext(), 32));
433     if (StructTy_class_types__InternalType->isOpaque())
434     {
435         StructTy_class_types__InternalType->setBody(StructTy_class_types__InternalType_fields, /*isPacked=*/false);
436     }
437
438     PointerType* PointerTy_38 = PointerType::get(StructTy_class_types__InternalType, 0);
439
440     std::vector<Type*>FuncTy_40_args;
441     FuncTy_40_args.push_back(PointerTy_31);
442     FuncTy_40_args.push_back(PointerTy_23);
443     FuncTy_40_args.push_back(PointerTy_38);
444     FunctionType* FuncTy_40 = FunctionType::get(
445                                   /*Result=*/IntegerType::get(mod->getContext(), 1),
446                                   /*Params=*/FuncTy_40_args,
447                                   /*isVarArg=*/false);
448
449     PointerType* PointerTy_39 = PointerType::get(FuncTy_40, 0);
450
451     std::vector<Type*>FuncTy_42_args;
452     FuncTy_42_args.push_back(PointerTy_31);
453     FuncTy_42_args.push_back(PointerTy_23);
454     FunctionType* FuncTy_42 = FunctionType::get(
455                                   /*Result=*/PointerTy_38,
456                                   /*Params=*/FuncTy_42_args,
457                                   /*isVarArg=*/false);
458
459     PointerType* PointerTy_41 = PointerType::get(FuncTy_42, 0);
460
461     PointerType* PointerTy_43 = PointerType::get(StructTy_class_types__ArrayOf_0, 0);
462
463     std::vector<Type*>FuncTy_45_args;
464     FuncTy_45_args.push_back(PointerTy_43);
465     FuncTy_45_args.push_back(IntegerType::get(mod->getContext(), 32));
466     FunctionType* FuncTy_45 = FunctionType::get(
467                                   /*Result=*/IntegerType::get(mod->getContext(), 32),
468                                   /*Params=*/FuncTy_45_args,
469                                   /*isVarArg=*/false);
470
471     PointerType* PointerTy_44 = PointerType::get(FuncTy_45, 0);
472
473     PointerType* PointerTy_46 = PointerType::get(PointerTy_43, 0);
474
475     PointerType* PointerTy_47 = PointerType::get(PointerTy_21, 0);
476
477
478     // Function Declarations
479
480     Function* func___cxx_global_var_init = mod->getFunction("__cxx_global_var_init");
481     if (!func___cxx_global_var_init)
482     {
483         func___cxx_global_var_init = Function::Create(
484                                          /*Type=*/FuncTy_5,
485                                          /*Linkage=*/GlobalValue::InternalLinkage,
486                                          /*Name=*/"__cxx_global_var_init", mod);
487         func___cxx_global_var_init->setCallingConv(CallingConv::C);
488         func___cxx_global_var_init->setSection(".text.startup");
489     }
490     AttributeSet func___cxx_global_var_init_PAL;
491     func___cxx_global_var_init->setAttributes(func___cxx_global_var_init_PAL);
492
493     Function* func__ZNSt8ios_base4InitC1Ev = mod->getFunction("_ZNSt8ios_base4InitC1Ev");
494     if (!func__ZNSt8ios_base4InitC1Ev)
495     {
496         func__ZNSt8ios_base4InitC1Ev = Function::Create(
497                                            /*Type=*/FuncTy_8,
498                                            /*Linkage=*/GlobalValue::ExternalLinkage,
499                                            /*Name=*/"_ZNSt8ios_base4InitC1Ev", mod); // (external, no body)
500         func__ZNSt8ios_base4InitC1Ev->setCallingConv(CallingConv::C);
501     }
502     AttributeSet func__ZNSt8ios_base4InitC1Ev_PAL;
503     {
504         SmallVector<AttributeSet, 4> Attrs;
505         AttributeSet PAS;
506         {
507             AttrBuilder B;
508             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
509         }
510
511         Attrs.push_back(PAS);
512         func__ZNSt8ios_base4InitC1Ev_PAL = AttributeSet::get(mod->getContext(), Attrs);
513
514     }
515     func__ZNSt8ios_base4InitC1Ev->setAttributes(func__ZNSt8ios_base4InitC1Ev_PAL);
516
517     Function* func__ZNSt8ios_base4InitD1Ev = mod->getFunction("_ZNSt8ios_base4InitD1Ev");
518     if (!func__ZNSt8ios_base4InitD1Ev)
519     {
520         func__ZNSt8ios_base4InitD1Ev = Function::Create(
521                                            /*Type=*/FuncTy_8,
522                                            /*Linkage=*/GlobalValue::ExternalLinkage,
523                                            /*Name=*/"_ZNSt8ios_base4InitD1Ev", mod); // (external, no body)
524         func__ZNSt8ios_base4InitD1Ev->setCallingConv(CallingConv::C);
525     }
526     AttributeSet func__ZNSt8ios_base4InitD1Ev_PAL;
527     {
528         SmallVector<AttributeSet, 4> Attrs;
529         AttributeSet PAS;
530         {
531             AttrBuilder B;
532             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
533         }
534
535         Attrs.push_back(PAS);
536         func__ZNSt8ios_base4InitD1Ev_PAL = AttributeSet::get(mod->getContext(), Attrs);
537
538     }
539     func__ZNSt8ios_base4InitD1Ev->setAttributes(func__ZNSt8ios_base4InitD1Ev_PAL);
540
541     Function* func___cxa_atexit = mod->getFunction("__cxa_atexit");
542     if (!func___cxa_atexit)
543     {
544         func___cxa_atexit = Function::Create(
545                                 /*Type=*/FuncTy_12,
546                                 /*Linkage=*/GlobalValue::ExternalLinkage,
547                                 /*Name=*/"__cxa_atexit", mod); // (external, no body)
548         func___cxa_atexit->setCallingConv(CallingConv::C);
549     }
550     AttributeSet func___cxa_atexit_PAL;
551     {
552         SmallVector<AttributeSet, 4> Attrs;
553         AttributeSet PAS;
554         {
555             AttrBuilder B;
556             B.addAttribute(Attribute::NoUnwind);
557             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
558         }
559
560         Attrs.push_back(PAS);
561         func___cxa_atexit_PAL = AttributeSet::get(mod->getContext(), Attrs);
562
563     }
564     func___cxa_atexit->setAttributes(func___cxa_atexit_PAL);
565
566     Function* func__Z3foov = mod->getFunction("_Z3foov");
567     if (!func__Z3foov)
568     {
569         func__Z3foov = Function::Create(
570                            /*Type=*/FuncTy_13,
571                            /*Linkage=*/GlobalValue::ExternalLinkage,
572                            /*Name=*/"_Z3foov", mod);
573         func__Z3foov->setCallingConv(CallingConv::C);
574     }
575     AttributeSet func__Z3foov_PAL;
576     {
577         SmallVector<AttributeSet, 4> Attrs;
578         AttributeSet PAS;
579         {
580             AttrBuilder B;
581             B.addAttribute(Attribute::UWTable);
582             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
583         }
584
585         Attrs.push_back(PAS);
586         func__Z3foov_PAL = AttributeSet::get(mod->getContext(), Attrs);
587
588     }
589     func__Z3foov->setAttributes(func__Z3foov_PAL);
590
591     Function* func__ZN5types6Double5EmptyEv = mod->getFunction("_ZN5types6Double5EmptyEv");
592     if (!func__ZN5types6Double5EmptyEv)
593     {
594         func__ZN5types6Double5EmptyEv = Function::Create(
595                                             /*Type=*/FuncTy_26,
596                                             /*Linkage=*/GlobalValue::ExternalLinkage,
597                                             /*Name=*/"_ZN5types6Double5EmptyEv", mod); // (external, no body)
598         func__ZN5types6Double5EmptyEv->setCallingConv(CallingConv::C);
599     }
600     AttributeSet func__ZN5types6Double5EmptyEv_PAL;
601     {
602         SmallVector<AttributeSet, 4> Attrs;
603         AttributeSet PAS;
604         {
605             AttrBuilder B;
606             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
607         }
608
609         Attrs.push_back(PAS);
610         func__ZN5types6Double5EmptyEv_PAL = AttributeSet::get(mod->getContext(), Attrs);
611
612     }
613     func__ZN5types6Double5EmptyEv->setAttributes(func__ZN5types6Double5EmptyEv_PAL);
614
615     Function* func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1_ = mod->getFunction("_Z17AddDoubleToDoublePN5types6DoubleES1_PS1_");
616     if (!func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1_)
617     {
618         func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1_ = Function::Create(
619                     /*Type=*/FuncTy_28,
620                     /*Linkage=*/GlobalValue::ExternalLinkage,
621                     /*Name=*/"_Z17AddDoubleToDoublePN5types6DoubleES1_PS1_", mod); // (external, no body)
622         func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1_->setCallingConv(CallingConv::C);
623     }
624     AttributeSet func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1__PAL;
625     {
626         SmallVector<AttributeSet, 4> Attrs;
627         AttributeSet PAS;
628         {
629             AttrBuilder B;
630             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
631         }
632
633         Attrs.push_back(PAS);
634         func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1__PAL = AttributeSet::get(mod->getContext(), Attrs);
635
636     }
637     func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1_->setAttributes(func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1__PAL);
638
639     Function* func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_ = mod->getFunction("_Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_");
640     if (!func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_)
641     {
642         func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_ = Function::Create(
643                     /*Type=*/FuncTy_28,
644                     /*Linkage=*/GlobalValue::ExternalLinkage,
645                     /*Name=*/"_Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_", mod); // (external, no body)
646         func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_->setCallingConv(CallingConv::C);
647     }
648     AttributeSet func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1__PAL;
649     {
650         SmallVector<AttributeSet, 4> Attrs;
651         AttributeSet PAS;
652         {
653             AttrBuilder B;
654             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
655         }
656
657         Attrs.push_back(PAS);
658         func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1__PAL = AttributeSet::get(mod->getContext(), Attrs);
659
660     }
661     func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_->setAttributes(func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1__PAL);
662
663     Function* func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE = mod->getFunction("_Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE");
664     if (!func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE)
665     {
666         func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE = Function::Create(
667                     /*Type=*/FuncTy_30,
668                     /*Linkage=*/GlobalValue::ExternalLinkage,
669                     /*Name=*/"_Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE", mod); // (external, no body)
670         func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE->setCallingConv(CallingConv::C);
671     }
672     AttributeSet func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE_PAL;
673     {
674         SmallVector<AttributeSet, 4> Attrs;
675         AttributeSet PAS;
676         {
677             AttrBuilder B;
678             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
679         }
680
681         Attrs.push_back(PAS);
682         func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE_PAL = AttributeSet::get(mod->getContext(), Attrs);
683
684     }
685     func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE->setAttributes(func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE_PAL);
686
687     Function* func__ZN6symbol7Context11getInstanceEv = mod->getFunction("_ZN6symbol7Context11getInstanceEv");
688     if (!func__ZN6symbol7Context11getInstanceEv)
689     {
690         func__ZN6symbol7Context11getInstanceEv = Function::Create(
691                     /*Type=*/FuncTy_37,
692                     /*Linkage=*/GlobalValue::ExternalLinkage,
693                     /*Name=*/"_ZN6symbol7Context11getInstanceEv", mod); // (external, no body)
694         func__ZN6symbol7Context11getInstanceEv->setCallingConv(CallingConv::C);
695     }
696     AttributeSet func__ZN6symbol7Context11getInstanceEv_PAL;
697     {
698         SmallVector<AttributeSet, 4> Attrs;
699         AttributeSet PAS;
700         {
701             AttrBuilder B;
702             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
703         }
704
705         Attrs.push_back(PAS);
706         func__ZN6symbol7Context11getInstanceEv_PAL = AttributeSet::get(mod->getContext(), Attrs);
707
708     }
709     func__ZN6symbol7Context11getInstanceEv->setAttributes(func__ZN6symbol7Context11getInstanceEv_PAL);
710
711     Function* func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE = mod->getFunction("_ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE");
712     if (!func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE)
713     {
714         func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE = Function::Create(
715                     /*Type=*/FuncTy_40,
716                     /*Linkage=*/GlobalValue::ExternalLinkage,
717                     /*Name=*/"_ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE", mod); // (external, no body)
718         func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE->setCallingConv(CallingConv::C);
719     }
720     AttributeSet func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE_PAL;
721     {
722         SmallVector<AttributeSet, 4> Attrs;
723         AttributeSet PAS;
724         {
725             AttrBuilder B;
726             B.addAttribute(Attribute::ZExt);
727             PAS = AttributeSet::get(mod->getContext(), 0U, B);
728         }
729
730         Attrs.push_back(PAS);
731         {
732             AttrBuilder B;
733             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
734         }
735
736         Attrs.push_back(PAS);
737         func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE_PAL = AttributeSet::get(mod->getContext(), Attrs);
738
739     }
740     func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE->setAttributes(func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE_PAL);
741
742     Function* func__ZNK6symbol7Context3getERKNS_6SymbolE = mod->getFunction("_ZNK6symbol7Context3getERKNS_6SymbolE");
743     if (!func__ZNK6symbol7Context3getERKNS_6SymbolE)
744     {
745         func__ZNK6symbol7Context3getERKNS_6SymbolE = Function::Create(
746                     /*Type=*/FuncTy_42,
747                     /*Linkage=*/GlobalValue::ExternalLinkage,
748                     /*Name=*/"_ZNK6symbol7Context3getERKNS_6SymbolE", mod); // (external, no body)
749         func__ZNK6symbol7Context3getERKNS_6SymbolE->setCallingConv(CallingConv::C);
750     }
751     AttributeSet func__ZNK6symbol7Context3getERKNS_6SymbolE_PAL;
752     {
753         SmallVector<AttributeSet, 4> Attrs;
754         AttributeSet PAS;
755         {
756             AttrBuilder B;
757             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
758         }
759
760         Attrs.push_back(PAS);
761         func__ZNK6symbol7Context3getERKNS_6SymbolE_PAL = AttributeSet::get(mod->getContext(), Attrs);
762
763     }
764     func__ZNK6symbol7Context3getERKNS_6SymbolE->setAttributes(func__ZNK6symbol7Context3getERKNS_6SymbolE_PAL);
765
766     Function* func__ZN5types7ArrayOfIiE3getEi = mod->getFunction("_ZN5types7ArrayOfIiE3getEi");
767     if (!func__ZN5types7ArrayOfIiE3getEi)
768     {
769         func__ZN5types7ArrayOfIiE3getEi = Function::Create(
770                                               /*Type=*/FuncTy_45,
771                                               /*Linkage=*/GlobalValue::LinkOnceODRLinkage ,
772                                               /*Name=*/"_ZN5types7ArrayOfIiE3getEi", mod);
773         func__ZN5types7ArrayOfIiE3getEi->setCallingConv(CallingConv::C);
774         func__ZN5types7ArrayOfIiE3getEi->setAlignment(2);
775     }
776     AttributeSet func__ZN5types7ArrayOfIiE3getEi_PAL;
777     {
778         SmallVector<AttributeSet, 4> Attrs;
779         AttributeSet PAS;
780         {
781             AttrBuilder B;
782             B.addAttribute(Attribute::NoUnwind);
783             B.addAttribute(Attribute::UWTable);
784             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
785         }
786
787         Attrs.push_back(PAS);
788         func__ZN5types7ArrayOfIiE3getEi_PAL = AttributeSet::get(mod->getContext(), Attrs);
789
790     }
791     func__ZN5types7ArrayOfIiE3getEi->setAttributes(func__ZN5types7ArrayOfIiE3getEi_PAL);
792
793     Function* func__GLOBAL__I_a = mod->getFunction("_GLOBAL__I_a");
794     if (!func__GLOBAL__I_a)
795     {
796         func__GLOBAL__I_a = Function::Create(
797                                 /*Type=*/FuncTy_5,
798                                 /*Linkage=*/GlobalValue::InternalLinkage,
799                                 /*Name=*/"_GLOBAL__I_a", mod);
800         func__GLOBAL__I_a->setCallingConv(CallingConv::C);
801         func__GLOBAL__I_a->setSection(".text.startup");
802     }
803     AttributeSet func__GLOBAL__I_a_PAL;
804     func__GLOBAL__I_a->setAttributes(func__GLOBAL__I_a_PAL);
805
806     // Global Variable Declarations
807
808
809     GlobalVariable* gvar_struct__ZStL8__ioinit = new GlobalVariable(/*Module=*/*mod,
810             /*Type=*/StructTy_class_std__ios_base__Init,
811             /*isConstant=*/false,
812             /*Linkage=*/GlobalValue::InternalLinkage,
813             /*Initializer=*/0, // has initializer, specified below
814             /*Name=*/"_ZStL8__ioinit");
815     gvar_struct__ZStL8__ioinit->setAlignment(1);
816
817     GlobalVariable* gvar_int8___dso_handle = new GlobalVariable(/*Module=*/*mod,
818             /*Type=*/IntegerType::get(mod->getContext(), 8),
819             /*isConstant=*/false,
820             /*Linkage=*/GlobalValue::ExternalLinkage,
821             /*Initializer=*/0,
822             /*Name=*/"__dso_handle");
823
824     GlobalVariable* gvar_array_llvm_global_ctors = new GlobalVariable(/*Module=*/*mod,
825             /*Type=*/ArrayTy_2,
826             /*isConstant=*/false,
827             /*Linkage=*/GlobalValue::AppendingLinkage,
828             /*Initializer=*/0, // has initializer, specified below
829             /*Name=*/"llvm.global_ctors");
830
831     // Constant Definitions
832     ConstantAggregateZero* const_struct_48 = ConstantAggregateZero::get(StructTy_class_std__ios_base__Init);
833     std::vector<Constant*> const_array_49_elems;
834     std::vector<Constant*> const_struct_50_fields;
835     ConstantInt* const_int32_51 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("65535"), 10));
836     const_struct_50_fields.push_back(const_int32_51);
837     const_struct_50_fields.push_back(func__GLOBAL__I_a);
838     Constant* const_struct_50 = ConstantStruct::get(StructTy_3, const_struct_50_fields);
839     const_array_49_elems.push_back(const_struct_50);
840     Constant* const_array_49 = ConstantArray::get(ArrayTy_2, const_array_49_elems);
841     Constant* const_ptr_52 = ConstantExpr::getCast(Instruction::BitCast, func__ZNSt8ios_base4InitD1Ev, PointerTy_9);
842     std::vector<Constant*> const_ptr_53_indices;
843     ConstantInt* const_int32_54 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("0"), 10));
844     const_ptr_53_indices.push_back(const_int32_54);
845     const_ptr_53_indices.push_back(const_int32_54);
846     Constant* const_ptr_53 = ConstantExpr::getGetElementPtr(gvar_struct__ZStL8__ioinit, const_ptr_53_indices);
847     ConstantInt* const_int32_55 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("1"), 10));
848     ConstantPointerNull* const_ptr_56 = ConstantPointerNull::get(PointerTy_20);
849     ConstantPointerNull* const_ptr_57 = ConstantPointerNull::get(PointerTy_19);
850     ConstantPointerNull* const_ptr_58 = ConstantPointerNull::get(PointerTy_23);
851     ConstantInt* const_int32_59 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("2"), 10));
852     ConstantPointerNull* const_ptr_60 = ConstantPointerNull::get(PointerTy_21);
853
854     // Global Variable Definitions
855     gvar_struct__ZStL8__ioinit->setInitializer(const_struct_48);
856     gvar_array_llvm_global_ctors->setInitializer(const_array_49);
857
858     // Function Definitions
859
860     // Function: __cxx_global_var_init (func___cxx_global_var_init)
861     {
862
863         BasicBlock* label_61 = BasicBlock::Create(mod->getContext(), "", func___cxx_global_var_init, 0);
864
865         // Block  (label_61)
866         CallInst* void_62 = CallInst::Create(func__ZNSt8ios_base4InitC1Ev, gvar_struct__ZStL8__ioinit, "", label_61);
867         void_62->setCallingConv(CallingConv::C);
868         void_62->setTailCall(false);
869         AttributeSet void_62_PAL;
870         void_62->setAttributes(void_62_PAL);
871
872         std::vector<Value*> int32_63_params;
873         int32_63_params.push_back(const_ptr_52);
874         int32_63_params.push_back(const_ptr_53);
875         int32_63_params.push_back(gvar_int8___dso_handle);
876         CallInst* int32_63 = CallInst::Create(func___cxa_atexit, int32_63_params, "", label_61);
877         int32_63->setCallingConv(CallingConv::C);
878         int32_63->setTailCall(false);
879         AttributeSet int32_63_PAL;
880         {
881             SmallVector<AttributeSet, 4> Attrs;
882             AttributeSet PAS;
883             {
884                 AttrBuilder B;
885                 B.addAttribute(Attribute::NoUnwind);
886                 PAS = AttributeSet::get(mod->getContext(), ~0U, B);
887             }
888
889             Attrs.push_back(PAS);
890             int32_63_PAL = AttributeSet::get(mod->getContext(), Attrs);
891
892         }
893         int32_63->setAttributes(int32_63_PAL);
894
895         ReturnInst::Create(mod->getContext(), label_61);
896
897     }
898
899     // Function: _Z3foov (func__Z3foov)
900     {
901
902         BasicBlock* label_65 = BasicBlock::Create(mod->getContext(), "", func__Z3foov, 0);
903
904         // Block  (label_65)
905         AllocaInst* ptr_pdbl = new AllocaInst(PointerTy_15, "pdbl", label_65);
906         ptr_pdbl->setAlignment(8);
907         AllocaInst* ptr_pb = new AllocaInst(PointerTy_20, "pb", label_65);
908         ptr_pb->setAlignment(8);
909         AllocaInst* ptr_res = new AllocaInst(IntegerType::get(mod->getContext(), 32), "res", label_65);
910         ptr_res->setAlignment(4);
911         AllocaInst* ptr_pdbl1 = new AllocaInst(PointerTy_15, "pdbl1", label_65);
912         ptr_pdbl1->setAlignment(8);
913         AllocaInst* ptr_sym = new AllocaInst(PointerTy_23, "sym", label_65);
914         ptr_sym->setAlignment(8);
915         CallInst* ptr_66 = CallInst::Create(func__ZN5types6Double5EmptyEv, "", label_65);
916         ptr_66->setCallingConv(CallingConv::C);
917         ptr_66->setTailCall(false);
918         AttributeSet ptr_66_PAL;
919         ptr_66->setAttributes(ptr_66_PAL);
920
921         StoreInst* void_67 = new StoreInst(ptr_66, ptr_pdbl, false, label_65);
922         void_67->setAlignment(8);
923         StoreInst* void_68 = new StoreInst(const_ptr_56, ptr_pb, false, label_65);
924         void_68->setAlignment(8);
925         LoadInst* ptr_69 = new LoadInst(ptr_pdbl, "", false, label_65);
926         ptr_69->setAlignment(8);
927         LoadInst* ptr_70 = new LoadInst(ptr_pdbl, "", false, label_65);
928         ptr_70->setAlignment(8);
929         std::vector<Value*> int32_71_params;
930         int32_71_params.push_back(ptr_69);
931         int32_71_params.push_back(ptr_70);
932         int32_71_params.push_back(ptr_pdbl);
933         CallInst* int32_71 = CallInst::Create(func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1_, int32_71_params, "", label_65);
934         int32_71->setCallingConv(CallingConv::C);
935         int32_71->setTailCall(false);
936         AttributeSet int32_71_PAL;
937         int32_71->setAttributes(int32_71_PAL);
938
939         StoreInst* void_72 = new StoreInst(int32_71, ptr_res, false, label_65);
940         void_72->setAlignment(4);
941         CallInst* ptr_73 = CallInst::Create(func__ZN5types6Double5EmptyEv, "", label_65);
942         ptr_73->setCallingConv(CallingConv::C);
943         ptr_73->setTailCall(false);
944         AttributeSet ptr_73_PAL;
945         ptr_73->setAttributes(ptr_73_PAL);
946
947         StoreInst* void_74 = new StoreInst(ptr_73, ptr_pdbl1, false, label_65);
948         void_74->setAlignment(8);
949         LoadInst* ptr_75 = new LoadInst(ptr_pdbl1, "", false, label_65);
950         ptr_75->setAlignment(8);
951         LoadInst* ptr_76 = new LoadInst(ptr_pdbl1, "", false, label_65);
952         ptr_76->setAlignment(8);
953         std::vector<Value*> int32_77_params;
954         int32_77_params.push_back(ptr_75);
955         int32_77_params.push_back(ptr_76);
956         int32_77_params.push_back(ptr_pdbl1);
957         CallInst* int32_77 = CallInst::Create(func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_, int32_77_params, "", label_65);
958         int32_77->setCallingConv(CallingConv::C);
959         int32_77->setTailCall(false);
960         AttributeSet int32_77_PAL;
961         int32_77->setAttributes(int32_77_PAL);
962
963         StoreInst* void_78 = new StoreInst(int32_77, ptr_res, false, label_65);
964         void_78->setAlignment(4);
965         LoadInst* ptr_79 = new LoadInst(ptr_pdbl, "", false, label_65);
966         ptr_79->setAlignment(8);
967         LoadInst* ptr_80 = new LoadInst(ptr_pdbl, "", false, label_65);
968         ptr_80->setAlignment(8);
969         std::vector<Value*> int32_81_params;
970         int32_81_params.push_back(ptr_79);
971         int32_81_params.push_back(ptr_80);
972         int32_81_params.push_back(const_ptr_57);
973         CallInst* int32_81 = CallInst::Create(func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE, int32_81_params, "", label_65);
974         int32_81->setCallingConv(CallingConv::C);
975         int32_81->setTailCall(false);
976         AttributeSet int32_81_PAL;
977         int32_81->setAttributes(int32_81_PAL);
978
979         StoreInst* void_82 = new StoreInst(int32_81, ptr_res, false, label_65);
980         void_82->setAlignment(4);
981         StoreInst* void_83 = new StoreInst(const_ptr_58, ptr_sym, false, label_65);
982         void_83->setAlignment(8);
983         CallInst* ptr_84 = CallInst::Create(func__ZN6symbol7Context11getInstanceEv, "", label_65);
984         ptr_84->setCallingConv(CallingConv::C);
985         ptr_84->setTailCall(false);
986         AttributeSet ptr_84_PAL;
987         ptr_84->setAttributes(ptr_84_PAL);
988
989         LoadInst* ptr_85 = new LoadInst(ptr_sym, "", false, label_65);
990         ptr_85->setAlignment(8);
991         LoadInst* ptr_86 = new LoadInst(ptr_pdbl, "", false, label_65);
992         ptr_86->setAlignment(8);
993         CastInst* ptr_87 = new BitCastInst(ptr_86, PointerTy_38, "", label_65);
994         std::vector<Value*> int1_88_params;
995         int1_88_params.push_back(ptr_84);
996         int1_88_params.push_back(ptr_85);
997         int1_88_params.push_back(ptr_87);
998         CallInst* int1_88 = CallInst::Create(func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE, int1_88_params, "", label_65);
999         int1_88->setCallingConv(CallingConv::C);
1000         int1_88->setTailCall(false);
1001         AttributeSet int1_88_PAL;
1002         {
1003             SmallVector<AttributeSet, 4> Attrs;
1004             AttributeSet PAS;
1005             {
1006                 AttrBuilder B;
1007                 B.addAttribute(Attribute::ZExt);
1008                 PAS = AttributeSet::get(mod->getContext(), 0U, B);
1009             }
1010
1011             Attrs.push_back(PAS);
1012             int1_88_PAL = AttributeSet::get(mod->getContext(), Attrs);
1013
1014         }
1015         int1_88->setAttributes(int1_88_PAL);
1016
1017         CallInst* ptr_89 = CallInst::Create(func__ZN6symbol7Context11getInstanceEv, "", label_65);
1018         ptr_89->setCallingConv(CallingConv::C);
1019         ptr_89->setTailCall(false);
1020         AttributeSet ptr_89_PAL;
1021         ptr_89->setAttributes(ptr_89_PAL);
1022
1023         LoadInst* ptr_90 = new LoadInst(ptr_sym, "", false, label_65);
1024         ptr_90->setAlignment(8);
1025         std::vector<Value*> ptr_91_params;
1026         ptr_91_params.push_back(ptr_89);
1027         ptr_91_params.push_back(ptr_90);
1028         CallInst* ptr_91 = CallInst::Create(func__ZNK6symbol7Context3getERKNS_6SymbolE, ptr_91_params, "", label_65);
1029         ptr_91->setCallingConv(CallingConv::C);
1030         ptr_91->setTailCall(false);
1031         AttributeSet ptr_91_PAL;
1032         ptr_91->setAttributes(ptr_91_PAL);
1033
1034         LoadInst* ptr_92 = new LoadInst(ptr_pb, "", false, label_65);
1035         ptr_92->setAlignment(8);
1036         CastInst* ptr_93 = new BitCastInst(ptr_92, PointerTy_43, "", label_65);
1037         std::vector<Value*> int32_94_params;
1038         int32_94_params.push_back(ptr_93);
1039         int32_94_params.push_back(const_int32_54);
1040         CallInst* int32_94 = CallInst::Create(func__ZN5types7ArrayOfIiE3getEi, int32_94_params, "", label_65);
1041         int32_94->setCallingConv(CallingConv::C);
1042         int32_94->setTailCall(false);
1043         AttributeSet int32_94_PAL;
1044         int32_94->setAttributes(int32_94_PAL);
1045
1046         LoadInst* int32_95 = new LoadInst(ptr_res, "", false, label_65);
1047         int32_95->setAlignment(4);
1048         ReturnInst::Create(mod->getContext(), int32_95, label_65);
1049
1050     }
1051
1052     // Function: _ZN5types7ArrayOfIiE3getEi (func__ZN5types7ArrayOfIiE3getEi)
1053     {
1054         Function::arg_iterator args = func__ZN5types7ArrayOfIiE3getEi->arg_begin();
1055         Value* ptr_this = args++;
1056         ptr_this->setName("this");
1057         Value* int32__iPos = args++;
1058         int32__iPos->setName("_iPos");
1059
1060         BasicBlock* label_97 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1061         BasicBlock* label_98 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1062         BasicBlock* label_99 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1063         BasicBlock* label_100 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1064
1065         // Block  (label_97)
1066         AllocaInst* ptr_101 = new AllocaInst(IntegerType::get(mod->getContext(), 32), "", label_97);
1067         ptr_101->setAlignment(4);
1068         AllocaInst* ptr_102 = new AllocaInst(PointerTy_43, "", label_97);
1069         ptr_102->setAlignment(8);
1070         AllocaInst* ptr_103 = new AllocaInst(IntegerType::get(mod->getContext(), 32), "", label_97);
1071         ptr_103->setAlignment(4);
1072         StoreInst* void_104 = new StoreInst(ptr_this, ptr_102, false, label_97);
1073         void_104->setAlignment(8);
1074         StoreInst* void_105 = new StoreInst(int32__iPos, ptr_103, false, label_97);
1075         void_105->setAlignment(4);
1076         LoadInst* ptr_106 = new LoadInst(ptr_102, "", false, label_97);
1077         std::vector<Value*> ptr_107_indices;
1078         ptr_107_indices.push_back(const_int32_54);
1079         ptr_107_indices.push_back(const_int32_59);
1080         Instruction* ptr_107 = GetElementPtrInst::Create(ptr_106, ptr_107_indices, "", label_97);
1081         LoadInst* ptr_108 = new LoadInst(ptr_107, "", false, label_97);
1082         ptr_108->setAlignment(8);
1083         ICmpInst* int1_109 = new ICmpInst(*label_97, ICmpInst::ICMP_NE, ptr_108, const_ptr_60, "");
1084         BranchInst::Create(label_98, label_99, int1_109, label_97);
1085
1086         // Block  (label_98)
1087         LoadInst* int32_111 = new LoadInst(ptr_103, "", false, label_98);
1088         int32_111->setAlignment(4);
1089         CastInst* int64_112 = new SExtInst(int32_111, IntegerType::get(mod->getContext(), 64), "", label_98);
1090         std::vector<Value*> ptr_113_indices;
1091         ptr_113_indices.push_back(const_int32_54);
1092         ptr_113_indices.push_back(const_int32_59);
1093         Instruction* ptr_113 = GetElementPtrInst::Create(ptr_106, ptr_113_indices, "", label_98);
1094         LoadInst* ptr_114 = new LoadInst(ptr_113, "", false, label_98);
1095         ptr_114->setAlignment(8);
1096         GetElementPtrInst* ptr_115 = GetElementPtrInst::Create(ptr_114, int64_112, "", label_98);
1097         LoadInst* int32_116 = new LoadInst(ptr_115, "", false, label_98);
1098         int32_116->setAlignment(4);
1099         StoreInst* void_117 = new StoreInst(int32_116, ptr_101, false, label_98);
1100         BranchInst::Create(label_100, label_98);
1101
1102         // Block  (label_99)
1103         StoreInst* void_119 = new StoreInst(const_int32_54, ptr_101, false, label_99);
1104         BranchInst::Create(label_100, label_99);
1105
1106         // Block  (label_100)
1107         LoadInst* int32_121 = new LoadInst(ptr_101, "", false, label_100);
1108         ReturnInst::Create(mod->getContext(), int32_121, label_100);
1109
1110     }
1111
1112     // Function: _GLOBAL__I_a (func__GLOBAL__I_a)
1113     {
1114
1115         BasicBlock* label_123 = BasicBlock::Create(mod->getContext(), "", func__GLOBAL__I_a, 0);
1116
1117         // Block  (label_123)
1118         CallInst* void_124 = CallInst::Create(func___cxx_global_var_init, "", label_123);
1119         void_124->setCallingConv(CallingConv::C);
1120         void_124->setTailCall(false);
1121         AttributeSet void_124_PAL;
1122         void_124->setAttributes(void_124_PAL);
1123
1124         ReturnInst::Create(mod->getContext(), label_123);
1125
1126     }
1127
1128     return mod;
1129
1130 }