JIT: add substraction
[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("src/cpp/llvm-wrapper.bc");
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__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_ = mod->getFunction("_Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_");
664     if (!func__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_)
665     {
666         func__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_ = Function::Create(
667                     /*Type=*/FuncTy_28,
668                     /*Linkage=*/GlobalValue::ExternalLinkage,
669                     /*Name=*/"_Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_", mod); // (external, no body)
670         func__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_->setCallingConv(CallingConv::C);
671     }
672     AttributeSet func__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1__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__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1__PAL = AttributeSet::get(mod->getContext(), Attrs);
683
684     }
685     func__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_->setAttributes(func__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1__PAL);
686
687     Function* func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE = mod->getFunction("_Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE");
688     if (!func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE)
689     {
690         func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE = Function::Create(
691                     /*Type=*/FuncTy_30,
692                     /*Linkage=*/GlobalValue::ExternalLinkage,
693                     /*Name=*/"_Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE", mod); // (external, no body)
694         func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE->setCallingConv(CallingConv::C);
695     }
696     AttributeSet func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE_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__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE_PAL = AttributeSet::get(mod->getContext(), Attrs);
707
708     }
709     func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE->setAttributes(func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE_PAL);
710
711     Function* func__ZN6symbol7Context11getInstanceEv = mod->getFunction("_ZN6symbol7Context11getInstanceEv");
712     if (!func__ZN6symbol7Context11getInstanceEv)
713     {
714         func__ZN6symbol7Context11getInstanceEv = Function::Create(
715                     /*Type=*/FuncTy_37,
716                     /*Linkage=*/GlobalValue::ExternalLinkage,
717                     /*Name=*/"_ZN6symbol7Context11getInstanceEv", mod); // (external, no body)
718         func__ZN6symbol7Context11getInstanceEv->setCallingConv(CallingConv::C);
719     }
720     AttributeSet func__ZN6symbol7Context11getInstanceEv_PAL;
721     {
722         SmallVector<AttributeSet, 4> Attrs;
723         AttributeSet PAS;
724         {
725             AttrBuilder B;
726             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
727         }
728
729         Attrs.push_back(PAS);
730         func__ZN6symbol7Context11getInstanceEv_PAL = AttributeSet::get(mod->getContext(), Attrs);
731
732     }
733     func__ZN6symbol7Context11getInstanceEv->setAttributes(func__ZN6symbol7Context11getInstanceEv_PAL);
734
735     Function* func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE = mod->getFunction("_ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE");
736     if (!func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE)
737     {
738         func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE = Function::Create(
739                     /*Type=*/FuncTy_40,
740                     /*Linkage=*/GlobalValue::ExternalLinkage,
741                     /*Name=*/"_ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE", mod); // (external, no body)
742         func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE->setCallingConv(CallingConv::C);
743     }
744     AttributeSet func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE_PAL;
745     {
746         SmallVector<AttributeSet, 4> Attrs;
747         AttributeSet PAS;
748         {
749             AttrBuilder B;
750             B.addAttribute(Attribute::ZExt);
751             PAS = AttributeSet::get(mod->getContext(), 0U, B);
752         }
753
754         Attrs.push_back(PAS);
755         {
756             AttrBuilder B;
757             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
758         }
759
760         Attrs.push_back(PAS);
761         func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE_PAL = AttributeSet::get(mod->getContext(), Attrs);
762
763     }
764     func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE->setAttributes(func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE_PAL);
765
766     Function* func__ZNK6symbol7Context3getERKNS_6SymbolE = mod->getFunction("_ZNK6symbol7Context3getERKNS_6SymbolE");
767     if (!func__ZNK6symbol7Context3getERKNS_6SymbolE)
768     {
769         func__ZNK6symbol7Context3getERKNS_6SymbolE = Function::Create(
770                     /*Type=*/FuncTy_42,
771                     /*Linkage=*/GlobalValue::ExternalLinkage,
772                     /*Name=*/"_ZNK6symbol7Context3getERKNS_6SymbolE", mod); // (external, no body)
773         func__ZNK6symbol7Context3getERKNS_6SymbolE->setCallingConv(CallingConv::C);
774     }
775     AttributeSet func__ZNK6symbol7Context3getERKNS_6SymbolE_PAL;
776     {
777         SmallVector<AttributeSet, 4> Attrs;
778         AttributeSet PAS;
779         {
780             AttrBuilder B;
781             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
782         }
783
784         Attrs.push_back(PAS);
785         func__ZNK6symbol7Context3getERKNS_6SymbolE_PAL = AttributeSet::get(mod->getContext(), Attrs);
786
787     }
788     func__ZNK6symbol7Context3getERKNS_6SymbolE->setAttributes(func__ZNK6symbol7Context3getERKNS_6SymbolE_PAL);
789
790     Function* func__ZN5types7ArrayOfIiE3getEi = mod->getFunction("_ZN5types7ArrayOfIiE3getEi");
791     if (!func__ZN5types7ArrayOfIiE3getEi)
792     {
793         func__ZN5types7ArrayOfIiE3getEi = Function::Create(
794                                               /*Type=*/FuncTy_45,
795                                               /*Linkage=*/GlobalValue::LinkOnceODRLinkage ,
796                                               /*Name=*/"_ZN5types7ArrayOfIiE3getEi", mod);
797         func__ZN5types7ArrayOfIiE3getEi->setCallingConv(CallingConv::C);
798         func__ZN5types7ArrayOfIiE3getEi->setAlignment(2);
799     }
800     AttributeSet func__ZN5types7ArrayOfIiE3getEi_PAL;
801     {
802         SmallVector<AttributeSet, 4> Attrs;
803         AttributeSet PAS;
804         {
805             AttrBuilder B;
806             B.addAttribute(Attribute::NoUnwind);
807             B.addAttribute(Attribute::UWTable);
808             PAS = AttributeSet::get(mod->getContext(), ~0U, B);
809         }
810
811         Attrs.push_back(PAS);
812         func__ZN5types7ArrayOfIiE3getEi_PAL = AttributeSet::get(mod->getContext(), Attrs);
813
814     }
815     func__ZN5types7ArrayOfIiE3getEi->setAttributes(func__ZN5types7ArrayOfIiE3getEi_PAL);
816
817     Function* func__GLOBAL__I_a = mod->getFunction("_GLOBAL__I_a");
818     if (!func__GLOBAL__I_a)
819     {
820         func__GLOBAL__I_a = Function::Create(
821                                 /*Type=*/FuncTy_5,
822                                 /*Linkage=*/GlobalValue::InternalLinkage,
823                                 /*Name=*/"_GLOBAL__I_a", mod);
824         func__GLOBAL__I_a->setCallingConv(CallingConv::C);
825         func__GLOBAL__I_a->setSection(".text.startup");
826     }
827     AttributeSet func__GLOBAL__I_a_PAL;
828     func__GLOBAL__I_a->setAttributes(func__GLOBAL__I_a_PAL);
829
830     // Global Variable Declarations
831
832
833     GlobalVariable* gvar_struct__ZStL8__ioinit = new GlobalVariable(/*Module=*/*mod,
834             /*Type=*/StructTy_class_std__ios_base__Init,
835             /*isConstant=*/false,
836             /*Linkage=*/GlobalValue::InternalLinkage,
837             /*Initializer=*/0, // has initializer, specified below
838             /*Name=*/"_ZStL8__ioinit");
839     gvar_struct__ZStL8__ioinit->setAlignment(1);
840
841     GlobalVariable* gvar_int8___dso_handle = new GlobalVariable(/*Module=*/*mod,
842             /*Type=*/IntegerType::get(mod->getContext(), 8),
843             /*isConstant=*/false,
844             /*Linkage=*/GlobalValue::ExternalLinkage,
845             /*Initializer=*/0,
846             /*Name=*/"__dso_handle");
847
848     GlobalVariable* gvar_array_llvm_global_ctors = new GlobalVariable(/*Module=*/*mod,
849             /*Type=*/ArrayTy_2,
850             /*isConstant=*/false,
851             /*Linkage=*/GlobalValue::AppendingLinkage,
852             /*Initializer=*/0, // has initializer, specified below
853             /*Name=*/"llvm.global_ctors");
854
855     // Constant Definitions
856     ConstantAggregateZero* const_struct_48 = ConstantAggregateZero::get(StructTy_class_std__ios_base__Init);
857     std::vector<Constant*> const_array_49_elems;
858     std::vector<Constant*> const_struct_50_fields;
859     ConstantInt* const_int32_51 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("65535"), 10));
860     const_struct_50_fields.push_back(const_int32_51);
861     const_struct_50_fields.push_back(func__GLOBAL__I_a);
862     Constant* const_struct_50 = ConstantStruct::get(StructTy_3, const_struct_50_fields);
863     const_array_49_elems.push_back(const_struct_50);
864     Constant* const_array_49 = ConstantArray::get(ArrayTy_2, const_array_49_elems);
865     Constant* const_ptr_52 = ConstantExpr::getCast(Instruction::BitCast, func__ZNSt8ios_base4InitD1Ev, PointerTy_9);
866     std::vector<Constant*> const_ptr_53_indices;
867     ConstantInt* const_int32_54 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("0"), 10));
868     const_ptr_53_indices.push_back(const_int32_54);
869     const_ptr_53_indices.push_back(const_int32_54);
870     Constant* const_ptr_53 = ConstantExpr::getGetElementPtr(gvar_struct__ZStL8__ioinit, const_ptr_53_indices);
871     ConstantInt* const_int32_55 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("1"), 10));
872     ConstantPointerNull* const_ptr_56 = ConstantPointerNull::get(PointerTy_20);
873     ConstantPointerNull* const_ptr_57 = ConstantPointerNull::get(PointerTy_19);
874     ConstantPointerNull* const_ptr_58 = ConstantPointerNull::get(PointerTy_23);
875     ConstantInt* const_int32_59 = ConstantInt::get(mod->getContext(), APInt(32, StringRef("2"), 10));
876     ConstantPointerNull* const_ptr_60 = ConstantPointerNull::get(PointerTy_21);
877
878     // Global Variable Definitions
879     gvar_struct__ZStL8__ioinit->setInitializer(const_struct_48);
880     gvar_array_llvm_global_ctors->setInitializer(const_array_49);
881
882     // Function Definitions
883
884     // Function: __cxx_global_var_init (func___cxx_global_var_init)
885     {
886
887         BasicBlock* label_61 = BasicBlock::Create(mod->getContext(), "", func___cxx_global_var_init, 0);
888
889         // Block  (label_61)
890         CallInst* void_62 = CallInst::Create(func__ZNSt8ios_base4InitC1Ev, gvar_struct__ZStL8__ioinit, "", label_61);
891         void_62->setCallingConv(CallingConv::C);
892         void_62->setTailCall(false);
893         AttributeSet void_62_PAL;
894         void_62->setAttributes(void_62_PAL);
895
896         std::vector<Value*> int32_63_params;
897         int32_63_params.push_back(const_ptr_52);
898         int32_63_params.push_back(const_ptr_53);
899         int32_63_params.push_back(gvar_int8___dso_handle);
900         CallInst* int32_63 = CallInst::Create(func___cxa_atexit, int32_63_params, "", label_61);
901         int32_63->setCallingConv(CallingConv::C);
902         int32_63->setTailCall(false);
903         AttributeSet int32_63_PAL;
904         {
905             SmallVector<AttributeSet, 4> Attrs;
906             AttributeSet PAS;
907             {
908                 AttrBuilder B;
909                 B.addAttribute(Attribute::NoUnwind);
910                 PAS = AttributeSet::get(mod->getContext(), ~0U, B);
911             }
912
913             Attrs.push_back(PAS);
914             int32_63_PAL = AttributeSet::get(mod->getContext(), Attrs);
915
916         }
917         int32_63->setAttributes(int32_63_PAL);
918
919         ReturnInst::Create(mod->getContext(), label_61);
920
921     }
922
923     // Function: _Z3foov (func__Z3foov)
924     {
925
926         BasicBlock* label_65 = BasicBlock::Create(mod->getContext(), "", func__Z3foov, 0);
927
928         // Block  (label_65)
929         AllocaInst* ptr_pdbl = new AllocaInst(PointerTy_15, "pdbl", label_65);
930         ptr_pdbl->setAlignment(8);
931         AllocaInst* ptr_pb = new AllocaInst(PointerTy_20, "pb", label_65);
932         ptr_pb->setAlignment(8);
933         AllocaInst* ptr_res = new AllocaInst(IntegerType::get(mod->getContext(), 32), "res", label_65);
934         ptr_res->setAlignment(4);
935         AllocaInst* ptr_pdbl1 = new AllocaInst(PointerTy_15, "pdbl1", label_65);
936         ptr_pdbl1->setAlignment(8);
937         AllocaInst* ptr_sym = new AllocaInst(PointerTy_23, "sym", label_65);
938         ptr_sym->setAlignment(8);
939         CallInst* ptr_66 = CallInst::Create(func__ZN5types6Double5EmptyEv, "", label_65);
940         ptr_66->setCallingConv(CallingConv::C);
941         ptr_66->setTailCall(false);
942         AttributeSet ptr_66_PAL;
943         ptr_66->setAttributes(ptr_66_PAL);
944
945         StoreInst* void_67 = new StoreInst(ptr_66, ptr_pdbl, false, label_65);
946         void_67->setAlignment(8);
947         StoreInst* void_68 = new StoreInst(const_ptr_56, ptr_pb, false, label_65);
948         void_68->setAlignment(8);
949         LoadInst* ptr_69 = new LoadInst(ptr_pdbl, "", false, label_65);
950         ptr_69->setAlignment(8);
951         LoadInst* ptr_70 = new LoadInst(ptr_pdbl, "", false, label_65);
952         ptr_70->setAlignment(8);
953         std::vector<Value*> int32_71_params;
954         int32_71_params.push_back(ptr_69);
955         int32_71_params.push_back(ptr_70);
956         int32_71_params.push_back(ptr_pdbl);
957         CallInst* int32_71 = CallInst::Create(func__Z17AddDoubleToDoublePN5types6DoubleES1_PS1_, int32_71_params, "", label_65);
958         int32_71->setCallingConv(CallingConv::C);
959         int32_71->setTailCall(false);
960         AttributeSet int32_71_PAL;
961         int32_71->setAttributes(int32_71_PAL);
962
963         StoreInst* void_72 = new StoreInst(int32_71, ptr_res, false, label_65);
964         void_72->setAlignment(4);
965         CallInst* ptr_73 = CallInst::Create(func__ZN5types6Double5EmptyEv, "", label_65);
966         ptr_73->setCallingConv(CallingConv::C);
967         ptr_73->setTailCall(false);
968         AttributeSet ptr_73_PAL;
969         ptr_73->setAttributes(ptr_73_PAL);
970
971         StoreInst* void_74 = new StoreInst(ptr_73, ptr_pdbl1, false, label_65);
972         void_74->setAlignment(8);
973         LoadInst* ptr_75 = new LoadInst(ptr_pdbl1, "", false, label_65);
974         ptr_75->setAlignment(8);
975         LoadInst* ptr_76 = new LoadInst(ptr_pdbl1, "", false, label_65);
976         ptr_76->setAlignment(8);
977         std::vector<Value*> int32_77_params;
978         int32_77_params.push_back(ptr_75);
979         int32_77_params.push_back(ptr_76);
980         int32_77_params.push_back(ptr_pdbl1);
981         CallInst* int32_77 = CallInst::Create(func__Z22MultiplyDoubleByDoublePN5types6DoubleES1_PS1_, int32_77_params, "", label_65);
982         int32_77->setCallingConv(CallingConv::C);
983         int32_77->setTailCall(false);
984         AttributeSet int32_77_PAL;
985         int32_77->setAttributes(int32_77_PAL);
986
987         StoreInst* void_78 = new StoreInst(int32_77, ptr_res, false, label_65);
988         void_78->setAlignment(4);
989         LoadInst* ptr_79 = new LoadInst(ptr_pdbl1, "", false, label_65);
990         ptr_79->setAlignment(8);
991         LoadInst* ptr_80 = new LoadInst(ptr_pdbl1, "", false, label_65);
992         ptr_80->setAlignment(8);
993         std::vector<Value*> int32_81_params;
994         int32_81_params.push_back(ptr_79);
995         int32_81_params.push_back(ptr_80);
996         int32_81_params.push_back(ptr_pdbl1);
997         CallInst* int32_81 = CallInst::Create(func__Z23SubstractDoubleToDoublePN5types6DoubleES1_PS1_, int32_81_params, "", label_65);
998         int32_81->setCallingConv(CallingConv::C);
999         int32_81->setTailCall(false);
1000         AttributeSet int32_81_PAL;
1001         int32_81->setAttributes(int32_81_PAL);
1002
1003         StoreInst* void_82 = new StoreInst(int32_81, ptr_res, false, label_65);
1004         void_82->setAlignment(4);
1005         LoadInst* ptr_83 = new LoadInst(ptr_pdbl, "", false, label_65);
1006         ptr_83->setAlignment(8);
1007         LoadInst* ptr_84 = new LoadInst(ptr_pdbl, "", false, label_65);
1008         ptr_84->setAlignment(8);
1009         std::vector<Value*> int32_85_params;
1010         int32_85_params.push_back(ptr_83);
1011         int32_85_params.push_back(ptr_84);
1012         int32_85_params.push_back(const_ptr_57);
1013         CallInst* int32_85 = CallInst::Create(func__Z16DoubleLessDoublePN5types6DoubleES1_PPNS_4BoolE, int32_85_params, "", label_65);
1014         int32_85->setCallingConv(CallingConv::C);
1015         int32_85->setTailCall(false);
1016         AttributeSet int32_85_PAL;
1017         int32_85->setAttributes(int32_85_PAL);
1018
1019         StoreInst* void_86 = new StoreInst(int32_85, ptr_res, false, label_65);
1020         void_86->setAlignment(4);
1021         StoreInst* void_87 = new StoreInst(const_ptr_58, ptr_sym, false, label_65);
1022         void_87->setAlignment(8);
1023         CallInst* ptr_88 = CallInst::Create(func__ZN6symbol7Context11getInstanceEv, "", label_65);
1024         ptr_88->setCallingConv(CallingConv::C);
1025         ptr_88->setTailCall(false);
1026         AttributeSet ptr_88_PAL;
1027         ptr_88->setAttributes(ptr_88_PAL);
1028
1029         LoadInst* ptr_89 = new LoadInst(ptr_sym, "", false, label_65);
1030         ptr_89->setAlignment(8);
1031         LoadInst* ptr_90 = new LoadInst(ptr_pdbl, "", false, label_65);
1032         ptr_90->setAlignment(8);
1033         CastInst* ptr_91 = new BitCastInst(ptr_90, PointerTy_38, "", label_65);
1034         std::vector<Value*> int1_92_params;
1035         int1_92_params.push_back(ptr_88);
1036         int1_92_params.push_back(ptr_89);
1037         int1_92_params.push_back(ptr_91);
1038         CallInst* int1_92 = CallInst::Create(func__ZN6symbol7Context3putERKNS_6SymbolERN5types12InternalTypeE, int1_92_params, "", label_65);
1039         int1_92->setCallingConv(CallingConv::C);
1040         int1_92->setTailCall(false);
1041         AttributeSet int1_92_PAL;
1042         {
1043             SmallVector<AttributeSet, 4> Attrs;
1044             AttributeSet PAS;
1045             {
1046                 AttrBuilder B;
1047                 B.addAttribute(Attribute::ZExt);
1048                 PAS = AttributeSet::get(mod->getContext(), 0U, B);
1049             }
1050
1051             Attrs.push_back(PAS);
1052             int1_92_PAL = AttributeSet::get(mod->getContext(), Attrs);
1053
1054         }
1055         int1_92->setAttributes(int1_92_PAL);
1056
1057         CallInst* ptr_93 = CallInst::Create(func__ZN6symbol7Context11getInstanceEv, "", label_65);
1058         ptr_93->setCallingConv(CallingConv::C);
1059         ptr_93->setTailCall(false);
1060         AttributeSet ptr_93_PAL;
1061         ptr_93->setAttributes(ptr_93_PAL);
1062
1063         LoadInst* ptr_94 = new LoadInst(ptr_sym, "", false, label_65);
1064         ptr_94->setAlignment(8);
1065         std::vector<Value*> ptr_95_params;
1066         ptr_95_params.push_back(ptr_93);
1067         ptr_95_params.push_back(ptr_94);
1068         CallInst* ptr_95 = CallInst::Create(func__ZNK6symbol7Context3getERKNS_6SymbolE, ptr_95_params, "", label_65);
1069         ptr_95->setCallingConv(CallingConv::C);
1070         ptr_95->setTailCall(false);
1071         AttributeSet ptr_95_PAL;
1072         ptr_95->setAttributes(ptr_95_PAL);
1073
1074         LoadInst* ptr_96 = new LoadInst(ptr_pb, "", false, label_65);
1075         ptr_96->setAlignment(8);
1076         CastInst* ptr_97 = new BitCastInst(ptr_96, PointerTy_43, "", label_65);
1077         std::vector<Value*> int32_98_params;
1078         int32_98_params.push_back(ptr_97);
1079         int32_98_params.push_back(const_int32_54);
1080         CallInst* int32_98 = CallInst::Create(func__ZN5types7ArrayOfIiE3getEi, int32_98_params, "", label_65);
1081         int32_98->setCallingConv(CallingConv::C);
1082         int32_98->setTailCall(false);
1083         AttributeSet int32_98_PAL;
1084         int32_98->setAttributes(int32_98_PAL);
1085
1086         LoadInst* int32_99 = new LoadInst(ptr_res, "", false, label_65);
1087         int32_99->setAlignment(4);
1088         ReturnInst::Create(mod->getContext(), int32_99, label_65);
1089
1090     }
1091
1092     // Function: _ZN5types7ArrayOfIiE3getEi (func__ZN5types7ArrayOfIiE3getEi)
1093     {
1094         Function::arg_iterator args = func__ZN5types7ArrayOfIiE3getEi->arg_begin();
1095         Value* ptr_this = args++;
1096         ptr_this->setName("this");
1097         Value* int32__iPos = args++;
1098         int32__iPos->setName("_iPos");
1099
1100         BasicBlock* label_101 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1101         BasicBlock* label_102 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1102         BasicBlock* label_103 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1103         BasicBlock* label_104 = BasicBlock::Create(mod->getContext(), "", func__ZN5types7ArrayOfIiE3getEi, 0);
1104
1105         // Block  (label_101)
1106         AllocaInst* ptr_105 = new AllocaInst(IntegerType::get(mod->getContext(), 32), "", label_101);
1107         ptr_105->setAlignment(4);
1108         AllocaInst* ptr_106 = new AllocaInst(PointerTy_43, "", label_101);
1109         ptr_106->setAlignment(8);
1110         AllocaInst* ptr_107 = new AllocaInst(IntegerType::get(mod->getContext(), 32), "", label_101);
1111         ptr_107->setAlignment(4);
1112         StoreInst* void_108 = new StoreInst(ptr_this, ptr_106, false, label_101);
1113         void_108->setAlignment(8);
1114         StoreInst* void_109 = new StoreInst(int32__iPos, ptr_107, false, label_101);
1115         void_109->setAlignment(4);
1116         LoadInst* ptr_110 = new LoadInst(ptr_106, "", false, label_101);
1117         std::vector<Value*> ptr_111_indices;
1118         ptr_111_indices.push_back(const_int32_54);
1119         ptr_111_indices.push_back(const_int32_59);
1120         Instruction* ptr_111 = GetElementPtrInst::Create(ptr_110, ptr_111_indices, "", label_101);
1121         LoadInst* ptr_112 = new LoadInst(ptr_111, "", false, label_101);
1122         ptr_112->setAlignment(8);
1123         ICmpInst* int1_113 = new ICmpInst(*label_101, ICmpInst::ICMP_NE, ptr_112, const_ptr_60, "");
1124         BranchInst::Create(label_102, label_103, int1_113, label_101);
1125
1126         // Block  (label_102)
1127         LoadInst* int32_115 = new LoadInst(ptr_107, "", false, label_102);
1128         int32_115->setAlignment(4);
1129         CastInst* int64_116 = new SExtInst(int32_115, IntegerType::get(mod->getContext(), 64), "", label_102);
1130         std::vector<Value*> ptr_117_indices;
1131         ptr_117_indices.push_back(const_int32_54);
1132         ptr_117_indices.push_back(const_int32_59);
1133         Instruction* ptr_117 = GetElementPtrInst::Create(ptr_110, ptr_117_indices, "", label_102);
1134         LoadInst* ptr_118 = new LoadInst(ptr_117, "", false, label_102);
1135         ptr_118->setAlignment(8);
1136         GetElementPtrInst* ptr_119 = GetElementPtrInst::Create(ptr_118, int64_116, "", label_102);
1137         LoadInst* int32_120 = new LoadInst(ptr_119, "", false, label_102);
1138         int32_120->setAlignment(4);
1139         StoreInst* void_121 = new StoreInst(int32_120, ptr_105, false, label_102);
1140         BranchInst::Create(label_104, label_102);
1141
1142         // Block  (label_103)
1143         StoreInst* void_123 = new StoreInst(const_int32_54, ptr_105, false, label_103);
1144         BranchInst::Create(label_104, label_103);
1145
1146         // Block  (label_104)
1147         LoadInst* int32_125 = new LoadInst(ptr_105, "", false, label_104);
1148         ReturnInst::Create(mod->getContext(), int32_125, label_104);
1149
1150     }
1151
1152     // Function: _GLOBAL__I_a (func__GLOBAL__I_a)
1153     {
1154
1155         BasicBlock* label_127 = BasicBlock::Create(mod->getContext(), "", func__GLOBAL__I_a, 0);
1156
1157         // Block  (label_127)
1158         CallInst* void_128 = CallInst::Create(func___cxx_global_var_init, "", label_127);
1159         void_128->setCallingConv(CallingConv::C);
1160         void_128->setTailCall(false);
1161         AttributeSet void_128_PAL;
1162         void_128->setAttributes(void_128_PAL);
1163
1164         ReturnInst::Create(mod->getContext(), label_127);
1165
1166     }
1167
1168     return mod;
1169
1170 }