@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN10TypesUtils9admitEqTyE=external local_unnamed_addr global i8*
@_SMLZN5Types10arrayTypIdE=external local_unnamed_addr global i32
@_SMLZN5Types8refTypIdE=external local_unnamed_addr global i32
@_SMLZ5Match=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[16x i8]}><{[4x i8]zeroinitializer,i32 -2147483632,[16x i8]c"CheckEq.Eqcheck\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[16x i8]}>,<{[4x i8],i32,[16x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL60=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@b,i32 0,i32 0,i32 0),i32 8)}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,[54x i8]}><{[4x i8]zeroinitializer,i32 -2147483594,[54x i8]c"src/compiler/data/types/main/CheckEq.sml:127.19(4237)\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL60,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@c,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,[54x i8]}><{[4x i8]zeroinitializer,i32 -2147483594,[54x i8]c"src/compiler/data/types/main/CheckEq.sml:126.61(4210)\00"}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL60,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@e,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[53x i8]}><{[4x i8]zeroinitializer,i32 -2147483595,[53x i8]c"src/compiler/data/types/main/CheckEq.sml:69.30(1977)\00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL60,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[53x i8]}>,<{[4x i8],i32,[53x i8]}>*@g,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[53x i8]}><{[4x i8]zeroinitializer,i32 -2147483595,[53x i8]c"src/compiler/data/types/main/CheckEq.sml:88.30(2669)\00"}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL60,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[53x i8]}>,<{[4x i8],i32,[53x i8]}>*@i,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,[52x i8]}><{[4x i8]zeroinitializer,i32 -2147483596,[52x i8]c"src/compiler/data/types/main/CheckEq.sml:38.11(865)\00"}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[51x i8]}><{[4x i8]zeroinitializer,i32 -2147483597,[51x i8]c"src/compiler/data/types/main/CheckEq.sml:29.8(579)\00"}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(void(i8*)*@_SMLLN7CheckEq7checkEqE_91 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN7CheckEq7checkEqE_103 to void(...)*),i32 -2147483647}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[54x i8]}><{[4x i8]zeroinitializer,i32 -2147483594,[54x i8]c"src/compiler/data/types/main/CheckEq.sml:110.19(3599)\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL60,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@n,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(void(i8*)*@_SMLLN7CheckEq7checkEqE_95 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN7CheckEq7checkEqE_104 to void(...)*),i32 -2147483647}>,align 8
@q=private unnamed_addr constant<{[4x i8],i32,[54x i8]}><{[4x i8]zeroinitializer,i32 -2147483594,[54x i8]c"src/compiler/data/types/main/CheckEq.sml:121.69(4006)\00"}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,i8*,i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL60,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@q,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@s=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(void(i8*)*@_SMLLN7CheckEq7checkEqE_99 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN7CheckEq7checkEqE_105 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN7CheckEq7EqcheckE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL60,i64 0,i32 2)to i8*)
@t=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(void(i8*)*@_SMLFN7CheckEq7checkEqE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN7CheckEq7checkEqE_107 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN7CheckEq7checkEqE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@t,i64 0,i32 2)to i8*)
@_SML_ftab2c3d006468d49bc7_CheckEq=external global i8
@u=private unnamed_addr global i8 0
declare void@llvm.gcroot(i8**,i8*)#0
declare i8*@sml_alloc(i32 inreg)local_unnamed_addr#0
declare void@sml_check(i32 inreg)local_unnamed_addr
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare void@sml_matchcomp_bug()local_unnamed_addr
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare void@sml_write(i8*inreg,i8**inreg,i8*inreg)local_unnamed_addr#0
declare i32@_SMLFN10TypesUtils9admitEqTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel3Map5foldrE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN14BoundTypeVarID3Map3appE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List3appE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List6filterE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN5TypID2eqE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5Types12isPropertiesE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5Types13addPropertiesE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main60e750412e2bb4fe_RecordLabel()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main7374574ddb619c6a_LocalID()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main606b245a3d2b48d6_Types_ppg()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main386790e57f54b6d3_TypesUtils()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load60e750412e2bb4fe_RecordLabel(i8*)local_unnamed_addr
declare void@_SML_load7374574ddb619c6a_LocalID(i8*)local_unnamed_addr
declare void@_SML_load606b245a3d2b48d6_Types_ppg(i8*)local_unnamed_addr
declare void@_SML_load386790e57f54b6d3_TypesUtils(i8*)local_unnamed_addr
define private void@_SML_tabb2c3d006468d49bc7_CheckEq()#3{
unreachable
}
define void@_SML_load2c3d006468d49bc7_CheckEq(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@u,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@u,align 1
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load60e750412e2bb4fe_RecordLabel(i8*%a)#0
tail call void@_SML_load7374574ddb619c6a_LocalID(i8*%a)#0
tail call void@_SML_load606b245a3d2b48d6_Types_ppg(i8*%a)#0
tail call void@_SML_load386790e57f54b6d3_TypesUtils(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabb2c3d006468d49bc7_CheckEq,i8*@_SML_ftab2c3d006468d49bc7_CheckEq,i8*null)#0
ret void
}
define void@_SML_main2c3d006468d49bc7_CheckEq()local_unnamed_addr#2 gc"smlsharp"{
%a=load i8,i8*@u,align 1
%b=and i8%a,2
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 3,i8*@u,align 1
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main60e750412e2bb4fe_RecordLabel()#2
tail call void@_SML_main7374574ddb619c6a_LocalID()#2
tail call void@_SML_main606b245a3d2b48d6_Types_ppg()#2
tail call void@_SML_main386790e57f54b6d3_TypesUtils()#2
br label%d
}
define internal fastcc void@_SMLLN7CheckEq7checkEqE_91(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%e,label%g
e:
%f=bitcast i8*%a to i8**
br label%j
g:
call void@sml_check(i32 inreg%c)
%h=bitcast i8**%b to i8***
%i=load i8**,i8***%h,align 8
br label%j
j:
%k=phi i8**[%i,%g],[%f,%e]
%l=load i8*,i8**%k,align 8
tail call fastcc void@_SMLLN7CheckEq7checkEqE_61(i8*inreg%l)
ret void
}
define internal fastcc void@_SMLLN7CheckEq7checkEqE_95(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
tail call fastcc void@_SMLLN7CheckEq7checkEqE_61(i8*inreg%h)
ret void
}
define internal fastcc void@_SMLLN7CheckEq7checkEqE_99(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%f,label%e
e:
call void@sml_check(i32 inreg%c)
br label%f
f:
%g=call fastcc i8*@_SMLFN5Types12isPropertiesE(i32 inreg 1)
%h=getelementptr inbounds i8,i8*%g,i64 16
%i=bitcast i8*%h to i8*(i8*,i8*)**
%j=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%i,align 8
%k=bitcast i8*%g to i8**
%l=load i8*,i8**%k,align 8
%m=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%n=getelementptr inbounds i8,i8*%m,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=call fastcc i8*%j(i8*inreg%l,i8*inreg%p)
%r=bitcast i8*%q to i32*
%s=load i32,i32*%r,align 4
%t=icmp eq i32%s,0
br i1%t,label%v,label%u
u:
ret void
v:
%w=call i8*@sml_alloc(i32 inreg 60)#0
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177336,i32*%y,align 4
%z=getelementptr inbounds i8,i8*%w,i64 56
%A=bitcast i8*%z to i32*
store i32 1,i32*%A,align 4
%B=bitcast i8*%w to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@r,i64 0,i32 2)to i8*),i8**%B,align 8
call void@sml_raise(i8*inreg%w)#1
unreachable
}
define internal fastcc void@_SMLLN7CheckEq7checkEqE_61(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
k:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
%h=bitcast i8**%b to i8***
br label%i
i:
%j=phi i8*[%Z,%X],[%a,%k]
store i8*%j,i8**%b,align 8
%l=load atomic i32,i32*@sml_check_flag unordered,align 4
%m=icmp eq i32%l,0
br i1%m,label%p,label%n
n:
call void@sml_check(i32 inreg%l)
%o=load i8*,i8**%b,align 8
br label%p
p:
%q=phi i8*[%o,%n],[%j,%i]
%r=call fastcc i32@_SMLFN10TypesUtils9admitEqTyE(i8*inreg%q)
%s=icmp eq i32%r,0
br i1%s,label%u,label%t
t:
ret void
u:
%v=load i8*,i8**%b,align 8
%w=icmp eq i8*%v,null
br i1%w,label%A,label%x
x:
%y=bitcast i8*%v to i32*
%z=load i32,i32*%y,align 4
switch i32%z,label%A[
i32 3,label%iO
i32 10,label%bE
i32 1,label%t
i32 8,label%bb
i32 2,label%aa
i32 7,label%B
]
A:
store i8*null,i8**%b,align 8
br label%jg
B:
%C=getelementptr inbounds i8,i8*%v,i64 8
%D=bitcast i8*%C to i8**
%E=load i8*,i8**%D,align 8
store i8*%E,i8**%b,align 8
%F=call fastcc i8*@_SMLFN14BoundTypeVarID3Map3appE(i32 inreg 1,i32 inreg 8)
%G=getelementptr inbounds i8,i8*%F,i64 16
%H=bitcast i8*%G to i8*(i8*,i8*)**
%I=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%H,align 8
%J=bitcast i8*%F to i8**
%K=load i8*,i8**%J,align 8
%L=call fastcc i8*%I(i8*inreg%K,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@s,i64 0,i32 2)to i8*))
%M=getelementptr inbounds i8,i8*%L,i64 16
%N=bitcast i8*%M to i8*(i8*,i8*)**
%O=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%N,align 8
%P=bitcast i8*%L to i8**
%Q=load i8*,i8**%P,align 8
%R=load i8*,i8**%b,align 8
%S=getelementptr inbounds i8,i8*%R,i64 8
%T=bitcast i8*%S to i8**
%U=load i8*,i8**%T,align 8
%V=call fastcc i8*%O(i8*inreg%Q,i8*inreg%U)
%W=load i8**,i8***%h,align 8
store i8*null,i8**%b,align 8
br label%X
X:
%Y=phi i8**[%W,%B],[%b6,%b4]
%Z=load i8*,i8**%Y,align 8
br label%i
aa:
%ab=getelementptr inbounds i8,i8*%v,i64 8
%ac=bitcast i8*%ab to i8**
%ad=load i8*,i8**%ac,align 8
store i8*%ad,i8**%b,align 8
%ae=getelementptr inbounds i8,i8*%ad,i64 8
%af=bitcast i8*%ae to i8**
%ag=load i8*,i8**%af,align 8
%ah=getelementptr inbounds i8,i8*%ag,i64 40
%ai=bitcast i8*%ah to i32*
%aj=load i32,i32*%ai,align 4
%ak=load i32,i32*@_SMLZN5Types10arrayTypIdE,align 4
%al=call i8*@sml_alloc(i32 inreg 12)#0
%am=bitcast i8*%al to i32*
%an=getelementptr inbounds i8,i8*%al,i64 -4
%ao=bitcast i8*%an to i32*
store i32 1342177288,i32*%ao,align 4
store i32%aj,i32*%am,align 4
%ap=getelementptr inbounds i8,i8*%al,i64 4
%aq=bitcast i8*%ap to i32*
store i32%ak,i32*%aq,align 4
%ar=getelementptr inbounds i8,i8*%al,i64 8
%as=bitcast i8*%ar to i32*
store i32 0,i32*%as,align 4
%at=call fastcc i32@_SMLFN5TypID2eqE(i8*inreg%al)
%au=icmp eq i32%at,0
br i1%au,label%av,label%t
av:
%aw=load i32,i32*@_SMLZN5Types8refTypIdE,align 4
%ax=call i8*@sml_alloc(i32 inreg 12)#0
%ay=bitcast i8*%ax to i32*
%az=getelementptr inbounds i8,i8*%ax,i64 -4
%aA=bitcast i8*%az to i32*
store i32 1342177288,i32*%aA,align 4
store i32%aj,i32*%ay,align 4
%aB=getelementptr inbounds i8,i8*%ax,i64 4
%aC=bitcast i8*%aB to i32*
store i32%aw,i32*%aC,align 4
%aD=getelementptr inbounds i8,i8*%ax,i64 8
%aE=bitcast i8*%aD to i32*
store i32 0,i32*%aE,align 4
%aF=call fastcc i32@_SMLFN5TypID2eqE(i8*inreg%ax)
%aG=icmp eq i32%aF,0
br i1%aG,label%aH,label%t
aH:
%aI=load i8*,i8**%b,align 8
%aJ=getelementptr inbounds i8,i8*%aI,i64 8
%aK=bitcast i8*%aJ to i32**
%aL=load i32*,i32**%aK,align 8
%aM=load i32,i32*%aL,align 4
%aN=icmp eq i32%aM,0
br i1%aN,label%a4,label%aO
aO:
%aP=call fastcc i8*@_SMLFN4List3appE(i32 inreg 1,i32 inreg 8)
%aQ=getelementptr inbounds i8,i8*%aP,i64 16
%aR=bitcast i8*%aQ to i8*(i8*,i8*)**
%aS=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aR,align 8
%aT=bitcast i8*%aP to i8**
%aU=load i8*,i8**%aT,align 8
%aV=call fastcc i8*%aS(i8*inreg%aU,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@p,i64 0,i32 2)to i8*))
%aW=getelementptr inbounds i8,i8*%aV,i64 16
%aX=bitcast i8*%aW to i8*(i8*,i8*)**
%aY=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aX,align 8
%aZ=bitcast i8*%aV to i8**
%a0=load i8*,i8**%aZ,align 8
%a1=load i8**,i8***%h,align 8
store i8*null,i8**%b,align 8
%a2=load i8*,i8**%a1,align 8
%a3=call fastcc i8*%aY(i8*inreg%a0,i8*inreg%a2)
ret void
a4:
store i8*null,i8**%b,align 8
%a5=call i8*@sml_alloc(i32 inreg 60)#0
%a6=getelementptr inbounds i8,i8*%a5,i64 -4
%a7=bitcast i8*%a6 to i32*
store i32 1342177336,i32*%a7,align 4
%a8=getelementptr inbounds i8,i8*%a5,i64 56
%a9=bitcast i8*%a8 to i32*
store i32 1,i32*%a9,align 4
%ba=bitcast i8*%a5 to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@o,i64 0,i32 2)to i8*),i8**%ba,align 8
call void@sml_raise(i8*inreg%a5)#1
unreachable
bb:
%bc=getelementptr inbounds i8,i8*%v,i64 8
%bd=bitcast i8*%bc to i8**
%be=load i8*,i8**%bd,align 8
store i8*%be,i8**%b,align 8
%bf=call fastcc i8*@_SMLFN11RecordLabel3Map5foldrE(i32 inreg 1,i32 inreg 8,i32 inreg 0,i32 inreg 4)
%bg=getelementptr inbounds i8,i8*%bf,i64 16
%bh=bitcast i8*%bg to i8*(i8*,i8*)**
%bi=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bh,align 8
%bj=bitcast i8*%bf to i8**
%bk=load i8*,i8**%bj,align 8
%bl=call fastcc i8*%bi(i8*inreg%bk,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@m,i64 0,i32 2)to i8*))
%bm=getelementptr inbounds i8,i8*%bl,i64 16
%bn=bitcast i8*%bm to i8*(i8*,i8*)**
%bo=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bn,align 8
%bp=bitcast i8*%bl to i8**
%bq=load i8*,i8**%bp,align 8
store i8*%bq,i8**%c,align 8
%br=call i8*@sml_alloc(i32 inreg 4)#0
%bs=bitcast i8*%br to i32*
%bt=getelementptr inbounds i8,i8*%br,i64 -4
%bu=bitcast i8*%bt to i32*
store i32 4,i32*%bu,align 4
store i32 0,i32*%bs,align 4
%bv=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bw=call fastcc i8*%bo(i8*inreg%bv,i8*inreg%br)
%bx=getelementptr inbounds i8,i8*%bw,i64 16
%by=bitcast i8*%bx to i8*(i8*,i8*)**
%bz=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%by,align 8
%bA=bitcast i8*%bw to i8**
%bB=load i8*,i8**%bA,align 8
%bC=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bD=call fastcc i8*%bz(i8*inreg%bB,i8*inreg%bC)
ret void
bE:
%bF=getelementptr inbounds i8,i8*%v,i64 8
%bG=bitcast i8*%bF to i8**
%bH=load i8*,i8**%bG,align 8
store i8*%bH,i8**%d,align 8
%bI=bitcast i8*%bH to i8**
%bJ=load i8*,i8**%bI,align 8
%bK=bitcast i8*%bJ to i32*
%bL=load i32,i32*%bK,align 4
switch i32%bL,label%bM[
i32 1,label%b7
i32 0,label%b4
]
bM:
store i8*null,i8**%d,align 8
call void@sml_matchcomp_bug()
%bN=load i8*,i8**@_SMLZ5Match,align 8
store i8*%bN,i8**%b,align 8
%bO=call i8*@sml_alloc(i32 inreg 20)#0
%bP=getelementptr inbounds i8,i8*%bO,i64 -4
%bQ=bitcast i8*%bP to i32*
store i32 1342177296,i32*%bQ,align 4
store i8*%bO,i8**%c,align 8
%bR=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bS=bitcast i8*%bO to i8**
store i8*%bR,i8**%bS,align 8
%bT=getelementptr inbounds i8,i8*%bO,i64 8
%bU=bitcast i8*%bT to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[51x i8]}>,<{[4x i8],i32,[51x i8]}>*@l,i64 0,i32 2,i64 0),i8**%bU,align 8
%bV=getelementptr inbounds i8,i8*%bO,i64 16
%bW=bitcast i8*%bV to i32*
store i32 3,i32*%bW,align 4
%bX=call i8*@sml_alloc(i32 inreg 60)#0
%bY=getelementptr inbounds i8,i8*%bX,i64 -4
%bZ=bitcast i8*%bY to i32*
store i32 1342177336,i32*%bZ,align 4
%b0=getelementptr inbounds i8,i8*%bX,i64 56
%b1=bitcast i8*%b0 to i32*
store i32 1,i32*%b1,align 4
%b2=load i8*,i8**%c,align 8
%b3=bitcast i8*%bX to i8**
store i8*%b2,i8**%b3,align 8
call void@sml_raise(i8*inreg%bX)#1
unreachable
b4:
store i8*null,i8**%d,align 8
%b5=getelementptr inbounds i8,i8*%bJ,i64 8
%b6=bitcast i8*%b5 to i8**
br label%X
b7:
%b8=getelementptr inbounds i8,i8*%bJ,i64 8
%b9=bitcast i8*%b8 to i8**
%ca=load i8*,i8**%b9,align 8
%cb=bitcast i8*%ca to i32*
%cc=load i32,i32*%cb,align 4
%cd=getelementptr inbounds i8,i8*%ca,i64 8
%ce=bitcast i8*%cd to i8**
%cf=load i8*,i8**%ce,align 8
store i8*%cf,i8**%g,align 8
%cg=bitcast i8*%cf to i8**
%ch=load i8*,i8**%cg,align 8
store i8*%ch,i8**%e,align 8
%ci=getelementptr inbounds i8,i8*%cf,i64 16
%cj=bitcast i8*%ci to i8**
%ck=load i8*,i8**%cj,align 8
store i8*%ck,i8**%c,align 8
%cl=getelementptr inbounds i8,i8*%ca,i64 16
%cm=bitcast i8*%cl to i32*
%cn=load i32,i32*%cm,align 4
%co=getelementptr inbounds i8,i8*%ca,i64 24
%cp=bitcast i8*%co to i8**
%cq=load i8*,i8**%cp,align 8
%cr=icmp eq i8*%cq,null
br i1%cr,label%cs,label%iN
cs:
%ct=icmp eq i8*%ck,null
br i1%ct,label%d8,label%cu
cu:
%cv=bitcast i8*%ck to i32*
%cw=load i32,i32*%cv,align 4
switch i32%cw,label%cx[
i32 0,label%g8
i32 1,label%fd
i32 3,label%d8
i32 2,label%cP
]
cx:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%g,align 8
call void@sml_matchcomp_bug()
%cy=load i8*,i8**@_SMLZ5Match,align 8
store i8*%cy,i8**%b,align 8
%cz=call i8*@sml_alloc(i32 inreg 20)#0
%cA=getelementptr inbounds i8,i8*%cz,i64 -4
%cB=bitcast i8*%cA to i32*
store i32 1342177296,i32*%cB,align 4
store i8*%cz,i8**%c,align 8
%cC=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%cD=bitcast i8*%cz to i8**
store i8*%cC,i8**%cD,align 8
%cE=getelementptr inbounds i8,i8*%cz,i64 8
%cF=bitcast i8*%cE to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[52x i8]}>,<{[4x i8],i32,[52x i8]}>*@k,i64 0,i32 2,i64 0),i8**%cF,align 8
%cG=getelementptr inbounds i8,i8*%cz,i64 16
%cH=bitcast i8*%cG to i32*
store i32 3,i32*%cH,align 4
%cI=call i8*@sml_alloc(i32 inreg 60)#0
%cJ=getelementptr inbounds i8,i8*%cI,i64 -4
%cK=bitcast i8*%cJ to i32*
store i32 1342177336,i32*%cK,align 4
%cL=getelementptr inbounds i8,i8*%cI,i64 56
%cM=bitcast i8*%cL to i32*
store i32 1,i32*%cM,align 4
%cN=load i8*,i8**%c,align 8
%cO=bitcast i8*%cI to i8**
store i8*%cN,i8**%cO,align 8
call void@sml_raise(i8*inreg%cI)#1
unreachable
cP:
%cQ=getelementptr inbounds i8,i8*%ck,i64 8
%cR=bitcast i8*%cQ to i8**
%cS=load i8*,i8**%cR,align 8
store i8*%cS,i8**%b,align 8
%cT=call i8*@sml_alloc(i32 inreg 20)#0
%cU=bitcast i8*%cT to i32*
%cV=getelementptr inbounds i8,i8*%cT,i64 -4
%cW=bitcast i8*%cV to i32*
store i32 1342177296,i32*%cW,align 4
%cX=getelementptr inbounds i8,i8*%cT,i64 4
%cY=bitcast i8*%cX to i32*
store i32 0,i32*%cY,align 1
store i32 8,i32*%cU,align 4
%cZ=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%c0=getelementptr inbounds i8,i8*%cT,i64 8
%c1=bitcast i8*%c0 to i8**
store i8*%cZ,i8**%c1,align 8
%c2=getelementptr inbounds i8,i8*%cT,i64 16
%c3=bitcast i8*%c2 to i32*
store i32 2,i32*%c3,align 4
call fastcc void@_SMLLN7CheckEq7checkEqE_61(i8*inreg%cT)
%c4=call fastcc i8*@_SMLFN5Types13addPropertiesE(i32 inreg 1)
%c5=getelementptr inbounds i8,i8*%c4,i64 16
%c6=bitcast i8*%c5 to i8*(i8*,i8*)**
%c7=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%c6,align 8
%c8=bitcast i8*%c4 to i8**
%c9=load i8*,i8**%c8,align 8
%da=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%db=getelementptr inbounds i8,i8*%da,i64 8
%dc=bitcast i8*%db to i8**
%dd=load i8*,i8**%dc,align 8
%de=call fastcc i8*%c7(i8*inreg%c9,i8*inreg%dd)
store i8*%de,i8**%b,align 8
%df=call i8*@sml_alloc(i32 inreg 28)#0
%dg=getelementptr inbounds i8,i8*%df,i64 -4
%dh=bitcast i8*%dg to i32*
store i32 1342177304,i32*%dh,align 4
store i8*%df,i8**%f,align 8
%di=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dj=bitcast i8*%df to i8**
store i8*%di,i8**%dj,align 8
%dk=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%dl=getelementptr inbounds i8,i8*%df,i64 8
%dm=bitcast i8*%dl to i8**
store i8*%dk,i8**%dm,align 8
%dn=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%do=getelementptr inbounds i8,i8*%df,i64 16
%dp=bitcast i8*%do to i8**
store i8*%dn,i8**%dp,align 8
%dq=getelementptr inbounds i8,i8*%df,i64 24
%dr=bitcast i8*%dq to i32*
store i32 7,i32*%dr,align 4
%ds=call i8*@sml_alloc(i32 inreg 36)#0
%dt=bitcast i8*%ds to i32*
%du=getelementptr inbounds i8,i8*%ds,i64 -4
%dv=bitcast i8*%du to i32*
store i32 1342177312,i32*%dv,align 4
%dw=getelementptr inbounds i8,i8*%ds,i64 4
call void@llvm.memset.p0i8.i32(i8*%dw,i8 0,i32 20,i1 false)
store i32%cc,i32*%dt,align 4
%dx=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%dy=getelementptr inbounds i8,i8*%ds,i64 8
%dz=bitcast i8*%dy to i8**
store i8*%dx,i8**%dz,align 8
%dA=getelementptr inbounds i8,i8*%ds,i64 16
%dB=bitcast i8*%dA to i32*
store i32%cn,i32*%dB,align 4
%dC=getelementptr inbounds i8,i8*%ds,i64 24
%dD=bitcast i8*%dC to i8**
store i8*null,i8**%dD,align 8
%dE=getelementptr inbounds i8,i8*%ds,i64 32
%dF=bitcast i8*%dE to i32*
store i32 10,i32*%dF,align 4
store i8*%dx,i8**%b,align 8
store i8*null,i8**%c,align 8
%dG=call i8*@sml_alloc(i32 inreg 36)#0
%dH=getelementptr inbounds i8,i8*%dG,i64 -4
%dI=bitcast i8*%dH to i32*
store i32 1342177312,i32*%dI,align 4
store i8*%dG,i8**%e,align 8
%dJ=getelementptr inbounds i8,i8*%dG,i64 4
call void@llvm.memset.p0i8.i32(i8*%dJ,i8 0,i32 20,i1 false)
%dK=bitcast i8*%dG to i32*
store i32%cc,i32*%dK,align 4
%dL=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%dM=getelementptr inbounds i8,i8*%dG,i64 8
%dN=bitcast i8*%dM to i8**
store i8*%dL,i8**%dN,align 8
%dO=getelementptr inbounds i8,i8*%dG,i64 16
%dP=bitcast i8*%dO to i32*
store i32%cn,i32*%dP,align 4
%dQ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dR=getelementptr inbounds i8,i8*%dG,i64 24
%dS=bitcast i8*%dR to i8**
store i8*%dQ,i8**%dS,align 8
%dT=getelementptr inbounds i8,i8*%dG,i64 32
%dU=bitcast i8*%dT to i32*
store i32 10,i32*%dU,align 4
%dV=call i8*@sml_alloc(i32 inreg 20)#0
%dW=bitcast i8*%dV to i32*
%dX=getelementptr inbounds i8,i8*%dV,i64 -4
%dY=bitcast i8*%dX to i32*
store i32 1342177296,i32*%dY,align 4
%dZ=getelementptr inbounds i8,i8*%dV,i64 4
%d0=bitcast i8*%dZ to i32*
store i32 0,i32*%d0,align 1
store i32 1,i32*%dW,align 4
%d1=load i8*,i8**%e,align 8
%d2=getelementptr inbounds i8,i8*%dV,i64 8
%d3=bitcast i8*%d2 to i8**
store i8*%d1,i8**%d3,align 8
%d4=getelementptr inbounds i8,i8*%dV,i64 16
%d5=bitcast i8*%d4 to i32*
store i32 2,i32*%d5,align 4
%d6=load i8*,i8**%d,align 8
%d7=bitcast i8*%d6 to i8**
call void@sml_write(i8*inreg%d6,i8**inreg%d7,i8*inreg%dV)#0
ret void
d8:
%d9=call fastcc i8*@_SMLFN5Types13addPropertiesE(i32 inreg 1)
%ea=getelementptr inbounds i8,i8*%d9,i64 16
%eb=bitcast i8*%ea to i8*(i8*,i8*)**
%ec=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%eb,align 8
%ed=bitcast i8*%d9 to i8**
%ee=load i8*,i8**%ed,align 8
%ef=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%eg=getelementptr inbounds i8,i8*%ef,i64 8
%eh=bitcast i8*%eg to i8**
%ei=load i8*,i8**%eh,align 8
%ej=call fastcc i8*%ec(i8*inreg%ee,i8*inreg%ei)
store i8*%ej,i8**%b,align 8
%ek=call i8*@sml_alloc(i32 inreg 28)#0
%el=getelementptr inbounds i8,i8*%ek,i64 -4
%em=bitcast i8*%el to i32*
store i32 1342177304,i32*%em,align 4
store i8*%ek,i8**%f,align 8
%en=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%eo=bitcast i8*%ek to i8**
store i8*%en,i8**%eo,align 8
%ep=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%eq=getelementptr inbounds i8,i8*%ek,i64 8
%er=bitcast i8*%eq to i8**
store i8*%ep,i8**%er,align 8
%es=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%et=getelementptr inbounds i8,i8*%ek,i64 16
%eu=bitcast i8*%et to i8**
store i8*%es,i8**%eu,align 8
%ev=getelementptr inbounds i8,i8*%ek,i64 24
%ew=bitcast i8*%ev to i32*
store i32 7,i32*%ew,align 4
%ex=call i8*@sml_alloc(i32 inreg 36)#0
%ey=bitcast i8*%ex to i32*
%ez=getelementptr inbounds i8,i8*%ex,i64 -4
%eA=bitcast i8*%ez to i32*
store i32 1342177312,i32*%eA,align 4
%eB=getelementptr inbounds i8,i8*%ex,i64 4
call void@llvm.memset.p0i8.i32(i8*%eB,i8 0,i32 20,i1 false)
store i32%cc,i32*%ey,align 4
%eC=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%eD=getelementptr inbounds i8,i8*%ex,i64 8
%eE=bitcast i8*%eD to i8**
store i8*%eC,i8**%eE,align 8
%eF=getelementptr inbounds i8,i8*%ex,i64 16
%eG=bitcast i8*%eF to i32*
store i32%cn,i32*%eG,align 4
%eH=getelementptr inbounds i8,i8*%ex,i64 24
%eI=bitcast i8*%eH to i8**
store i8*null,i8**%eI,align 8
%eJ=getelementptr inbounds i8,i8*%ex,i64 32
%eK=bitcast i8*%eJ to i32*
store i32 10,i32*%eK,align 4
store i8*%eC,i8**%b,align 8
store i8*null,i8**%c,align 8
%eL=call i8*@sml_alloc(i32 inreg 36)#0
%eM=getelementptr inbounds i8,i8*%eL,i64 -4
%eN=bitcast i8*%eM to i32*
store i32 1342177312,i32*%eN,align 4
store i8*%eL,i8**%e,align 8
%eO=getelementptr inbounds i8,i8*%eL,i64 4
call void@llvm.memset.p0i8.i32(i8*%eO,i8 0,i32 20,i1 false)
%eP=bitcast i8*%eL to i32*
store i32%cc,i32*%eP,align 4
%eQ=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%eR=getelementptr inbounds i8,i8*%eL,i64 8
%eS=bitcast i8*%eR to i8**
store i8*%eQ,i8**%eS,align 8
%eT=getelementptr inbounds i8,i8*%eL,i64 16
%eU=bitcast i8*%eT to i32*
store i32%cn,i32*%eU,align 4
%eV=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%eW=getelementptr inbounds i8,i8*%eL,i64 24
%eX=bitcast i8*%eW to i8**
store i8*%eV,i8**%eX,align 8
%eY=getelementptr inbounds i8,i8*%eL,i64 32
%eZ=bitcast i8*%eY to i32*
store i32 10,i32*%eZ,align 4
%e0=call i8*@sml_alloc(i32 inreg 20)#0
%e1=bitcast i8*%e0 to i32*
%e2=getelementptr inbounds i8,i8*%e0,i64 -4
%e3=bitcast i8*%e2 to i32*
store i32 1342177296,i32*%e3,align 4
%e4=getelementptr inbounds i8,i8*%e0,i64 4
%e5=bitcast i8*%e4 to i32*
store i32 0,i32*%e5,align 1
store i32 1,i32*%e1,align 4
%e6=load i8*,i8**%e,align 8
%e7=getelementptr inbounds i8,i8*%e0,i64 8
%e8=bitcast i8*%e7 to i8**
store i8*%e6,i8**%e8,align 8
%e9=getelementptr inbounds i8,i8*%e0,i64 16
%fa=bitcast i8*%e9 to i32*
store i32 2,i32*%fa,align 4
%fb=load i8*,i8**%d,align 8
%fc=bitcast i8*%fb to i8**
call void@sml_write(i8*inreg%fb,i8**inreg%fc,i8*inreg%e0)#0
ret void
fd:
store i8*null,i8**%c,align 8
%fe=getelementptr inbounds i8,i8*%ck,i64 8
%ff=bitcast i8*%fe to i8**
%fg=load i8*,i8**%ff,align 8
store i8*%fg,i8**%b,align 8
%fh=getelementptr inbounds i8,i8*%fg,i64 8
%fi=bitcast i8*%fh to i8**
%fj=load i8*,i8**%fi,align 8
store i8*%fj,i8**%f,align 8
%fk=call fastcc i8*@_SMLFN4List6filterE(i32 inreg 1,i32 inreg 8)
%fl=getelementptr inbounds i8,i8*%fk,i64 16
%fm=bitcast i8*%fl to i8*(i8*,i8*)**
%fn=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%fm,align 8
%fo=bitcast i8*%fk to i8**
%fp=load i8*,i8**%fo,align 8
%fq=load i8*,i8**@_SMLZN10TypesUtils9admitEqTyE,align 8
%fr=call fastcc i8*%fn(i8*inreg%fp,i8*inreg%fq)
%fs=getelementptr inbounds i8,i8*%fr,i64 16
%ft=bitcast i8*%fs to i8*(i8*,i8*)**
%fu=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ft,align 8
%fv=bitcast i8*%fr to i8**
%fw=load i8*,i8**%fv,align 8
%fx=load i8**,i8***%h,align 8
store i8*null,i8**%b,align 8
%fy=load i8*,i8**%fx,align 8
%fz=call fastcc i8*%fu(i8*inreg%fw,i8*inreg%fy)
store i8*%fz,i8**%b,align 8
%fA=icmp eq i8*%fz,null
br i1%fA,label%fB,label%fI
fB:
store i8*null,i8**%b,align 8
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%g,align 8
%fC=call i8*@sml_alloc(i32 inreg 60)#0
%fD=getelementptr inbounds i8,i8*%fC,i64 -4
%fE=bitcast i8*%fD to i32*
store i32 1342177336,i32*%fE,align 4
%fF=getelementptr inbounds i8,i8*%fC,i64 56
%fG=bitcast i8*%fF to i32*
store i32 1,i32*%fG,align 4
%fH=bitcast i8*%fC to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@j,i64 0,i32 2)to i8*),i8**%fH,align 8
call void@sml_raise(i8*inreg%fC)#1
unreachable
fI:
%fJ=call fastcc i8*@_SMLFN5Types13addPropertiesE(i32 inreg 1)
%fK=getelementptr inbounds i8,i8*%fJ,i64 16
%fL=bitcast i8*%fK to i8*(i8*,i8*)**
%fM=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%fL,align 8
%fN=bitcast i8*%fJ to i8**
%fO=load i8*,i8**%fN,align 8
%fP=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%fQ=getelementptr inbounds i8,i8*%fP,i64 8
%fR=bitcast i8*%fQ to i8**
%fS=load i8*,i8**%fR,align 8
%fT=call fastcc i8*%fM(i8*inreg%fO,i8*inreg%fS)
store i8*%fT,i8**%c,align 8
%fU=call i8*@sml_alloc(i32 inreg 20)#0
%fV=getelementptr inbounds i8,i8*%fU,i64 -4
%fW=bitcast i8*%fV to i32*
store i32 1342177296,i32*%fW,align 4
store i8*%fU,i8**%g,align 8
%fX=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%fY=bitcast i8*%fU to i8**
store i8*%fX,i8**%fY,align 8
%fZ=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%f0=getelementptr inbounds i8,i8*%fU,i64 8
%f1=bitcast i8*%f0 to i8**
store i8*%fZ,i8**%f1,align 8
%f2=getelementptr inbounds i8,i8*%fU,i64 16
%f3=bitcast i8*%f2 to i32*
store i32 3,i32*%f3,align 4
%f4=call i8*@sml_alloc(i32 inreg 20)#0
%f5=getelementptr inbounds i8,i8*%f4,i64 -4
%f6=bitcast i8*%f5 to i32*
store i32 1342177296,i32*%f6,align 4
store i8*%f4,i8**%b,align 8
%f7=getelementptr inbounds i8,i8*%f4,i64 4
%f8=bitcast i8*%f7 to i32*
store i32 0,i32*%f8,align 1
%f9=bitcast i8*%f4 to i32*
store i32 1,i32*%f9,align 4
%ga=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%gb=getelementptr inbounds i8,i8*%f4,i64 8
%gc=bitcast i8*%gb to i8**
store i8*%ga,i8**%gc,align 8
%gd=getelementptr inbounds i8,i8*%f4,i64 16
%ge=bitcast i8*%gd to i32*
store i32 2,i32*%ge,align 4
%gf=call i8*@sml_alloc(i32 inreg 28)#0
%gg=getelementptr inbounds i8,i8*%gf,i64 -4
%gh=bitcast i8*%gg to i32*
store i32 1342177304,i32*%gh,align 4
store i8*%gf,i8**%f,align 8
%gi=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%gj=bitcast i8*%gf to i8**
store i8*%gi,i8**%gj,align 8
%gk=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%gl=getelementptr inbounds i8,i8*%gf,i64 8
%gm=bitcast i8*%gl to i8**
store i8*%gk,i8**%gm,align 8
%gn=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%go=getelementptr inbounds i8,i8*%gf,i64 16
%gp=bitcast i8*%go to i8**
store i8*%gn,i8**%gp,align 8
%gq=getelementptr inbounds i8,i8*%gf,i64 24
%gr=bitcast i8*%gq to i32*
store i32 7,i32*%gr,align 4
%gs=call i8*@sml_alloc(i32 inreg 36)#0
%gt=bitcast i8*%gs to i32*
%gu=getelementptr inbounds i8,i8*%gs,i64 -4
%gv=bitcast i8*%gu to i32*
store i32 1342177312,i32*%gv,align 4
%gw=getelementptr inbounds i8,i8*%gs,i64 4
call void@llvm.memset.p0i8.i32(i8*%gw,i8 0,i32 20,i1 false)
store i32%cc,i32*%gt,align 4
%gx=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%gy=getelementptr inbounds i8,i8*%gs,i64 8
%gz=bitcast i8*%gy to i8**
store i8*%gx,i8**%gz,align 8
%gA=getelementptr inbounds i8,i8*%gs,i64 16
%gB=bitcast i8*%gA to i32*
store i32%cn,i32*%gB,align 4
%gC=getelementptr inbounds i8,i8*%gs,i64 24
%gD=bitcast i8*%gC to i8**
store i8*null,i8**%gD,align 8
%gE=getelementptr inbounds i8,i8*%gs,i64 32
%gF=bitcast i8*%gE to i32*
store i32 10,i32*%gF,align 4
store i8*%gx,i8**%b,align 8
store i8*null,i8**%c,align 8
%gG=call i8*@sml_alloc(i32 inreg 36)#0
%gH=getelementptr inbounds i8,i8*%gG,i64 -4
%gI=bitcast i8*%gH to i32*
store i32 1342177312,i32*%gI,align 4
store i8*%gG,i8**%e,align 8
%gJ=getelementptr inbounds i8,i8*%gG,i64 4
call void@llvm.memset.p0i8.i32(i8*%gJ,i8 0,i32 20,i1 false)
%gK=bitcast i8*%gG to i32*
store i32%cc,i32*%gK,align 4
%gL=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%gM=getelementptr inbounds i8,i8*%gG,i64 8
%gN=bitcast i8*%gM to i8**
store i8*%gL,i8**%gN,align 8
%gO=getelementptr inbounds i8,i8*%gG,i64 16
%gP=bitcast i8*%gO to i32*
store i32%cn,i32*%gP,align 4
%gQ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%gR=getelementptr inbounds i8,i8*%gG,i64 24
%gS=bitcast i8*%gR to i8**
store i8*%gQ,i8**%gS,align 8
%gT=getelementptr inbounds i8,i8*%gG,i64 32
%gU=bitcast i8*%gT to i32*
store i32 10,i32*%gU,align 4
%gV=call i8*@sml_alloc(i32 inreg 20)#0
%gW=bitcast i8*%gV to i32*
%gX=getelementptr inbounds i8,i8*%gV,i64 -4
%gY=bitcast i8*%gX to i32*
store i32 1342177296,i32*%gY,align 4
%gZ=getelementptr inbounds i8,i8*%gV,i64 4
%g0=bitcast i8*%gZ to i32*
store i32 0,i32*%g0,align 1
store i32 1,i32*%gW,align 4
%g1=load i8*,i8**%e,align 8
%g2=getelementptr inbounds i8,i8*%gV,i64 8
%g3=bitcast i8*%g2 to i8**
store i8*%g1,i8**%g3,align 8
%g4=getelementptr inbounds i8,i8*%gV,i64 16
%g5=bitcast i8*%g4 to i32*
store i32 2,i32*%g5,align 4
%g6=load i8*,i8**%d,align 8
%g7=bitcast i8*%g6 to i8**
call void@sml_write(i8*inreg%g6,i8**inreg%g7,i8*inreg%gV)#0
ret void
g8:
store i8*null,i8**%c,align 8
%g9=getelementptr inbounds i8,i8*%ck,i64 8
%ha=bitcast i8*%g9 to i8**
%hb=load i8*,i8**%ha,align 8
store i8*%hb,i8**%b,align 8
%hc=call fastcc i8*@_SMLFN4List6filterE(i32 inreg 1,i32 inreg 8)
%hd=getelementptr inbounds i8,i8*%hc,i64 16
%he=bitcast i8*%hd to i8*(i8*,i8*)**
%hf=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%he,align 8
%hg=bitcast i8*%hc to i8**
%hh=load i8*,i8**%hg,align 8
%hi=load i8*,i8**@_SMLZN10TypesUtils9admitEqTyE,align 8
%hj=call fastcc i8*%hf(i8*inreg%hh,i8*inreg%hi)
%hk=getelementptr inbounds i8,i8*%hj,i64 16
%hl=bitcast i8*%hk to i8*(i8*,i8*)**
%hm=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%hl,align 8
%hn=bitcast i8*%hj to i8**
%ho=load i8*,i8**%hn,align 8
%hp=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%hq=call fastcc i8*%hm(i8*inreg%ho,i8*inreg%hp)
store i8*%hq,i8**%b,align 8
%hr=icmp eq i8*%hq,null
br i1%hr,label%hs,label%hz
hs:
store i8*null,i8**%b,align 8
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
%ht=call i8*@sml_alloc(i32 inreg 60)#0
%hu=getelementptr inbounds i8,i8*%ht,i64 -4
%hv=bitcast i8*%hu to i32*
store i32 1342177336,i32*%hv,align 4
%hw=getelementptr inbounds i8,i8*%ht,i64 56
%hx=bitcast i8*%hw to i32*
store i32 1,i32*%hx,align 4
%hy=bitcast i8*%ht to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@h,i64 0,i32 2)to i8*),i8**%hy,align 8
call void@sml_raise(i8*inreg%ht)#1
unreachable
hz:
%hA=call fastcc i8*@_SMLFN5Types13addPropertiesE(i32 inreg 1)
%hB=getelementptr inbounds i8,i8*%hA,i64 16
%hC=bitcast i8*%hB to i8*(i8*,i8*)**
%hD=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%hC,align 8
%hE=bitcast i8*%hA to i8**
%hF=load i8*,i8**%hE,align 8
%hG=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%hH=getelementptr inbounds i8,i8*%hG,i64 8
%hI=bitcast i8*%hH to i8**
%hJ=load i8*,i8**%hI,align 8
%hK=call fastcc i8*%hD(i8*inreg%hF,i8*inreg%hJ)
store i8*%hK,i8**%c,align 8
%hL=call i8*@sml_alloc(i32 inreg 20)#0
%hM=getelementptr inbounds i8,i8*%hL,i64 -4
%hN=bitcast i8*%hM to i32*
store i32 1342177296,i32*%hN,align 4
store i8*%hL,i8**%f,align 8
%hO=bitcast i8*%hL to i64*
store i64 0,i64*%hO,align 4
%hP=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%hQ=getelementptr inbounds i8,i8*%hL,i64 8
%hR=bitcast i8*%hQ to i8**
store i8*%hP,i8**%hR,align 8
%hS=getelementptr inbounds i8,i8*%hL,i64 16
%hT=bitcast i8*%hS to i32*
store i32 2,i32*%hT,align 4
%hU=call i8*@sml_alloc(i32 inreg 28)#0
%hV=getelementptr inbounds i8,i8*%hU,i64 -4
%hW=bitcast i8*%hV to i32*
store i32 1342177304,i32*%hW,align 4
store i8*%hU,i8**%b,align 8
%hX=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%hY=bitcast i8*%hU to i8**
store i8*%hX,i8**%hY,align 8
%hZ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%h0=getelementptr inbounds i8,i8*%hU,i64 8
%h1=bitcast i8*%h0 to i8**
store i8*%hZ,i8**%h1,align 8
%h2=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%h3=getelementptr inbounds i8,i8*%hU,i64 16
%h4=bitcast i8*%h3 to i8**
store i8*%h2,i8**%h4,align 8
%h5=getelementptr inbounds i8,i8*%hU,i64 24
%h6=bitcast i8*%h5 to i32*
store i32 7,i32*%h6,align 4
%h7=call i8*@sml_alloc(i32 inreg 36)#0
%h8=bitcast i8*%h7 to i32*
%h9=getelementptr inbounds i8,i8*%h7,i64 -4
%ia=bitcast i8*%h9 to i32*
store i32 1342177312,i32*%ia,align 4
%ib=getelementptr inbounds i8,i8*%h7,i64 4
call void@llvm.memset.p0i8.i32(i8*%ib,i8 0,i32 20,i1 false)
store i32%cc,i32*%h8,align 4
%ic=load i8*,i8**%b,align 8
%id=getelementptr inbounds i8,i8*%h7,i64 8
%ie=bitcast i8*%id to i8**
store i8*%ic,i8**%ie,align 8
%if=getelementptr inbounds i8,i8*%h7,i64 16
%ig=bitcast i8*%if to i32*
store i32%cn,i32*%ig,align 4
%ih=getelementptr inbounds i8,i8*%h7,i64 24
%ii=bitcast i8*%ih to i8**
store i8*null,i8**%ii,align 8
%ij=getelementptr inbounds i8,i8*%h7,i64 32
%ik=bitcast i8*%ij to i32*
store i32 10,i32*%ik,align 4
store i8*null,i8**%c,align 8
%il=call i8*@sml_alloc(i32 inreg 36)#0
%im=getelementptr inbounds i8,i8*%il,i64 -4
%in=bitcast i8*%im to i32*
store i32 1342177312,i32*%in,align 4
store i8*%il,i8**%e,align 8
%io=getelementptr inbounds i8,i8*%il,i64 4
call void@llvm.memset.p0i8.i32(i8*%io,i8 0,i32 20,i1 false)
%ip=bitcast i8*%il to i32*
store i32%cc,i32*%ip,align 4
%iq=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ir=getelementptr inbounds i8,i8*%il,i64 8
%is=bitcast i8*%ir to i8**
store i8*%iq,i8**%is,align 8
%it=getelementptr inbounds i8,i8*%il,i64 16
%iu=bitcast i8*%it to i32*
store i32%cn,i32*%iu,align 4
%iv=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%iw=getelementptr inbounds i8,i8*%il,i64 24
%ix=bitcast i8*%iw to i8**
store i8*%iv,i8**%ix,align 8
%iy=getelementptr inbounds i8,i8*%il,i64 32
%iz=bitcast i8*%iy to i32*
store i32 10,i32*%iz,align 4
%iA=call i8*@sml_alloc(i32 inreg 20)#0
%iB=bitcast i8*%iA to i32*
%iC=getelementptr inbounds i8,i8*%iA,i64 -4
%iD=bitcast i8*%iC to i32*
store i32 1342177296,i32*%iD,align 4
%iE=getelementptr inbounds i8,i8*%iA,i64 4
%iF=bitcast i8*%iE to i32*
store i32 0,i32*%iF,align 1
store i32 1,i32*%iB,align 4
%iG=load i8*,i8**%e,align 8
%iH=getelementptr inbounds i8,i8*%iA,i64 8
%iI=bitcast i8*%iH to i8**
store i8*%iG,i8**%iI,align 8
%iJ=getelementptr inbounds i8,i8*%iA,i64 16
%iK=bitcast i8*%iJ to i32*
store i32 2,i32*%iK,align 4
%iL=load i8*,i8**%d,align 8
%iM=bitcast i8*%iL to i8**
call void@sml_write(i8*inreg%iL,i8**inreg%iM,i8*inreg%iA)#0
ret void
iN:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%g,align 8
br label%jg
iO:
%iP=getelementptr inbounds i8,i8*%v,i64 8
%iQ=bitcast i8*%iP to i8**
%iR=load i8*,i8**%iQ,align 8
%iS=getelementptr inbounds i8,i8*%iR,i64 8
%iT=bitcast i8*%iS to i8**
%iU=load i8*,i8**%iT,align 8
store i8*%iU,i8**%b,align 8
%iV=call fastcc i8*@_SMLFN5Types12isPropertiesE(i32 inreg 1)
%iW=getelementptr inbounds i8,i8*%iV,i64 16
%iX=bitcast i8*%iW to i8*(i8*,i8*)**
%iY=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%iX,align 8
%iZ=bitcast i8*%iV to i8**
%i0=load i8*,i8**%iZ,align 8
%i1=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%i2=getelementptr inbounds i8,i8*%i1,i64 8
%i3=bitcast i8*%i2 to i8**
%i4=load i8*,i8**%i3,align 8
%i5=call fastcc i8*%iY(i8*inreg%i0,i8*inreg%i4)
%i6=bitcast i8*%i5 to i32*
%i7=load i32,i32*%i6,align 4
%i8=icmp eq i32%i7,0
br i1%i8,label%i9,label%t
i9:
%ja=call i8*@sml_alloc(i32 inreg 60)#0
%jb=getelementptr inbounds i8,i8*%ja,i64 -4
%jc=bitcast i8*%jb to i32*
store i32 1342177336,i32*%jc,align 4
%jd=getelementptr inbounds i8,i8*%ja,i64 56
%je=bitcast i8*%jd to i32*
store i32 1,i32*%je,align 4
%jf=bitcast i8*%ja to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@f,i64 0,i32 2)to i8*),i8**%jf,align 8
call void@sml_raise(i8*inreg%ja)#1
unreachable
jg:
%jh=call i8*@sml_alloc(i32 inreg 60)#0
%ji=getelementptr inbounds i8,i8*%jh,i64 -4
%jj=bitcast i8*%ji to i32*
store i32 1342177336,i32*%jj,align 4
%jk=getelementptr inbounds i8,i8*%jh,i64 56
%jl=bitcast i8*%jk to i32*
store i32 1,i32*%jl,align 4
%jm=bitcast i8*%jh to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@d,i64 0,i32 2)to i8*),i8**%jm,align 8
call void@sml_raise(i8*inreg%jh)#1
unreachable
}
define fastcc void@_SMLFN7CheckEq7checkEqE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
tail call fastcc void@_SMLLN7CheckEq7checkEqE_61(i8*inreg%h)
ret void
}
define internal fastcc i8*@_SMLLN7CheckEq7checkEqE_103(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
tail call fastcc void@_SMLLN7CheckEq7checkEqE_91(i8*inreg%b)
%c=tail call i8*@sml_alloc(i32 inreg 4)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
store i32 0,i32*%d,align 4
ret i8*%c
}
define internal fastcc i8*@_SMLLN7CheckEq7checkEqE_104(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
tail call fastcc void@_SMLLN7CheckEq7checkEqE_95(i8*inreg%b)
%c=tail call i8*@sml_alloc(i32 inreg 4)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
store i32 0,i32*%d,align 4
ret i8*%c
}
define internal fastcc i8*@_SMLLN7CheckEq7checkEqE_105(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
tail call fastcc void@_SMLLN7CheckEq7checkEqE_99(i8*inreg%b)
%c=tail call i8*@sml_alloc(i32 inreg 4)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
store i32 0,i32*%d,align 4
ret i8*%c
}
define internal fastcc i8*@_SMLLN7CheckEq7checkEqE_107(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
tail call fastcc void@_SMLFN7CheckEq7checkEqE(i8*inreg%b)
%c=tail call i8*@sml_alloc(i32 inreg 4)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
store i32 0,i32*%d,align 4
ret i8*%c
}
declare void@llvm.memset.p0i8.i32(i8*,i8,i32,i1)#0
attributes#0={nounwind}
attributes#1={noreturn}
attributes#2={uwtable}
attributes#3={noreturn nounwind}
