Ticket #6158: testcase.ll

File testcase.ll, 45.9 KB (added by Axman6, 23 months ago)

LLVM IR from compiling testcase.hs compiled with ghc -O2 -fllvm testcase.hs

Line 
1target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
2target triple = "x86_64-apple-darwin10.0.0"
3declare  ccc i8* @memcpy(i8*, i8*, i64)
4declare  ccc i8* @memmove(i8*, i8*, i64)
5declare  ccc i8* @memset(i8*, i64, i64)
6declare  ccc i64 @newSpark(i8*, i8*)
7%__stginit_Main_struct = type <{}>
8@__stginit_Main =  global %__stginit_Main_struct<{}>
9%Main_foo1_closure_struct = type <{i64}>
10@Main_foo1_closure =  global %Main_foo1_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_foo1_info to i64)}>
11%Main_foo_closure_struct = type <{i64, i64, i64, i64}>
12@Main_foo_closure =  global %Main_foo_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_foo_info to i64), i64 0, i64 0, i64 0}>
13%Main_main1_srt_struct = type <{i64, i64, i64}>
14@Main_main1_srt = internal constant %Main_main1_srt_struct<{i64 ptrtoint ([0 x i64]* @base_GHCziShow_shows18_closure to i64), i64 ptrtoint ([0 x i64]* @base_GHCziIOziHandleziFD_stdout_closure to i64), i64 ptrtoint ([0 x i64]* @base_GHCziIOziHandleziText_hPutStr2_closure to i64)}>
15@base_GHCziShow_shows18_closure = external global [0 x i64]
16@base_GHCziIOziHandleziFD_stdout_closure = external global [0 x i64]
17@base_GHCziIOziHandleziText_hPutStr2_closure = external global [0 x i64]
18%Main_main1_closure_struct = type <{i64, i64}>
19@Main_main1_closure =  global %Main_main1_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main1_info to i64), i64 0}>
20%Main_main_srt_struct = type <{i64}>
21@Main_main_srt = internal constant %Main_main_srt_struct<{i64 ptrtoint (%Main_main1_closure_struct* @Main_main1_closure to i64)}>
22%Main_main_closure_struct = type <{i64, i64}>
23@Main_main_closure =  global %Main_main_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main_info to i64), i64 0}>
24%Main_main2_srt_struct = type <{i64, i64}>
25@Main_main2_srt = internal constant %Main_main2_srt_struct<{i64 ptrtoint ([0 x i64]* @base_GHCziTopHandler_runMainIO1_closure to i64), i64 ptrtoint (%Main_main1_closure_struct* @Main_main1_closure to i64)}>
26@base_GHCziTopHandler_runMainIO1_closure = external global [0 x i64]
27%Main_main2_closure_struct = type <{i64, i64}>
28@Main_main2_closure =  global %Main_main2_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main2_info to i64), i64 0}>
29%ZCMain_main_srt_struct = type <{i64}>
30@ZCMain_main_srt = internal constant %ZCMain_main_srt_struct<{i64 ptrtoint (%Main_main2_closure_struct* @Main_main2_closure to i64)}>
31%ZCMain_main_closure_struct = type <{i64, i64}>
32@ZCMain_main_closure =  global %ZCMain_main_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @ZCMain_main_info to i64), i64 0}>
33%s2ho_info_struct = type <{i64, i64, i64}>
34@s2ho_info_itable = internal constant %s2ho_info_struct<{i64 8589934596, i64 1, i64 10}>, section "X98A__STRIP,__me1", align 8
35define internal cc 10 void @s2ho_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me2"
36{
37c2kv:
38%Base_Var = alloca i64*, i32 1
39store i64* %Base_Arg, i64** %Base_Var
40%Sp_Var = alloca i64*, i32 1
41store i64* %Sp_Arg, i64** %Sp_Var
42%Hp_Var = alloca i64*, i32 1
43store i64* %Hp_Arg, i64** %Hp_Var
44%R1_Var = alloca i64, i32 1
45store i64 %R1_Arg, i64* %R1_Var
46%R2_Var = alloca i64, i32 1
47store i64 %R2_Arg, i64* %R2_Var
48%R3_Var = alloca i64, i32 1
49store i64 %R3_Arg, i64* %R3_Var
50%R4_Var = alloca i64, i32 1
51store i64 %R4_Arg, i64* %R4_Var
52%R5_Var = alloca i64, i32 1
53store i64 %R5_Arg, i64* %R5_Var
54%R6_Var = alloca i64, i32 1
55store i64 %R6_Arg, i64* %R6_Var
56%SpLim_Var = alloca i64, i32 1
57store i64 %SpLim_Arg, i64* %SpLim_Var
58%F1_Var = alloca float, i32 1
59store float %F1_Arg, float* %F1_Var
60%F2_Var = alloca float, i32 1
61store float %F2_Arg, float* %F2_Var
62%F3_Var = alloca float, i32 1
63store float %F3_Arg, float* %F3_Var
64%F4_Var = alloca float, i32 1
65store float %F4_Arg, float* %F4_Var
66%D1_Var = alloca double, i32 1
67store double %D1_Arg, double* %D1_Var
68%D2_Var = alloca double, i32 1
69store double %D2_Arg, double* %D2_Var
70%ls2hE = alloca i64, i32 1
71%lc2i7 = alloca i64, i32 1
72%ls2hD = alloca i64, i32 1
73%ls2hB = alloca i64, i32 1
74%ls2hC = alloca i64, i32 1
75%lc2iy = alloca i64, i32 1
76%lc2iG = alloca i64, i32 1
77%ls2hG = alloca i64, i32 1
78%ls2hH = alloca i64, i32 1
79%lc2jd = alloca i64, i32 1
80%lc2jl = alloca i64, i32 1
81%ls2hF = alloca i64, i32 1
82%ln2kw = load i64* %R2_Var
83%ln2kx = mul i64 2, %ln2kw
84store i64 %ln2kx, i64* %ls2hE
85%ln2ky = load i64* %ls2hE
86%ln2kz = icmp slt i64 %ln2ky, 1
87%ln2kA = zext i1 %ln2kz to i64
88store i64 %ln2kA, i64* %lc2i7
89%ln2kB = load i64* %lc2i7
90%ln2kC = icmp uge i64 %ln2kB, 1
91br i1 %ln2kC, label %c2kE, label %n2kF
92n2kF:
93%ln2kG = load i64* %R2_Var
94%ln2kH = sub i64 1, %ln2kG
95store i64 %ln2kH, i64* %ls2hD
96%ln2kI = load i64* %ls2hD
97%ln2kJ = mul i64 %ln2kI, 8
98store i64 %ln2kJ, i64* %ls2hB
99%ln2kK = load i64* %R2_Var
100%ln2kL = mul i64 %ln2kK, 8
101store i64 %ln2kL, i64* %ls2hC
102%ln2kM = load i64* %R1_Var
103%ln2kN = add i64 %ln2kM, 6
104%ln2kO = inttoptr i64 %ln2kN to i64*
105%ln2kP = load i64* %ln2kO
106%ln2kQ = add i64 %ln2kP, 16
107%ln2kR = load i64* %ls2hC
108%ln2kS = add i64 %ln2kQ, %ln2kR
109store i64 %ln2kS, i64* %lc2iy
110%ln2kT = load i64* %R1_Var
111%ln2kU = add i64 %ln2kT, 6
112%ln2kV = inttoptr i64 %ln2kU to i64*
113%ln2kW = load i64* %ln2kV
114%ln2kX = add i64 %ln2kW, 16
115store i64 %ln2kX, i64* %lc2iG
116%ln2kY = load i64* %R1_Var
117%ln2kZ = add i64 %ln2kY, 6
118%ln2l0 = inttoptr i64 %ln2kZ to i64*
119%ln2l1 = load i64* %ln2l0
120%ln2l2 = load i64* %R1_Var
121%ln2l3 = add i64 %ln2l2, 6
122%ln2l4 = inttoptr i64 %ln2l3 to i64*
123%ln2l5 = load i64* %ln2l4
124%ln2l6 = icmp eq i64 %ln2l1, %ln2l5
125br i1 %ln2l6, label %c2l8, label %n2l9
126n2l9:
127%ln2la = load i64* %lc2iy
128%ln2lb = inttoptr i64 %ln2la to i8*
129%ln2lc = load i64* %lc2iG
130%ln2ld = inttoptr i64 %ln2lc to i8*
131%ln2le = load i64* %ls2hB
132%ln2lf = trunc i64 1 to i32
133store i64 undef, i64* %R3_Var
134store i64 undef, i64* %R4_Var
135store i64 undef, i64* %R5_Var
136store i64 undef, i64* %R6_Var
137store float undef, float* %F1_Var
138store float undef, float* %F2_Var
139store float undef, float* %F3_Var
140store float undef, float* %F4_Var
141store double undef, double* %D1_Var
142store double undef, double* %D2_Var
143call ccc void (i8*,i8*,i64,i32,i1)* @llvm.memcpy.p0i8.p0i8.i64( i8* %ln2lb, i8* %ln2ld, i64 %ln2le, i32 %ln2lf, i1 0 )
144br label %c2lh
145c2kE:
146%ln2li = load i64* %R2_Var
147%ln2lj = mul i64 %ln2li, 8
148store i64 %ln2lj, i64* %ls2hG
149%ln2lk = load i64* %R2_Var
150%ln2ll = mul i64 %ln2lk, 8
151store i64 %ln2ll, i64* %ls2hH
152%ln2lm = load i64* %R1_Var
153%ln2ln = add i64 %ln2lm, 6
154%ln2lo = inttoptr i64 %ln2ln to i64*
155%ln2lp = load i64* %ln2lo
156%ln2lq = add i64 %ln2lp, 16
157%ln2lr = load i64* %ls2hH
158%ln2ls = add i64 %ln2lq, %ln2lr
159store i64 %ln2ls, i64* %lc2jd
160%ln2lt = load i64* %R1_Var
161%ln2lu = add i64 %ln2lt, 6
162%ln2lv = inttoptr i64 %ln2lu to i64*
163%ln2lw = load i64* %ln2lv
164%ln2lx = add i64 %ln2lw, 16
165store i64 %ln2lx, i64* %lc2jl
166%ln2ly = load i64* %R1_Var
167%ln2lz = add i64 %ln2ly, 6
168%ln2lA = inttoptr i64 %ln2lz to i64*
169%ln2lB = load i64* %ln2lA
170%ln2lC = load i64* %R1_Var
171%ln2lD = add i64 %ln2lC, 6
172%ln2lE = inttoptr i64 %ln2lD to i64*
173%ln2lF = load i64* %ln2lE
174%ln2lG = icmp eq i64 %ln2lB, %ln2lF
175br i1 %ln2lG, label %c2lI, label %n2lJ
176n2lJ:
177%ln2lK = load i64* %lc2jd
178%ln2lL = inttoptr i64 %ln2lK to i8*
179%ln2lM = load i64* %lc2jl
180%ln2lN = inttoptr i64 %ln2lM to i8*
181%ln2lO = load i64* %ls2hG
182%ln2lP = trunc i64 1 to i32
183store i64 undef, i64* %R3_Var
184store i64 undef, i64* %R4_Var
185store i64 undef, i64* %R5_Var
186store i64 undef, i64* %R6_Var
187store float undef, float* %F1_Var
188store float undef, float* %F2_Var
189store float undef, float* %F3_Var
190store float undef, float* %F4_Var
191store double undef, double* %D1_Var
192store double undef, double* %D2_Var
193call ccc void (i8*,i8*,i64,i32,i1)* @llvm.memcpy.p0i8.p0i8.i64( i8* %ln2lL, i8* %ln2lN, i64 %ln2lO, i32 %ln2lP, i1 0 )
194br label %c2lR
195c2lI:
196%ln2lS = load i64* %lc2jd
197%ln2lT = inttoptr i64 %ln2lS to i8*
198%ln2lU = load i64* %lc2jl
199%ln2lV = inttoptr i64 %ln2lU to i8*
200%ln2lW = load i64* %ls2hG
201%ln2lX = trunc i64 1 to i32
202store i64 undef, i64* %R3_Var
203store i64 undef, i64* %R4_Var
204store i64 undef, i64* %R5_Var
205store i64 undef, i64* %R6_Var
206store float undef, float* %F1_Var
207store float undef, float* %F2_Var
208store float undef, float* %F3_Var
209store float undef, float* %F4_Var
210store double undef, double* %D1_Var
211store double undef, double* %D2_Var
212call ccc void (i8*,i8*,i64,i32,i1)* @llvm.memmove.p0i8.p0i8.i64( i8* %ln2lT, i8* %ln2lV, i64 %ln2lW, i32 %ln2lX, i1 0 )
213br label %c2lR
214c2lR:
215%ln2lY = load i64* %R2_Var
216%ln2lZ = mul i64 2, %ln2lY
217store i64 %ln2lZ, i64* %ls2hF
218%ln2m0 = load i64* %ls2hF
219store i64 %ln2m0, i64* %R2_Var
220%ln2m1 = load i64** %Base_Var
221%ln2m2 = load i64** %Sp_Var
222%ln2m3 = load i64** %Hp_Var
223%ln2m4 = load i64* %R1_Var
224%ln2m5 = load i64* %R2_Var
225%ln2m6 = load i64* %R3_Var
226%ln2m7 = load i64* %R4_Var
227%ln2m8 = load i64* %R5_Var
228%ln2m9 = load i64* %R6_Var
229%ln2ma = load i64* %SpLim_Var
230%ln2mb = load float* %F1_Var
231%ln2mc = load float* %F2_Var
232%ln2md = load float* %F3_Var
233%ln2me = load float* %F4_Var
234%ln2mf = load double* %D1_Var
235%ln2mg = load double* %D2_Var
236tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @s2ho_info( i64* %ln2m1, i64* %ln2m2, i64* %ln2m3, i64 %ln2m4, i64 %ln2m5, i64 %ln2m6, i64 %ln2m7, i64 %ln2m8, i64 %ln2m9, i64 %ln2ma, float %ln2mb, float %ln2mc, float %ln2md, float %ln2me, double %ln2mf, double %ln2mg ) nounwind
237ret void
238c2l8:
239%ln2mh = load i64* %lc2iy
240%ln2mi = inttoptr i64 %ln2mh to i8*
241%ln2mj = load i64* %lc2iG
242%ln2mk = inttoptr i64 %ln2mj to i8*
243%ln2ml = load i64* %ls2hB
244%ln2mm = trunc i64 1 to i32
245store i64 undef, i64* %R3_Var
246store i64 undef, i64* %R4_Var
247store i64 undef, i64* %R5_Var
248store i64 undef, i64* %R6_Var
249store float undef, float* %F1_Var
250store float undef, float* %F2_Var
251store float undef, float* %F3_Var
252store float undef, float* %F4_Var
253store double undef, double* %D1_Var
254store double undef, double* %D2_Var
255call ccc void (i8*,i8*,i64,i32,i1)* @llvm.memmove.p0i8.p0i8.i64( i8* %ln2mi, i8* %ln2mk, i64 %ln2ml, i32 %ln2mm, i1 0 )
256br label %c2lh
257c2lh:
258%ln2mn = ptrtoint [0 x i64]* @ghczmprim_GHCziTuple_Z0T_closure to i64
259%ln2mo = add i64 %ln2mn, 1
260store i64 %ln2mo, i64* %R1_Var
261%ln2mp = load i64** %Sp_Var
262%ln2mq = getelementptr inbounds i64* %ln2mp, i32 0
263%ln2mr = bitcast i64* %ln2mq to i64*
264%ln2ms = load i64* %ln2mr
265%ln2mt = inttoptr i64 %ln2ms to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
266%ln2mu = load i64** %Base_Var
267%ln2mv = load i64** %Sp_Var
268%ln2mw = load i64** %Hp_Var
269%ln2mx = load i64* %R1_Var
270%ln2my = load i64* %R2_Var
271%ln2mz = load i64* %R3_Var
272%ln2mA = load i64* %R4_Var
273%ln2mB = load i64* %R5_Var
274%ln2mC = load i64* %R6_Var
275%ln2mD = load i64* %SpLim_Var
276%ln2mE = load float* %F1_Var
277%ln2mF = load float* %F2_Var
278%ln2mG = load float* %F3_Var
279%ln2mH = load float* %F4_Var
280%ln2mI = load double* %D1_Var
281%ln2mJ = load double* %D2_Var
282tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %ln2mt( i64* %ln2mu, i64* %ln2mv, i64* %ln2mw, i64 %ln2mx, i64 %ln2my, i64 %ln2mz, i64 %ln2mA, i64 %ln2mB, i64 %ln2mC, i64 %ln2mD, float %ln2mE, float %ln2mF, float %ln2mG, float %ln2mH, double %ln2mI, double %ln2mJ ) nounwind
283ret void
284}
285declare  ccc void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i32, i1)
286declare  ccc void @llvm.memmove.p0i8.p0i8.i64(i8*, i8*, i64, i32, i1)
287@ghczmprim_GHCziTuple_Z0T_closure = external global [0 x i64]
288%s2hL_ret_struct = type <{i64, i64}>
289@s2hL_info_itable = internal constant %s2hL_ret_struct<{i64 0, i64 32}>, section "X98A__STRIP,__me3", align 8
290define internal cc 10 void @s2hL_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me4"
291{
292c2ne:
293%Base_Var = alloca i64*, i32 1
294store i64* %Base_Arg, i64** %Base_Var
295%Sp_Var = alloca i64*, i32 1
296store i64* %Sp_Arg, i64** %Sp_Var
297%Hp_Var = alloca i64*, i32 1
298store i64* %Hp_Arg, i64** %Hp_Var
299%R1_Var = alloca i64, i32 1
300store i64 %R1_Arg, i64* %R1_Var
301%R2_Var = alloca i64, i32 1
302store i64 %R2_Arg, i64* %R2_Var
303%R3_Var = alloca i64, i32 1
304store i64 %R3_Arg, i64* %R3_Var
305%R4_Var = alloca i64, i32 1
306store i64 %R4_Arg, i64* %R4_Var
307%R5_Var = alloca i64, i32 1
308store i64 %R5_Arg, i64* %R5_Var
309%R6_Var = alloca i64, i32 1
310store i64 %R6_Arg, i64* %R6_Var
311%SpLim_Var = alloca i64, i32 1
312store i64 %SpLim_Arg, i64* %SpLim_Var
313%F1_Var = alloca float, i32 1
314store float %F1_Arg, float* %F1_Var
315%F2_Var = alloca float, i32 1
316store float %F2_Arg, float* %F2_Var
317%F3_Var = alloca float, i32 1
318store float %F3_Arg, float* %F3_Var
319%F4_Var = alloca float, i32 1
320store float %F4_Arg, float* %F4_Var
321%D1_Var = alloca double, i32 1
322store double %D1_Arg, double* %D1_Var
323%D2_Var = alloca double, i32 1
324store double %D2_Arg, double* %D2_Var
325%ln2nf = ptrtoint [0 x i64]* @ghczmprim_GHCziTuple_Z0T_closure to i64
326%ln2ng = add i64 %ln2nf, 1
327store i64 %ln2ng, i64* %R1_Var
328%ln2nh = load i64** %Sp_Var
329%ln2ni = getelementptr inbounds i64* %ln2nh, i32 1
330%ln2nj = ptrtoint i64* %ln2ni to i64
331%ln2nk = inttoptr i64 %ln2nj to i64*
332store i64* %ln2nk, i64** %Sp_Var
333%ln2nl = load i64** %Sp_Var
334%ln2nm = getelementptr inbounds i64* %ln2nl, i32 0
335%ln2nn = bitcast i64* %ln2nm to i64*
336%ln2no = load i64* %ln2nn
337%ln2np = inttoptr i64 %ln2no to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
338%ln2nq = load i64** %Base_Var
339%ln2nr = load i64** %Sp_Var
340%ln2ns = load i64** %Hp_Var
341%ln2nt = load i64* %R1_Var
342%ln2nu = load i64* %R2_Var
343%ln2nv = load i64* %R3_Var
344%ln2nw = load i64* %R4_Var
345%ln2nx = load i64* %R5_Var
346%ln2ny = load i64* %R6_Var
347%ln2nz = load i64* %SpLim_Var
348%ln2nA = load float* %F1_Var
349%ln2nB = load float* %F2_Var
350%ln2nC = load float* %F3_Var
351%ln2nD = load float* %F4_Var
352%ln2nE = load double* %D1_Var
353%ln2nF = load double* %D2_Var
354tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %ln2np( i64* %ln2nq, i64* %ln2nr, i64* %ln2ns, i64 %ln2nt, i64 %ln2nu, i64 %ln2nv, i64 %ln2nw, i64 %ln2nx, i64 %ln2ny, i64 %ln2nz, float %ln2nA, float %ln2nB, float %ln2nC, float %ln2nD, double %ln2nE, double %ln2nF ) nounwind
355ret void
356}
357%s2hK_ret_struct = type <{i64, i64}>
358@s2hK_info_itable = internal constant %s2hK_ret_struct<{i64 0, i64 32}>, section "X98A__STRIP,__me5", align 8
359define internal cc 10 void @s2hK_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me6"
360{
361c2oI:
362%Base_Var = alloca i64*, i32 1
363store i64* %Base_Arg, i64** %Base_Var
364%Sp_Var = alloca i64*, i32 1
365store i64* %Sp_Arg, i64** %Sp_Var
366%Hp_Var = alloca i64*, i32 1
367store i64* %Hp_Arg, i64** %Hp_Var
368%R1_Var = alloca i64, i32 1
369store i64 %R1_Arg, i64* %R1_Var
370%R2_Var = alloca i64, i32 1
371store i64 %R2_Arg, i64* %R2_Var
372%R3_Var = alloca i64, i32 1
373store i64 %R3_Arg, i64* %R3_Var
374%R4_Var = alloca i64, i32 1
375store i64 %R4_Arg, i64* %R4_Var
376%R5_Var = alloca i64, i32 1
377store i64 %R5_Arg, i64* %R5_Var
378%R6_Var = alloca i64, i32 1
379store i64 %R6_Arg, i64* %R6_Var
380%SpLim_Var = alloca i64, i32 1
381store i64 %SpLim_Arg, i64* %SpLim_Var
382%F1_Var = alloca float, i32 1
383store float %F1_Arg, float* %F1_Var
384%F2_Var = alloca float, i32 1
385store float %F2_Arg, float* %F2_Var
386%F3_Var = alloca float, i32 1
387store float %F3_Arg, float* %F3_Var
388%F4_Var = alloca float, i32 1
389store float %F4_Arg, float* %F4_Var
390%D1_Var = alloca double, i32 1
391store double %D1_Arg, double* %D1_Var
392%D2_Var = alloca double, i32 1
393store double %D2_Arg, double* %D2_Var
394%ln2oJ = load i64** %Hp_Var
395%ln2oK = getelementptr inbounds i64* %ln2oJ, i32 2
396%ln2oL = ptrtoint i64* %ln2oK to i64
397%ln2oM = inttoptr i64 %ln2oL to i64*
398store i64* %ln2oM, i64** %Hp_Var
399%ln2oN = load i64** %Hp_Var
400%ln2oO = ptrtoint i64* %ln2oN to i64
401%ln2oP = load i64** %Base_Var
402%ln2oQ = getelementptr inbounds i64* %ln2oP, i32 18
403%ln2oR = bitcast i64* %ln2oQ to i64*
404%ln2oS = load i64* %ln2oR
405%ln2oT = icmp ugt i64 %ln2oO, %ln2oS
406br i1 %ln2oT, label %c2oW, label %n2oX
407n2oX:
408%ln2oY = load i64* %R1_Var
409%ln2oZ = add i64 %ln2oY, 16
410%ln2p0 = inttoptr i64 %ln2oZ to double*
411store double 0x0000000000000000, double* %ln2p0
412%ln2p1 = ptrtoint void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @s2ho_info to i64
413%ln2p2 = load i64** %Hp_Var
414%ln2p3 = getelementptr inbounds i64* %ln2p2, i32 -1
415store i64 %ln2p1, i64* %ln2p3
416%ln2p4 = load i64* %R1_Var
417%ln2p5 = load i64** %Hp_Var
418%ln2p6 = getelementptr inbounds i64* %ln2p5, i32 0
419store i64 %ln2p4, i64* %ln2p6
420%ln2p7 = load i64** %Hp_Var
421%ln2p8 = ptrtoint i64* %ln2p7 to i64
422%ln2p9 = add i64 %ln2p8, -6
423store i64 %ln2p9, i64* %R1_Var
424store i64 1, i64* %R2_Var
425%ln2pa = ptrtoint void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @s2hL_info to i64
426%ln2pb = load i64** %Sp_Var
427%ln2pc = getelementptr inbounds i64* %ln2pb, i32 0
428store i64 %ln2pa, i64* %ln2pc
429%ln2pd = load i64** %Base_Var
430%ln2pe = load i64** %Sp_Var
431%ln2pf = load i64** %Hp_Var
432%ln2pg = load i64* %R1_Var
433%ln2ph = load i64* %R2_Var
434%ln2pi = load i64* %R3_Var
435%ln2pj = load i64* %R4_Var
436%ln2pk = load i64* %R5_Var
437%ln2pl = load i64* %R6_Var
438%ln2pm = load i64* %SpLim_Var
439%ln2pn = load float* %F1_Var
440%ln2po = load float* %F2_Var
441%ln2pp = load float* %F3_Var
442%ln2pq = load float* %F4_Var
443%ln2pr = load double* %D1_Var
444%ln2ps = load double* %D2_Var
445tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @s2ho_info( i64* %ln2pd, i64* %ln2pe, i64* %ln2pf, i64 %ln2pg, i64 %ln2ph, i64 %ln2pi, i64 %ln2pj, i64 %ln2pk, i64 %ln2pl, i64 %ln2pm, float %ln2pn, float %ln2po, float %ln2pp, float %ln2pq, double %ln2pr, double %ln2ps ) nounwind
446ret void
447c2pt:
448%ln2pu = load i64** %Base_Var
449%ln2pv = getelementptr inbounds i64* %ln2pu, i32 8
450store i64 254, i64* %ln2pv
451%ln2pw = load i64** %Base_Var
452%ln2px = load i64** %Sp_Var
453%ln2py = load i64** %Hp_Var
454%ln2pz = load i64* %R1_Var
455%ln2pA = load i64* %R2_Var
456%ln2pB = load i64* %R3_Var
457%ln2pC = load i64* %R4_Var
458%ln2pD = load i64* %R5_Var
459%ln2pE = load i64* %R6_Var
460%ln2pF = load i64* %SpLim_Var
461%ln2pG = load float* %F1_Var
462%ln2pH = load float* %F2_Var
463%ln2pI = load float* %F3_Var
464%ln2pJ = load float* %F4_Var
465%ln2pK = load double* %D1_Var
466%ln2pL = load double* %D2_Var
467tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_gc_ut( i64* %ln2pw, i64* %ln2px, i64* %ln2py, i64 %ln2pz, i64 %ln2pA, i64 %ln2pB, i64 %ln2pC, i64 %ln2pD, i64 %ln2pE, i64 %ln2pF, float %ln2pG, float %ln2pH, float %ln2pI, float %ln2pJ, double %ln2pK, double %ln2pL ) nounwind
468ret void
469c2oW:
470%ln2pM = load i64** %Base_Var
471%ln2pN = getelementptr inbounds i64* %ln2pM, i32 24
472store i64 16, i64* %ln2pN
473br label %c2pt
474}
475declare  cc 10 void @stg_gc_ut(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
476%s2h3_ret_struct = type <{i64, i64}>
477@s2h3_info_itable = internal constant %s2h3_ret_struct<{i64 0, i64 32}>, section "X98A__STRIP,__me7", align 8
478define internal cc 10 void @s2h3_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me8"
479{
480c2q8:
481%Base_Var = alloca i64*, i32 1
482store i64* %Base_Arg, i64** %Base_Var
483%Sp_Var = alloca i64*, i32 1
484store i64* %Sp_Arg, i64** %Sp_Var
485%Hp_Var = alloca i64*, i32 1
486store i64* %Hp_Arg, i64** %Hp_Var
487%R1_Var = alloca i64, i32 1
488store i64 %R1_Arg, i64* %R1_Var
489%R2_Var = alloca i64, i32 1
490store i64 %R2_Arg, i64* %R2_Var
491%R3_Var = alloca i64, i32 1
492store i64 %R3_Arg, i64* %R3_Var
493%R4_Var = alloca i64, i32 1
494store i64 %R4_Arg, i64* %R4_Var
495%R5_Var = alloca i64, i32 1
496store i64 %R5_Arg, i64* %R5_Var
497%R6_Var = alloca i64, i32 1
498store i64 %R6_Arg, i64* %R6_Var
499%SpLim_Var = alloca i64, i32 1
500store i64 %SpLim_Arg, i64* %SpLim_Var
501%F1_Var = alloca float, i32 1
502store float %F1_Arg, float* %F1_Var
503%F2_Var = alloca float, i32 1
504store float %F2_Arg, float* %F2_Var
505%F3_Var = alloca float, i32 1
506store float %F3_Arg, float* %F3_Var
507%F4_Var = alloca float, i32 1
508store float %F4_Arg, float* %F4_Var
509%D1_Var = alloca double, i32 1
510store double %D1_Arg, double* %D1_Var
511%D2_Var = alloca double, i32 1
512store double %D2_Arg, double* %D2_Var
513store i64 8, i64* %R1_Var
514%ln2q9 = ptrtoint void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @s2hK_info to i64
515%ln2qa = load i64** %Sp_Var
516%ln2qb = getelementptr inbounds i64* %ln2qa, i32 0
517store i64 %ln2q9, i64* %ln2qb
518%ln2qc = load i64** %Base_Var
519%ln2qd = load i64** %Sp_Var
520%ln2qe = load i64** %Hp_Var
521%ln2qf = load i64* %R1_Var
522%ln2qg = load i64* %R2_Var
523%ln2qh = load i64* %R3_Var
524%ln2qi = load i64* %R4_Var
525%ln2qj = load i64* %R5_Var
526%ln2qk = load i64* %R6_Var
527%ln2ql = load i64* %SpLim_Var
528%ln2qm = load float* %F1_Var
529%ln2qn = load float* %F2_Var
530%ln2qo = load float* %F3_Var
531%ln2qp = load float* %F4_Var
532%ln2qq = load double* %D1_Var
533%ln2qr = load double* %D2_Var
534tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_newByteArrayzh( i64* %ln2qc, i64* %ln2qd, i64* %ln2qe, i64 %ln2qf, i64 %ln2qg, i64 %ln2qh, i64 %ln2qi, i64 %ln2qj, i64 %ln2qk, i64 %ln2ql, float %ln2qm, float %ln2qn, float %ln2qo, float %ln2qp, double %ln2qq, double %ln2qr ) nounwind
535ret void
536}
537declare  cc 10 void @stg_newByteArrayzh(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
538%Main_foo1_info_struct = type <{i64, i64, i64}>
539@Main_foo1_info_itable =  constant %Main_foo1_info_struct<{i64 4294967299, i64 0, i64 15}>, section "X98A__STRIP,__me9", align 8
540define  cc 10 void @Main_foo1_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me10"
541{
542c2ri:
543%Base_Var = alloca i64*, i32 1
544store i64* %Base_Arg, i64** %Base_Var
545%Sp_Var = alloca i64*, i32 1
546store i64* %Sp_Arg, i64** %Sp_Var
547%Hp_Var = alloca i64*, i32 1
548store i64* %Hp_Arg, i64** %Hp_Var
549%R1_Var = alloca i64, i32 1
550store i64 %R1_Arg, i64* %R1_Var
551%R2_Var = alloca i64, i32 1
552store i64 %R2_Arg, i64* %R2_Var
553%R3_Var = alloca i64, i32 1
554store i64 %R3_Arg, i64* %R3_Var
555%R4_Var = alloca i64, i32 1
556store i64 %R4_Arg, i64* %R4_Var
557%R5_Var = alloca i64, i32 1
558store i64 %R5_Arg, i64* %R5_Var
559%R6_Var = alloca i64, i32 1
560store i64 %R6_Arg, i64* %R6_Var
561%SpLim_Var = alloca i64, i32 1
562store i64 %SpLim_Arg, i64* %SpLim_Var
563%F1_Var = alloca float, i32 1
564store float %F1_Arg, float* %F1_Var
565%F2_Var = alloca float, i32 1
566store float %F2_Arg, float* %F2_Var
567%F3_Var = alloca float, i32 1
568store float %F3_Arg, float* %F3_Var
569%F4_Var = alloca float, i32 1
570store float %F4_Arg, float* %F4_Var
571%D1_Var = alloca double, i32 1
572store double %D1_Arg, double* %D1_Var
573%D2_Var = alloca double, i32 1
574store double %D2_Arg, double* %D2_Var
575%ln2rj = load i64** %Sp_Var
576%ln2rk = getelementptr inbounds i64* %ln2rj, i32 -1
577%ln2rl = ptrtoint i64* %ln2rk to i64
578%ln2rm = load i64* %SpLim_Var
579%ln2rn = icmp ult i64 %ln2rl, %ln2rm
580br i1 %ln2rn, label %c2rp, label %n2rq
581n2rq:
582%ln2rr = ptrtoint void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @s2h3_info to i64
583%ln2rs = load i64** %Sp_Var
584%ln2rt = getelementptr inbounds i64* %ln2rs, i32 -1
585store i64 %ln2rr, i64* %ln2rt
586%ln2ru = load i64** %Sp_Var
587%ln2rv = getelementptr inbounds i64* %ln2ru, i32 -1
588%ln2rw = ptrtoint i64* %ln2rv to i64
589%ln2rx = inttoptr i64 %ln2rw to i64*
590store i64* %ln2rx, i64** %Sp_Var
591%ln2ry = load i64** %Base_Var
592%ln2rz = load i64** %Sp_Var
593%ln2rA = load i64** %Hp_Var
594%ln2rB = load i64* %R1_Var
595%ln2rC = load i64* %R2_Var
596%ln2rD = load i64* %R3_Var
597%ln2rE = load i64* %R4_Var
598%ln2rF = load i64* %R5_Var
599%ln2rG = load i64* %R6_Var
600%ln2rH = load i64* %SpLim_Var
601%ln2rI = load float* %F1_Var
602%ln2rJ = load float* %F2_Var
603%ln2rK = load float* %F3_Var
604%ln2rL = load float* %F4_Var
605%ln2rM = load double* %D1_Var
606%ln2rN = load double* %D2_Var
607tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_noDuplicatezh( i64* %ln2ry, i64* %ln2rz, i64* %ln2rA, i64 %ln2rB, i64 %ln2rC, i64 %ln2rD, i64 %ln2rE, i64 %ln2rF, i64 %ln2rG, i64 %ln2rH, float %ln2rI, float %ln2rJ, float %ln2rK, float %ln2rL, double %ln2rM, double %ln2rN ) nounwind
608ret void
609c2rp:
610%ln2rO = ptrtoint %Main_foo1_closure_struct* @Main_foo1_closure to i64
611store i64 %ln2rO, i64* %R1_Var
612%ln2rP = load i64** %Base_Var
613%ln2rQ = getelementptr inbounds i64* %ln2rP, i32 -1
614%ln2rR = bitcast i64* %ln2rQ to i64*
615%ln2rS = load i64* %ln2rR
616%ln2rT = inttoptr i64 %ln2rS to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
617%ln2rU = load i64** %Base_Var
618%ln2rV = load i64** %Sp_Var
619%ln2rW = load i64** %Hp_Var
620%ln2rX = load i64* %R1_Var
621%ln2rY = load i64* %R2_Var
622%ln2rZ = load i64* %R3_Var
623%ln2s0 = load i64* %R4_Var
624%ln2s1 = load i64* %R5_Var
625%ln2s2 = load i64* %R6_Var
626%ln2s3 = load i64* %SpLim_Var
627%ln2s4 = load float* %F1_Var
628%ln2s5 = load float* %F2_Var
629%ln2s6 = load float* %F3_Var
630%ln2s7 = load float* %F4_Var
631%ln2s8 = load double* %D1_Var
632%ln2s9 = load double* %D2_Var
633tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %ln2rT( i64* %ln2rU, i64* %ln2rV, i64* %ln2rW, i64 %ln2rX, i64 %ln2rY, i64 %ln2rZ, i64 %ln2s0, i64 %ln2s1, i64 %ln2s2, i64 %ln2s3, float %ln2s4, float %ln2s5, float %ln2s6, float %ln2s7, double %ln2s8, double %ln2s9 ) nounwind
634ret void
635}
636declare  cc 10 void @stg_noDuplicatezh(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
637%Main_foo_info_struct = type <{i64, i64}>
638@Main_foo_info_itable =  constant %Main_foo_info_struct<{i64 0, i64 22}>, section "X98A__STRIP,__me11", align 8
639define  cc 10 void @Main_foo_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me12"
640{
641c2u8:
642%Base_Var = alloca i64*, i32 1
643store i64* %Base_Arg, i64** %Base_Var
644%Sp_Var = alloca i64*, i32 1
645store i64* %Sp_Arg, i64** %Sp_Var
646%Hp_Var = alloca i64*, i32 1
647store i64* %Hp_Arg, i64** %Hp_Var
648%R1_Var = alloca i64, i32 1
649store i64 %R1_Arg, i64* %R1_Var
650%R2_Var = alloca i64, i32 1
651store i64 %R2_Arg, i64* %R2_Var
652%R3_Var = alloca i64, i32 1
653store i64 %R3_Arg, i64* %R3_Var
654%R4_Var = alloca i64, i32 1
655store i64 %R4_Arg, i64* %R4_Var
656%R5_Var = alloca i64, i32 1
657store i64 %R5_Arg, i64* %R5_Var
658%R6_Var = alloca i64, i32 1
659store i64 %R6_Arg, i64* %R6_Var
660%SpLim_Var = alloca i64, i32 1
661store i64 %SpLim_Arg, i64* %SpLim_Var
662%F1_Var = alloca float, i32 1
663store float %F1_Arg, float* %F1_Var
664%F2_Var = alloca float, i32 1
665store float %F2_Arg, float* %F2_Var
666%F3_Var = alloca float, i32 1
667store float %F3_Arg, float* %F3_Var
668%F4_Var = alloca float, i32 1
669store float %F4_Arg, float* %F4_Var
670%D1_Var = alloca double, i32 1
671store double %D1_Arg, double* %D1_Var
672%D2_Var = alloca double, i32 1
673store double %D2_Arg, double* %D2_Var
674%lc2sO = alloca i64, i32 1
675%ln2u9 = load i64** %Sp_Var
676%ln2ua = getelementptr inbounds i64* %ln2u9, i32 -2
677%ln2ub = ptrtoint i64* %ln2ua to i64
678%ln2uc = load i64* %SpLim_Var
679%ln2ud = icmp ult i64 %ln2ub, %ln2uc
680br i1 %ln2ud, label %c2uf, label %n2ug
681n2ug:
682%ln2uh = load i64** %Hp_Var
683%ln2ui = getelementptr inbounds i64* %ln2uh, i32 2
684%ln2uj = ptrtoint i64* %ln2ui to i64
685%ln2uk = inttoptr i64 %ln2uj to i64*
686store i64* %ln2uk, i64** %Hp_Var
687%ln2ul = load i64** %Hp_Var
688%ln2um = ptrtoint i64* %ln2ul to i64
689%ln2un = load i64** %Base_Var
690%ln2uo = getelementptr inbounds i64* %ln2un, i32 18
691%ln2up = bitcast i64* %ln2uo to i64*
692%ln2uq = load i64* %ln2up
693%ln2ur = icmp ugt i64 %ln2um, %ln2uq
694br i1 %ln2ur, label %c2ut, label %n2uu
695n2uu:
696%ln2uv = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64
697%ln2uw = load i64** %Hp_Var
698%ln2ux = getelementptr inbounds i64* %ln2uw, i32 -1
699store i64 %ln2uv, i64* %ln2ux
700%ln2uy = load i64** %Base_Var
701%ln2uz = getelementptr inbounds i64* %ln2uy, i32 20
702%ln2uA = bitcast i64* %ln2uz to i64*
703%ln2uB = load i64* %ln2uA
704%ln2uC = load i64** %Hp_Var
705%ln2uD = getelementptr inbounds i64* %ln2uC, i32 0
706store i64 %ln2uB, i64* %ln2uD
707%ln2uE = load i64** %Base_Var
708%ln2uF = ptrtoint i64* %ln2uE to i64
709%ln2uG = inttoptr i64 %ln2uF to i8*
710%ln2uH = load i64* %R1_Var
711%ln2uI = inttoptr i64 %ln2uH to i8*
712%ln2uJ = load i64** %Hp_Var
713%ln2uK = getelementptr inbounds i64* %ln2uJ, i32 -1
714%ln2uL = ptrtoint i64* %ln2uK to i64
715%ln2uM = inttoptr i64 %ln2uL to i8*
716store i64 undef, i64* %R3_Var
717store i64 undef, i64* %R4_Var
718store i64 undef, i64* %R5_Var
719store i64 undef, i64* %R6_Var
720store float undef, float* %F1_Var
721store float undef, float* %F2_Var
722store float undef, float* %F3_Var
723store float undef, float* %F4_Var
724store double undef, double* %D1_Var
725store double undef, double* %D2_Var
726%ln2uN = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %ln2uG, i8* %ln2uI, i8* %ln2uM ) nounwind
727store i64 %ln2uN, i64* %lc2sO
728%ln2uO = load i64* %lc2sO
729%ln2uP = icmp eq i64 %ln2uO, 0
730br i1 %ln2uP, label %c2uQ, label %n2uR
731n2uR:
732br label %c2uS
733c2uf:
734%ln2uT = load i64** %Base_Var
735%ln2uU = getelementptr inbounds i64* %ln2uT, i32 -2
736%ln2uV = bitcast i64* %ln2uU to i64*
737%ln2uW = load i64* %ln2uV
738%ln2uX = inttoptr i64 %ln2uW to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
739%ln2uY = load i64** %Base_Var
740%ln2uZ = load i64** %Sp_Var
741%ln2v0 = load i64** %Hp_Var
742%ln2v1 = load i64* %R1_Var
743%ln2v2 = load i64* %R2_Var
744%ln2v3 = load i64* %R3_Var
745%ln2v4 = load i64* %R4_Var
746%ln2v5 = load i64* %R5_Var
747%ln2v6 = load i64* %R6_Var
748%ln2v7 = load i64* %SpLim_Var
749%ln2v8 = load float* %F1_Var
750%ln2v9 = load float* %F2_Var
751%ln2va = load float* %F3_Var
752%ln2vb = load float* %F4_Var
753%ln2vc = load double* %D1_Var
754%ln2vd = load double* %D2_Var
755tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %ln2uX( i64* %ln2uY, i64* %ln2uZ, i64* %ln2v0, i64 %ln2v1, i64 %ln2v2, i64 %ln2v3, i64 %ln2v4, i64 %ln2v5, i64 %ln2v6, i64 %ln2v7, float %ln2v8, float %ln2v9, float %ln2va, float %ln2vb, double %ln2vc, double %ln2vd ) nounwind
756ret void
757c2ut:
758%ln2ve = load i64** %Base_Var
759%ln2vf = getelementptr inbounds i64* %ln2ve, i32 24
760store i64 16, i64* %ln2vf
761br label %c2uf
762c2uQ:
763%ln2vg = load i64* %R1_Var
764%ln2vh = inttoptr i64 %ln2vg to i64*
765%ln2vi = load i64* %ln2vh
766%ln2vj = inttoptr i64 %ln2vi to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
767%ln2vk = load i64** %Base_Var
768%ln2vl = load i64** %Sp_Var
769%ln2vm = load i64** %Hp_Var
770%ln2vn = load i64* %R1_Var
771%ln2vo = load i64* %R2_Var
772%ln2vp = load i64* %R3_Var
773%ln2vq = load i64* %R4_Var
774%ln2vr = load i64* %R5_Var
775%ln2vs = load i64* %R6_Var
776%ln2vt = load i64* %SpLim_Var
777%ln2vu = load float* %F1_Var
778%ln2vv = load float* %F2_Var
779%ln2vw = load float* %F3_Var
780%ln2vx = load float* %F4_Var
781%ln2vy = load double* %D1_Var
782%ln2vz = load double* %D2_Var
783tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %ln2vj( i64* %ln2vk, i64* %ln2vl, i64* %ln2vm, i64 %ln2vn, i64 %ln2vo, i64 %ln2vp, i64 %ln2vq, i64 %ln2vr, i64 %ln2vs, i64 %ln2vt, float %ln2vu, float %ln2vv, float %ln2vw, float %ln2vx, double %ln2vy, double %ln2vz ) nounwind
784ret void
785c2uS:
786%ln2vA = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64
787%ln2vB = load i64** %Sp_Var
788%ln2vC = getelementptr inbounds i64* %ln2vB, i32 -2
789store i64 %ln2vA, i64* %ln2vC
790%ln2vD = load i64** %Hp_Var
791%ln2vE = getelementptr inbounds i64* %ln2vD, i32 -1
792%ln2vF = ptrtoint i64* %ln2vE to i64
793%ln2vG = load i64** %Sp_Var
794%ln2vH = getelementptr inbounds i64* %ln2vG, i32 -1
795store i64 %ln2vF, i64* %ln2vH
796%ln2vI = ptrtoint %Main_foo1_closure_struct* @Main_foo1_closure to i64
797%ln2vJ = add i64 %ln2vI, 1
798store i64 %ln2vJ, i64* %R2_Var
799%ln2vK = load i64** %Sp_Var
800%ln2vL = getelementptr inbounds i64* %ln2vK, i32 -2
801%ln2vM = ptrtoint i64* %ln2vL to i64
802%ln2vN = inttoptr i64 %ln2vM to i64*
803store i64* %ln2vN, i64** %Sp_Var
804%ln2vO = load i64** %Base_Var
805%ln2vP = load i64** %Sp_Var
806%ln2vQ = load i64** %Hp_Var
807%ln2vR = load i64* %R1_Var
808%ln2vS = load i64* %R2_Var
809%ln2vT = load i64* %R3_Var
810%ln2vU = load i64* %R4_Var
811%ln2vV = load i64* %R5_Var
812%ln2vW = load i64* %R6_Var
813%ln2vX = load i64* %SpLim_Var
814%ln2vY = load float* %F1_Var
815%ln2vZ = load float* %F2_Var
816%ln2w0 = load float* %F3_Var
817%ln2w1 = load float* %F4_Var
818%ln2w2 = load double* %D1_Var
819%ln2w3 = load double* %D2_Var
820tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @base_GHCziIO_unsafeDupablePerformIO_info( i64* %ln2vO, i64* %ln2vP, i64* %ln2vQ, i64 %ln2vR, i64 %ln2vS, i64 %ln2vT, i64 %ln2vU, i64 %ln2vV, i64 %ln2vW, i64 %ln2vX, float %ln2vY, float %ln2vZ, float %ln2w0, float %ln2w1, double %ln2w2, double %ln2w3 ) nounwind
821ret void
822}
823@stg_CAF_BLACKHOLE_info = external global [0 x i64]
824declare  ccc i64 @newCAF(i8*, i8*, i8*) align 8
825@stg_bh_upd_frame_info = external global [0 x i64]
826declare  cc 10 void @base_GHCziIO_unsafeDupablePerformIO_info(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
827%Main_main1_info_struct = type <{i64, i64, i64, i64}>
828@Main_main1_info_itable =  constant %Main_main1_info_struct<{i64 add (i64 sub (i64 ptrtoint (%Main_main1_srt_struct* @Main_main1_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main1_info to i64)),i64 0), i64 4294967299, i64 0, i64 30064771087}>, section "X98A__STRIP,__me13", align 8
829define  cc 10 void @Main_main1_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me14"
830{
831c2ws:
832%Base_Var = alloca i64*, i32 1
833store i64* %Base_Arg, i64** %Base_Var
834%Sp_Var = alloca i64*, i32 1
835store i64* %Sp_Arg, i64** %Sp_Var
836%Hp_Var = alloca i64*, i32 1
837store i64* %Hp_Arg, i64** %Hp_Var
838%R1_Var = alloca i64, i32 1
839store i64 %R1_Arg, i64* %R1_Var
840%R2_Var = alloca i64, i32 1
841store i64 %R2_Arg, i64* %R2_Var
842%R3_Var = alloca i64, i32 1
843store i64 %R3_Arg, i64* %R3_Var
844%R4_Var = alloca i64, i32 1
845store i64 %R4_Arg, i64* %R4_Var
846%R5_Var = alloca i64, i32 1
847store i64 %R5_Arg, i64* %R5_Var
848%R6_Var = alloca i64, i32 1
849store i64 %R6_Arg, i64* %R6_Var
850%SpLim_Var = alloca i64, i32 1
851store i64 %SpLim_Arg, i64* %SpLim_Var
852%F1_Var = alloca float, i32 1
853store float %F1_Arg, float* %F1_Var
854%F2_Var = alloca float, i32 1
855store float %F2_Arg, float* %F2_Var
856%F3_Var = alloca float, i32 1
857store float %F3_Arg, float* %F3_Var
858%F4_Var = alloca float, i32 1
859store float %F4_Arg, float* %F4_Var
860%D1_Var = alloca double, i32 1
861store double %D1_Arg, double* %D1_Var
862%D2_Var = alloca double, i32 1
863store double %D2_Arg, double* %D2_Var
864%ln2wt = ptrtoint [0 x i64]* @base_GHCziIOziHandleziFD_stdout_closure to i64
865store i64 %ln2wt, i64* %R2_Var
866%ln2wu = ptrtoint [0 x i64]* @base_GHCziShow_shows18_closure to i64
867store i64 %ln2wu, i64* %R3_Var
868%ln2wv = ptrtoint [0 x i64]* @ghczmprim_GHCziTypes_True_closure to i64
869%ln2ww = add i64 %ln2wv, 2
870store i64 %ln2ww, i64* %R4_Var
871%ln2wx = load i64** %Base_Var
872%ln2wy = load i64** %Sp_Var
873%ln2wz = load i64** %Hp_Var
874%ln2wA = load i64* %R1_Var
875%ln2wB = load i64* %R2_Var
876%ln2wC = load i64* %R3_Var
877%ln2wD = load i64* %R4_Var
878%ln2wE = load i64* %R5_Var
879%ln2wF = load i64* %R6_Var
880%ln2wG = load i64* %SpLim_Var
881%ln2wH = load float* %F1_Var
882%ln2wI = load float* %F2_Var
883%ln2wJ = load float* %F3_Var
884%ln2wK = load float* %F4_Var
885%ln2wL = load double* %D1_Var
886%ln2wM = load double* %D2_Var
887tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @base_GHCziIOziHandleziText_hPutStr2_info( i64* %ln2wx, i64* %ln2wy, i64* %ln2wz, i64 %ln2wA, i64 %ln2wB, i64 %ln2wC, i64 %ln2wD, i64 %ln2wE, i64 %ln2wF, i64 %ln2wG, float %ln2wH, float %ln2wI, float %ln2wJ, float %ln2wK, double %ln2wL, double %ln2wM ) nounwind
888ret void
889}
890@ghczmprim_GHCziTypes_True_closure = external global [0 x i64]
891declare  cc 10 void @base_GHCziIOziHandleziText_hPutStr2_info(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
892%Main_main_info_struct = type <{i64, i64, i64, i64}>
893@Main_main_info_itable =  constant %Main_main_info_struct<{i64 add (i64 sub (i64 ptrtoint (%Main_main_srt_struct* @Main_main_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main_info to i64)),i64 0), i64 4294967299, i64 0, i64 4294967311}>, section "X98A__STRIP,__me15", align 8
894define  cc 10 void @Main_main_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me16"
895{
896c2x7:
897%Base_Var = alloca i64*, i32 1
898store i64* %Base_Arg, i64** %Base_Var
899%Sp_Var = alloca i64*, i32 1
900store i64* %Sp_Arg, i64** %Sp_Var
901%Hp_Var = alloca i64*, i32 1
902store i64* %Hp_Arg, i64** %Hp_Var
903%R1_Var = alloca i64, i32 1
904store i64 %R1_Arg, i64* %R1_Var
905%R2_Var = alloca i64, i32 1
906store i64 %R2_Arg, i64* %R2_Var
907%R3_Var = alloca i64, i32 1
908store i64 %R3_Arg, i64* %R3_Var
909%R4_Var = alloca i64, i32 1
910store i64 %R4_Arg, i64* %R4_Var
911%R5_Var = alloca i64, i32 1
912store i64 %R5_Arg, i64* %R5_Var
913%R6_Var = alloca i64, i32 1
914store i64 %R6_Arg, i64* %R6_Var
915%SpLim_Var = alloca i64, i32 1
916store i64 %SpLim_Arg, i64* %SpLim_Var
917%F1_Var = alloca float, i32 1
918store float %F1_Arg, float* %F1_Var
919%F2_Var = alloca float, i32 1
920store float %F2_Arg, float* %F2_Var
921%F3_Var = alloca float, i32 1
922store float %F3_Arg, float* %F3_Var
923%F4_Var = alloca float, i32 1
924store float %F4_Arg, float* %F4_Var
925%D1_Var = alloca double, i32 1
926store double %D1_Arg, double* %D1_Var
927%D2_Var = alloca double, i32 1
928store double %D2_Arg, double* %D2_Var
929%ln2x8 = load i64** %Base_Var
930%ln2x9 = load i64** %Sp_Var
931%ln2xa = load i64** %Hp_Var
932%ln2xb = load i64* %R1_Var
933%ln2xc = load i64* %R2_Var
934%ln2xd = load i64* %R3_Var
935%ln2xe = load i64* %R4_Var
936%ln2xf = load i64* %R5_Var
937%ln2xg = load i64* %R6_Var
938%ln2xh = load i64* %SpLim_Var
939%ln2xi = load float* %F1_Var
940%ln2xj = load float* %F2_Var
941%ln2xk = load float* %F3_Var
942%ln2xl = load float* %F4_Var
943%ln2xm = load double* %D1_Var
944%ln2xn = load double* %D2_Var
945tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @Main_main1_info( i64* %ln2x8, i64* %ln2x9, i64* %ln2xa, i64 %ln2xb, i64 %ln2xc, i64 %ln2xd, i64 %ln2xe, i64 %ln2xf, i64 %ln2xg, i64 %ln2xh, float %ln2xi, float %ln2xj, float %ln2xk, float %ln2xl, double %ln2xm, double %ln2xn ) nounwind
946ret void
947}
948%Main_main2_info_struct = type <{i64, i64, i64, i64}>
949@Main_main2_info_itable =  constant %Main_main2_info_struct<{i64 add (i64 sub (i64 ptrtoint (%Main_main2_srt_struct* @Main_main2_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main2_info to i64)),i64 0), i64 4294967299, i64 0, i64 12884901903}>, section "X98A__STRIP,__me17", align 8
950define  cc 10 void @Main_main2_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me18"
951{
952c2xK:
953%Base_Var = alloca i64*, i32 1
954store i64* %Base_Arg, i64** %Base_Var
955%Sp_Var = alloca i64*, i32 1
956store i64* %Sp_Arg, i64** %Sp_Var
957%Hp_Var = alloca i64*, i32 1
958store i64* %Hp_Arg, i64** %Hp_Var
959%R1_Var = alloca i64, i32 1
960store i64 %R1_Arg, i64* %R1_Var
961%R2_Var = alloca i64, i32 1
962store i64 %R2_Arg, i64* %R2_Var
963%R3_Var = alloca i64, i32 1
964store i64 %R3_Arg, i64* %R3_Var
965%R4_Var = alloca i64, i32 1
966store i64 %R4_Arg, i64* %R4_Var
967%R5_Var = alloca i64, i32 1
968store i64 %R5_Arg, i64* %R5_Var
969%R6_Var = alloca i64, i32 1
970store i64 %R6_Arg, i64* %R6_Var
971%SpLim_Var = alloca i64, i32 1
972store i64 %SpLim_Arg, i64* %SpLim_Var
973%F1_Var = alloca float, i32 1
974store float %F1_Arg, float* %F1_Var
975%F2_Var = alloca float, i32 1
976store float %F2_Arg, float* %F2_Var
977%F3_Var = alloca float, i32 1
978store float %F3_Arg, float* %F3_Var
979%F4_Var = alloca float, i32 1
980store float %F4_Arg, float* %F4_Var
981%D1_Var = alloca double, i32 1
982store double %D1_Arg, double* %D1_Var
983%D2_Var = alloca double, i32 1
984store double %D2_Arg, double* %D2_Var
985%ln2xL = ptrtoint %Main_main1_closure_struct* @Main_main1_closure to i64
986%ln2xM = add i64 %ln2xL, 1
987store i64 %ln2xM, i64* %R2_Var
988%ln2xN = load i64** %Base_Var
989%ln2xO = load i64** %Sp_Var
990%ln2xP = load i64** %Hp_Var
991%ln2xQ = load i64* %R1_Var
992%ln2xR = load i64* %R2_Var
993%ln2xS = load i64* %R3_Var
994%ln2xT = load i64* %R4_Var
995%ln2xU = load i64* %R5_Var
996%ln2xV = load i64* %R6_Var
997%ln2xW = load i64* %SpLim_Var
998%ln2xX = load float* %F1_Var
999%ln2xY = load float* %F2_Var
1000%ln2xZ = load float* %F3_Var
1001%ln2y0 = load float* %F4_Var
1002%ln2y1 = load double* %D1_Var
1003%ln2y2 = load double* %D2_Var
1004tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @base_GHCziTopHandler_runMainIO1_info( i64* %ln2xN, i64* %ln2xO, i64* %ln2xP, i64 %ln2xQ, i64 %ln2xR, i64 %ln2xS, i64 %ln2xT, i64 %ln2xU, i64 %ln2xV, i64 %ln2xW, float %ln2xX, float %ln2xY, float %ln2xZ, float %ln2y0, double %ln2y1, double %ln2y2 ) nounwind
1005ret void
1006}
1007declare  cc 10 void @base_GHCziTopHandler_runMainIO1_info(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
1008%ZCMain_main_info_struct = type <{i64, i64, i64, i64}>
1009@ZCMain_main_info_itable =  constant %ZCMain_main_info_struct<{i64 add (i64 sub (i64 ptrtoint (%ZCMain_main_srt_struct* @ZCMain_main_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @ZCMain_main_info to i64)),i64 0), i64 4294967299, i64 0, i64 4294967311}>, section "X98A__STRIP,__me19", align 8
1010define  cc 10 void @ZCMain_main_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me20"
1011{
1012c2yn:
1013%Base_Var = alloca i64*, i32 1
1014store i64* %Base_Arg, i64** %Base_Var
1015%Sp_Var = alloca i64*, i32 1
1016store i64* %Sp_Arg, i64** %Sp_Var
1017%Hp_Var = alloca i64*, i32 1
1018store i64* %Hp_Arg, i64** %Hp_Var
1019%R1_Var = alloca i64, i32 1
1020store i64 %R1_Arg, i64* %R1_Var
1021%R2_Var = alloca i64, i32 1
1022store i64 %R2_Arg, i64* %R2_Var
1023%R3_Var = alloca i64, i32 1
1024store i64 %R3_Arg, i64* %R3_Var
1025%R4_Var = alloca i64, i32 1
1026store i64 %R4_Arg, i64* %R4_Var
1027%R5_Var = alloca i64, i32 1
1028store i64 %R5_Arg, i64* %R5_Var
1029%R6_Var = alloca i64, i32 1
1030store i64 %R6_Arg, i64* %R6_Var
1031%SpLim_Var = alloca i64, i32 1
1032store i64 %SpLim_Arg, i64* %SpLim_Var
1033%F1_Var = alloca float, i32 1
1034store float %F1_Arg, float* %F1_Var
1035%F2_Var = alloca float, i32 1
1036store float %F2_Arg, float* %F2_Var
1037%F3_Var = alloca float, i32 1
1038store float %F3_Arg, float* %F3_Var
1039%F4_Var = alloca float, i32 1
1040store float %F4_Arg, float* %F4_Var
1041%D1_Var = alloca double, i32 1
1042store double %D1_Arg, double* %D1_Var
1043%D2_Var = alloca double, i32 1
1044store double %D2_Arg, double* %D2_Var
1045%ln2yo = load i64** %Base_Var
1046%ln2yp = load i64** %Sp_Var
1047%ln2yq = load i64** %Hp_Var
1048%ln2yr = load i64* %R1_Var
1049%ln2ys = load i64* %R2_Var
1050%ln2yt = load i64* %R3_Var
1051%ln2yu = load i64* %R4_Var
1052%ln2yv = load i64* %R5_Var
1053%ln2yw = load i64* %R6_Var
1054%ln2yx = load i64* %SpLim_Var
1055%ln2yy = load float* %F1_Var
1056%ln2yz = load float* %F2_Var
1057%ln2yA = load float* %F3_Var
1058%ln2yB = load float* %F4_Var
1059%ln2yC = load double* %D1_Var
1060%ln2yD = load double* %D2_Var
1061tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @Main_main2_info( i64* %ln2yo, i64* %ln2yp, i64* %ln2yq, i64 %ln2yr, i64 %ln2ys, i64 %ln2yt, i64 %ln2yu, i64 %ln2yv, i64 %ln2yw, i64 %ln2yx, float %ln2yy, float %ln2yz, float %ln2yA, float %ln2yB, double %ln2yC, double %ln2yD ) nounwind
1062ret void
1063}
1064@llvm.used = appending global [4 x i8*] [i8* bitcast (%s2h3_ret_struct* @s2h3_info_itable to i8*), i8* bitcast (%s2hK_ret_struct* @s2hK_info_itable to i8*), i8* bitcast (%s2hL_ret_struct* @s2hL_info_itable to i8*), i8* bitcast (%s2ho_info_struct* @s2ho_info_itable to i8*)], section "llvm.metadata"