Skip to content

Instantly share code, notes, and snippets.

@zefciu
Created March 5, 2014 12:11
Show Gist options
  • Save zefciu/9366017 to your computer and use it in GitHub Desktop.
Save zefciu/9366017 to your computer and use it in GitHub Desktop.
target 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"
target triple = "x86_64-linux-gnu"
declare ccc i8* @memcpy(i8*, i8*, i64)
declare ccc i8* @memmove(i8*, i8*, i64)
declare ccc i8* @memset(i8*, i64, i64)
declare ccc i64 @newSpark(i8*, i8*)
!0 = metadata !{metadata !"top"}
!1 = metadata !{metadata !"stack",metadata !0}
!2 = metadata !{metadata !"heap",metadata !0}
!3 = metadata !{metadata !"rx",metadata !2}
!4 = metadata !{metadata !"base",metadata !0}
!5 = metadata !{metadata !"other",metadata !0}
%__stginit_Main_struct = type <{}>
@__stginit_Main = global %__stginit_Main_struct<{}>
%siv_srt_struct = type <{i64}>
@siv_srt = internal constant %siv_srt_struct<{i64 ptrtoint ([0 x i64]* @ghczmprim_GHCziCString_unpackCStringzh_closure to i64)}>
@ghczmprim_GHCziCString_unpackCStringzh_closure = external global [0 x i64]
%siv_closure_struct = type <{i64, i64, i64, i64}>
@siv_closure = internal global %siv_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @siv_info to i64), i64 0, i64 0, i64 0}>
%ciH_str_struct = type <{[13 x i8]}>
@ciH_str = internal constant %ciH_str_struct<{[13 x i8] [i8 72, i8 101, i8 108, i8 108, i8 111, i8 32, i8 119, i8 111, i8 114, i8 108, i8 100, i8 33, i8 0]}>
%Main_main_srt_struct = type <{i64, i64}>
@Main_main_srt = internal constant %Main_main_srt_struct<{i64 ptrtoint ([0 x i64]* @base_SystemziIO_putStrLn_closure to i64), i64 ptrtoint (%siv_closure_struct* @siv_closure to i64)}>
@base_SystemziIO_putStrLn_closure = external global [0 x i64]
%Main_main_closure_struct = type <{i64, i64, i64, i64}>
@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, i64 0, i64 0}>
%ZCMain_main_srt_struct = type <{i64, i64}>
@ZCMain_main_srt = internal constant %ZCMain_main_srt_struct<{i64 ptrtoint ([0 x i64]* @base_GHCziTopHandler_runMainIO_closure to i64), i64 ptrtoint (%Main_main_closure_struct* @Main_main_closure to i64)}>
@base_GHCziTopHandler_runMainIO_closure = external global [0 x i64]
%ZCMain_main_closure_struct = type <{i64, i64, i64, i64}>
@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, i64 0, i64 0}>
%siv_info_struct = type <{i64, i64, i64}>
@siv_info_itable = internal constant %siv_info_struct<{i64 add (i64 sub (i64 ptrtoint (%siv_srt_struct* @siv_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @siv_info to i64)),i64 0), i64 0, i64 4294967318}>, section "X98A__STRIP,__me1", align 8
define internal cc 10 void @siv_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"
{
ck4:
%Base_Var = alloca i64*, i32 1
store i64* %Base_Arg, i64** %Base_Var
%Sp_Var = alloca i64*, i32 1
store i64* %Sp_Arg, i64** %Sp_Var
%Hp_Var = alloca i64*, i32 1
store i64* %Hp_Arg, i64** %Hp_Var
%R1_Var = alloca i64, i32 1
store i64 %R1_Arg, i64* %R1_Var
%R2_Var = alloca i64, i32 1
store i64 %R2_Arg, i64* %R2_Var
%R3_Var = alloca i64, i32 1
store i64 %R3_Arg, i64* %R3_Var
%R4_Var = alloca i64, i32 1
store i64 %R4_Arg, i64* %R4_Var
%R5_Var = alloca i64, i32 1
store i64 %R5_Arg, i64* %R5_Var
%R6_Var = alloca i64, i32 1
store i64 %R6_Arg, i64* %R6_Var
%SpLim_Var = alloca i64, i32 1
store i64 %SpLim_Arg, i64* %SpLim_Var
%F1_Var = alloca float, i32 1
store float %F1_Arg, float* %F1_Var
%F2_Var = alloca float, i32 1
store float %F2_Arg, float* %F2_Var
%F3_Var = alloca float, i32 1
store float %F3_Arg, float* %F3_Var
%F4_Var = alloca float, i32 1
store float %F4_Arg, float* %F4_Var
%D1_Var = alloca double, i32 1
store double %D1_Arg, double* %D1_Var
%D2_Var = alloca double, i32 1
store double %D2_Arg, double* %D2_Var
%lcji = alloca i64, i32 1
%lnk5 = load i64** %Sp_Var
%lnk6 = getelementptr inbounds i64* %lnk5, i32 -2
%lnk7 = ptrtoint i64* %lnk6 to i64
%lnk8 = load i64* %SpLim_Var
%lnk9 = icmp ult i64 %lnk7, %lnk8
br i1 %lnk9, label %ckb, label %nkc
nkc:
%lnkd = load i64** %Hp_Var
%lnke = getelementptr inbounds i64* %lnkd, i32 2
%lnkf = ptrtoint i64* %lnke to i64
%lnkg = inttoptr i64 %lnkf to i64*
store i64* %lnkg, i64** %Hp_Var
%lnkh = load i64** %Hp_Var
%lnki = ptrtoint i64* %lnkh to i64
%lnkj = load i64** %Base_Var
%lnkk = getelementptr inbounds i64* %lnkj, i32 18
%lnkl = bitcast i64* %lnkk to i64*
%lnkm = load i64* %lnkl, !tbaa !4
%lnkn = icmp ugt i64 %lnki, %lnkm
br i1 %lnkn, label %ckp, label %nkq
nkq:
%lnkr = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64
%lnks = load i64** %Hp_Var
%lnkt = getelementptr inbounds i64* %lnks, i32 -1
store i64 %lnkr, i64* %lnkt, !tbaa !2
%lnku = load i64** %Base_Var
%lnkv = getelementptr inbounds i64* %lnku, i32 20
%lnkw = bitcast i64* %lnkv to i64*
%lnkx = load i64* %lnkw, !tbaa !4
%lnky = load i64** %Hp_Var
%lnkz = getelementptr inbounds i64* %lnky, i32 0
store i64 %lnkx, i64* %lnkz, !tbaa !2
%lnkA = load i64** %Base_Var
%lnkB = ptrtoint i64* %lnkA to i64
%lnkC = inttoptr i64 %lnkB to i8*
%lnkD = load i64* %R1_Var
%lnkE = inttoptr i64 %lnkD to i8*
%lnkF = load i64** %Hp_Var
%lnkG = getelementptr inbounds i64* %lnkF, i32 -1
%lnkH = ptrtoint i64* %lnkG to i64
%lnkI = inttoptr i64 %lnkH to i8*
store i64 undef, i64* %R3_Var
store i64 undef, i64* %R4_Var
store i64 undef, i64* %R5_Var
store i64 undef, i64* %R6_Var
store float undef, float* %F1_Var
store float undef, float* %F2_Var
store float undef, float* %F3_Var
store float undef, float* %F4_Var
store double undef, double* %D1_Var
store double undef, double* %D2_Var
%lnkJ = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnkC, i8* %lnkE, i8* %lnkI ) nounwind
store i64 %lnkJ, i64* %lcji
%lnkK = load i64* %lcji
%lnkL = icmp eq i64 %lnkK, 0
br i1 %lnkL, label %ckM, label %nkN
nkN:
br label %ckO
ckb:
%lnkP = load i64** %Base_Var
%lnkQ = getelementptr inbounds i64* %lnkP, i32 -2
%lnkR = bitcast i64* %lnkQ to i64*
%lnkS = load i64* %lnkR, !tbaa !4
%lnkT = inttoptr i64 %lnkS to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
%lnkU = load i64** %Base_Var
%lnkV = load i64** %Sp_Var
%lnkW = load i64** %Hp_Var
%lnkX = load i64* %R1_Var
%lnkY = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnkT( i64* %lnkU, i64* %lnkV, i64* %lnkW, i64 %lnkX, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnkY, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
ckp:
%lnkZ = load i64** %Base_Var
%lnl0 = getelementptr inbounds i64* %lnkZ, i32 24
store i64 16, i64* %lnl0, !tbaa !4
br label %ckb
ckM:
%lnl1 = load i64* %R1_Var
%lnl2 = inttoptr i64 %lnl1 to i64*
%lnl3 = load i64* %lnl2, !tbaa !3
%lnl4 = inttoptr i64 %lnl3 to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
%lnl5 = load i64** %Base_Var
%lnl6 = load i64** %Sp_Var
%lnl7 = load i64** %Hp_Var
%lnl8 = load i64* %R1_Var
%lnl9 = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnl4( i64* %lnl5, i64* %lnl6, i64* %lnl7, i64 %lnl8, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnl9, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
ckO:
%lnla = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64
%lnlb = load i64** %Sp_Var
%lnlc = getelementptr inbounds i64* %lnlb, i32 -2
store i64 %lnla, i64* %lnlc, !tbaa !1
%lnld = load i64** %Hp_Var
%lnle = getelementptr inbounds i64* %lnld, i32 -1
%lnlf = ptrtoint i64* %lnle to i64
%lnlg = load i64** %Sp_Var
%lnlh = getelementptr inbounds i64* %lnlg, i32 -1
store i64 %lnlf, i64* %lnlh, !tbaa !1
%lnli = ptrtoint [0 x i64]* @ghczmprim_GHCziCString_unpackCStringzh_closure to i64
store i64 %lnli, i64* %R1_Var
%lnlj = ptrtoint %ciH_str_struct* @ciH_str to i64
store i64 %lnlj, i64* %R2_Var
%lnlk = load i64** %Sp_Var
%lnll = getelementptr inbounds i64* %lnlk, i32 -2
%lnlm = ptrtoint i64* %lnll to i64
%lnln = inttoptr i64 %lnlm to i64*
store i64* %lnln, i64** %Sp_Var
%lnlo = load i64** %Base_Var
%lnlp = load i64** %Sp_Var
%lnlq = load i64** %Hp_Var
%lnlr = load i64* %R1_Var
%lnls = load i64* %R2_Var
%lnlt = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_ap_n_fast( i64* %lnlo, i64* %lnlp, i64* %lnlq, i64 %lnlr, i64 %lnls, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnlt, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
}
@stg_CAF_BLACKHOLE_info = external global [0 x i64]
declare ccc i64 @newCAF(i8*, i8*, i8*) align 8
@stg_bh_upd_frame_info = external global [0 x i64]
declare cc 10 void @stg_ap_n_fast(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
%Main_main_info_struct = type <{i64, i64, i64}>
@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 0, i64 12884901910}>, section "X98A__STRIP,__me3", align 8
define 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,__me4"
{
cmW:
%Base_Var = alloca i64*, i32 1
store i64* %Base_Arg, i64** %Base_Var
%Sp_Var = alloca i64*, i32 1
store i64* %Sp_Arg, i64** %Sp_Var
%Hp_Var = alloca i64*, i32 1
store i64* %Hp_Arg, i64** %Hp_Var
%R1_Var = alloca i64, i32 1
store i64 %R1_Arg, i64* %R1_Var
%R2_Var = alloca i64, i32 1
store i64 %R2_Arg, i64* %R2_Var
%R3_Var = alloca i64, i32 1
store i64 %R3_Arg, i64* %R3_Var
%R4_Var = alloca i64, i32 1
store i64 %R4_Arg, i64* %R4_Var
%R5_Var = alloca i64, i32 1
store i64 %R5_Arg, i64* %R5_Var
%R6_Var = alloca i64, i32 1
store i64 %R6_Arg, i64* %R6_Var
%SpLim_Var = alloca i64, i32 1
store i64 %SpLim_Arg, i64* %SpLim_Var
%F1_Var = alloca float, i32 1
store float %F1_Arg, float* %F1_Var
%F2_Var = alloca float, i32 1
store float %F2_Arg, float* %F2_Var
%F3_Var = alloca float, i32 1
store float %F3_Arg, float* %F3_Var
%F4_Var = alloca float, i32 1
store float %F4_Arg, float* %F4_Var
%D1_Var = alloca double, i32 1
store double %D1_Arg, double* %D1_Var
%D2_Var = alloca double, i32 1
store double %D2_Arg, double* %D2_Var
%lcm8 = alloca i64, i32 1
%lnmX = load i64** %Sp_Var
%lnmY = getelementptr inbounds i64* %lnmX, i32 -2
%lnmZ = ptrtoint i64* %lnmY to i64
%lnn0 = load i64* %SpLim_Var
%lnn1 = icmp ult i64 %lnmZ, %lnn0
br i1 %lnn1, label %cn3, label %nn4
nn4:
%lnn5 = load i64** %Hp_Var
%lnn6 = getelementptr inbounds i64* %lnn5, i32 2
%lnn7 = ptrtoint i64* %lnn6 to i64
%lnn8 = inttoptr i64 %lnn7 to i64*
store i64* %lnn8, i64** %Hp_Var
%lnn9 = load i64** %Hp_Var
%lnna = ptrtoint i64* %lnn9 to i64
%lnnb = load i64** %Base_Var
%lnnc = getelementptr inbounds i64* %lnnb, i32 18
%lnnd = bitcast i64* %lnnc to i64*
%lnne = load i64* %lnnd, !tbaa !4
%lnnf = icmp ugt i64 %lnna, %lnne
br i1 %lnnf, label %cnh, label %nni
nni:
%lnnj = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64
%lnnk = load i64** %Hp_Var
%lnnl = getelementptr inbounds i64* %lnnk, i32 -1
store i64 %lnnj, i64* %lnnl, !tbaa !2
%lnnm = load i64** %Base_Var
%lnnn = getelementptr inbounds i64* %lnnm, i32 20
%lnno = bitcast i64* %lnnn to i64*
%lnnp = load i64* %lnno, !tbaa !4
%lnnq = load i64** %Hp_Var
%lnnr = getelementptr inbounds i64* %lnnq, i32 0
store i64 %lnnp, i64* %lnnr, !tbaa !2
%lnns = load i64** %Base_Var
%lnnt = ptrtoint i64* %lnns to i64
%lnnu = inttoptr i64 %lnnt to i8*
%lnnv = load i64* %R1_Var
%lnnw = inttoptr i64 %lnnv to i8*
%lnnx = load i64** %Hp_Var
%lnny = getelementptr inbounds i64* %lnnx, i32 -1
%lnnz = ptrtoint i64* %lnny to i64
%lnnA = inttoptr i64 %lnnz to i8*
store i64 undef, i64* %R3_Var
store i64 undef, i64* %R4_Var
store i64 undef, i64* %R5_Var
store i64 undef, i64* %R6_Var
store float undef, float* %F1_Var
store float undef, float* %F2_Var
store float undef, float* %F3_Var
store float undef, float* %F4_Var
store double undef, double* %D1_Var
store double undef, double* %D2_Var
%lnnB = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnnu, i8* %lnnw, i8* %lnnA ) nounwind
store i64 %lnnB, i64* %lcm8
%lnnC = load i64* %lcm8
%lnnD = icmp eq i64 %lnnC, 0
br i1 %lnnD, label %cnE, label %nnF
nnF:
br label %cnG
cn3:
%lnnH = load i64** %Base_Var
%lnnI = getelementptr inbounds i64* %lnnH, i32 -2
%lnnJ = bitcast i64* %lnnI to i64*
%lnnK = load i64* %lnnJ, !tbaa !4
%lnnL = inttoptr i64 %lnnK to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
%lnnM = load i64** %Base_Var
%lnnN = load i64** %Sp_Var
%lnnO = load i64** %Hp_Var
%lnnP = load i64* %R1_Var
%lnnQ = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnnL( i64* %lnnM, i64* %lnnN, i64* %lnnO, i64 %lnnP, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnnQ, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
cnh:
%lnnR = load i64** %Base_Var
%lnnS = getelementptr inbounds i64* %lnnR, i32 24
store i64 16, i64* %lnnS, !tbaa !4
br label %cn3
cnE:
%lnnT = load i64* %R1_Var
%lnnU = inttoptr i64 %lnnT to i64*
%lnnV = load i64* %lnnU, !tbaa !3
%lnnW = inttoptr i64 %lnnV to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
%lnnX = load i64** %Base_Var
%lnnY = load i64** %Sp_Var
%lnnZ = load i64** %Hp_Var
%lno0 = load i64* %R1_Var
%lno1 = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnnW( i64* %lnnX, i64* %lnnY, i64* %lnnZ, i64 %lno0, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lno1, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
cnG:
%lno2 = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64
%lno3 = load i64** %Sp_Var
%lno4 = getelementptr inbounds i64* %lno3, i32 -2
store i64 %lno2, i64* %lno4, !tbaa !1
%lno5 = load i64** %Hp_Var
%lno6 = getelementptr inbounds i64* %lno5, i32 -1
%lno7 = ptrtoint i64* %lno6 to i64
%lno8 = load i64** %Sp_Var
%lno9 = getelementptr inbounds i64* %lno8, i32 -1
store i64 %lno7, i64* %lno9, !tbaa !1
%lnoa = ptrtoint [0 x i64]* @base_SystemziIO_putStrLn_closure to i64
store i64 %lnoa, i64* %R1_Var
%lnob = ptrtoint %siv_closure_struct* @siv_closure to i64
store i64 %lnob, i64* %R2_Var
%lnoc = load i64** %Sp_Var
%lnod = getelementptr inbounds i64* %lnoc, i32 -2
%lnoe = ptrtoint i64* %lnod to i64
%lnof = inttoptr i64 %lnoe to i64*
store i64* %lnof, i64** %Sp_Var
%lnog = load i64** %Base_Var
%lnoh = load i64** %Sp_Var
%lnoi = load i64** %Hp_Var
%lnoj = load i64* %R1_Var
%lnok = load i64* %R2_Var
%lnol = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_ap_p_fast( i64* %lnog, i64* %lnoh, i64* %lnoi, i64 %lnoj, i64 %lnok, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnol, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
}
declare cc 10 void @stg_ap_p_fast(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8
%ZCMain_main_info_struct = type <{i64, i64, i64}>
@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 0, i64 12884901910}>, section "X98A__STRIP,__me5", align 8
define 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,__me6"
{
cpO:
%Base_Var = alloca i64*, i32 1
store i64* %Base_Arg, i64** %Base_Var
%Sp_Var = alloca i64*, i32 1
store i64* %Sp_Arg, i64** %Sp_Var
%Hp_Var = alloca i64*, i32 1
store i64* %Hp_Arg, i64** %Hp_Var
%R1_Var = alloca i64, i32 1
store i64 %R1_Arg, i64* %R1_Var
%R2_Var = alloca i64, i32 1
store i64 %R2_Arg, i64* %R2_Var
%R3_Var = alloca i64, i32 1
store i64 %R3_Arg, i64* %R3_Var
%R4_Var = alloca i64, i32 1
store i64 %R4_Arg, i64* %R4_Var
%R5_Var = alloca i64, i32 1
store i64 %R5_Arg, i64* %R5_Var
%R6_Var = alloca i64, i32 1
store i64 %R6_Arg, i64* %R6_Var
%SpLim_Var = alloca i64, i32 1
store i64 %SpLim_Arg, i64* %SpLim_Var
%F1_Var = alloca float, i32 1
store float %F1_Arg, float* %F1_Var
%F2_Var = alloca float, i32 1
store float %F2_Arg, float* %F2_Var
%F3_Var = alloca float, i32 1
store float %F3_Arg, float* %F3_Var
%F4_Var = alloca float, i32 1
store float %F4_Arg, float* %F4_Var
%D1_Var = alloca double, i32 1
store double %D1_Arg, double* %D1_Var
%D2_Var = alloca double, i32 1
store double %D2_Arg, double* %D2_Var
%lcp0 = alloca i64, i32 1
%lnpP = load i64** %Sp_Var
%lnpQ = getelementptr inbounds i64* %lnpP, i32 -2
%lnpR = ptrtoint i64* %lnpQ to i64
%lnpS = load i64* %SpLim_Var
%lnpT = icmp ult i64 %lnpR, %lnpS
br i1 %lnpT, label %cpV, label %npW
npW:
%lnpX = load i64** %Hp_Var
%lnpY = getelementptr inbounds i64* %lnpX, i32 2
%lnpZ = ptrtoint i64* %lnpY to i64
%lnq0 = inttoptr i64 %lnpZ to i64*
store i64* %lnq0, i64** %Hp_Var
%lnq1 = load i64** %Hp_Var
%lnq2 = ptrtoint i64* %lnq1 to i64
%lnq3 = load i64** %Base_Var
%lnq4 = getelementptr inbounds i64* %lnq3, i32 18
%lnq5 = bitcast i64* %lnq4 to i64*
%lnq6 = load i64* %lnq5, !tbaa !4
%lnq7 = icmp ugt i64 %lnq2, %lnq6
br i1 %lnq7, label %cq9, label %nqa
nqa:
%lnqb = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64
%lnqc = load i64** %Hp_Var
%lnqd = getelementptr inbounds i64* %lnqc, i32 -1
store i64 %lnqb, i64* %lnqd, !tbaa !2
%lnqe = load i64** %Base_Var
%lnqf = getelementptr inbounds i64* %lnqe, i32 20
%lnqg = bitcast i64* %lnqf to i64*
%lnqh = load i64* %lnqg, !tbaa !4
%lnqi = load i64** %Hp_Var
%lnqj = getelementptr inbounds i64* %lnqi, i32 0
store i64 %lnqh, i64* %lnqj, !tbaa !2
%lnqk = load i64** %Base_Var
%lnql = ptrtoint i64* %lnqk to i64
%lnqm = inttoptr i64 %lnql to i8*
%lnqn = load i64* %R1_Var
%lnqo = inttoptr i64 %lnqn to i8*
%lnqp = load i64** %Hp_Var
%lnqq = getelementptr inbounds i64* %lnqp, i32 -1
%lnqr = ptrtoint i64* %lnqq to i64
%lnqs = inttoptr i64 %lnqr to i8*
store i64 undef, i64* %R3_Var
store i64 undef, i64* %R4_Var
store i64 undef, i64* %R5_Var
store i64 undef, i64* %R6_Var
store float undef, float* %F1_Var
store float undef, float* %F2_Var
store float undef, float* %F3_Var
store float undef, float* %F4_Var
store double undef, double* %D1_Var
store double undef, double* %D2_Var
%lnqt = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnqm, i8* %lnqo, i8* %lnqs ) nounwind
store i64 %lnqt, i64* %lcp0
%lnqu = load i64* %lcp0
%lnqv = icmp eq i64 %lnqu, 0
br i1 %lnqv, label %cqw, label %nqx
nqx:
br label %cqy
cpV:
%lnqz = load i64** %Base_Var
%lnqA = getelementptr inbounds i64* %lnqz, i32 -2
%lnqB = bitcast i64* %lnqA to i64*
%lnqC = load i64* %lnqB, !tbaa !4
%lnqD = inttoptr i64 %lnqC to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
%lnqE = load i64** %Base_Var
%lnqF = load i64** %Sp_Var
%lnqG = load i64** %Hp_Var
%lnqH = load i64* %R1_Var
%lnqI = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnqD( i64* %lnqE, i64* %lnqF, i64* %lnqG, i64 %lnqH, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnqI, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
cq9:
%lnqJ = load i64** %Base_Var
%lnqK = getelementptr inbounds i64* %lnqJ, i32 24
store i64 16, i64* %lnqK, !tbaa !4
br label %cpV
cqw:
%lnqL = load i64* %R1_Var
%lnqM = inttoptr i64 %lnqL to i64*
%lnqN = load i64* %lnqM, !tbaa !3
%lnqO = inttoptr i64 %lnqN to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)*
%lnqP = load i64** %Base_Var
%lnqQ = load i64** %Sp_Var
%lnqR = load i64** %Hp_Var
%lnqS = load i64* %R1_Var
%lnqT = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnqO( i64* %lnqP, i64* %lnqQ, i64* %lnqR, i64 %lnqS, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnqT, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
cqy:
%lnqU = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64
%lnqV = load i64** %Sp_Var
%lnqW = getelementptr inbounds i64* %lnqV, i32 -2
store i64 %lnqU, i64* %lnqW, !tbaa !1
%lnqX = load i64** %Hp_Var
%lnqY = getelementptr inbounds i64* %lnqX, i32 -1
%lnqZ = ptrtoint i64* %lnqY to i64
%lnr0 = load i64** %Sp_Var
%lnr1 = getelementptr inbounds i64* %lnr0, i32 -1
store i64 %lnqZ, i64* %lnr1, !tbaa !1
%lnr2 = ptrtoint [0 x i64]* @base_GHCziTopHandler_runMainIO_closure to i64
store i64 %lnr2, i64* %R1_Var
%lnr3 = ptrtoint %Main_main_closure_struct* @Main_main_closure to i64
store i64 %lnr3, i64* %R2_Var
%lnr4 = load i64** %Sp_Var
%lnr5 = getelementptr inbounds i64* %lnr4, i32 -2
%lnr6 = ptrtoint i64* %lnr5 to i64
%lnr7 = inttoptr i64 %lnr6 to i64*
store i64* %lnr7, i64** %Sp_Var
%lnr8 = load i64** %Base_Var
%lnr9 = load i64** %Sp_Var
%lnra = load i64** %Hp_Var
%lnrb = load i64* %R1_Var
%lnrc = load i64* %R2_Var
%lnrd = load i64* %SpLim_Var
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_ap_p_fast( i64* %lnr8, i64* %lnr9, i64* %lnra, i64 %lnrb, i64 %lnrc, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnrd, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind
ret void
}
@llvm.used = appending global [1 x i8*] [i8* bitcast (%siv_info_struct* @siv_info_itable to i8*)], section "llvm.metadata"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment