@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN13TyAlphaRename11emptyBtvMapE=external local_unnamed_addr global i8*
@_SMLZN3Bug3BugE=external local_unnamed_addr global i8*
@_SMLZ5Match=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[52x i8]}><{[4x i8]zeroinitializer,i32 -2147483596,[52x i8]c"src/compiler/data/types/main/TyReduce.sml:27.6(766)\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,[53x i8]}><{[4x i8]zeroinitializer,i32 -2147483595,[53x i8]c"src/compiler/data/types/main/TyReduce.sml:46.6(1398)\00"}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,[20x i8]}><{[4x i8]zeroinitializer,i32 -2147483628,[20x i8]c"TYVARty in Optimize\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,[53x i8]}><{[4x i8]zeroinitializer,i32 -2147483595,[53x i8]c"src/compiler/data/types/main/TyReduce.sml:15.14(325)\00"}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,[11x i8]}><{[4x i8]zeroinitializer,i32 -2147483637,[11x i8]c"TyReduce: \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,[11x i8]}>,<{[4x i8],i32,[11x i8]}>*@e,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[20x i8]}>,<{[4x i8],i32,[20x i8]}>*@c,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[54x i8]}><{[4x i8]zeroinitializer,i32 -2147483594,[54x i8]c"src/compiler/data/types/main/TyReduce.sml:110.6(4407)\00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 9,[4x i8]zeroinitializer,i32 0}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 10,[4x i8]zeroinitializer,i32 0}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 8,[4x i8]zeroinitializer,i32 0}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 7,[4x i8]zeroinitializer,i32 0}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[53x i8]}><{[4x i8]zeroinitializer,i32 -2147483595,[53x i8]c"src/compiler/data/types/main/TyReduce.sml:64.6(2095)\00"}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,[54x i8]}><{[4x i8]zeroinitializer,i32 -2147483594,[54x i8]c"src/compiler/data/types/main/TyReduce.sml:185.6(6895)\00"}>,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/TyReduce.sml:212.6(7737)\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,[54x i8]}><{[4x i8]zeroinitializer,i32 -2147483594,[54x i8]c"src/compiler/data/types/main/TyReduce.sml:220.6(8066)\00"}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce13evalOprimInfoE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalOprimInfoE_239 to void(...)*),i32 -2147483647}>,align 8
@q=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce11evalConInfoE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce11evalConInfoE_240 to void(...)*),i32 -2147483647}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce11evalExnInfoE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce11evalExnInfoE_241 to void(...)*),i32 -2147483647}>,align 8
@s=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce9evalTyVarE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce9evalTyVarE_242 to void(...)*),i32 -2147483647}>,align 8
@t=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce10evalBtvEnvE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce10evalBtvEnvE_245 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8TyReduce10evalBtvEnvE=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*)
@_SMLZN8TyReduce11evalConInfoE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@q,i64 0,i32 2)to i8*)
@u=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce13evalExExnInfoE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalExExnInfoE_246 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8TyReduce13evalExExnInfoE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@u,i64 0,i32 2)to i8*)
@v=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce13evalExVarInfoE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalExVarInfoE_247 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8TyReduce13evalExVarInfoE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@v,i64 0,i32 2)to i8*)
@_SMLZN8TyReduce11evalExnInfoE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@r,i64 0,i32 2)to i8*)
@_SMLZN8TyReduce13evalOprimInfoE=local_unnamed_addr constant i8*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*)
@w=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce12evalPrimInfoE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalPrimInfoE_248 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8TyReduce12evalPrimInfoE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@w,i64 0,i32 2)to i8*)
@x=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce14evalConstraintE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce14evalConstraintE_249 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8TyReduce14evalConstraintE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@x,i64 0,i32 2)to i8*)
@y=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8TyReduce6evalTyE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_250 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8TyReduce6evalTyE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@y,i64 0,i32 2)to i8*)
@_SMLZN8TyReduce9evalTyVarE=local_unnamed_addr constant i8*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*)
@_SML_gvar3e4fff06f451286b_TyReduce=private global<{[4x i8],i32,[1x i8*]}><{[4x i8]zeroinitializer,i32 -1342177272,[1x i8*]zeroinitializer}>,align 8
@z=private unnamed_addr global[2x i64][i64 1,i64 sub(i64 ptrtoint(i8**getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar3e4fff06f451286b_TyReduce,i32 0,i32 2,i32 0)to i64),i64 ptrtoint([2x i64]*@z to i64))]
@_SML_ftab3e4fff06f451286b_TyReduce=external global i8
@A=private unnamed_addr global i8 0
@_SMLZN8TyReduce11emptyBtvMapE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar3e4fff06f451286b_TyReduce,i32 0,i32 2,i32 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_end()local_unnamed_addr#0
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare void@sml_matchcomp_bug()local_unnamed_addr
declare i32@sml_personality(...)#0
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare void@sml_save_exn(i8*inreg)local_unnamed_addr#0
declare void@sml_start(i8*inreg)local_unnamed_addr#0
declare void@sml_write(i8*inreg,i8**inreg,i8*inreg)local_unnamed_addr#0
declare i8*@_SMLFN11RecordLabel3Map3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11TypesBasics7derefTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN13TyAlphaRename6copyTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN14BoundTypeVarID3Map3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN14BoundTypeVarID3Map4findE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN14BoundTypeVarID3Map5emptyE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5TypID3Map3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Option3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String1_ZE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main7aa263535439ee1c_ListPair()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main3a60343781315c1e_Option()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main1ef93e13728790b1_String()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main60e750412e2bb4fe_RecordLabel()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maineaa0aca8fbe4101a_Bug()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main7374574ddb619c6a_LocalID()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maine133fb70fb05a962_TyAlphaRename()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main2aaf2b808f82ee2e_TypesBasics()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load7aa263535439ee1c_ListPair(i8*)local_unnamed_addr
declare void@_SML_load3a60343781315c1e_Option(i8*)local_unnamed_addr
declare void@_SML_load1ef93e13728790b1_String(i8*)local_unnamed_addr
declare void@_SML_load60e750412e2bb4fe_RecordLabel(i8*)local_unnamed_addr
declare void@_SML_loadeaa0aca8fbe4101a_Bug(i8*)local_unnamed_addr
declare void@_SML_load7374574ddb619c6a_LocalID(i8*)local_unnamed_addr
declare void@_SML_loade133fb70fb05a962_TyAlphaRename(i8*)local_unnamed_addr
declare void@_SML_load2aaf2b808f82ee2e_TypesBasics(i8*)local_unnamed_addr
define private void@_SML_tabb3e4fff06f451286b_TyReduce()#3{
unreachable
}
define void@_SML_load3e4fff06f451286b_TyReduce(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@A,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@A,align 1
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load7aa263535439ee1c_ListPair(i8*%a)#0
tail call void@_SML_load3a60343781315c1e_Option(i8*%a)#0
tail call void@_SML_load1ef93e13728790b1_String(i8*%a)#0
tail call void@_SML_load60e750412e2bb4fe_RecordLabel(i8*%a)#0
tail call void@_SML_loadeaa0aca8fbe4101a_Bug(i8*%a)#0
tail call void@_SML_load7374574ddb619c6a_LocalID(i8*%a)#0
tail call void@_SML_loade133fb70fb05a962_TyAlphaRename(i8*%a)#0
tail call void@_SML_load2aaf2b808f82ee2e_TypesBasics(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabb3e4fff06f451286b_TyReduce,i8*@_SML_ftab3e4fff06f451286b_TyReduce,i8*bitcast([2x i64]*@z to i8*))#0
ret void
}
define void@_SML_main3e4fff06f451286b_TyReduce()local_unnamed_addr#2 gc"smlsharp"personality i32(...)*@sml_personality{
%a=alloca[3x i8*],align 8
%b=load i8,i8*@A,align 1
%c=and i8%b,2
%d=icmp eq i8%c,0
br i1%d,label%f,label%e
e:
ret void
f:
store i8 3,i8*@A,align 1
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main7aa263535439ee1c_ListPair()#2
tail call void@_SML_main3a60343781315c1e_Option()#2
tail call void@_SML_main1ef93e13728790b1_String()#2
tail call void@_SML_main60e750412e2bb4fe_RecordLabel()#2
tail call void@_SML_maineaa0aca8fbe4101a_Bug()#2
tail call void@_SML_main7374574ddb619c6a_LocalID()#2
tail call void@_SML_maine133fb70fb05a962_TyAlphaRename()#2
tail call void@_SML_main2aaf2b808f82ee2e_TypesBasics()#2
%g=bitcast[3x i8*]*%a to i8*
call void@sml_start(i8*inreg%g)#0
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%k,label%j
j:
invoke void@sml_check(i32 inreg%h)
to label%k unwind label%n
k:
%l=invoke fastcc i8*@_SMLFN14BoundTypeVarID3Map5emptyE(i32 inreg 1,i32 inreg 8)
to label%m unwind label%n
m:
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar3e4fff06f451286b_TyReduce,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[1x i8*]}>,<{[4x i8],i32,[1x i8*]}>*@_SML_gvar3e4fff06f451286b_TyReduce,i64 0,i32 2,i64 0),i8*inreg%l)#0
call void@sml_end()#0
ret void
n:
%o=landingpad{i8*,i8*}
cleanup
%p=extractvalue{i8*,i8*}%o,1
call void@sml_save_exn(i8*inreg%p)#0
call void@sml_end()#0
resume{i8*,i8*}%o
}
define internal fastcc i8*@_SMLLN8TyReduce7evalBtvE_90(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%h,label%g
g:
call void@sml_check(i32 inreg%e)
br label%h
h:
%i=call fastcc i8*@_SMLFN14BoundTypeVarID3Map4findE(i32 inreg 1,i32 inreg 8)
%j=getelementptr inbounds i8,i8*%i,i64 16
%k=bitcast i8*%j to i8*(i8*,i8*)**
%l=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%k,align 8
%m=bitcast i8*%i to i8**
%n=load i8*,i8**%m,align 8
store i8*%n,i8**%d,align 8
%o=bitcast i8**%c to i8***
%p=load i8**,i8***%o,align 8
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%c,align 8
%r=call i8*@sml_alloc(i32 inreg 20)#0
%s=getelementptr inbounds i8,i8*%r,i64 -4
%t=bitcast i8*%s to i32*
store i32 1342177296,i32*%t,align 4
%u=getelementptr inbounds i8,i8*%r,i64 12
%v=bitcast i8*%u to i32*
store i32 0,i32*%v,align 1
%w=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%x=bitcast i8*%r to i8**
store i8*%w,i8**%x,align 8
%y=getelementptr inbounds i8,i8*%r,i64 8
%z=bitcast i8*%y to i32*
store i32%b,i32*%z,align 4
%A=getelementptr inbounds i8,i8*%r,i64 16
%B=bitcast i8*%A to i32*
store i32 1,i32*%B,align 4
%C=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%D=call fastcc i8*%l(i8*inreg%C,i8*inreg%r)
%E=icmp eq i8*%D,null
br i1%E,label%F,label%O
F:
%G=call i8*@sml_alloc(i32 inreg 12)#0
%H=bitcast i8*%G to i32*
%I=getelementptr inbounds i8,i8*%G,i64 -4
%J=bitcast i8*%I to i32*
store i32 1342177288,i32*%J,align 4
store i32 1,i32*%H,align 4
%K=getelementptr inbounds i8,i8*%G,i64 4
%L=bitcast i8*%K to i32*
store i32%b,i32*%L,align 4
%M=getelementptr inbounds i8,i8*%G,i64 8
%N=bitcast i8*%M to i32*
store i32 0,i32*%N,align 4
ret i8*%G
O:
%P=bitcast i8*%D to i8**
%Q=load i8*,i8**%P,align 8
store i8*%Q,i8**%c,align 8
%R=load i8*,i8**@_SMLZN13TyAlphaRename11emptyBtvMapE,align 8
%S=call fastcc i8*@_SMLFN13TyAlphaRename6copyTyE(i8*inreg%R)
%T=getelementptr inbounds i8,i8*%S,i64 16
%U=bitcast i8*%T to i8*(i8*,i8*)**
%V=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%U,align 8
%W=bitcast i8*%S to i8**
%X=load i8*,i8**%W,align 8
%Y=load i8*,i8**%c,align 8
%Z=tail call fastcc i8*%V(i8*inreg%X,i8*inreg%Y)
ret i8*%Z
}
define internal fastcc i8*@_SMLLN8TyReduce17evalOverloadMatchE_155(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce17evalOverloadMatchE_156(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce17evalOverloadMatchE_157(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce17evalOverloadMatchE_94(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce6evalTyE_163(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce6evalTyE_164(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce6evalTyE_165(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce6evalTyE_166(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLL11constraints_167(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce14evalConstraintE_102(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce13evalBackendTyE_169(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce13evalBackendTyE_170(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce13evalBackendTyE_175(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce13evalBackendTyE_176(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce13evalBackendTyE_177(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce15evalCodeEntryTyE_179(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_180(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce8evalKindE_100(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce12evalTvarKindE_181(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce12evalTvarKindE_182(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce12evalTvarKindE_183(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=bitcast i8*%o to i8**
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%d,align 8
%r=getelementptr inbounds i8,i8*%o,i64 16
%s=bitcast i8*%r to i32*
%t=load i32,i32*%s,align 4
store i8*null,i8**%c,align 8
%u=load i8*,i8**%n,align 8
%v=getelementptr inbounds i8,i8*%o,i64 8
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
%y=call fastcc i8*@_SMLLN8TyReduce17evalOverloadMatchE_94(i8*inreg%u,i8*inreg%x)
store i8*%y,i8**%c,align 8
%z=call i8*@sml_alloc(i32 inreg 28)#0
%A=getelementptr inbounds i8,i8*%z,i64 -4
%B=bitcast i8*%A to i32*
store i32 1342177304,i32*%B,align 4
%C=getelementptr inbounds i8,i8*%z,i64 20
%D=bitcast i8*%C to i32*
store i32 0,i32*%D,align 1
%E=load i8*,i8**%d,align 8
%F=bitcast i8*%z to i8**
store i8*%E,i8**%F,align 8
%G=load i8*,i8**%c,align 8
%H=getelementptr inbounds i8,i8*%z,i64 8
%I=bitcast i8*%H to i8**
store i8*%G,i8**%I,align 8
%J=getelementptr inbounds i8,i8*%z,i64 16
%K=bitcast i8*%J to i32*
store i32%t,i32*%K,align 4
%L=getelementptr inbounds i8,i8*%z,i64 24
%M=bitcast i8*%L to i32*
store i32 3,i32*%M,align 4
ret i8*%z
}
define internal fastcc i8*@_SMLLN8TyReduce12evalTvarKindE_184(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce13evalOpaqueRepE_187(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLN8TyReduce17evalOverloadMatchE_94(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
o:
%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
%h=alloca i8*,align 8
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
call void@llvm.gcroot(i8**%h,i8*null)#0
store i8*%a,i8**%e,align 8
store i8*%b,i8**%c,align 8
%i=load atomic i32,i32*@sml_check_flag unordered,align 4
%j=icmp eq i32%i,0
br i1%j,label%m,label%k
k:
call void@sml_check(i32 inreg%i)
%l=load i8*,i8**%c,align 8
br label%m
m:
%n=phi i8*[%l,%k],[%b,%o]
%p=bitcast i8*%n to i32*
%q=load i32,i32*%p,align 4
switch i32%q,label%r[
i32 1,label%b5
i32 2,label%aU
i32 0,label%J
]
r:
store i8*null,i8**%e,align 8
call void@sml_matchcomp_bug()
%s=load i8*,i8**@_SMLZ5Match,align 8
store i8*%s,i8**%c,align 8
%t=call i8*@sml_alloc(i32 inreg 20)#0
%u=getelementptr inbounds i8,i8*%t,i64 -4
%v=bitcast i8*%u to i32*
store i32 1342177296,i32*%v,align 4
store i8*%t,i8**%d,align 8
%w=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%x=bitcast i8*%t to i8**
store i8*%w,i8**%x,align 8
%y=getelementptr inbounds i8,i8*%t,i64 8
%z=bitcast i8*%y to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[53x i8]}>,<{[4x i8],i32,[53x i8]}>*@b,i64 0,i32 2,i64 0),i8**%z,align 8
%A=getelementptr inbounds i8,i8*%t,i64 16
%B=bitcast i8*%A to i32*
store i32 3,i32*%B,align 4
%C=call i8*@sml_alloc(i32 inreg 60)#0
%D=getelementptr inbounds i8,i8*%C,i64 -4
%E=bitcast i8*%D to i32*
store i32 1342177336,i32*%E,align 4
%F=getelementptr inbounds i8,i8*%C,i64 56
%G=bitcast i8*%F to i32*
store i32 1,i32*%G,align 4
%H=load i8*,i8**%d,align 8
%I=bitcast i8*%C to i8**
store i8*%H,i8**%I,align 8
call void@sml_raise(i8*inreg%C)#1
unreachable
J:
%K=getelementptr inbounds i8,i8*%n,i64 8
%L=bitcast i8*%K to i8**
%M=load i8*,i8**%L,align 8
store i8*%M,i8**%d,align 8
%N=bitcast i8*%M to i8**
%O=load i8*,i8**%N,align 8
%P=load i8*,i8**%e,align 8
%Q=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%P,i8*inreg%O)
store i8*%Q,i8**%c,align 8
%R=call fastcc i8*@_SMLFN5TypID3Map3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%S=getelementptr inbounds i8,i8*%R,i64 16
%T=bitcast i8*%S to i8*(i8*,i8*)**
%U=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%T,align 8
%V=bitcast i8*%R to i8**
%W=load i8*,i8**%V,align 8
store i8*%W,i8**%f,align 8
%X=call i8*@sml_alloc(i32 inreg 12)#0
%Y=getelementptr inbounds i8,i8*%X,i64 -4
%Z=bitcast i8*%Y to i32*
store i32 1342177288,i32*%Z,align 4
store i8*%X,i8**%g,align 8
%aa=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ab=bitcast i8*%X to i8**
store i8*%aa,i8**%ab,align 8
%ac=getelementptr inbounds i8,i8*%X,i64 8
%ad=bitcast i8*%ac to i32*
store i32 1,i32*%ad,align 4
%ae=call i8*@sml_alloc(i32 inreg 28)#0
%af=getelementptr inbounds i8,i8*%ae,i64 -4
%ag=bitcast i8*%af to i32*
store i32 1342177304,i32*%ag,align 4
%ah=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%ai=bitcast i8*%ae to i8**
store i8*%ah,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%ae,i64 8
%ak=bitcast i8*%aj to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce17evalOverloadMatchE_157 to void(...)*),void(...)**%ak,align 8
%al=getelementptr inbounds i8,i8*%ae,i64 16
%am=bitcast i8*%al to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce17evalOverloadMatchE_157 to void(...)*),void(...)**%am,align 8
%an=getelementptr inbounds i8,i8*%ae,i64 24
%ao=bitcast i8*%an to i32*
store i32 -2147483647,i32*%ao,align 4
%ap=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aq=call fastcc i8*%U(i8*inreg%ap,i8*inreg%ae)
%ar=getelementptr inbounds i8,i8*%aq,i64 16
%as=bitcast i8*%ar to i8*(i8*,i8*)**
%at=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%as,align 8
%au=bitcast i8*%aq to i8**
%av=load i8*,i8**%au,align 8
%aw=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ax=getelementptr inbounds i8,i8*%aw,i64 8
%ay=bitcast i8*%ax to i8**
%az=load i8*,i8**%ay,align 8
%aA=call fastcc i8*%at(i8*inreg%av,i8*inreg%az)
store i8*%aA,i8**%d,align 8
%aB=call i8*@sml_alloc(i32 inreg 20)#0
%aC=getelementptr inbounds i8,i8*%aB,i64 -4
%aD=bitcast i8*%aC to i32*
store i32 1342177296,i32*%aD,align 4
store i8*%aB,i8**%e,align 8
%aE=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aF=bitcast i8*%aB to i8**
store i8*%aE,i8**%aF,align 8
%aG=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aH=getelementptr inbounds i8,i8*%aB,i64 8
%aI=bitcast i8*%aH to i8**
store i8*%aG,i8**%aI,align 8
%aJ=getelementptr inbounds i8,i8*%aB,i64 16
%aK=bitcast i8*%aJ to i32*
store i32 3,i32*%aK,align 4
%aL=call i8*@sml_alloc(i32 inreg 20)#0
%aM=getelementptr inbounds i8,i8*%aL,i64 -4
%aN=bitcast i8*%aM to i32*
store i32 1342177296,i32*%aN,align 4
%aO=bitcast i8*%aL to i64*
store i64 0,i64*%aO,align 4
%aP=load i8*,i8**%e,align 8
%aQ=getelementptr inbounds i8,i8*%aL,i64 8
%aR=bitcast i8*%aQ to i8**
store i8*%aP,i8**%aR,align 8
%aS=getelementptr inbounds i8,i8*%aL,i64 16
%aT=bitcast i8*%aS to i32*
store i32 2,i32*%aT,align 4
ret i8*%aL
aU:
%aV=getelementptr inbounds i8,i8*%n,i64 8
%aW=bitcast i8*%aV to i8**
%aX=load i8*,i8**%aW,align 8
store i8*%aX,i8**%d,align 8
%aY=getelementptr inbounds i8,i8*%aX,i64 8
%aZ=bitcast i8*%aY to i8**
%a0=load i8*,i8**%aZ,align 8
%a1=load i8*,i8**%e,align 8
%a2=call fastcc i8*@_SMLLN8TyReduce12evalPrimInfoE_105(i8*inreg%a1,i8*inreg%a0)
store i8*%a2,i8**%c,align 8
%a3=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%a4=getelementptr inbounds i8,i8*%a3,i64 16
%a5=bitcast i8*%a4 to i8*(i8*,i8*)**
%a6=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%a5,align 8
%a7=bitcast i8*%a3 to i8**
%a8=load i8*,i8**%a7,align 8
store i8*%a8,i8**%g,align 8
%a9=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%ba=getelementptr inbounds i8,i8*%a9,i64 16
%bb=bitcast i8*%ba to i8*(i8*,i8*)**
%bc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bb,align 8
%bd=bitcast i8*%a9 to i8**
%be=load i8*,i8**%bd,align 8
store i8*%be,i8**%f,align 8
%bf=call i8*@sml_alloc(i32 inreg 12)#0
%bg=getelementptr inbounds i8,i8*%bf,i64 -4
%bh=bitcast i8*%bg to i32*
store i32 1342177288,i32*%bh,align 4
store i8*%bf,i8**%h,align 8
%bi=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bj=bitcast i8*%bf to i8**
store i8*%bi,i8**%bj,align 8
%bk=getelementptr inbounds i8,i8*%bf,i64 8
%bl=bitcast i8*%bk to i32*
store i32 1,i32*%bl,align 4
%bm=call i8*@sml_alloc(i32 inreg 28)#0
%bn=getelementptr inbounds i8,i8*%bm,i64 -4
%bo=bitcast i8*%bn to i32*
store i32 1342177304,i32*%bo,align 4
%bp=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%bq=bitcast i8*%bm to i8**
store i8*%bp,i8**%bq,align 8
%br=getelementptr inbounds i8,i8*%bm,i64 8
%bs=bitcast i8*%br to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce17evalOverloadMatchE_156 to void(...)*),void(...)**%bs,align 8
%bt=getelementptr inbounds i8,i8*%bm,i64 16
%bu=bitcast i8*%bt to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce17evalOverloadMatchE_156 to void(...)*),void(...)**%bu,align 8
%bv=getelementptr inbounds i8,i8*%bm,i64 24
%bw=bitcast i8*%bv to i32*
store i32 -2147483647,i32*%bw,align 4
%bx=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%by=call fastcc i8*%bc(i8*inreg%bx,i8*inreg%bm)
%bz=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%bA=call fastcc i8*%a6(i8*inreg%bz,i8*inreg%by)
%bB=getelementptr inbounds i8,i8*%bA,i64 16
%bC=bitcast i8*%bB to i8*(i8*,i8*)**
%bD=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bC,align 8
%bE=bitcast i8*%bA to i8**
%bF=load i8*,i8**%bE,align 8
%bG=bitcast i8**%d to i8***
%bH=load i8**,i8***%bG,align 8
store i8*null,i8**%d,align 8
%bI=load i8*,i8**%bH,align 8
%bJ=call fastcc i8*%bD(i8*inreg%bF,i8*inreg%bI)
store i8*%bJ,i8**%d,align 8
%bK=call i8*@sml_alloc(i32 inreg 20)#0
%bL=getelementptr inbounds i8,i8*%bK,i64 -4
%bM=bitcast i8*%bL to i32*
store i32 1342177296,i32*%bM,align 4
store i8*%bK,i8**%e,align 8
%bN=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bO=bitcast i8*%bK to i8**
store i8*%bN,i8**%bO,align 8
%bP=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bQ=getelementptr inbounds i8,i8*%bK,i64 8
%bR=bitcast i8*%bQ to i8**
store i8*%bP,i8**%bR,align 8
%bS=getelementptr inbounds i8,i8*%bK,i64 16
%bT=bitcast i8*%bS to i32*
store i32 3,i32*%bT,align 4
%bU=call i8*@sml_alloc(i32 inreg 20)#0
%bV=bitcast i8*%bU to i32*
%bW=getelementptr inbounds i8,i8*%bU,i64 -4
%bX=bitcast i8*%bW to i32*
store i32 1342177296,i32*%bX,align 4
%bY=getelementptr inbounds i8,i8*%bU,i64 4
%bZ=bitcast i8*%bY to i32*
store i32 0,i32*%bZ,align 1
store i32 2,i32*%bV,align 4
%b0=load i8*,i8**%e,align 8
%b1=getelementptr inbounds i8,i8*%bU,i64 8
%b2=bitcast i8*%b1 to i8**
store i8*%b0,i8**%b2,align 8
%b3=getelementptr inbounds i8,i8*%bU,i64 16
%b4=bitcast i8*%b3 to i32*
store i32 2,i32*%b4,align 4
ret i8*%bU
b5:
%b6=getelementptr inbounds i8,i8*%n,i64 8
%b7=bitcast i8*%b6 to i8**
%b8=load i8*,i8**%b7,align 8
store i8*%b8,i8**%d,align 8
%b9=bitcast i8*%b8 to i8**
%ca=load i8*,i8**%b9,align 8
%cb=load i8*,i8**%e,align 8
%cc=call fastcc i8*@_SMLLN8TyReduce13evalExVarInfoE_95(i8*inreg%cb,i8*inreg%ca)
store i8*%cc,i8**%c,align 8
%cd=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%ce=getelementptr inbounds i8,i8*%cd,i64 16
%cf=bitcast i8*%ce to i8*(i8*,i8*)**
%cg=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cf,align 8
%ch=bitcast i8*%cd to i8**
%ci=load i8*,i8**%ch,align 8
store i8*%ci,i8**%g,align 8
%cj=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%ck=getelementptr inbounds i8,i8*%cj,i64 16
%cl=bitcast i8*%ck to i8*(i8*,i8*)**
%cm=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cl,align 8
%cn=bitcast i8*%cj to i8**
%co=load i8*,i8**%cn,align 8
store i8*%co,i8**%f,align 8
%cp=call i8*@sml_alloc(i32 inreg 12)#0
%cq=getelementptr inbounds i8,i8*%cp,i64 -4
%cr=bitcast i8*%cq to i32*
store i32 1342177288,i32*%cr,align 4
store i8*%cp,i8**%h,align 8
%cs=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ct=bitcast i8*%cp to i8**
store i8*%cs,i8**%ct,align 8
%cu=getelementptr inbounds i8,i8*%cp,i64 8
%cv=bitcast i8*%cu to i32*
store i32 1,i32*%cv,align 4
%cw=call i8*@sml_alloc(i32 inreg 28)#0
%cx=getelementptr inbounds i8,i8*%cw,i64 -4
%cy=bitcast i8*%cx to i32*
store i32 1342177304,i32*%cy,align 4
%cz=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%cA=bitcast i8*%cw to i8**
store i8*%cz,i8**%cA,align 8
%cB=getelementptr inbounds i8,i8*%cw,i64 8
%cC=bitcast i8*%cB to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce17evalOverloadMatchE_155 to void(...)*),void(...)**%cC,align 8
%cD=getelementptr inbounds i8,i8*%cw,i64 16
%cE=bitcast i8*%cD to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce17evalOverloadMatchE_155 to void(...)*),void(...)**%cE,align 8
%cF=getelementptr inbounds i8,i8*%cw,i64 24
%cG=bitcast i8*%cF to i32*
store i32 -2147483647,i32*%cG,align 4
%cH=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cI=call fastcc i8*%cm(i8*inreg%cH,i8*inreg%cw)
%cJ=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cK=call fastcc i8*%cg(i8*inreg%cJ,i8*inreg%cI)
%cL=getelementptr inbounds i8,i8*%cK,i64 16
%cM=bitcast i8*%cL to i8*(i8*,i8*)**
%cN=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cM,align 8
%cO=bitcast i8*%cK to i8**
%cP=load i8*,i8**%cO,align 8
%cQ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cR=getelementptr inbounds i8,i8*%cQ,i64 8
%cS=bitcast i8*%cR to i8**
%cT=load i8*,i8**%cS,align 8
%cU=call fastcc i8*%cN(i8*inreg%cP,i8*inreg%cT)
store i8*%cU,i8**%d,align 8
%cV=call i8*@sml_alloc(i32 inreg 20)#0
%cW=getelementptr inbounds i8,i8*%cV,i64 -4
%cX=bitcast i8*%cW to i32*
store i32 1342177296,i32*%cX,align 4
store i8*%cV,i8**%e,align 8
%cY=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cZ=bitcast i8*%cV to i8**
store i8*%cY,i8**%cZ,align 8
%c0=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%c1=getelementptr inbounds i8,i8*%cV,i64 8
%c2=bitcast i8*%c1 to i8**
store i8*%c0,i8**%c2,align 8
%c3=getelementptr inbounds i8,i8*%cV,i64 16
%c4=bitcast i8*%c3 to i32*
store i32 3,i32*%c4,align 4
%c5=call i8*@sml_alloc(i32 inreg 20)#0
%c6=bitcast i8*%c5 to i32*
%c7=getelementptr inbounds i8,i8*%c5,i64 -4
%c8=bitcast i8*%c7 to i32*
store i32 1342177296,i32*%c8,align 4
%c9=getelementptr inbounds i8,i8*%c5,i64 4
%da=bitcast i8*%c9 to i32*
store i32 0,i32*%da,align 1
store i32 1,i32*%c6,align 4
%db=load i8*,i8**%e,align 8
%dc=getelementptr inbounds i8,i8*%c5,i64 8
%dd=bitcast i8*%dc to i8**
store i8*%db,i8**%dd,align 8
%de=getelementptr inbounds i8,i8*%c5,i64 16
%df=bitcast i8*%de to i32*
store i32 2,i32*%df,align 4
ret i8*%c5
}
define internal fastcc i8*@_SMLLN8TyReduce13evalExVarInfoE_95(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=bitcast i8*%m to i8**
%o=load i8*,i8**%n,align 8
store i8*%o,i8**%d,align 8
%p=getelementptr inbounds i8,i8*%m,i64 8
%q=bitcast i8*%p to i8**
%r=load i8*,i8**%q,align 8
store i8*null,i8**%c,align 8
%s=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%k,i8*inreg%r)
store i8*%s,i8**%c,align 8
%t=call i8*@sml_alloc(i32 inreg 20)#0
%u=getelementptr inbounds i8,i8*%t,i64 -4
%v=bitcast i8*%u to i32*
store i32 1342177296,i32*%v,align 4
%w=load i8*,i8**%d,align 8
%x=bitcast i8*%t to i8**
store i8*%w,i8**%x,align 8
%y=load i8*,i8**%c,align 8
%z=getelementptr inbounds i8,i8*%t,i64 8
%A=bitcast i8*%z to i8**
store i8*%y,i8**%A,align 8
%B=getelementptr inbounds i8,i8*%t,i64 16
%C=bitcast i8*%B to i32*
store i32 3,i32*%C,align 4
ret i8*%t
}
define internal fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
C:
%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
%h=alloca i8*,align 8
%i=alloca i8*,align 8
%j=alloca i8*,align 8
%k=alloca i8*,align 8
%l=alloca i8*,align 8
%m=alloca i8*,align 8
%n=alloca i8*,align 8
%o=alloca i8*,align 8
%p=alloca i8*,align 8
%q=alloca i8*,align 8
%r=alloca i8*,align 8
%s=alloca i8*,align 8
%t=alloca i8*,align 8
%u=alloca i8*,align 8
%v=alloca i8*,align 8
call void@llvm.gcroot(i8**%o,i8*null)#0
call void@llvm.gcroot(i8**%p,i8*null)#0
call void@llvm.gcroot(i8**%q,i8*null)#0
call void@llvm.gcroot(i8**%r,i8*null)#0
call void@llvm.gcroot(i8**%s,i8*null)#0
call void@llvm.gcroot(i8**%t,i8*null)#0
call void@llvm.gcroot(i8**%u,i8*null)#0
call void@llvm.gcroot(i8**%v,i8*null)#0
store i8*%a,i8**%v,align 8
store i8*%b,i8**%o,align 8
%w=load atomic i32,i32*@sml_check_flag unordered,align 4
%x=icmp eq i32%w,0
br i1%x,label%A,label%y
y:
call void@sml_check(i32 inreg%w)
%z=load i8*,i8**%o,align 8
br label%A
A:
%B=phi i8*[%z,%y],[%b,%C]
%D=call fastcc i8*@_SMLFN11TypesBasics7derefTyE(i8*inreg%B)
%E=icmp eq i8*%D,null
br i1%E,label%hC,label%F
F:
%G=bitcast i8*%D to i32*
%H=load i32,i32*%G,align 4
switch i32%H,label%I[
i32 9,label%oF
i32 0,label%hE
i32 4,label%hC
i32 3,label%g5
i32 5,label%gy
i32 10,label%gc
i32 1,label%fH
i32 6,label%eD
i32 8,label%dR
i32 2,label%bm
i32 7,label%aa
]
I:
store i8*null,i8**%v,align 8
call void@sml_matchcomp_bug()
%J=load i8*,i8**@_SMLZ5Match,align 8
store i8*%J,i8**%o,align 8
%K=call i8*@sml_alloc(i32 inreg 20)#0
%L=getelementptr inbounds i8,i8*%K,i64 -4
%M=bitcast i8*%L to i32*
store i32 1342177296,i32*%M,align 4
store i8*%K,i8**%p,align 8
%N=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%O=bitcast i8*%K to i8**
store i8*%N,i8**%O,align 8
%P=getelementptr inbounds i8,i8*%K,i64 8
%Q=bitcast i8*%P to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@g,i64 0,i32 2,i64 0),i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%K,i64 16
%S=bitcast i8*%R to i32*
store i32 3,i32*%S,align 4
%T=call i8*@sml_alloc(i32 inreg 60)#0
%U=getelementptr inbounds i8,i8*%T,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177336,i32*%V,align 4
%W=getelementptr inbounds i8,i8*%T,i64 56
%X=bitcast i8*%W to i32*
store i32 1,i32*%X,align 4
%Y=load i8*,i8**%p,align 8
%Z=bitcast i8*%T to i8**
store i8*%Y,i8**%Z,align 8
call void@sml_raise(i8*inreg%T)#1
unreachable
aa:
store i8*null,i8**%o,align 8
%ab=getelementptr inbounds i8,i8*%D,i64 8
%ac=bitcast i8*%ab to i8**
%ad=load i8*,i8**%ac,align 8
store i8*%ad,i8**%q,align 8
%ae=getelementptr inbounds i8,i8*%ad,i64 8
%af=bitcast i8*%ae to i8**
%ag=load i8*,i8**%af,align 8
%ah=load i8*,i8**%v,align 8
%ai=call fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_99(i8*inreg%ah,i8*inreg%ag)
store i8*%ai,i8**%o,align 8
%aj=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%ak=getelementptr inbounds i8,i8*%aj,i64 16
%al=bitcast i8*%ak to i8*(i8*,i8*)**
%am=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%al,align 8
%an=bitcast i8*%aj to i8**
%ao=load i8*,i8**%an,align 8
store i8*%ao,i8**%p,align 8
%ap=call i8*@sml_alloc(i32 inreg 12)#0
%aq=getelementptr inbounds i8,i8*%ap,i64 -4
%ar=bitcast i8*%aq to i32*
store i32 1342177288,i32*%ar,align 4
store i8*%ap,i8**%r,align 8
%as=load i8*,i8**%v,align 8
%at=bitcast i8*%ap to i8**
store i8*%as,i8**%at,align 8
%au=getelementptr inbounds i8,i8*%ap,i64 8
%av=bitcast i8*%au to i32*
store i32 1,i32*%av,align 4
%aw=call i8*@sml_alloc(i32 inreg 28)#0
%ax=getelementptr inbounds i8,i8*%aw,i64 -4
%ay=bitcast i8*%ax to i32*
store i32 1342177304,i32*%ay,align 4
%az=load i8*,i8**%r,align 8
store i8*null,i8**%r,align 8
%aA=bitcast i8*%aw to i8**
store i8*%az,i8**%aA,align 8
%aB=getelementptr inbounds i8,i8*%aw,i64 8
%aC=bitcast i8*%aB to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL11constraints_167 to void(...)*),void(...)**%aC,align 8
%aD=getelementptr inbounds i8,i8*%aw,i64 16
%aE=bitcast i8*%aD to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL11constraints_167 to void(...)*),void(...)**%aE,align 8
%aF=getelementptr inbounds i8,i8*%aw,i64 24
%aG=bitcast i8*%aF to i32*
store i32 -2147483647,i32*%aG,align 4
%aH=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%aI=call fastcc i8*%am(i8*inreg%aH,i8*inreg%aw)
%aJ=getelementptr inbounds i8,i8*%aI,i64 16
%aK=bitcast i8*%aJ to i8*(i8*,i8*)**
%aL=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aK,align 8
%aM=bitcast i8*%aI to i8**
%aN=load i8*,i8**%aM,align 8
%aO=load i8*,i8**%q,align 8
%aP=getelementptr inbounds i8,i8*%aO,i64 16
%aQ=bitcast i8*%aP to i8**
%aR=load i8*,i8**%aQ,align 8
%aS=call fastcc i8*%aL(i8*inreg%aN,i8*inreg%aR)
store i8*%aS,i8**%p,align 8
%aT=bitcast i8**%q to i8***
%aU=load i8**,i8***%aT,align 8
store i8*null,i8**%q,align 8
%aV=load i8*,i8**%aU,align 8
%aW=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%aX=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%aW,i8*inreg%aV)
store i8*%aX,i8**%q,align 8
%aY=call i8*@sml_alloc(i32 inreg 28)#0
%aZ=getelementptr inbounds i8,i8*%aY,i64 -4
%a0=bitcast i8*%aZ to i32*
store i32 1342177304,i32*%a0,align 4
store i8*%aY,i8**%r,align 8
%a1=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%a2=bitcast i8*%aY to i8**
store i8*%a1,i8**%a2,align 8
%a3=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%a4=getelementptr inbounds i8,i8*%aY,i64 8
%a5=bitcast i8*%a4 to i8**
store i8*%a3,i8**%a5,align 8
%a6=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%a7=getelementptr inbounds i8,i8*%aY,i64 16
%a8=bitcast i8*%a7 to i8**
store i8*%a6,i8**%a8,align 8
%a9=getelementptr inbounds i8,i8*%aY,i64 24
%ba=bitcast i8*%a9 to i32*
store i32 7,i32*%ba,align 4
%bb=call i8*@sml_alloc(i32 inreg 20)#0
%bc=bitcast i8*%bb to i32*
%bd=getelementptr inbounds i8,i8*%bb,i64 -4
%be=bitcast i8*%bd to i32*
store i32 1342177296,i32*%be,align 4
%bf=getelementptr inbounds i8,i8*%bb,i64 4
%bg=bitcast i8*%bf to i32*
store i32 0,i32*%bg,align 1
store i32 7,i32*%bc,align 4
%bh=load i8*,i8**%r,align 8
%bi=getelementptr inbounds i8,i8*%bb,i64 8
%bj=bitcast i8*%bi to i8**
store i8*%bh,i8**%bj,align 8
%bk=getelementptr inbounds i8,i8*%bb,i64 16
%bl=bitcast i8*%bk to i32*
store i32 2,i32*%bl,align 4
ret i8*%bb
bm:
store i8*null,i8**%o,align 8
%bn=getelementptr inbounds i8,i8*%D,i64 8
%bo=bitcast i8*%bn to i8**
%bp=load i8*,i8**%bo,align 8
store i8*%bp,i8**%r,align 8
%bq=getelementptr inbounds i8,i8*%bp,i64 8
%br=bitcast i8*%bq to i8**
%bs=load i8*,i8**%br,align 8
%bt=bitcast i8*%bs to i32*
%bu=load i32,i32*%bt,align 4
%bv=getelementptr inbounds i8,i8*%bs,i64 4
%bw=bitcast i8*%bv to i32*
%bx=load i32,i32*%bw,align 4
%by=getelementptr inbounds i8,i8*%bs,i64 8
%bz=bitcast i8*%by to i8**
%bA=load i8*,i8**%bz,align 8
store i8*%bA,i8**%s,align 8
%bB=getelementptr inbounds i8,i8*%bs,i64 16
%bC=bitcast i8*%bB to i8**
%bD=load i8*,i8**%bC,align 8
store i8*%bD,i8**%t,align 8
%bE=getelementptr inbounds i8,i8*%bs,i64 40
%bF=bitcast i8*%bE to i32*
%bG=load i32,i32*%bF,align 4
%bH=getelementptr inbounds i8,i8*%bs,i64 48
%bI=bitcast i8*%bH to i8**
%bJ=load i8*,i8**%bI,align 8
store i8*%bJ,i8**%u,align 8
%bK=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%bL=getelementptr inbounds i8,i8*%bK,i64 16
%bM=bitcast i8*%bL to i8*(i8*,i8*)**
%bN=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bM,align 8
%bO=bitcast i8*%bK to i8**
%bP=load i8*,i8**%bO,align 8
store i8*%bP,i8**%o,align 8
%bQ=call i8*@sml_alloc(i32 inreg 12)#0
%bR=getelementptr inbounds i8,i8*%bQ,i64 -4
%bS=bitcast i8*%bR to i32*
store i32 1342177288,i32*%bS,align 4
store i8*%bQ,i8**%p,align 8
%bT=load i8*,i8**%v,align 8
%bU=bitcast i8*%bQ to i8**
store i8*%bT,i8**%bU,align 8
%bV=getelementptr inbounds i8,i8*%bQ,i64 8
%bW=bitcast i8*%bV to i32*
store i32 1,i32*%bW,align 4
%bX=call i8*@sml_alloc(i32 inreg 28)#0
%bY=getelementptr inbounds i8,i8*%bX,i64 -4
%bZ=bitcast i8*%bY to i32*
store i32 1342177304,i32*%bZ,align 4
%b0=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%b1=bitcast i8*%bX to i8**
store i8*%b0,i8**%b1,align 8
%b2=getelementptr inbounds i8,i8*%bX,i64 8
%b3=bitcast i8*%b2 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_165 to void(...)*),void(...)**%b3,align 8
%b4=getelementptr inbounds i8,i8*%bX,i64 16
%b5=bitcast i8*%b4 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_165 to void(...)*),void(...)**%b5,align 8
%b6=getelementptr inbounds i8,i8*%bX,i64 24
%b7=bitcast i8*%b6 to i32*
store i32 -2147483647,i32*%b7,align 4
%b8=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%b9=call fastcc i8*%bN(i8*inreg%b8,i8*inreg%bX)
%ca=getelementptr inbounds i8,i8*%b9,i64 16
%cb=bitcast i8*%ca to i8*(i8*,i8*)**
%cc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cb,align 8
%cd=bitcast i8*%b9 to i8**
%ce=load i8*,i8**%cd,align 8
%cf=load i8*,i8**%r,align 8
%cg=getelementptr inbounds i8,i8*%cf,i64 8
%ch=bitcast i8*%cg to i8**
%ci=load i8*,i8**%ch,align 8
%cj=getelementptr inbounds i8,i8*%ci,i64 32
%ck=bitcast i8*%cj to i8**
%cl=load i8*,i8**%ck,align 8
%cm=call fastcc i8*%cc(i8*inreg%ce,i8*inreg%cl)
store i8*%cm,i8**%o,align 8
%cn=load i8*,i8**%r,align 8
%co=getelementptr inbounds i8,i8*%cn,i64 8
%cp=bitcast i8*%co to i8**
%cq=load i8*,i8**%cp,align 8
%cr=getelementptr inbounds i8,i8*%cq,i64 24
%cs=bitcast i8*%cr to i8**
%ct=load i8*,i8**%cs,align 8
%cu=load i8*,i8**%v,align 8
%cv=call fastcc i8*@_SMLLN8TyReduce11evalDtyKindE_103(i8*inreg%cu,i8*inreg%ct)
store i8*%cv,i8**%p,align 8
%cw=call i8*@sml_alloc(i32 inreg 60)#0
%cx=getelementptr inbounds i8,i8*%cw,i64 -4
%cy=bitcast i8*%cx to i32*
store i32 1342177336,i32*%cy,align 4
store i8*%cw,i8**%q,align 8
%cz=getelementptr inbounds i8,i8*%cw,i64 44
%cA=bitcast i8*%cz to i32*
store i32 0,i32*%cA,align 1
%cB=bitcast i8*%cw to i32*
store i32%bu,i32*%cB,align 4
%cC=getelementptr inbounds i8,i8*%cw,i64 4
%cD=bitcast i8*%cC to i32*
store i32%bx,i32*%cD,align 4
%cE=load i8*,i8**%s,align 8
store i8*null,i8**%s,align 8
%cF=getelementptr inbounds i8,i8*%cw,i64 8
%cG=bitcast i8*%cF to i8**
store i8*%cE,i8**%cG,align 8
%cH=load i8*,i8**%t,align 8
store i8*null,i8**%t,align 8
%cI=getelementptr inbounds i8,i8*%cw,i64 16
%cJ=bitcast i8*%cI to i8**
store i8*%cH,i8**%cJ,align 8
%cK=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%cL=getelementptr inbounds i8,i8*%cw,i64 24
%cM=bitcast i8*%cL to i8**
store i8*%cK,i8**%cM,align 8
%cN=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%cO=getelementptr inbounds i8,i8*%cw,i64 32
%cP=bitcast i8*%cO to i8**
store i8*%cN,i8**%cP,align 8
%cQ=getelementptr inbounds i8,i8*%cw,i64 40
%cR=bitcast i8*%cQ to i32*
store i32%bG,i32*%cR,align 4
%cS=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%cT=getelementptr inbounds i8,i8*%cw,i64 48
%cU=bitcast i8*%cT to i8**
store i8*%cS,i8**%cU,align 8
%cV=getelementptr inbounds i8,i8*%cw,i64 56
%cW=bitcast i8*%cV to i32*
store i32 94,i32*%cW,align 4
%cX=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%cY=getelementptr inbounds i8,i8*%cX,i64 16
%cZ=bitcast i8*%cY to i8*(i8*,i8*)**
%c0=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cZ,align 8
%c1=bitcast i8*%cX to i8**
%c2=load i8*,i8**%c1,align 8
store i8*%c2,i8**%o,align 8
%c3=call i8*@sml_alloc(i32 inreg 12)#0
%c4=getelementptr inbounds i8,i8*%c3,i64 -4
%c5=bitcast i8*%c4 to i32*
store i32 1342177288,i32*%c5,align 4
store i8*%c3,i8**%p,align 8
%c6=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%c7=bitcast i8*%c3 to i8**
store i8*%c6,i8**%c7,align 8
%c8=getelementptr inbounds i8,i8*%c3,i64 8
%c9=bitcast i8*%c8 to i32*
store i32 1,i32*%c9,align 4
%da=call i8*@sml_alloc(i32 inreg 28)#0
%db=getelementptr inbounds i8,i8*%da,i64 -4
%dc=bitcast i8*%db to i32*
store i32 1342177304,i32*%dc,align 4
%dd=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%de=bitcast i8*%da to i8**
store i8*%dd,i8**%de,align 8
%df=getelementptr inbounds i8,i8*%da,i64 8
%dg=bitcast i8*%df to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_166 to void(...)*),void(...)**%dg,align 8
%dh=getelementptr inbounds i8,i8*%da,i64 16
%di=bitcast i8*%dh to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_166 to void(...)*),void(...)**%di,align 8
%dj=getelementptr inbounds i8,i8*%da,i64 24
%dk=bitcast i8*%dj to i32*
store i32 -2147483647,i32*%dk,align 4
%dl=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%dm=call fastcc i8*%c0(i8*inreg%dl,i8*inreg%da)
%dn=getelementptr inbounds i8,i8*%dm,i64 16
%do=bitcast i8*%dn to i8*(i8*,i8*)**
%dp=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%do,align 8
%dq=bitcast i8*%dm to i8**
%dr=load i8*,i8**%dq,align 8
%ds=bitcast i8**%r to i8***
%dt=load i8**,i8***%ds,align 8
store i8*null,i8**%r,align 8
%du=load i8*,i8**%dt,align 8
%dv=call fastcc i8*%dp(i8*inreg%dr,i8*inreg%du)
store i8*%dv,i8**%o,align 8
%dw=call i8*@sml_alloc(i32 inreg 20)#0
%dx=getelementptr inbounds i8,i8*%dw,i64 -4
%dy=bitcast i8*%dx to i32*
store i32 1342177296,i32*%dy,align 4
store i8*%dw,i8**%p,align 8
%dz=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%dA=bitcast i8*%dw to i8**
store i8*%dz,i8**%dA,align 8
%dB=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%dC=getelementptr inbounds i8,i8*%dw,i64 8
%dD=bitcast i8*%dC to i8**
store i8*%dB,i8**%dD,align 8
%dE=getelementptr inbounds i8,i8*%dw,i64 16
%dF=bitcast i8*%dE to i32*
store i32 3,i32*%dF,align 4
%dG=call i8*@sml_alloc(i32 inreg 20)#0
%dH=bitcast i8*%dG to i32*
%dI=getelementptr inbounds i8,i8*%dG,i64 -4
%dJ=bitcast i8*%dI to i32*
store i32 1342177296,i32*%dJ,align 4
%dK=getelementptr inbounds i8,i8*%dG,i64 4
%dL=bitcast i8*%dK to i32*
store i32 0,i32*%dL,align 1
store i32 2,i32*%dH,align 4
%dM=load i8*,i8**%p,align 8
%dN=getelementptr inbounds i8,i8*%dG,i64 8
%dO=bitcast i8*%dN to i8**
store i8*%dM,i8**%dO,align 8
%dP=getelementptr inbounds i8,i8*%dG,i64 16
%dQ=bitcast i8*%dP to i32*
store i32 2,i32*%dQ,align 4
ret i8*%dG
dR:
%dS=getelementptr inbounds i8,i8*%D,i64 8
%dT=bitcast i8*%dS to i8**
%dU=load i8*,i8**%dT,align 8
store i8*%dU,i8**%o,align 8
%dV=call fastcc i8*@_SMLFN11RecordLabel3Map3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%dW=getelementptr inbounds i8,i8*%dV,i64 16
%dX=bitcast i8*%dW to i8*(i8*,i8*)**
%dY=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dX,align 8
%dZ=bitcast i8*%dV to i8**
%d0=load i8*,i8**%dZ,align 8
store i8*%d0,i8**%p,align 8
%d1=call i8*@sml_alloc(i32 inreg 12)#0
%d2=getelementptr inbounds i8,i8*%d1,i64 -4
%d3=bitcast i8*%d2 to i32*
store i32 1342177288,i32*%d3,align 4
store i8*%d1,i8**%q,align 8
%d4=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%d5=bitcast i8*%d1 to i8**
store i8*%d4,i8**%d5,align 8
%d6=getelementptr inbounds i8,i8*%d1,i64 8
%d7=bitcast i8*%d6 to i32*
store i32 1,i32*%d7,align 4
%d8=call i8*@sml_alloc(i32 inreg 28)#0
%d9=getelementptr inbounds i8,i8*%d8,i64 -4
%ea=bitcast i8*%d9 to i32*
store i32 1342177304,i32*%ea,align 4
%eb=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%ec=bitcast i8*%d8 to i8**
store i8*%eb,i8**%ec,align 8
%ed=getelementptr inbounds i8,i8*%d8,i64 8
%ee=bitcast i8*%ed to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_164 to void(...)*),void(...)**%ee,align 8
%ef=getelementptr inbounds i8,i8*%d8,i64 16
%eg=bitcast i8*%ef to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_164 to void(...)*),void(...)**%eg,align 8
%eh=getelementptr inbounds i8,i8*%d8,i64 24
%ei=bitcast i8*%eh to i32*
store i32 -2147483647,i32*%ei,align 4
%ej=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%ek=call fastcc i8*%dY(i8*inreg%ej,i8*inreg%d8)
%el=getelementptr inbounds i8,i8*%ek,i64 16
%em=bitcast i8*%el to i8*(i8*,i8*)**
%en=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%em,align 8
%eo=bitcast i8*%ek to i8**
%ep=load i8*,i8**%eo,align 8
%eq=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%er=call fastcc i8*%en(i8*inreg%ep,i8*inreg%eq)
store i8*%er,i8**%o,align 8
%es=call i8*@sml_alloc(i32 inreg 20)#0
%et=bitcast i8*%es to i32*
%eu=getelementptr inbounds i8,i8*%es,i64 -4
%ev=bitcast i8*%eu to i32*
store i32 1342177296,i32*%ev,align 4
%ew=getelementptr inbounds i8,i8*%es,i64 4
%ex=bitcast i8*%ew to i32*
store i32 0,i32*%ex,align 1
store i32 8,i32*%et,align 4
%ey=load i8*,i8**%o,align 8
%ez=getelementptr inbounds i8,i8*%es,i64 8
%eA=bitcast i8*%ez to i8**
store i8*%ey,i8**%eA,align 8
%eB=getelementptr inbounds i8,i8*%es,i64 16
%eC=bitcast i8*%eB to i32*
store i32 2,i32*%eC,align 4
ret i8*%es
eD:
store i8*null,i8**%o,align 8
%eE=getelementptr inbounds i8,i8*%D,i64 8
%eF=bitcast i8*%eE to i8**
%eG=load i8*,i8**%eF,align 8
store i8*%eG,i8**%p,align 8
%eH=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%eI=getelementptr inbounds i8,i8*%eH,i64 16
%eJ=bitcast i8*%eI to i8*(i8*,i8*)**
%eK=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%eJ,align 8
%eL=bitcast i8*%eH to i8**
%eM=load i8*,i8**%eL,align 8
store i8*%eM,i8**%o,align 8
%eN=call i8*@sml_alloc(i32 inreg 12)#0
%eO=getelementptr inbounds i8,i8*%eN,i64 -4
%eP=bitcast i8*%eO to i32*
store i32 1342177288,i32*%eP,align 4
store i8*%eN,i8**%q,align 8
%eQ=load i8*,i8**%v,align 8
%eR=bitcast i8*%eN to i8**
store i8*%eQ,i8**%eR,align 8
%eS=getelementptr inbounds i8,i8*%eN,i64 8
%eT=bitcast i8*%eS to i32*
store i32 1,i32*%eT,align 4
%eU=call i8*@sml_alloc(i32 inreg 28)#0
%eV=getelementptr inbounds i8,i8*%eU,i64 -4
%eW=bitcast i8*%eV to i32*
store i32 1342177304,i32*%eW,align 4
%eX=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%eY=bitcast i8*%eU to i8**
store i8*%eX,i8**%eY,align 8
%eZ=getelementptr inbounds i8,i8*%eU,i64 8
%e0=bitcast i8*%eZ to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_163 to void(...)*),void(...)**%e0,align 8
%e1=getelementptr inbounds i8,i8*%eU,i64 16
%e2=bitcast i8*%e1 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_163 to void(...)*),void(...)**%e2,align 8
%e3=getelementptr inbounds i8,i8*%eU,i64 24
%e4=bitcast i8*%e3 to i32*
store i32 -2147483647,i32*%e4,align 4
%e5=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%e6=call fastcc i8*%eK(i8*inreg%e5,i8*inreg%eU)
%e7=getelementptr inbounds i8,i8*%e6,i64 16
%e8=bitcast i8*%e7 to i8*(i8*,i8*)**
%e9=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%e8,align 8
%fa=bitcast i8*%e6 to i8**
%fb=load i8*,i8**%fa,align 8
%fc=bitcast i8**%p to i8***
%fd=load i8**,i8***%fc,align 8
%fe=load i8*,i8**%fd,align 8
%ff=call fastcc i8*%e9(i8*inreg%fb,i8*inreg%fe)
store i8*%ff,i8**%o,align 8
%fg=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%fh=getelementptr inbounds i8,i8*%fg,i64 8
%fi=bitcast i8*%fh to i8**
%fj=load i8*,i8**%fi,align 8
%fk=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%fl=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%fk,i8*inreg%fj)
store i8*%fl,i8**%p,align 8
%fm=call i8*@sml_alloc(i32 inreg 20)#0
%fn=getelementptr inbounds i8,i8*%fm,i64 -4
%fo=bitcast i8*%fn to i32*
store i32 1342177296,i32*%fo,align 4
store i8*%fm,i8**%q,align 8
%fp=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%fq=bitcast i8*%fm to i8**
store i8*%fp,i8**%fq,align 8
%fr=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%fs=getelementptr inbounds i8,i8*%fm,i64 8
%ft=bitcast i8*%fs to i8**
store i8*%fr,i8**%ft,align 8
%fu=getelementptr inbounds i8,i8*%fm,i64 16
%fv=bitcast i8*%fu to i32*
store i32 3,i32*%fv,align 4
%fw=call i8*@sml_alloc(i32 inreg 20)#0
%fx=bitcast i8*%fw to i32*
%fy=getelementptr inbounds i8,i8*%fw,i64 -4
%fz=bitcast i8*%fy to i32*
store i32 1342177296,i32*%fz,align 4
%fA=getelementptr inbounds i8,i8*%fw,i64 4
%fB=bitcast i8*%fA to i32*
store i32 0,i32*%fB,align 1
store i32 6,i32*%fx,align 4
%fC=load i8*,i8**%q,align 8
%fD=getelementptr inbounds i8,i8*%fw,i64 8
%fE=bitcast i8*%fD to i8**
store i8*%fC,i8**%fE,align 8
%fF=getelementptr inbounds i8,i8*%fw,i64 16
%fG=bitcast i8*%fF to i32*
store i32 2,i32*%fG,align 4
ret i8*%fw
fH:
store i8*null,i8**%o,align 8
%fI=getelementptr inbounds i8,i8*%D,i64 4
%fJ=bitcast i8*%fI to i32*
%fK=load i32,i32*%fJ,align 4
%fL=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%fM=bitcast i8**%m to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%fM)
%fN=bitcast i8**%n to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%fN)
call void@llvm.gcroot(i8**%m,i8*null)#0
call void@llvm.gcroot(i8**%n,i8*null)#0
store i8*%fL,i8**%m,align 8
%fO=call i8*@sml_alloc(i32 inreg 12)#0
%fP=getelementptr inbounds i8,i8*%fO,i64 -4
%fQ=bitcast i8*%fP to i32*
store i32 1342177288,i32*%fQ,align 4
store i8*%fO,i8**%n,align 8
%fR=load i8*,i8**%m,align 8
store i8*null,i8**%m,align 8
%fS=bitcast i8*%fO to i8**
store i8*%fR,i8**%fS,align 8
%fT=getelementptr inbounds i8,i8*%fO,i64 8
%fU=bitcast i8*%fT to i32*
store i32 1,i32*%fU,align 4
%fV=call i8*@sml_alloc(i32 inreg 28)#0
%fW=getelementptr inbounds i8,i8*%fV,i64 -4
%fX=bitcast i8*%fW to i32*
store i32 1342177304,i32*%fX,align 4
%fY=load i8*,i8**%n,align 8
%fZ=bitcast i8*%fV to i8**
store i8*%fY,i8**%fZ,align 8
%f0=getelementptr inbounds i8,i8*%fV,i64 8
%f1=bitcast i8*%f0 to void(...)**
store void(...)*bitcast(i8*(i8*,i32)*@_SMLLN8TyReduce7evalBtvE_90 to void(...)*),void(...)**%f1,align 8
%f2=getelementptr inbounds i8,i8*%fV,i64 16
%f3=bitcast i8*%f2 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce7evalBtvE_224 to void(...)*),void(...)**%f3,align 8
%f4=getelementptr inbounds i8,i8*%fV,i64 24
%f5=bitcast i8*%f4 to i32*
store i32 -2147483647,i32*%f5,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%fM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%fN)
store i8*%fY,i8**%o,align 8
%f6=call i8*@sml_alloc(i32 inreg 4)#0
%f7=bitcast i8*%f6 to i32*
%f8=getelementptr inbounds i8,i8*%f6,i64 -4
%f9=bitcast i8*%f8 to i32*
store i32 4,i32*%f9,align 4
store i32%fK,i32*%f7,align 4
%ga=load i8*,i8**%o,align 8
%gb=tail call fastcc i8*@_SMLLN8TyReduce7evalBtvE_90(i8*inreg%ga,i32 inreg%fK)
ret i8*%gb
gc:
store i8*null,i8**%v,align 8
%gd=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%gd,i8**%o,align 8
%ge=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@f,i64 0,i32 2)to i8*))
store i8*%ge,i8**%p,align 8
%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**%q,align 8
%gi=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%gj=bitcast i8*%gf to i8**
store i8*%gi,i8**%gj,align 8
%gk=getelementptr inbounds i8,i8*%gf,i64 8
%gl=bitcast i8*%gk to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[53x i8]}>,<{[4x i8],i32,[53x i8]}>*@d,i64 0,i32 2,i64 0),i8**%gl,align 8
%gm=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%gn=getelementptr inbounds i8,i8*%gf,i64 16
%go=bitcast i8*%gn to i8**
store i8*%gm,i8**%go,align 8
%gp=getelementptr inbounds i8,i8*%gf,i64 24
%gq=bitcast i8*%gp to i32*
store i32 7,i32*%gq,align 4
%gr=call i8*@sml_alloc(i32 inreg 60)#0
%gs=getelementptr inbounds i8,i8*%gr,i64 -4
%gt=bitcast i8*%gs to i32*
store i32 1342177336,i32*%gt,align 4
%gu=getelementptr inbounds i8,i8*%gr,i64 56
%gv=bitcast i8*%gu to i32*
store i32 1,i32*%gv,align 4
%gw=load i8*,i8**%q,align 8
%gx=bitcast i8*%gr to i8**
store i8*%gw,i8**%gx,align 8
call void@sml_raise(i8*inreg%gr)#1
unreachable
gy:
store i8*null,i8**%o,align 8
%gz=getelementptr inbounds i8,i8*%D,i64 8
%gA=bitcast i8*%gz to i8**
%gB=load i8*,i8**%gA,align 8
%gC=bitcast i8*%gB to i32*
%gD=load i32,i32*%gC,align 4
%gE=getelementptr inbounds i8,i8*%gB,i64 8
%gF=bitcast i8*%gE to i8**
%gG=load i8*,i8**%gF,align 8
%gH=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%gI=call fastcc i8*@_SMLLN8TyReduce8evalKindE_100(i8*inreg%gH,i8*inreg%gG)
store i8*%gI,i8**%o,align 8
%gJ=call i8*@sml_alloc(i32 inreg 20)#0
%gK=getelementptr inbounds i8,i8*%gJ,i64 -4
%gL=bitcast i8*%gK to i32*
store i32 1342177296,i32*%gL,align 4
store i8*%gJ,i8**%p,align 8
%gM=getelementptr inbounds i8,i8*%gJ,i64 4
%gN=bitcast i8*%gM to i32*
store i32 0,i32*%gN,align 1
%gO=bitcast i8*%gJ to i32*
store i32%gD,i32*%gO,align 4
%gP=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%gQ=getelementptr inbounds i8,i8*%gJ,i64 8
%gR=bitcast i8*%gQ to i8**
store i8*%gP,i8**%gR,align 8
%gS=getelementptr inbounds i8,i8*%gJ,i64 16
%gT=bitcast i8*%gS to i32*
store i32 2,i32*%gT,align 4
%gU=call i8*@sml_alloc(i32 inreg 20)#0
%gV=bitcast i8*%gU to i32*
%gW=getelementptr inbounds i8,i8*%gU,i64 -4
%gX=bitcast i8*%gW to i32*
store i32 1342177296,i32*%gX,align 4
%gY=getelementptr inbounds i8,i8*%gU,i64 4
%gZ=bitcast i8*%gY to i32*
store i32 0,i32*%gZ,align 1
store i32 5,i32*%gV,align 4
%g0=load i8*,i8**%p,align 8
%g1=getelementptr inbounds i8,i8*%gU,i64 8
%g2=bitcast i8*%g1 to i8**
store i8*%g0,i8**%g2,align 8
%g3=getelementptr inbounds i8,i8*%gU,i64 16
%g4=bitcast i8*%g3 to i32*
store i32 2,i32*%g4,align 4
ret i8*%gU
g5:
store i8*null,i8**%o,align 8
%g6=getelementptr inbounds i8,i8*%D,i64 8
%g7=bitcast i8*%g6 to i8**
%g8=load i8*,i8**%g7,align 8
%g9=bitcast i8*%g8 to i32*
%ha=load i32,i32*%g9,align 4
%hb=getelementptr inbounds i8,i8*%g8,i64 8
%hc=bitcast i8*%hb to i8**
%hd=load i8*,i8**%hc,align 8
%he=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%hf=call fastcc i8*@_SMLLN8TyReduce8evalKindE_100(i8*inreg%he,i8*inreg%hd)
store i8*%hf,i8**%o,align 8
%hg=call i8*@sml_alloc(i32 inreg 20)#0
%hh=getelementptr inbounds i8,i8*%hg,i64 -4
%hi=bitcast i8*%hh to i32*
store i32 1342177296,i32*%hi,align 4
store i8*%hg,i8**%p,align 8
%hj=getelementptr inbounds i8,i8*%hg,i64 4
%hk=bitcast i8*%hj to i32*
store i32 0,i32*%hk,align 1
%hl=bitcast i8*%hg to i32*
store i32%ha,i32*%hl,align 4
%hm=load i8*,i8**%o,align 8
store i8*null,i8**%o,align 8
%hn=getelementptr inbounds i8,i8*%hg,i64 8
%ho=bitcast i8*%hn to i8**
store i8*%hm,i8**%ho,align 8
%hp=getelementptr inbounds i8,i8*%hg,i64 16
%hq=bitcast i8*%hp to i32*
store i32 2,i32*%hq,align 4
%hr=call i8*@sml_alloc(i32 inreg 20)#0
%hs=bitcast i8*%hr to i32*
%ht=getelementptr inbounds i8,i8*%hr,i64 -4
%hu=bitcast i8*%ht to i32*
store i32 1342177296,i32*%hu,align 4
%hv=getelementptr inbounds i8,i8*%hr,i64 4
%hw=bitcast i8*%hv to i32*
store i32 0,i32*%hw,align 1
store i32 3,i32*%hs,align 4
%hx=load i8*,i8**%p,align 8
%hy=getelementptr inbounds i8,i8*%hr,i64 8
%hz=bitcast i8*%hy to i8**
store i8*%hx,i8**%hz,align 8
%hA=getelementptr inbounds i8,i8*%hr,i64 16
%hB=bitcast i8*%hA to i32*
store i32 2,i32*%hB,align 4
ret i8*%hr
hC:
%hD=load i8*,i8**%o,align 8
ret i8*%hD
hE:
store i8*null,i8**%o,align 8
%hF=getelementptr inbounds i8,i8*%D,i64 8
%hG=bitcast i8*%hF to i8**
%hH=load i8*,i8**%hG,align 8
%hI=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%hJ=bitcast i8**%f to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%hJ)
%hK=bitcast i8**%g to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%hK)
%hL=bitcast i8**%h to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%hL)
%hM=bitcast i8**%i to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%hM)
%hN=bitcast i8**%j to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%hN)
%hO=bitcast i8**%k to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%hO)
%hP=bitcast i8**%l to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%hP)
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
call void@llvm.gcroot(i8**%h,i8*null)#0
call void@llvm.gcroot(i8**%i,i8*null)#0
call void@llvm.gcroot(i8**%j,i8*null)#0
call void@llvm.gcroot(i8**%k,i8*null)#0
call void@llvm.gcroot(i8**%l,i8*null)#0
store i8*%hI,i8**%j,align 8
store i8*%hH,i8**%f,align 8
%hQ=load atomic i32,i32*@sml_check_flag unordered,align 4
%hR=icmp eq i32%hQ,0
br i1%hR,label%hU,label%hS
hS:
call void@sml_check(i32 inreg%hQ)
%hT=load i8*,i8**%f,align 8
br label%hU
hU:
%hV=phi i8*[%hT,%hS],[%hH,%hE]
%hW=bitcast i8*%hV to i32*
%hX=load i32,i32*%hW,align 4
switch i32%hX,label%hY[
i32 6,label%od
i32 5,label%nG
i32 4,label%m9
i32 1,label%mS
i32 3,label%mB
i32 0,label%kK
i32 9,label%kJ
i32 10,label%kI
i32 8,label%kH
i32 7,label%kF
i32 2,label%ig
]
hY:
store i8*null,i8**%j,align 8
call void@sml_matchcomp_bug()
%hZ=load i8*,i8**@_SMLZ5Match,align 8
store i8*%hZ,i8**%f,align 8
%h0=call i8*@sml_alloc(i32 inreg 20)#0
%h1=getelementptr inbounds i8,i8*%h0,i64 -4
%h2=bitcast i8*%h1 to i32*
store i32 1342177296,i32*%h2,align 4
store i8*%h0,i8**%g,align 8
%h3=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%h4=bitcast i8*%h0 to i8**
store i8*%h3,i8**%h4,align 8
%h5=getelementptr inbounds i8,i8*%h0,i64 8
%h6=bitcast i8*%h5 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[53x i8]}>,<{[4x i8],i32,[53x i8]}>*@l,i64 0,i32 2,i64 0),i8**%h6,align 8
%h7=getelementptr inbounds i8,i8*%h0,i64 16
%h8=bitcast i8*%h7 to i32*
store i32 3,i32*%h8,align 4
%h9=call i8*@sml_alloc(i32 inreg 60)#0
%ia=getelementptr inbounds i8,i8*%h9,i64 -4
%ib=bitcast i8*%ia to i32*
store i32 1342177336,i32*%ib,align 4
%ic=getelementptr inbounds i8,i8*%h9,i64 56
%id=bitcast i8*%ic to i32*
store i32 1,i32*%id,align 4
%ie=load i8*,i8**%g,align 8
%if=bitcast i8*%h9 to i8**
store i8*%ie,i8**%if,align 8
call void@sml_raise(i8*inreg%h9)#1
unreachable
ig:
%ih=getelementptr inbounds i8,i8*%hV,i64 8
%ii=bitcast i8*%ih to i8**
%ij=load i8*,i8**%ii,align 8
store i8*%ij,i8**%h,align 8
%ik=getelementptr inbounds i8,i8*%ij,i64 8
%il=bitcast i8*%ik to i8**
%im=load i8*,i8**%il,align 8
store i8*%im,i8**%i,align 8
%in=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%io=getelementptr inbounds i8,i8*%in,i64 16
%ip=bitcast i8*%io to i8*(i8*,i8*)**
%iq=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ip,align 8
%ir=bitcast i8*%in to i8**
%is=load i8*,i8**%ir,align 8
store i8*%is,i8**%f,align 8
%it=call i8*@sml_alloc(i32 inreg 12)#0
%iu=getelementptr inbounds i8,i8*%it,i64 -4
%iv=bitcast i8*%iu to i32*
store i32 1342177288,i32*%iv,align 4
store i8*%it,i8**%g,align 8
%iw=load i8*,i8**%j,align 8
%ix=bitcast i8*%it to i8**
store i8*%iw,i8**%ix,align 8
%iy=getelementptr inbounds i8,i8*%it,i64 8
%iz=bitcast i8*%iy to i32*
store i32 1,i32*%iz,align 4
%iA=call i8*@sml_alloc(i32 inreg 28)#0
%iB=getelementptr inbounds i8,i8*%iA,i64 -4
%iC=bitcast i8*%iB to i32*
store i32 1342177304,i32*%iC,align 4
%iD=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%iE=bitcast i8*%iA to i8**
store i8*%iD,i8**%iE,align 8
%iF=getelementptr inbounds i8,i8*%iA,i64 8
%iG=bitcast i8*%iF to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_175 to void(...)*),void(...)**%iG,align 8
%iH=getelementptr inbounds i8,i8*%iA,i64 16
%iI=bitcast i8*%iH to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_175 to void(...)*),void(...)**%iI,align 8
%iJ=getelementptr inbounds i8,i8*%iA,i64 24
%iK=bitcast i8*%iJ to i32*
store i32 -2147483647,i32*%iK,align 4
%iL=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%iM=call fastcc i8*%iq(i8*inreg%iL,i8*inreg%iA)
%iN=getelementptr inbounds i8,i8*%iM,i64 16
%iO=bitcast i8*%iN to i8*(i8*,i8*)**
%iP=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%iO,align 8
%iQ=bitcast i8*%iM to i8**
%iR=load i8*,i8**%iQ,align 8
%iS=bitcast i8**%h to i8***
%iT=load i8**,i8***%iS,align 8
%iU=load i8*,i8**%iT,align 8
%iV=call fastcc i8*%iP(i8*inreg%iR,i8*inreg%iU)
store i8*%iV,i8**%f,align 8
%iW=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%iX=getelementptr inbounds i8,i8*%iW,i64 16
%iY=bitcast i8*%iX to i8*(i8*,i8*)**
%iZ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%iY,align 8
%i0=bitcast i8*%iW to i8**
%i1=load i8*,i8**%i0,align 8
store i8*%i1,i8**%k,align 8
%i2=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%i3=getelementptr inbounds i8,i8*%i2,i64 16
%i4=bitcast i8*%i3 to i8*(i8*,i8*)**
%i5=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%i4,align 8
%i6=bitcast i8*%i2 to i8**
%i7=load i8*,i8**%i6,align 8
store i8*%i7,i8**%g,align 8
%i8=call i8*@sml_alloc(i32 inreg 12)#0
%i9=getelementptr inbounds i8,i8*%i8,i64 -4
%ja=bitcast i8*%i9 to i32*
store i32 1342177288,i32*%ja,align 4
store i8*%i8,i8**%l,align 8
%jb=load i8*,i8**%j,align 8
%jc=bitcast i8*%i8 to i8**
store i8*%jb,i8**%jc,align 8
%jd=getelementptr inbounds i8,i8*%i8,i64 8
%je=bitcast i8*%jd to i32*
store i32 1,i32*%je,align 4
%jf=call i8*@sml_alloc(i32 inreg 28)#0
%jg=getelementptr inbounds i8,i8*%jf,i64 -4
%jh=bitcast i8*%jg to i32*
store i32 1342177304,i32*%jh,align 4
%ji=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%jj=bitcast i8*%jf to i8**
store i8*%ji,i8**%jj,align 8
%jk=getelementptr inbounds i8,i8*%jf,i64 8
%jl=bitcast i8*%jk to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_176 to void(...)*),void(...)**%jl,align 8
%jm=getelementptr inbounds i8,i8*%jf,i64 16
%jn=bitcast i8*%jm to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_176 to void(...)*),void(...)**%jn,align 8
%jo=getelementptr inbounds i8,i8*%jf,i64 24
%jp=bitcast i8*%jo to i32*
store i32 -2147483647,i32*%jp,align 4
%jq=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%jr=call fastcc i8*%i5(i8*inreg%jq,i8*inreg%jf)
%js=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%jt=call fastcc i8*%iZ(i8*inreg%js,i8*inreg%jr)
%ju=getelementptr inbounds i8,i8*%jt,i64 16
%jv=bitcast i8*%ju to i8*(i8*,i8*)**
%jw=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%jv,align 8
%jx=bitcast i8*%jt to i8**
%jy=load i8*,i8**%jx,align 8
%jz=load i8*,i8**%h,align 8
%jA=getelementptr inbounds i8,i8*%jz,i64 24
%jB=bitcast i8*%jA to i8**
%jC=load i8*,i8**%jB,align 8
%jD=call fastcc i8*%jw(i8*inreg%jy,i8*inreg%jC)
store i8*%jD,i8**%g,align 8
%jE=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%jF=getelementptr inbounds i8,i8*%jE,i64 16
%jG=bitcast i8*%jF to i8*(i8*,i8*)**
%jH=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%jG,align 8
%jI=bitcast i8*%jE to i8**
%jJ=load i8*,i8**%jI,align 8
store i8*%jJ,i8**%k,align 8
%jK=call i8*@sml_alloc(i32 inreg 12)#0
%jL=getelementptr inbounds i8,i8*%jK,i64 -4
%jM=bitcast i8*%jL to i32*
store i32 1342177288,i32*%jM,align 4
store i8*%jK,i8**%l,align 8
%jN=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%jO=bitcast i8*%jK to i8**
store i8*%jN,i8**%jO,align 8
%jP=getelementptr inbounds i8,i8*%jK,i64 8
%jQ=bitcast i8*%jP to i32*
store i32 1,i32*%jQ,align 4
%jR=call i8*@sml_alloc(i32 inreg 28)#0
%jS=getelementptr inbounds i8,i8*%jR,i64 -4
%jT=bitcast i8*%jS to i32*
store i32 1342177304,i32*%jT,align 4
%jU=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%jV=bitcast i8*%jR to i8**
store i8*%jU,i8**%jV,align 8
%jW=getelementptr inbounds i8,i8*%jR,i64 8
%jX=bitcast i8*%jW to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_177 to void(...)*),void(...)**%jX,align 8
%jY=getelementptr inbounds i8,i8*%jR,i64 16
%jZ=bitcast i8*%jY to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_177 to void(...)*),void(...)**%jZ,align 8
%j0=getelementptr inbounds i8,i8*%jR,i64 24
%j1=bitcast i8*%j0 to i32*
store i32 -2147483647,i32*%j1,align 4
%j2=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%j3=call fastcc i8*%jH(i8*inreg%j2,i8*inreg%jR)
%j4=getelementptr inbounds i8,i8*%j3,i64 16
%j5=bitcast i8*%j4 to i8*(i8*,i8*)**
%j6=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j5,align 8
%j7=bitcast i8*%j3 to i8**
%j8=load i8*,i8**%j7,align 8
%j9=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%ka=getelementptr inbounds i8,i8*%j9,i64 16
%kb=bitcast i8*%ka to i8**
%kc=load i8*,i8**%kb,align 8
%kd=call fastcc i8*%j6(i8*inreg%j8,i8*inreg%kc)
store i8*%kd,i8**%h,align 8
%ke=call i8*@sml_alloc(i32 inreg 36)#0
%kf=getelementptr inbounds i8,i8*%ke,i64 -4
%kg=bitcast i8*%kf to i32*
store i32 1342177312,i32*%kg,align 4
store i8*%ke,i8**%j,align 8
%kh=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%ki=bitcast i8*%ke to i8**
store i8*%kh,i8**%ki,align 8
%kj=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%kk=getelementptr inbounds i8,i8*%ke,i64 8
%kl=bitcast i8*%kk to i8**
store i8*%kj,i8**%kl,align 8
%km=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%kn=getelementptr inbounds i8,i8*%ke,i64 16
%ko=bitcast i8*%kn to i8**
store i8*%km,i8**%ko,align 8
%kp=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%kq=getelementptr inbounds i8,i8*%ke,i64 24
%kr=bitcast i8*%kq to i8**
store i8*%kp,i8**%kr,align 8
%ks=getelementptr inbounds i8,i8*%ke,i64 32
%kt=bitcast i8*%ks to i32*
store i32 15,i32*%kt,align 4
%ku=call i8*@sml_alloc(i32 inreg 20)#0
%kv=bitcast i8*%ku to i32*
%kw=getelementptr inbounds i8,i8*%ku,i64 -4
%kx=bitcast i8*%kw to i32*
store i32 1342177296,i32*%kx,align 4
%ky=getelementptr inbounds i8,i8*%ku,i64 4
%kz=bitcast i8*%ky to i32*
store i32 0,i32*%kz,align 1
store i32 2,i32*%kv,align 4
%kA=load i8*,i8**%j,align 8
%kB=getelementptr inbounds i8,i8*%ku,i64 8
%kC=bitcast i8*%kB to i8**
store i8*%kA,i8**%kC,align 8
%kD=getelementptr inbounds i8,i8*%ku,i64 16
%kE=bitcast i8*%kD to i32*
store i32 2,i32*%kE,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
kF:
%kG=phi i8*[bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@k,i64 0,i32 2)to i8*),%hU],[bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@j,i64 0,i32 2)to i8*),%kH],[bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@i,i64 0,i32 2)to i8*),%kI],[bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@h,i64 0,i32 2)to i8*),%kJ]
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
kH:
br label%kF
kI:
br label%kF
kJ:
br label%kF
kK:
%kL=getelementptr inbounds i8,i8*%hV,i64 8
%kM=bitcast i8*%kL to i8**
%kN=load i8*,i8**%kM,align 8
store i8*%kN,i8**%h,align 8
%kO=getelementptr inbounds i8,i8*%kN,i64 8
%kP=bitcast i8*%kO to i8**
%kQ=load i8*,i8**%kP,align 8
store i8*%kQ,i8**%i,align 8
%kR=getelementptr inbounds i8,i8*%kN,i64 16
%kS=bitcast i8*%kR to i32*
%kT=load i32,i32*%kS,align 4
%kU=getelementptr inbounds i8,i8*%kN,i64 32
%kV=bitcast i8*%kU to i8**
%kW=load i8*,i8**%kV,align 8
%kX=load i8*,i8**%j,align 8
%kY=call fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_99(i8*inreg%kX,i8*inreg%kW)
store i8*%kY,i8**%f,align 8
%kZ=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%k0=getelementptr inbounds i8,i8*%kZ,i64 16
%k1=bitcast i8*%k0 to i8*(i8*,i8*)**
%k2=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%k1,align 8
%k3=bitcast i8*%kZ to i8**
%k4=load i8*,i8**%k3,align 8
store i8*%k4,i8**%g,align 8
%k5=call i8*@sml_alloc(i32 inreg 12)#0
%k6=getelementptr inbounds i8,i8*%k5,i64 -4
%k7=bitcast i8*%k6 to i32*
store i32 1342177288,i32*%k7,align 4
store i8*%k5,i8**%k,align 8
%k8=load i8*,i8**%j,align 8
%k9=bitcast i8*%k5 to i8**
store i8*%k8,i8**%k9,align 8
%la=getelementptr inbounds i8,i8*%k5,i64 8
%lb=bitcast i8*%la to i32*
store i32 1,i32*%lb,align 4
%lc=call i8*@sml_alloc(i32 inreg 28)#0
%ld=getelementptr inbounds i8,i8*%lc,i64 -4
%le=bitcast i8*%ld to i32*
store i32 1342177304,i32*%le,align 4
%lf=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%lg=bitcast i8*%lc to i8**
store i8*%lf,i8**%lg,align 8
%lh=getelementptr inbounds i8,i8*%lc,i64 8
%li=bitcast i8*%lh to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_169 to void(...)*),void(...)**%li,align 8
%lj=getelementptr inbounds i8,i8*%lc,i64 16
%lk=bitcast i8*%lj to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_169 to void(...)*),void(...)**%lk,align 8
%ll=getelementptr inbounds i8,i8*%lc,i64 24
%lm=bitcast i8*%ll to i32*
store i32 -2147483647,i32*%lm,align 4
%ln=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%lo=call fastcc i8*%k2(i8*inreg%ln,i8*inreg%lc)
%lp=getelementptr inbounds i8,i8*%lo,i64 16
%lq=bitcast i8*%lp to i8*(i8*,i8*)**
%lr=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%lq,align 8
%ls=bitcast i8*%lo to i8**
%lt=load i8*,i8**%ls,align 8
%lu=bitcast i8**%h to i8***
%lv=load i8**,i8***%lu,align 8
%lw=load i8*,i8**%lv,align 8
%lx=call fastcc i8*%lr(i8*inreg%lt,i8*inreg%lw)
store i8*%lx,i8**%g,align 8
%ly=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%lz=getelementptr inbounds i8,i8*%ly,i64 16
%lA=bitcast i8*%lz to i8*(i8*,i8*)**
%lB=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%lA,align 8
%lC=bitcast i8*%ly to i8**
%lD=load i8*,i8**%lC,align 8
store i8*%lD,i8**%k,align 8
%lE=call i8*@sml_alloc(i32 inreg 12)#0
%lF=getelementptr inbounds i8,i8*%lE,i64 -4
%lG=bitcast i8*%lF to i32*
store i32 1342177288,i32*%lG,align 4
store i8*%lE,i8**%l,align 8
%lH=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%lI=bitcast i8*%lE to i8**
store i8*%lH,i8**%lI,align 8
%lJ=getelementptr inbounds i8,i8*%lE,i64 8
%lK=bitcast i8*%lJ to i32*
store i32 1,i32*%lK,align 4
%lL=call i8*@sml_alloc(i32 inreg 28)#0
%lM=getelementptr inbounds i8,i8*%lL,i64 -4
%lN=bitcast i8*%lM to i32*
store i32 1342177304,i32*%lN,align 4
%lO=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%lP=bitcast i8*%lL to i8**
store i8*%lO,i8**%lP,align 8
%lQ=getelementptr inbounds i8,i8*%lL,i64 8
%lR=bitcast i8*%lQ to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_170 to void(...)*),void(...)**%lR,align 8
%lS=getelementptr inbounds i8,i8*%lL,i64 16
%lT=bitcast i8*%lS to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalBackendTyE_170 to void(...)*),void(...)**%lT,align 8
%lU=getelementptr inbounds i8,i8*%lL,i64 24
%lV=bitcast i8*%lU to i32*
store i32 -2147483647,i32*%lV,align 4
%lW=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%lX=call fastcc i8*%lB(i8*inreg%lW,i8*inreg%lL)
%lY=getelementptr inbounds i8,i8*%lX,i64 16
%lZ=bitcast i8*%lY to i8*(i8*,i8*)**
%l0=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%lZ,align 8
%l1=bitcast i8*%lX to i8**
%l2=load i8*,i8**%l1,align 8
%l3=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%l4=getelementptr inbounds i8,i8*%l3,i64 24
%l5=bitcast i8*%l4 to i8**
%l6=load i8*,i8**%l5,align 8
%l7=call fastcc i8*%l0(i8*inreg%l2,i8*inreg%l6)
store i8*%l7,i8**%h,align 8
%l8=call i8*@sml_alloc(i32 inreg 44)#0
%l9=getelementptr inbounds i8,i8*%l8,i64 -4
%ma=bitcast i8*%l9 to i32*
store i32 1342177320,i32*%ma,align 4
store i8*%l8,i8**%j,align 8
%mb=getelementptr inbounds i8,i8*%l8,i64 20
%mc=bitcast i8*%mb to i32*
store i32 0,i32*%mc,align 1
%md=load i8*,i8**%g,align 8
%me=bitcast i8*%l8 to i8**
store i8*null,i8**%g,align 8
store i8*%md,i8**%me,align 8
%mf=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%mg=getelementptr inbounds i8,i8*%l8,i64 8
%mh=bitcast i8*%mg to i8**
store i8*%mf,i8**%mh,align 8
%mi=getelementptr inbounds i8,i8*%l8,i64 16
%mj=bitcast i8*%mi to i32*
store i32%kT,i32*%mj,align 4
%mk=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%ml=getelementptr inbounds i8,i8*%l8,i64 24
%mm=bitcast i8*%ml to i8**
store i8*%mk,i8**%mm,align 8
%mn=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%mo=getelementptr inbounds i8,i8*%l8,i64 32
%mp=bitcast i8*%mo to i8**
store i8*%mn,i8**%mp,align 8
%mq=getelementptr inbounds i8,i8*%l8,i64 40
%mr=bitcast i8*%mq to i32*
store i32 27,i32*%mr,align 4
%ms=call i8*@sml_alloc(i32 inreg 20)#0
%mt=getelementptr inbounds i8,i8*%ms,i64 -4
%mu=bitcast i8*%mt to i32*
store i32 1342177296,i32*%mu,align 4
%mv=bitcast i8*%ms to i64*
store i64 0,i64*%mv,align 4
%mw=load i8*,i8**%j,align 8
%mx=getelementptr inbounds i8,i8*%ms,i64 8
%my=bitcast i8*%mx to i8**
store i8*%mw,i8**%my,align 8
%mz=getelementptr inbounds i8,i8*%ms,i64 16
%mA=bitcast i8*%mz to i32*
store i32 2,i32*%mA,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
mB:
%mC=getelementptr inbounds i8,i8*%hV,i64 8
%mD=bitcast i8*%mC to i8**
%mE=load i8*,i8**%mD,align 8
%mF=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%mG=call fastcc i8*@_SMLLN8TyReduce15evalCodeEntryTyE_98(i8*inreg%mF,i8*inreg%mE)
store i8*%mG,i8**%f,align 8
%mH=call i8*@sml_alloc(i32 inreg 20)#0
%mI=bitcast i8*%mH to i32*
%mJ=getelementptr inbounds i8,i8*%mH,i64 -4
%mK=bitcast i8*%mJ to i32*
store i32 1342177296,i32*%mK,align 4
%mL=getelementptr inbounds i8,i8*%mH,i64 4
%mM=bitcast i8*%mL to i32*
store i32 0,i32*%mM,align 1
store i32 3,i32*%mI,align 4
%mN=load i8*,i8**%f,align 8
%mO=getelementptr inbounds i8,i8*%mH,i64 8
%mP=bitcast i8*%mO to i8**
store i8*%mN,i8**%mP,align 8
%mQ=getelementptr inbounds i8,i8*%mH,i64 16
%mR=bitcast i8*%mQ to i32*
store i32 2,i32*%mR,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
mS:
%mT=getelementptr inbounds i8,i8*%hV,i64 8
%mU=bitcast i8*%mT to i8**
%mV=load i8*,i8**%mU,align 8
%mW=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%mX=call fastcc i8*@_SMLLN8TyReduce15evalCodeEntryTyE_98(i8*inreg%mW,i8*inreg%mV)
store i8*%mX,i8**%f,align 8
%mY=call i8*@sml_alloc(i32 inreg 20)#0
%mZ=bitcast i8*%mY to i32*
%m0=getelementptr inbounds i8,i8*%mY,i64 -4
%m1=bitcast i8*%m0 to i32*
store i32 1342177296,i32*%m1,align 4
%m2=getelementptr inbounds i8,i8*%mY,i64 4
%m3=bitcast i8*%m2 to i32*
store i32 0,i32*%m3,align 1
store i32 1,i32*%mZ,align 4
%m4=load i8*,i8**%f,align 8
%m5=getelementptr inbounds i8,i8*%mY,i64 8
%m6=bitcast i8*%m5 to i8**
store i8*%m4,i8**%m6,align 8
%m7=getelementptr inbounds i8,i8*%mY,i64 16
%m8=bitcast i8*%m7 to i32*
store i32 2,i32*%m8,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
m9:
%na=getelementptr inbounds i8,i8*%hV,i64 8
%nb=bitcast i8*%na to i8**
%nc=load i8*,i8**%nb,align 8
%nd=bitcast i8*%nc to i32*
%ne=load i32,i32*%nd,align 4
%nf=getelementptr inbounds i8,i8*%nc,i64 8
%ng=bitcast i8*%nf to i8**
%nh=load i8*,i8**%ng,align 8
%ni=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%nj=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%ni,i8*inreg%nh)
store i8*%nj,i8**%f,align 8
%nk=call i8*@sml_alloc(i32 inreg 20)#0
%nl=getelementptr inbounds i8,i8*%nk,i64 -4
%nm=bitcast i8*%nl to i32*
store i32 1342177296,i32*%nm,align 4
store i8*%nk,i8**%g,align 8
%nn=getelementptr inbounds i8,i8*%nk,i64 4
%no=bitcast i8*%nn to i32*
store i32 0,i32*%no,align 1
%np=bitcast i8*%nk to i32*
store i32%ne,i32*%np,align 4
%nq=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%nr=getelementptr inbounds i8,i8*%nk,i64 8
%ns=bitcast i8*%nr to i8**
store i8*%nq,i8**%ns,align 8
%nt=getelementptr inbounds i8,i8*%nk,i64 16
%nu=bitcast i8*%nt to i32*
store i32 2,i32*%nu,align 4
%nv=call i8*@sml_alloc(i32 inreg 20)#0
%nw=bitcast i8*%nv to i32*
%nx=getelementptr inbounds i8,i8*%nv,i64 -4
%ny=bitcast i8*%nx to i32*
store i32 1342177296,i32*%ny,align 4
%nz=getelementptr inbounds i8,i8*%nv,i64 4
%nA=bitcast i8*%nz to i32*
store i32 0,i32*%nA,align 1
store i32 4,i32*%nw,align 4
%nB=load i8*,i8**%g,align 8
%nC=getelementptr inbounds i8,i8*%nv,i64 8
%nD=bitcast i8*%nC to i8**
store i8*%nB,i8**%nD,align 8
%nE=getelementptr inbounds i8,i8*%nv,i64 16
%nF=bitcast i8*%nE to i32*
store i32 2,i32*%nF,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
nG:
%nH=getelementptr inbounds i8,i8*%hV,i64 8
%nI=bitcast i8*%nH to i8**
%nJ=load i8*,i8**%nI,align 8
%nK=bitcast i8*%nJ to i32*
%nL=load i32,i32*%nK,align 4
%nM=getelementptr inbounds i8,i8*%nJ,i64 8
%nN=bitcast i8*%nM to i8**
%nO=load i8*,i8**%nN,align 8
%nP=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%nQ=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%nP,i8*inreg%nO)
store i8*%nQ,i8**%f,align 8
%nR=call i8*@sml_alloc(i32 inreg 20)#0
%nS=getelementptr inbounds i8,i8*%nR,i64 -4
%nT=bitcast i8*%nS to i32*
store i32 1342177296,i32*%nT,align 4
store i8*%nR,i8**%g,align 8
%nU=getelementptr inbounds i8,i8*%nR,i64 4
%nV=bitcast i8*%nU to i32*
store i32 0,i32*%nV,align 1
%nW=bitcast i8*%nR to i32*
store i32%nL,i32*%nW,align 4
%nX=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%nY=getelementptr inbounds i8,i8*%nR,i64 8
%nZ=bitcast i8*%nY to i8**
store i8*%nX,i8**%nZ,align 8
%n0=getelementptr inbounds i8,i8*%nR,i64 16
%n1=bitcast i8*%n0 to i32*
store i32 2,i32*%n1,align 4
%n2=call i8*@sml_alloc(i32 inreg 20)#0
%n3=bitcast i8*%n2 to i32*
%n4=getelementptr inbounds i8,i8*%n2,i64 -4
%n5=bitcast i8*%n4 to i32*
store i32 1342177296,i32*%n5,align 4
%n6=getelementptr inbounds i8,i8*%n2,i64 4
%n7=bitcast i8*%n6 to i32*
store i32 0,i32*%n7,align 1
store i32 5,i32*%n3,align 4
%n8=load i8*,i8**%g,align 8
%n9=getelementptr inbounds i8,i8*%n2,i64 8
%oa=bitcast i8*%n9 to i8**
store i8*%n8,i8**%oa,align 8
%ob=getelementptr inbounds i8,i8*%n2,i64 16
%oc=bitcast i8*%ob to i32*
store i32 2,i32*%oc,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
od:
%oe=getelementptr inbounds i8,i8*%hV,i64 8
%of=bitcast i8*%oe to i8**
%og=load i8*,i8**%of,align 8
%oh=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%oi=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%oh,i8*inreg%og)
store i8*%oi,i8**%f,align 8
%oj=call i8*@sml_alloc(i32 inreg 20)#0
%ok=bitcast i8*%oj to i32*
%ol=getelementptr inbounds i8,i8*%oj,i64 -4
%om=bitcast i8*%ol to i32*
store i32 1342177296,i32*%om,align 4
%on=getelementptr inbounds i8,i8*%oj,i64 4
%oo=bitcast i8*%on to i32*
store i32 0,i32*%oo,align 1
store i32 6,i32*%ok,align 4
%op=load i8*,i8**%f,align 8
%oq=getelementptr inbounds i8,i8*%oj,i64 8
%or=bitcast i8*%oq to i8**
store i8*%op,i8**%or,align 8
%os=getelementptr inbounds i8,i8*%oj,i64 16
%ot=bitcast i8*%os to i32*
store i32 2,i32*%ot,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hM)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%hP)
br label%ou
ou:
%ov=phi i8*[%ku,%ig],[%kG,%kF],[%ms,%kK],[%mH,%mB],[%mY,%mS],[%nv,%m9],[%n2,%nG],[%oj,%od]
store i8*%ov,i8**%o,align 8
%ow=call i8*@sml_alloc(i32 inreg 20)#0
%ox=getelementptr inbounds i8,i8*%ow,i64 -4
%oy=bitcast i8*%ox to i32*
store i32 1342177296,i32*%oy,align 4
%oz=bitcast i8*%ow to i64*
store i64 0,i64*%oz,align 4
%oA=load i8*,i8**%o,align 8
%oB=getelementptr inbounds i8,i8*%ow,i64 8
%oC=bitcast i8*%oB to i8**
store i8*%oA,i8**%oC,align 8
%oD=getelementptr inbounds i8,i8*%ow,i64 16
%oE=bitcast i8*%oD to i32*
store i32 2,i32*%oE,align 4
ret i8*%ow
oF:
store i8*null,i8**%o,align 8
%oG=getelementptr inbounds i8,i8*%D,i64 8
%oH=bitcast i8*%oG to i8**
%oI=load i8*,i8**%oH,align 8
%oJ=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%oK=bitcast i8**%c to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%oK)
%oL=bitcast i8**%d to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%oL)
%oM=bitcast i8**%e to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%oM)
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
store i8*%oJ,i8**%c,align 8
store i8*%oI,i8**%d,align 8
%oN=load atomic i32,i32*@sml_check_flag unordered,align 4
%oO=icmp eq i32%oN,0
br i1%oO,label%oR,label%oP
oP:
call void@sml_check(i32 inreg%oN)
%oQ=load i8*,i8**%d,align 8
br label%oR
oR:
%oS=phi i8*[%oQ,%oP],[%oI,%oF]
%oT=bitcast i8*%oS to i32*
%oU=load i32,i32*%oT,align 4
switch i32%oU,label%oV[
i32 1,label%qw
i32 0,label%p2
i32 4,label%pL
i32 3,label%pu
i32 2,label%pd
]
oV:
call void@sml_matchcomp_bug()
%oW=load i8*,i8**@_SMLZ5Match,align 8
store i8*%oW,i8**%c,align 8
%oX=call i8*@sml_alloc(i32 inreg 20)#0
%oY=getelementptr inbounds i8,i8*%oX,i64 -4
%oZ=bitcast i8*%oY to i32*
store i32 1342177296,i32*%oZ,align 4
store i8*%oX,i8**%d,align 8
%o0=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%o1=bitcast i8*%oX to i8**
store i8*%o0,i8**%o1,align 8
%o2=getelementptr inbounds i8,i8*%oX,i64 8
%o3=bitcast i8*%o2 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[52x i8]}>,<{[4x i8],i32,[52x i8]}>*@a,i64 0,i32 2,i64 0),i8**%o3,align 8
%o4=getelementptr inbounds i8,i8*%oX,i64 16
%o5=bitcast i8*%o4 to i32*
store i32 3,i32*%o5,align 4
%o6=call i8*@sml_alloc(i32 inreg 60)#0
%o7=getelementptr inbounds i8,i8*%o6,i64 -4
%o8=bitcast i8*%o7 to i32*
store i32 1342177336,i32*%o8,align 4
%o9=getelementptr inbounds i8,i8*%o6,i64 56
%pa=bitcast i8*%o9 to i32*
store i32 1,i32*%pa,align 4
%pb=load i8*,i8**%d,align 8
%pc=bitcast i8*%o6 to i8**
store i8*%pb,i8**%pc,align 8
call void@sml_raise(i8*inreg%o6)#1
unreachable
pd:
%pe=getelementptr inbounds i8,i8*%oS,i64 8
%pf=bitcast i8*%pe to i8**
%pg=load i8*,i8**%pf,align 8
%ph=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%pi=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%ph,i8*inreg%pg)
store i8*%pi,i8**%c,align 8
%pj=call i8*@sml_alloc(i32 inreg 20)#0
%pk=bitcast i8*%pj to i32*
%pl=getelementptr inbounds i8,i8*%pj,i64 -4
%pm=bitcast i8*%pl to i32*
store i32 1342177296,i32*%pm,align 4
%pn=getelementptr inbounds i8,i8*%pj,i64 4
%po=bitcast i8*%pn to i32*
store i32 0,i32*%po,align 1
store i32 2,i32*%pk,align 4
%pp=load i8*,i8**%c,align 8
%pq=getelementptr inbounds i8,i8*%pj,i64 8
%pr=bitcast i8*%pq to i8**
store i8*%pp,i8**%pr,align 8
%ps=getelementptr inbounds i8,i8*%pj,i64 16
%pt=bitcast i8*%ps to i32*
store i32 2,i32*%pt,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oM)
br label%q9
pu:
%pv=getelementptr inbounds i8,i8*%oS,i64 8
%pw=bitcast i8*%pv to i8**
%px=load i8*,i8**%pw,align 8
%py=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%pz=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%py,i8*inreg%px)
store i8*%pz,i8**%c,align 8
%pA=call i8*@sml_alloc(i32 inreg 20)#0
%pB=bitcast i8*%pA to i32*
%pC=getelementptr inbounds i8,i8*%pA,i64 -4
%pD=bitcast i8*%pC to i32*
store i32 1342177296,i32*%pD,align 4
%pE=getelementptr inbounds i8,i8*%pA,i64 4
%pF=bitcast i8*%pE to i32*
store i32 0,i32*%pF,align 1
store i32 3,i32*%pB,align 4
%pG=load i8*,i8**%c,align 8
%pH=getelementptr inbounds i8,i8*%pA,i64 8
%pI=bitcast i8*%pH to i8**
store i8*%pG,i8**%pI,align 8
%pJ=getelementptr inbounds i8,i8*%pA,i64 16
%pK=bitcast i8*%pJ to i32*
store i32 2,i32*%pK,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oM)
br label%q9
pL:
%pM=getelementptr inbounds i8,i8*%oS,i64 8
%pN=bitcast i8*%pM to i8**
%pO=load i8*,i8**%pN,align 8
%pP=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%pQ=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%pP,i8*inreg%pO)
store i8*%pQ,i8**%c,align 8
%pR=call i8*@sml_alloc(i32 inreg 20)#0
%pS=bitcast i8*%pR to i32*
%pT=getelementptr inbounds i8,i8*%pR,i64 -4
%pU=bitcast i8*%pT to i32*
store i32 1342177296,i32*%pU,align 4
%pV=getelementptr inbounds i8,i8*%pR,i64 4
%pW=bitcast i8*%pV to i32*
store i32 0,i32*%pW,align 1
store i32 4,i32*%pS,align 4
%pX=load i8*,i8**%c,align 8
%pY=getelementptr inbounds i8,i8*%pR,i64 8
%pZ=bitcast i8*%pY to i8**
store i8*%pX,i8**%pZ,align 8
%p0=getelementptr inbounds i8,i8*%pR,i64 16
%p1=bitcast i8*%p0 to i32*
store i32 2,i32*%p1,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oM)
br label%q9
p2:
%p3=getelementptr inbounds i8,i8*%oS,i64 8
%p4=bitcast i8*%p3 to i8**
%p5=load i8*,i8**%p4,align 8
%p6=bitcast i8*%p5 to i8**
%p7=load i8*,i8**%p6,align 8
store i8*%p7,i8**%d,align 8
%p8=getelementptr inbounds i8,i8*%p5,i64 8
%p9=bitcast i8*%p8 to i8**
%qa=load i8*,i8**%p9,align 8
%qb=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%qc=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%qb,i8*inreg%qa)
store i8*%qc,i8**%c,align 8
%qd=call i8*@sml_alloc(i32 inreg 20)#0
%qe=getelementptr inbounds i8,i8*%qd,i64 -4
%qf=bitcast i8*%qe to i32*
store i32 1342177296,i32*%qf,align 4
store i8*%qd,i8**%e,align 8
%qg=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%qh=bitcast i8*%qd to i8**
store i8*%qg,i8**%qh,align 8
%qi=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%qj=getelementptr inbounds i8,i8*%qd,i64 8
%qk=bitcast i8*%qj to i8**
store i8*%qi,i8**%qk,align 8
%ql=getelementptr inbounds i8,i8*%qd,i64 16
%qm=bitcast i8*%ql to i32*
store i32 3,i32*%qm,align 4
%qn=call i8*@sml_alloc(i32 inreg 20)#0
%qo=getelementptr inbounds i8,i8*%qn,i64 -4
%qp=bitcast i8*%qo to i32*
store i32 1342177296,i32*%qp,align 4
%qq=bitcast i8*%qn to i64*
store i64 0,i64*%qq,align 4
%qr=load i8*,i8**%e,align 8
%qs=getelementptr inbounds i8,i8*%qn,i64 8
%qt=bitcast i8*%qs to i8**
store i8*%qr,i8**%qt,align 8
%qu=getelementptr inbounds i8,i8*%qn,i64 16
%qv=bitcast i8*%qu to i32*
store i32 2,i32*%qv,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oM)
br label%q9
qw:
%qx=getelementptr inbounds i8,i8*%oS,i64 8
%qy=bitcast i8*%qx to i8**
%qz=load i8*,i8**%qy,align 8
%qA=bitcast i8*%qz to i8**
%qB=load i8*,i8**%qA,align 8
store i8*%qB,i8**%d,align 8
%qC=getelementptr inbounds i8,i8*%qz,i64 16
%qD=bitcast i8*%qC to i32*
%qE=load i32,i32*%qD,align 4
%qF=getelementptr inbounds i8,i8*%qz,i64 8
%qG=bitcast i8*%qF to i8**
%qH=load i8*,i8**%qG,align 8
%qI=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%qJ=call fastcc i8*@_SMLLN8TyReduce17evalOverloadMatchE_94(i8*inreg%qI,i8*inreg%qH)
store i8*%qJ,i8**%c,align 8
%qK=call i8*@sml_alloc(i32 inreg 28)#0
%qL=getelementptr inbounds i8,i8*%qK,i64 -4
%qM=bitcast i8*%qL to i32*
store i32 1342177304,i32*%qM,align 4
store i8*%qK,i8**%e,align 8
%qN=getelementptr inbounds i8,i8*%qK,i64 20
%qO=bitcast i8*%qN to i32*
store i32 0,i32*%qO,align 1
%qP=load i8*,i8**%d,align 8
%qQ=bitcast i8*%qK to i8**
store i8*null,i8**%d,align 8
store i8*%qP,i8**%qQ,align 8
%qR=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%qS=getelementptr inbounds i8,i8*%qK,i64 8
%qT=bitcast i8*%qS to i8**
store i8*%qR,i8**%qT,align 8
%qU=getelementptr inbounds i8,i8*%qK,i64 16
%qV=bitcast i8*%qU to i32*
store i32%qE,i32*%qV,align 4
%qW=getelementptr inbounds i8,i8*%qK,i64 24
%qX=bitcast i8*%qW to i32*
store i32 3,i32*%qX,align 4
%qY=call i8*@sml_alloc(i32 inreg 20)#0
%qZ=bitcast i8*%qY to i32*
%q0=getelementptr inbounds i8,i8*%qY,i64 -4
%q1=bitcast i8*%q0 to i32*
store i32 1342177296,i32*%q1,align 4
%q2=getelementptr inbounds i8,i8*%qY,i64 4
%q3=bitcast i8*%q2 to i32*
store i32 0,i32*%q3,align 1
store i32 1,i32*%qZ,align 4
%q4=load i8*,i8**%e,align 8
%q5=getelementptr inbounds i8,i8*%qY,i64 8
%q6=bitcast i8*%q5 to i8**
store i8*%q4,i8**%q6,align 8
%q7=getelementptr inbounds i8,i8*%qY,i64 16
%q8=bitcast i8*%q7 to i32*
store i32 2,i32*%q8,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oL)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%oM)
br label%q9
q9:
%ra=phi i8*[%pj,%pd],[%pA,%pu],[%pR,%pL],[%qn,%p2],[%qY,%qw]
store i8*%ra,i8**%o,align 8
%rb=call i8*@sml_alloc(i32 inreg 20)#0
%rc=bitcast i8*%rb to i32*
%rd=getelementptr inbounds i8,i8*%rb,i64 -4
%re=bitcast i8*%rd to i32*
store i32 1342177296,i32*%re,align 4
%rf=getelementptr inbounds i8,i8*%rb,i64 4
%rg=bitcast i8*%rf to i32*
store i32 0,i32*%rg,align 1
store i32 9,i32*%rc,align 4
%rh=load i8*,i8**%o,align 8
%ri=getelementptr inbounds i8,i8*%rb,i64 8
%rj=bitcast i8*%ri to i8**
store i8*%rh,i8**%rj,align 8
%rk=getelementptr inbounds i8,i8*%rb,i64 16
%rl=bitcast i8*%rk to i32*
store i32 2,i32*%rl,align 4
ret i8*%rb
}
define internal fastcc i8*@_SMLLN8TyReduce15evalCodeEntryTyE_98(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
o:
%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**%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
store i8*%a,i8**%f,align 8
store i8*%b,i8**%c,align 8
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%m,label%j
j:
call void@sml_check(i32 inreg%h)
%k=load i8*,i8**%c,align 8
%l=load i8*,i8**%f,align 8
br label%m
m:
%n=phi i8*[%l,%j],[%a,%o]
%p=phi i8*[%k,%j],[%b,%o]
store i8*null,i8**%c,align 8
store i8*%p,i8**%e,align 8
%q=getelementptr inbounds i8,i8*%p,i64 8
%r=bitcast i8*%q to i32*
%s=load i32,i32*%r,align 4
%t=getelementptr inbounds i8,i8*%p,i64 24
%u=bitcast i8*%t to i8**
%v=load i8*,i8**%u,align 8
%w=call fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_99(i8*inreg%n,i8*inreg%v)
store i8*%w,i8**%c,align 8
%x=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%y=getelementptr inbounds i8,i8*%x,i64 16
%z=bitcast i8*%y to i8*(i8*,i8*)**
%A=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%z,align 8
%B=bitcast i8*%x to i8**
%C=load i8*,i8**%B,align 8
store i8*%C,i8**%d,align 8
%D=call i8*@sml_alloc(i32 inreg 12)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177288,i32*%F,align 4
store i8*%D,i8**%g,align 8
%G=load i8*,i8**%f,align 8
%H=bitcast i8*%D to i8**
store i8*%G,i8**%H,align 8
%I=getelementptr inbounds i8,i8*%D,i64 8
%J=bitcast i8*%I to i32*
store i32 1,i32*%J,align 4
%K=call i8*@sml_alloc(i32 inreg 28)#0
%L=getelementptr inbounds i8,i8*%K,i64 -4
%M=bitcast i8*%L to i32*
store i32 1342177304,i32*%M,align 4
%N=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%O=bitcast i8*%K to i8**
store i8*%N,i8**%O,align 8
%P=getelementptr inbounds i8,i8*%K,i64 8
%Q=bitcast i8*%P to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce15evalCodeEntryTyE_179 to void(...)*),void(...)**%Q,align 8
%R=getelementptr inbounds i8,i8*%K,i64 16
%S=bitcast i8*%R to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce15evalCodeEntryTyE_179 to void(...)*),void(...)**%S,align 8
%T=getelementptr inbounds i8,i8*%K,i64 24
%U=bitcast i8*%T to i32*
store i32 -2147483647,i32*%U,align 4
%V=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%W=call fastcc i8*%A(i8*inreg%V,i8*inreg%K)
%X=getelementptr inbounds i8,i8*%W,i64 16
%Y=bitcast i8*%X to i8*(i8*,i8*)**
%Z=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Y,align 8
%aa=bitcast i8*%W to i8**
%ab=load i8*,i8**%aa,align 8
%ac=bitcast i8**%e to i8***
%ad=load i8**,i8***%ac,align 8
%ae=load i8*,i8**%ad,align 8
%af=call fastcc i8*%Z(i8*inreg%ab,i8*inreg%ae)
store i8*%af,i8**%d,align 8
%ag=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ah=getelementptr inbounds i8,i8*%ag,i64 16
%ai=bitcast i8*%ah to i8**
%aj=load i8*,i8**%ai,align 8
%ak=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%al=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%ak,i8*inreg%aj)
store i8*%al,i8**%e,align 8
%am=call i8*@sml_alloc(i32 inreg 36)#0
%an=getelementptr inbounds i8,i8*%am,i64 -4
%ao=bitcast i8*%an to i32*
store i32 1342177312,i32*%ao,align 4
%ap=getelementptr inbounds i8,i8*%am,i64 12
%aq=bitcast i8*%ap to i32*
store i32 0,i32*%aq,align 1
%ar=load i8*,i8**%d,align 8
%as=bitcast i8*%am to i8**
store i8*%ar,i8**%as,align 8
%at=getelementptr inbounds i8,i8*%am,i64 8
%au=bitcast i8*%at to i32*
store i32%s,i32*%au,align 4
%av=load i8*,i8**%e,align 8
%aw=getelementptr inbounds i8,i8*%am,i64 16
%ax=bitcast i8*%aw to i8**
store i8*%av,i8**%ax,align 8
%ay=load i8*,i8**%c,align 8
%az=getelementptr inbounds i8,i8*%am,i64 24
%aA=bitcast i8*%az to i8**
store i8*%ay,i8**%aA,align 8
%aB=getelementptr inbounds i8,i8*%am,i64 32
%aC=bitcast i8*%aB to i32*
store i32 13,i32*%aC,align 4
ret i8*%am
}
define internal fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_99(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
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
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%j,label%i
i:
call void@sml_check(i32 inreg%g)
br label%j
j:
%k=call fastcc i8*@_SMLFN14BoundTypeVarID3Map3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%l=getelementptr inbounds i8,i8*%k,i64 16
%m=bitcast i8*%l to i8*(i8*,i8*)**
%n=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%m,align 8
%o=bitcast i8*%k to i8**
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%e,align 8
%q=call i8*@sml_alloc(i32 inreg 12)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177288,i32*%s,align 4
store i8*%q,i8**%f,align 8
%t=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%u=bitcast i8*%q to i8**
store i8*%t,i8**%u,align 8
%v=getelementptr inbounds i8,i8*%q,i64 8
%w=bitcast i8*%v to i32*
store i32 1,i32*%w,align 4
%x=call i8*@sml_alloc(i32 inreg 28)#0
%y=getelementptr inbounds i8,i8*%x,i64 -4
%z=bitcast i8*%y to i32*
store i32 1342177304,i32*%z,align 4
%A=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%B=bitcast i8*%x to i8**
store i8*%A,i8**%B,align 8
%C=getelementptr inbounds i8,i8*%x,i64 8
%D=bitcast i8*%C to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce10evalBtvEnvE_180 to void(...)*),void(...)**%D,align 8
%E=getelementptr inbounds i8,i8*%x,i64 16
%F=bitcast i8*%E to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce10evalBtvEnvE_180 to void(...)*),void(...)**%F,align 8
%G=getelementptr inbounds i8,i8*%x,i64 24
%H=bitcast i8*%G to i32*
store i32 -2147483647,i32*%H,align 4
%I=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%J=call fastcc i8*%n(i8*inreg%I,i8*inreg%x)
%K=getelementptr inbounds i8,i8*%J,i64 16
%L=bitcast i8*%K to i8*(i8*,i8*)**
%M=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%L,align 8
%N=bitcast i8*%J to i8**
%O=load i8*,i8**%N,align 8
%P=load i8*,i8**%d,align 8
%Q=tail call fastcc i8*%M(i8*inreg%O,i8*inreg%P)
ret i8*%Q
}
define internal fastcc i8*@_SMLLN8TyReduce8evalKindE_100(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
r:
%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
%h=alloca i8*,align 8
%i=alloca i8*,align 8
%j=alloca i8*,align 8
call void@llvm.gcroot(i8**%h,i8*null)#0
call void@llvm.gcroot(i8**%i,i8*null)#0
call void@llvm.gcroot(i8**%j,i8*null)#0
store i8*%a,i8**%h,align 8
store i8*%b,i8**%i,align 8
%k=load atomic i32,i32*@sml_check_flag unordered,align 4
%l=icmp eq i32%k,0
br i1%l,label%p,label%m
m:
call void@sml_check(i32 inreg%k)
%n=load i8*,i8**%i,align 8
%o=load i8*,i8**%h,align 8
br label%p
p:
%q=phi i8*[%o,%m],[%a,%r]
%s=phi i8*[%n,%m],[%b,%r]
%t=bitcast i8*%s to i8**
%u=load i8*,i8**%t,align 8
store i8*%u,i8**%i,align 8
%v=getelementptr inbounds i8,i8*%s,i64 8
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
store i8*%x,i8**%j,align 8
%y=getelementptr inbounds i8,i8*%s,i64 16
%z=bitcast i8*%y to i8**
%A=load i8*,i8**%z,align 8
store i8*null,i8**%h,align 8
%B=bitcast i8**%c to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%B)
%C=bitcast i8**%d to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%C)
%D=bitcast i8**%e to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%D)
%E=bitcast i8**%f to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%E)
%F=bitcast i8**%g to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%F)
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
store i8*%q,i8**%e,align 8
store i8*%A,i8**%c,align 8
%G=load atomic i32,i32*@sml_check_flag unordered,align 4
%H=icmp eq i32%G,0
br i1%H,label%K,label%I
I:
call void@sml_check(i32 inreg%G)
%J=load i8*,i8**%c,align 8
br label%K
K:
%L=phi i8*[%J,%I],[%A,%p]
%M=icmp eq i8*%L,null
br i1%M,label%a4,label%N
N:
%O=bitcast i8*%L to i32*
%P=load i32,i32*%O,align 4
switch i32%P,label%Q[
i32 0,label%cD
i32 1,label%a5
i32 3,label%a4
i32 2,label%ai
]
Q:
store i8*null,i8**%e,align 8
call void@sml_matchcomp_bug()
%R=load i8*,i8**@_SMLZ5Match,align 8
store i8*%R,i8**%c,align 8
%S=call i8*@sml_alloc(i32 inreg 20)#0
%T=getelementptr inbounds i8,i8*%S,i64 -4
%U=bitcast i8*%T to i32*
store i32 1342177296,i32*%U,align 4
store i8*%S,i8**%d,align 8
%V=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%W=bitcast i8*%S to i8**
store i8*%V,i8**%W,align 8
%X=getelementptr inbounds i8,i8*%S,i64 8
%Y=bitcast i8*%X to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@m,i64 0,i32 2,i64 0),i8**%Y,align 8
%Z=getelementptr inbounds i8,i8*%S,i64 16
%aa=bitcast i8*%Z to i32*
store i32 3,i32*%aa,align 4
%ab=call i8*@sml_alloc(i32 inreg 60)#0
%ac=getelementptr inbounds i8,i8*%ab,i64 -4
%ad=bitcast i8*%ac to i32*
store i32 1342177336,i32*%ad,align 4
%ae=getelementptr inbounds i8,i8*%ab,i64 56
%af=bitcast i8*%ae to i32*
store i32 1,i32*%af,align 4
%ag=load i8*,i8**%d,align 8
%ah=bitcast i8*%ab to i8**
store i8*%ag,i8**%ah,align 8
call void@sml_raise(i8*inreg%ab)#1
unreachable
ai:
%aj=getelementptr inbounds i8,i8*%L,i64 8
%ak=bitcast i8*%aj to i8**
%al=load i8*,i8**%ak,align 8
store i8*%al,i8**%c,align 8
%am=call fastcc i8*@_SMLFN11RecordLabel3Map3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%an=getelementptr inbounds i8,i8*%am,i64 16
%ao=bitcast i8*%an to i8*(i8*,i8*)**
%ap=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ao,align 8
%aq=bitcast i8*%am to i8**
%ar=load i8*,i8**%aq,align 8
store i8*%ar,i8**%d,align 8
%as=call i8*@sml_alloc(i32 inreg 12)#0
%at=getelementptr inbounds i8,i8*%as,i64 -4
%au=bitcast i8*%at to i32*
store i32 1342177288,i32*%au,align 4
store i8*%as,i8**%f,align 8
%av=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aw=bitcast i8*%as to i8**
store i8*%av,i8**%aw,align 8
%ax=getelementptr inbounds i8,i8*%as,i64 8
%ay=bitcast i8*%ax to i32*
store i32 1,i32*%ay,align 4
%az=call i8*@sml_alloc(i32 inreg 28)#0
%aA=getelementptr inbounds i8,i8*%az,i64 -4
%aB=bitcast i8*%aA to i32*
store i32 1342177304,i32*%aB,align 4
%aC=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aD=bitcast i8*%az to i8**
store i8*%aC,i8**%aD,align 8
%aE=getelementptr inbounds i8,i8*%az,i64 8
%aF=bitcast i8*%aE to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_184 to void(...)*),void(...)**%aF,align 8
%aG=getelementptr inbounds i8,i8*%az,i64 16
%aH=bitcast i8*%aG to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_184 to void(...)*),void(...)**%aH,align 8
%aI=getelementptr inbounds i8,i8*%az,i64 24
%aJ=bitcast i8*%aI to i32*
store i32 -2147483647,i32*%aJ,align 4
%aK=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aL=call fastcc i8*%ap(i8*inreg%aK,i8*inreg%az)
%aM=getelementptr inbounds i8,i8*%aL,i64 16
%aN=bitcast i8*%aM to i8*(i8*,i8*)**
%aO=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aN,align 8
%aP=bitcast i8*%aL to i8**
%aQ=load i8*,i8**%aP,align 8
%aR=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aS=call fastcc i8*%aO(i8*inreg%aQ,i8*inreg%aR)
store i8*%aS,i8**%c,align 8
%aT=call i8*@sml_alloc(i32 inreg 20)#0
%aU=bitcast i8*%aT to i32*
%aV=getelementptr inbounds i8,i8*%aT,i64 -4
%aW=bitcast i8*%aV to i32*
store i32 1342177296,i32*%aW,align 4
%aX=getelementptr inbounds i8,i8*%aT,i64 4
%aY=bitcast i8*%aX to i32*
store i32 0,i32*%aY,align 1
store i32 2,i32*%aU,align 4
%aZ=load i8*,i8**%c,align 8
%a0=getelementptr inbounds i8,i8*%aT,i64 8
%a1=bitcast i8*%a0 to i8**
store i8*%aZ,i8**%a1,align 8
%a2=getelementptr inbounds i8,i8*%aT,i64 16
%a3=bitcast i8*%a2 to i32*
store i32 2,i32*%a3,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%B)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%C)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%D)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%E)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%F)
br label%dn
a4:
call void@llvm.lifetime.end.p0i8(i64 8,i8*%B)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%C)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%D)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%E)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%F)
br label%dn
a5:
%a6=getelementptr inbounds i8,i8*%L,i64 8
%a7=bitcast i8*%a6 to i8**
%a8=load i8*,i8**%a7,align 8
store i8*%a8,i8**%d,align 8
%a9=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%ba=getelementptr inbounds i8,i8*%a9,i64 16
%bb=bitcast i8*%ba to i8*(i8*,i8*)**
%bc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bb,align 8
%bd=bitcast i8*%a9 to i8**
%be=load i8*,i8**%bd,align 8
store i8*%be,i8**%c,align 8
%bf=call i8*@sml_alloc(i32 inreg 12)#0
%bg=getelementptr inbounds i8,i8*%bf,i64 -4
%bh=bitcast i8*%bg to i32*
store i32 1342177288,i32*%bh,align 4
store i8*%bf,i8**%f,align 8
%bi=load i8*,i8**%e,align 8
%bj=bitcast i8*%bf to i8**
store i8*%bi,i8**%bj,align 8
%bk=getelementptr inbounds i8,i8*%bf,i64 8
%bl=bitcast i8*%bk to i32*
store i32 1,i32*%bl,align 4
%bm=call i8*@sml_alloc(i32 inreg 28)#0
%bn=getelementptr inbounds i8,i8*%bm,i64 -4
%bo=bitcast i8*%bn to i32*
store i32 1342177304,i32*%bo,align 4
%bp=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bq=bitcast i8*%bm to i8**
store i8*%bp,i8**%bq,align 8
%br=getelementptr inbounds i8,i8*%bm,i64 8
%bs=bitcast i8*%br to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_182 to void(...)*),void(...)**%bs,align 8
%bt=getelementptr inbounds i8,i8*%bm,i64 16
%bu=bitcast i8*%bt to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_182 to void(...)*),void(...)**%bu,align 8
%bv=getelementptr inbounds i8,i8*%bm,i64 24
%bw=bitcast i8*%bv to i32*
store i32 -2147483647,i32*%bw,align 4
%bx=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%by=call fastcc i8*%bc(i8*inreg%bx,i8*inreg%bm)
%bz=getelementptr inbounds i8,i8*%by,i64 16
%bA=bitcast i8*%bz to i8*(i8*,i8*)**
%bB=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bA,align 8
%bC=bitcast i8*%by to i8**
%bD=load i8*,i8**%bC,align 8
%bE=bitcast i8**%d to i8***
%bF=load i8**,i8***%bE,align 8
%bG=load i8*,i8**%bF,align 8
%bH=call fastcc i8*%bB(i8*inreg%bD,i8*inreg%bG)
store i8*%bH,i8**%c,align 8
%bI=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%bJ=getelementptr inbounds i8,i8*%bI,i64 16
%bK=bitcast i8*%bJ to i8*(i8*,i8*)**
%bL=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bK,align 8
%bM=bitcast i8*%bI to i8**
%bN=load i8*,i8**%bM,align 8
store i8*%bN,i8**%f,align 8
%bO=call i8*@sml_alloc(i32 inreg 12)#0
%bP=getelementptr inbounds i8,i8*%bO,i64 -4
%bQ=bitcast i8*%bP to i32*
store i32 1342177288,i32*%bQ,align 4
store i8*%bO,i8**%g,align 8
%bR=load i8*,i8**%e,align 8
store i8*null,i8**%e,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 i32*
store i32 1,i32*%bU,align 4
%bV=call i8*@sml_alloc(i32 inreg 28)#0
%bW=getelementptr inbounds i8,i8*%bV,i64 -4
%bX=bitcast i8*%bW to i32*
store i32 1342177304,i32*%bX,align 4
%bY=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%bZ=bitcast i8*%bV to i8**
store i8*%bY,i8**%bZ,align 8
%b0=getelementptr inbounds i8,i8*%bV,i64 8
%b1=bitcast i8*%b0 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_183 to void(...)*),void(...)**%b1,align 8
%b2=getelementptr inbounds i8,i8*%bV,i64 16
%b3=bitcast i8*%b2 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_183 to void(...)*),void(...)**%b3,align 8
%b4=getelementptr inbounds i8,i8*%bV,i64 24
%b5=bitcast i8*%b4 to i32*
store i32 -2147483647,i32*%b5,align 4
%b6=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%b7=call fastcc i8*%bL(i8*inreg%b6,i8*inreg%bV)
%b8=getelementptr inbounds i8,i8*%b7,i64 16
%b9=bitcast i8*%b8 to i8*(i8*,i8*)**
%ca=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%b9,align 8
%cb=bitcast i8*%b7 to i8**
%cc=load i8*,i8**%cb,align 8
%cd=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ce=getelementptr inbounds i8,i8*%cd,i64 8
%cf=bitcast i8*%ce to i8**
%cg=load i8*,i8**%cf,align 8
%ch=call fastcc i8*%ca(i8*inreg%cc,i8*inreg%cg)
store i8*%ch,i8**%d,align 8
%ci=call i8*@sml_alloc(i32 inreg 20)#0
%cj=getelementptr inbounds i8,i8*%ci,i64 -4
%ck=bitcast i8*%cj to i32*
store i32 1342177296,i32*%ck,align 4
store i8*%ci,i8**%e,align 8
%cl=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cm=bitcast i8*%ci to i8**
store i8*%cl,i8**%cm,align 8
%cn=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%co=getelementptr inbounds i8,i8*%ci,i64 8
%cp=bitcast i8*%co to i8**
store i8*%cn,i8**%cp,align 8
%cq=getelementptr inbounds i8,i8*%ci,i64 16
%cr=bitcast i8*%cq to i32*
store i32 3,i32*%cr,align 4
%cs=call i8*@sml_alloc(i32 inreg 20)#0
%ct=bitcast i8*%cs to i32*
%cu=getelementptr inbounds i8,i8*%cs,i64 -4
%cv=bitcast i8*%cu to i32*
store i32 1342177296,i32*%cv,align 4
%cw=getelementptr inbounds i8,i8*%cs,i64 4
%cx=bitcast i8*%cw to i32*
store i32 0,i32*%cx,align 1
store i32 1,i32*%ct,align 4
%cy=load i8*,i8**%e,align 8
%cz=getelementptr inbounds i8,i8*%cs,i64 8
%cA=bitcast i8*%cz to i8**
store i8*%cy,i8**%cA,align 8
%cB=getelementptr inbounds i8,i8*%cs,i64 16
%cC=bitcast i8*%cB to i32*
store i32 2,i32*%cC,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%B)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%C)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%D)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%E)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%F)
br label%dn
cD:
%cE=getelementptr inbounds i8,i8*%L,i64 8
%cF=bitcast i8*%cE to i8**
%cG=load i8*,i8**%cF,align 8
store i8*%cG,i8**%c,align 8
%cH=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%cI=getelementptr inbounds i8,i8*%cH,i64 16
%cJ=bitcast i8*%cI to i8*(i8*,i8*)**
%cK=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cJ,align 8
%cL=bitcast i8*%cH to i8**
%cM=load i8*,i8**%cL,align 8
store i8*%cM,i8**%d,align 8
%cN=call i8*@sml_alloc(i32 inreg 12)#0
%cO=getelementptr inbounds i8,i8*%cN,i64 -4
%cP=bitcast i8*%cO to i32*
store i32 1342177288,i32*%cP,align 4
store i8*%cN,i8**%f,align 8
%cQ=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%cR=bitcast i8*%cN to i8**
store i8*%cQ,i8**%cR,align 8
%cS=getelementptr inbounds i8,i8*%cN,i64 8
%cT=bitcast i8*%cS to i32*
store i32 1,i32*%cT,align 4
%cU=call i8*@sml_alloc(i32 inreg 28)#0
%cV=getelementptr inbounds i8,i8*%cU,i64 -4
%cW=bitcast i8*%cV to i32*
store i32 1342177304,i32*%cW,align 4
%cX=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cY=bitcast i8*%cU to i8**
store i8*%cX,i8**%cY,align 8
%cZ=getelementptr inbounds i8,i8*%cU,i64 8
%c0=bitcast i8*%cZ to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_181 to void(...)*),void(...)**%c0,align 8
%c1=getelementptr inbounds i8,i8*%cU,i64 16
%c2=bitcast i8*%c1 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalTvarKindE_181 to void(...)*),void(...)**%c2,align 8
%c3=getelementptr inbounds i8,i8*%cU,i64 24
%c4=bitcast i8*%c3 to i32*
store i32 -2147483647,i32*%c4,align 4
%c5=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%c6=call fastcc i8*%cK(i8*inreg%c5,i8*inreg%cU)
%c7=getelementptr inbounds i8,i8*%c6,i64 16
%c8=bitcast i8*%c7 to i8*(i8*,i8*)**
%c9=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%c8,align 8
%da=bitcast i8*%c6 to i8**
%db=load i8*,i8**%da,align 8
%dc=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dd=call fastcc i8*%c9(i8*inreg%db,i8*inreg%dc)
store i8*%dd,i8**%c,align 8
%de=call i8*@sml_alloc(i32 inreg 20)#0
%df=getelementptr inbounds i8,i8*%de,i64 -4
%dg=bitcast i8*%df to i32*
store i32 1342177296,i32*%dg,align 4
%dh=bitcast i8*%de to i64*
store i64 0,i64*%dh,align 4
%di=load i8*,i8**%c,align 8
%dj=getelementptr inbounds i8,i8*%de,i64 8
%dk=bitcast i8*%dj to i8**
store i8*%di,i8**%dk,align 8
%dl=getelementptr inbounds i8,i8*%de,i64 16
%dm=bitcast i8*%dl to i32*
store i32 2,i32*%dm,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%B)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%C)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%D)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%E)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%F)
br label%dn
dn:
%do=phi i8*[%aT,%ai],[null,%a4],[%cs,%a5],[%de,%cD]
store i8*%do,i8**%h,align 8
%dp=call i8*@sml_alloc(i32 inreg 28)#0
%dq=getelementptr inbounds i8,i8*%dp,i64 -4
%dr=bitcast i8*%dq to i32*
store i32 1342177304,i32*%dr,align 4
%ds=load i8*,i8**%i,align 8
%dt=bitcast i8*%dp to i8**
store i8*%ds,i8**%dt,align 8
%du=load i8*,i8**%j,align 8
%dv=getelementptr inbounds i8,i8*%dp,i64 8
%dw=bitcast i8*%dv to i8**
store i8*%du,i8**%dw,align 8
%dx=load i8*,i8**%h,align 8
%dy=getelementptr inbounds i8,i8*%dp,i64 16
%dz=bitcast i8*%dy to i8**
store i8*%dx,i8**%dz,align 8
%dA=getelementptr inbounds i8,i8*%dp,i64 24
%dB=bitcast i8*%dA to i32*
store i32 7,i32*%dB,align 4
ret i8*%dp
}
define internal fastcc i8*@_SMLLN8TyReduce14evalConstraintE_102(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
o:
%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**%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
store i8*%a,i8**%f,align 8
store i8*%b,i8**%c,align 8
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%m,label%j
j:
call void@sml_check(i32 inreg%h)
%k=load i8*,i8**%c,align 8
%l=load i8*,i8**%f,align 8
br label%m
m:
%n=phi i8*[%l,%j],[%a,%o]
%p=phi i8*[%k,%j],[%b,%o]
store i8*null,i8**%c,align 8
store i8*%p,i8**%d,align 8
%q=getelementptr inbounds i8,i8*%p,i64 8
%r=bitcast i8*%q to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%g,align 8
%t=getelementptr inbounds i8,i8*%p,i64 16
%u=bitcast i8*%t to i8**
%v=load i8*,i8**%u,align 8
%w=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%n,i8*inreg%v)
store i8*%w,i8**%e,align 8
%x=bitcast i8**%d to i8****
%y=load i8***,i8****%x,align 8
%z=load i8**,i8***%y,align 8
%A=load i8*,i8**%z,align 8
%B=load i8*,i8**%f,align 8
%C=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%B,i8*inreg%A)
store i8*%C,i8**%c,align 8
%D=bitcast i8**%d to i8***
%E=load i8**,i8***%D,align 8
store i8*null,i8**%d,align 8
%F=load i8*,i8**%E,align 8
%G=getelementptr inbounds i8,i8*%F,i64 8
%H=bitcast i8*%G to i8**
%I=load i8*,i8**%H,align 8
%J=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%K=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%J,i8*inreg%I)
store i8*%K,i8**%d,align 8
%L=call i8*@sml_alloc(i32 inreg 20)#0
%M=getelementptr inbounds i8,i8*%L,i64 -4
%N=bitcast i8*%M to i32*
store i32 1342177296,i32*%N,align 4
store i8*%L,i8**%f,align 8
%O=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%P=bitcast i8*%L to i8**
store i8*%O,i8**%P,align 8
%Q=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%R=getelementptr inbounds i8,i8*%L,i64 8
%S=bitcast i8*%R to i8**
store i8*%Q,i8**%S,align 8
%T=getelementptr inbounds i8,i8*%L,i64 16
%U=bitcast i8*%T to i32*
store i32 3,i32*%U,align 4
%V=call i8*@sml_alloc(i32 inreg 28)#0
%W=getelementptr inbounds i8,i8*%V,i64 -4
%X=bitcast i8*%W to i32*
store i32 1342177304,i32*%X,align 4
%Y=load i8*,i8**%f,align 8
%Z=bitcast i8*%V to i8**
store i8*%Y,i8**%Z,align 8
%aa=load i8*,i8**%g,align 8
%ab=getelementptr inbounds i8,i8*%V,i64 8
%ac=bitcast i8*%ab to i8**
store i8*%aa,i8**%ac,align 8
%ad=load i8*,i8**%e,align 8
%ae=getelementptr inbounds i8,i8*%V,i64 16
%af=bitcast i8*%ae to i8**
store i8*%ad,i8**%af,align 8
%ag=getelementptr inbounds i8,i8*%V,i64 24
%ah=bitcast i8*%ag to i32*
store i32 7,i32*%ah,align 4
ret i8*%V
}
define internal fastcc i8*@_SMLLN8TyReduce11evalDtyKindE_103(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
k:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%b,%k]
store i8*null,i8**%d,align 8
%l=bitcast i8*%j to i32*
%m=load i32,i32*%l,align 4
switch i32%m,label%n[
i32 0,label%aD
i32 2,label%W
i32 1,label%F
]
n:
call void@sml_matchcomp_bug()
%o=load i8*,i8**@_SMLZ5Match,align 8
store i8*%o,i8**%c,align 8
%p=call i8*@sml_alloc(i32 inreg 20)#0
%q=getelementptr inbounds i8,i8*%p,i64 -4
%r=bitcast i8*%q to i32*
store i32 1342177296,i32*%r,align 4
store i8*%p,i8**%d,align 8
%s=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%t=bitcast i8*%p to i8**
store i8*%s,i8**%t,align 8
%u=getelementptr inbounds i8,i8*%p,i64 8
%v=bitcast i8*%u to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@n,i64 0,i32 2,i64 0),i8**%v,align 8
%w=getelementptr inbounds i8,i8*%p,i64 16
%x=bitcast i8*%w to i32*
store i32 3,i32*%x,align 4
%y=call i8*@sml_alloc(i32 inreg 60)#0
%z=getelementptr inbounds i8,i8*%y,i64 -4
%A=bitcast i8*%z to i32*
store i32 1342177336,i32*%A,align 4
%B=getelementptr inbounds i8,i8*%y,i64 56
%C=bitcast i8*%B to i32*
store i32 1,i32*%C,align 4
%D=load i8*,i8**%d,align 8
%E=bitcast i8*%y to i8**
store i8*%D,i8**%E,align 8
call void@sml_raise(i8*inreg%y)#1
unreachable
F:
%G=getelementptr inbounds i8,i8*%j,i64 8
%H=bitcast i8*%G to i8**
%I=load i8*,i8**%H,align 8
%J=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%K=call fastcc i8*@_SMLLN8TyReduce13evalOpaqueRepE_104(i8*inreg%J,i8*inreg%I)
store i8*%K,i8**%c,align 8
%L=call i8*@sml_alloc(i32 inreg 20)#0
%M=bitcast i8*%L to i32*
%N=getelementptr inbounds i8,i8*%L,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177296,i32*%O,align 4
%P=getelementptr inbounds i8,i8*%L,i64 4
%Q=bitcast i8*%P to i32*
store i32 0,i32*%Q,align 1
store i32 1,i32*%M,align 4
%R=load i8*,i8**%c,align 8
%S=getelementptr inbounds i8,i8*%L,i64 8
%T=bitcast i8*%S to i8**
store i8*%R,i8**%T,align 8
%U=getelementptr inbounds i8,i8*%L,i64 16
%V=bitcast i8*%U to i32*
store i32 2,i32*%V,align 4
ret i8*%L
W:
%X=getelementptr inbounds i8,i8*%j,i64 8
%Y=bitcast i8*%X to i8**
%Z=load i8*,i8**%Y,align 8
%aa=getelementptr inbounds i8,i8*%Z,i64 8
%ab=bitcast i8*%aa to i32*
%ac=load i32,i32*%ab,align 4
%ad=bitcast i8*%Z to i8**
%ae=load i8*,i8**%ad,align 8
%af=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ag=call fastcc i8*@_SMLLN8TyReduce13evalOpaqueRepE_104(i8*inreg%af,i8*inreg%ae)
store i8*%ag,i8**%c,align 8
%ah=call i8*@sml_alloc(i32 inreg 20)#0
%ai=getelementptr inbounds i8,i8*%ah,i64 -4
%aj=bitcast i8*%ai to i32*
store i32 1342177296,i32*%aj,align 4
store i8*%ah,i8**%d,align 8
%ak=getelementptr inbounds i8,i8*%ah,i64 12
%al=bitcast i8*%ak to i32*
store i32 0,i32*%al,align 1
%am=load i8*,i8**%c,align 8
%an=bitcast i8*%ah to i8**
store i8*null,i8**%c,align 8
store i8*%am,i8**%an,align 8
%ao=getelementptr inbounds i8,i8*%ah,i64 8
%ap=bitcast i8*%ao to i32*
store i32%ac,i32*%ap,align 4
%aq=getelementptr inbounds i8,i8*%ah,i64 16
%ar=bitcast i8*%aq to i32*
store i32 1,i32*%ar,align 4
%as=call i8*@sml_alloc(i32 inreg 20)#0
%at=bitcast i8*%as to i32*
%au=getelementptr inbounds i8,i8*%as,i64 -4
%av=bitcast i8*%au to i32*
store i32 1342177296,i32*%av,align 4
%aw=getelementptr inbounds i8,i8*%as,i64 4
%ax=bitcast i8*%aw to i32*
store i32 0,i32*%ax,align 1
store i32 2,i32*%at,align 4
%ay=load i8*,i8**%d,align 8
%az=getelementptr inbounds i8,i8*%as,i64 8
%aA=bitcast i8*%az to i8**
store i8*%ay,i8**%aA,align 8
%aB=getelementptr inbounds i8,i8*%as,i64 16
%aC=bitcast i8*%aB to i32*
store i32 2,i32*%aC,align 4
ret i8*%as
aD:
ret i8*%j
}
define internal fastcc i8*@_SMLLN8TyReduce13evalOpaqueRepE_104(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
p:
%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
%h=alloca i8*,align 8
%i=alloca i8*,align 8
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
call void@llvm.gcroot(i8**%h,i8*null)#0
call void@llvm.gcroot(i8**%i,i8*null)#0
store i8*%a,i8**%h,align 8
store i8*%b,i8**%c,align 8
%j=load atomic i32,i32*@sml_check_flag unordered,align 4
%k=icmp eq i32%j,0
br i1%k,label%n,label%l
l:
call void@sml_check(i32 inreg%j)
%m=load i8*,i8**%c,align 8
br label%n
n:
%o=phi i8*[%m,%l],[%b,%p]
%q=bitcast i8*%o to i32*
%r=load i32,i32*%q,align 4
switch i32%r,label%s[
i32 1,label%as
i32 0,label%K
]
s:
store i8*null,i8**%h,align 8
call void@sml_matchcomp_bug()
%t=load i8*,i8**@_SMLZ5Match,align 8
store i8*%t,i8**%c,align 8
%u=call i8*@sml_alloc(i32 inreg 20)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177296,i32*%w,align 4
store i8*%u,i8**%d,align 8
%x=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%u,i64 8
%A=bitcast i8*%z to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[54x i8]}>,<{[4x i8],i32,[54x i8]}>*@o,i64 0,i32 2,i64 0),i8**%A,align 8
%B=getelementptr inbounds i8,i8*%u,i64 16
%C=bitcast i8*%B to i32*
store i32 3,i32*%C,align 4
%D=call i8*@sml_alloc(i32 inreg 60)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177336,i32*%F,align 4
%G=getelementptr inbounds i8,i8*%D,i64 56
%H=bitcast i8*%G to i32*
store i32 1,i32*%H,align 4
%I=load i8*,i8**%d,align 8
%J=bitcast i8*%D to i8**
store i8*%I,i8**%J,align 8
call void@sml_raise(i8*inreg%D)#1
unreachable
K:
%L=getelementptr inbounds i8,i8*%o,i64 8
%M=bitcast i8*%L to i8**
%N=load i8*,i8**%M,align 8
%O=bitcast i8*%N to i32*
%P=load i32,i32*%O,align 4
%Q=getelementptr inbounds i8,i8*%N,i64 4
%R=bitcast i8*%Q to i32*
%S=load i32,i32*%R,align 4
%T=getelementptr inbounds i8,i8*%N,i64 8
%U=bitcast i8*%T to i8**
%V=load i8*,i8**%U,align 8
%W=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%X=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%W,i8*inreg%V)
store i8*%X,i8**%c,align 8
%Y=call i8*@sml_alloc(i32 inreg 20)#0
%Z=bitcast i8*%Y to i32*
%aa=getelementptr inbounds i8,i8*%Y,i64 -4
%ab=bitcast i8*%aa to i32*
store i32 1342177296,i32*%ab,align 4
store i8*%Y,i8**%d,align 8
store i32%P,i32*%Z,align 4
%ac=getelementptr inbounds i8,i8*%Y,i64 4
%ad=bitcast i8*%ac to i32*
store i32%S,i32*%ad,align 4
%ae=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%af=getelementptr inbounds i8,i8*%Y,i64 8
%ag=bitcast i8*%af to i8**
store i8*%ae,i8**%ag,align 8
%ah=getelementptr inbounds i8,i8*%Y,i64 16
%ai=bitcast i8*%ah to i32*
store i32 2,i32*%ai,align 4
%aj=call i8*@sml_alloc(i32 inreg 20)#0
%ak=getelementptr inbounds i8,i8*%aj,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177296,i32*%al,align 4
%am=bitcast i8*%aj to i64*
store i64 0,i64*%am,align 4
%an=load i8*,i8**%d,align 8
%ao=getelementptr inbounds i8,i8*%aj,i64 8
%ap=bitcast i8*%ao to i8**
store i8*%an,i8**%ap,align 8
%aq=getelementptr inbounds i8,i8*%aj,i64 16
%ar=bitcast i8*%aq to i32*
store i32 2,i32*%ar,align 4
ret i8*%aj
as:
%at=getelementptr inbounds i8,i8*%o,i64 8
%au=bitcast i8*%at to i8**
%av=load i8*,i8**%au,align 8
store i8*%av,i8**%d,align 8
%aw=bitcast i8*%av to i32*
%ax=load i32,i32*%aw,align 4
%ay=getelementptr inbounds i8,i8*%av,i64 4
%az=bitcast i8*%ay to i32*
%aA=load i32,i32*%az,align 4
%aB=getelementptr inbounds i8,i8*%av,i64 8
%aC=bitcast i8*%aB to i8**
%aD=load i8*,i8**%aC,align 8
store i8*%aD,i8**%e,align 8
%aE=getelementptr inbounds i8,i8*%av,i64 16
%aF=bitcast i8*%aE to i8**
%aG=load i8*,i8**%aF,align 8
store i8*%aG,i8**%f,align 8
%aH=getelementptr inbounds i8,i8*%av,i64 40
%aI=bitcast i8*%aH to i32*
%aJ=load i32,i32*%aI,align 4
%aK=getelementptr inbounds i8,i8*%av,i64 48
%aL=bitcast i8*%aK to i8**
%aM=load i8*,i8**%aL,align 8
store i8*%aM,i8**%g,align 8
%aN=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%aO=getelementptr inbounds i8,i8*%aN,i64 16
%aP=bitcast i8*%aO to i8*(i8*,i8*)**
%aQ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aP,align 8
%aR=bitcast i8*%aN to i8**
%aS=load i8*,i8**%aR,align 8
store i8*%aS,i8**%c,align 8
%aT=call i8*@sml_alloc(i32 inreg 12)#0
%aU=getelementptr inbounds i8,i8*%aT,i64 -4
%aV=bitcast i8*%aU to i32*
store i32 1342177288,i32*%aV,align 4
store i8*%aT,i8**%i,align 8
%aW=load i8*,i8**%h,align 8
%aX=bitcast i8*%aT to i8**
store i8*%aW,i8**%aX,align 8
%aY=getelementptr inbounds i8,i8*%aT,i64 8
%aZ=bitcast i8*%aY to i32*
store i32 1,i32*%aZ,align 4
%a0=call i8*@sml_alloc(i32 inreg 28)#0
%a1=getelementptr inbounds i8,i8*%a0,i64 -4
%a2=bitcast i8*%a1 to i32*
store i32 1342177304,i32*%a2,align 4
%a3=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%a4=bitcast i8*%a0 to i8**
store i8*%a3,i8**%a4,align 8
%a5=getelementptr inbounds i8,i8*%a0,i64 8
%a6=bitcast i8*%a5 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalOpaqueRepE_187 to void(...)*),void(...)**%a6,align 8
%a7=getelementptr inbounds i8,i8*%a0,i64 16
%a8=bitcast i8*%a7 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalOpaqueRepE_187 to void(...)*),void(...)**%a8,align 8
%a9=getelementptr inbounds i8,i8*%a0,i64 24
%ba=bitcast i8*%a9 to i32*
store i32 -2147483647,i32*%ba,align 4
%bb=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bc=call fastcc i8*%aQ(i8*inreg%bb,i8*inreg%a0)
%bd=getelementptr inbounds i8,i8*%bc,i64 16
%be=bitcast i8*%bd to i8*(i8*,i8*)**
%bf=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%be,align 8
%bg=bitcast i8*%bc to i8**
%bh=load i8*,i8**%bg,align 8
%bi=load i8*,i8**%d,align 8
%bj=getelementptr inbounds i8,i8*%bi,i64 32
%bk=bitcast i8*%bj to i8**
%bl=load i8*,i8**%bk,align 8
%bm=call fastcc i8*%bf(i8*inreg%bh,i8*inreg%bl)
store i8*%bm,i8**%c,align 8
%bn=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bo=getelementptr inbounds i8,i8*%bn,i64 24
%bp=bitcast i8*%bo to i8**
%bq=load i8*,i8**%bp,align 8
%br=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%bs=call fastcc i8*@_SMLLN8TyReduce11evalDtyKindE_103(i8*inreg%br,i8*inreg%bq)
store i8*%bs,i8**%d,align 8
%bt=call i8*@sml_alloc(i32 inreg 60)#0
%bu=getelementptr inbounds i8,i8*%bt,i64 -4
%bv=bitcast i8*%bu to i32*
store i32 1342177336,i32*%bv,align 4
store i8*%bt,i8**%h,align 8
%bw=getelementptr inbounds i8,i8*%bt,i64 44
%bx=bitcast i8*%bw to i32*
store i32 0,i32*%bx,align 1
%by=bitcast i8*%bt to i32*
store i32%ax,i32*%by,align 4
%bz=getelementptr inbounds i8,i8*%bt,i64 4
%bA=bitcast i8*%bz to i32*
store i32%aA,i32*%bA,align 4
%bB=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bC=getelementptr inbounds i8,i8*%bt,i64 8
%bD=bitcast i8*%bC to i8**
store i8*%bB,i8**%bD,align 8
%bE=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bF=getelementptr inbounds i8,i8*%bt,i64 16
%bG=bitcast i8*%bF to i8**
store i8*%bE,i8**%bG,align 8
%bH=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bI=getelementptr inbounds i8,i8*%bt,i64 24
%bJ=bitcast i8*%bI to i8**
store i8*%bH,i8**%bJ,align 8
%bK=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bL=getelementptr inbounds i8,i8*%bt,i64 32
%bM=bitcast i8*%bL to i8**
store i8*%bK,i8**%bM,align 8
%bN=getelementptr inbounds i8,i8*%bt,i64 40
%bO=bitcast i8*%bN to i32*
store i32%aJ,i32*%bO,align 4
%bP=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%bQ=getelementptr inbounds i8,i8*%bt,i64 48
%bR=bitcast i8*%bQ to i8**
store i8*%bP,i8**%bR,align 8
%bS=getelementptr inbounds i8,i8*%bt,i64 56
%bT=bitcast i8*%bS to i32*
store i32 94,i32*%bT,align 4
%bU=call i8*@sml_alloc(i32 inreg 20)#0
%bV=bitcast i8*%bU to i32*
%bW=getelementptr inbounds i8,i8*%bU,i64 -4
%bX=bitcast i8*%bW to i32*
store i32 1342177296,i32*%bX,align 4
%bY=getelementptr inbounds i8,i8*%bU,i64 4
%bZ=bitcast i8*%bY to i32*
store i32 0,i32*%bZ,align 1
store i32 1,i32*%bV,align 4
%b0=load i8*,i8**%h,align 8
%b1=getelementptr inbounds i8,i8*%bU,i64 8
%b2=bitcast i8*%b1 to i8**
store i8*%b0,i8**%b2,align 8
%b3=getelementptr inbounds i8,i8*%bU,i64 16
%b4=bitcast i8*%b3 to i32*
store i32 2,i32*%b4,align 4
ret i8*%bU
}
define internal fastcc i8*@_SMLLN8TyReduce12evalPrimInfoE_105(i8*inreg%a,i8*inreg%b)unnamed_addr#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=bitcast i8*%m to i8**
%o=load i8*,i8**%n,align 8
store i8*%o,i8**%d,align 8
%p=getelementptr inbounds i8,i8*%m,i64 8
%q=bitcast i8*%p to i8**
%r=load i8*,i8**%q,align 8
store i8*null,i8**%c,align 8
%s=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%k,i8*inreg%r)
store i8*%s,i8**%c,align 8
%t=call i8*@sml_alloc(i32 inreg 20)#0
%u=getelementptr inbounds i8,i8*%t,i64 -4
%v=bitcast i8*%u to i32*
store i32 1342177296,i32*%v,align 4
%w=load i8*,i8**%d,align 8
%x=bitcast i8*%t to i8**
store i8*%w,i8**%x,align 8
%y=load i8*,i8**%c,align 8
%z=getelementptr inbounds i8,i8*%t,i64 8
%A=bitcast i8*%z to i8**
store i8*%y,i8**%A,align 8
%B=getelementptr inbounds i8,i8*%t,i64 16
%C=bitcast i8*%B to i32*
store i32 3,i32*%C,align 4
ret i8*%t
}
define internal fastcc i8*@_SMLLN8TyReduce13evalOprimInfoE_189(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=getelementptr inbounds i8,i8*%o,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%d,align 8
store i8*null,i8**%c,align 8
%u=load i8*,i8**%n,align 8
%v=getelementptr inbounds i8,i8*%o,i64 16
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
%y=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%u,i8*inreg%x)
store i8*%y,i8**%c,align 8
%z=call i8*@sml_alloc(i32 inreg 28)#0
%A=bitcast i8*%z to i32*
%B=getelementptr inbounds i8,i8*%z,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177304,i32*%C,align 4
%D=getelementptr inbounds i8,i8*%z,i64 4
%E=bitcast i8*%D to i32*
store i32 0,i32*%E,align 1
store i32%q,i32*%A,align 4
%F=load i8*,i8**%d,align 8
%G=getelementptr inbounds i8,i8*%z,i64 8
%H=bitcast i8*%G to i8**
store i8*%F,i8**%H,align 8
%I=load i8*,i8**%c,align 8
%J=getelementptr inbounds i8,i8*%z,i64 16
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%z,i64 24
%M=bitcast i8*%L to i32*
store i32 6,i32*%M,align 4
ret i8*%z
}
define fastcc i8*@_SMLFN8TyReduce13evalOprimInfoE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalOprimInfoE_189 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalOprimInfoE_189 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce11evalConInfoE_192(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=getelementptr inbounds i8,i8*%o,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%d,align 8
store i8*null,i8**%c,align 8
%u=load i8*,i8**%n,align 8
%v=getelementptr inbounds i8,i8*%o,i64 16
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
%y=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%u,i8*inreg%x)
store i8*%y,i8**%c,align 8
%z=call i8*@sml_alloc(i32 inreg 28)#0
%A=bitcast i8*%z to i32*
%B=getelementptr inbounds i8,i8*%z,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177304,i32*%C,align 4
%D=getelementptr inbounds i8,i8*%z,i64 4
%E=bitcast i8*%D to i32*
store i32 0,i32*%E,align 1
store i32%q,i32*%A,align 4
%F=load i8*,i8**%d,align 8
%G=getelementptr inbounds i8,i8*%z,i64 8
%H=bitcast i8*%G to i8**
store i8*%F,i8**%H,align 8
%I=load i8*,i8**%c,align 8
%J=getelementptr inbounds i8,i8*%z,i64 16
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%z,i64 24
%M=bitcast i8*%L to i32*
store i32 6,i32*%M,align 4
ret i8*%z
}
define fastcc i8*@_SMLFN8TyReduce11evalConInfoE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce11evalConInfoE_192 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce11evalConInfoE_192 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce11evalExnInfoE_195(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=getelementptr inbounds i8,i8*%o,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%d,align 8
store i8*null,i8**%c,align 8
%u=load i8*,i8**%n,align 8
%v=getelementptr inbounds i8,i8*%o,i64 16
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
%y=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%u,i8*inreg%x)
store i8*%y,i8**%c,align 8
%z=call i8*@sml_alloc(i32 inreg 28)#0
%A=bitcast i8*%z to i32*
%B=getelementptr inbounds i8,i8*%z,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177304,i32*%C,align 4
%D=getelementptr inbounds i8,i8*%z,i64 4
%E=bitcast i8*%D to i32*
store i32 0,i32*%E,align 1
store i32%q,i32*%A,align 4
%F=load i8*,i8**%d,align 8
%G=getelementptr inbounds i8,i8*%z,i64 8
%H=bitcast i8*%G to i8**
store i8*%F,i8**%H,align 8
%I=load i8*,i8**%c,align 8
%J=getelementptr inbounds i8,i8*%z,i64 16
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%z,i64 24
%M=bitcast i8*%L to i32*
store i32 6,i32*%M,align 4
ret i8*%z
}
define fastcc i8*@_SMLFN8TyReduce11evalExnInfoE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce11evalExnInfoE_195 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce11evalExnInfoE_195 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce9evalTyVarE_198(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=getelementptr inbounds i8,i8*%o,i64 4
%s=bitcast i8*%r to i32*
%t=load i32,i32*%s,align 4
%u=getelementptr inbounds i8,i8*%o,i64 8
%v=bitcast i8*%u to i8**
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%d,align 8
store i8*null,i8**%c,align 8
%x=load i8*,i8**%n,align 8
%y=getelementptr inbounds i8,i8*%o,i64 16
%z=bitcast i8*%y to i8**
%A=load i8*,i8**%z,align 8
%B=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%x,i8*inreg%A)
store i8*%B,i8**%c,align 8
%C=call i8*@sml_alloc(i32 inreg 28)#0
%D=bitcast i8*%C to i32*
%E=getelementptr inbounds i8,i8*%C,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177304,i32*%F,align 4
store i32%q,i32*%D,align 4
%G=getelementptr inbounds i8,i8*%C,i64 4
%H=bitcast i8*%G to i32*
store i32%t,i32*%H,align 4
%I=load i8*,i8**%d,align 8
%J=getelementptr inbounds i8,i8*%C,i64 8
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=load i8*,i8**%c,align 8
%M=getelementptr inbounds i8,i8*%C,i64 16
%N=bitcast i8*%M to i8**
store i8*%L,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%C,i64 24
%P=bitcast i8*%O to i32*
store i32 6,i32*%P,align 4
ret i8*%C
}
define fastcc i8*@_SMLFN8TyReduce9evalTyVarE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce9evalTyVarE_198 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce9evalTyVarE_198 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_206(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=bitcast i8**%c to i8***
%k=load i8**,i8***%j,align 8
%l=load i8*,i8**%d,align 8
br label%m
m:
%n=phi i8*[%l,%i],[%b,%g]
%o=phi i8**[%k,%i],[%h,%g]
%p=load i8*,i8**%o,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_99(i8*inreg%p,i8*inreg%n)
ret i8*%q
}
define fastcc i8*@_SMLFN8TyReduce10evalBtvEnvE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce10evalBtvEnvE_206 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce10evalBtvEnvE_206 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce13evalExExnInfoE_209(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%c,align 8
%k=bitcast i8**%d to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=bitcast i8*%o to i8**
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%c,align 8
store i8*null,i8**%d,align 8
%r=load i8*,i8**%n,align 8
%s=getelementptr inbounds i8,i8*%o,i64 8
%t=bitcast i8*%s to i8**
%u=load i8*,i8**%t,align 8
%v=call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%r,i8*inreg%u)
store i8*%v,i8**%d,align 8
%w=call i8*@sml_alloc(i32 inreg 20)#0
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177296,i32*%y,align 4
%z=load i8*,i8**%c,align 8
%A=bitcast i8*%w to i8**
store i8*%z,i8**%A,align 8
%B=load i8*,i8**%d,align 8
%C=getelementptr inbounds i8,i8*%w,i64 8
%D=bitcast i8*%C to i8**
store i8*%B,i8**%D,align 8
%E=getelementptr inbounds i8,i8*%w,i64 16
%F=bitcast i8*%E to i32*
store i32 3,i32*%F,align 4
ret i8*%w
}
define fastcc i8*@_SMLFN8TyReduce13evalExExnInfoE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalExExnInfoE_209 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalExExnInfoE_209 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce13evalExVarInfoE_212(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce13evalExVarInfoE_95(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define fastcc i8*@_SMLFN8TyReduce13evalExVarInfoE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalExVarInfoE_212 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce13evalExVarInfoE_212 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce12evalPrimInfoE_215(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce12evalPrimInfoE_105(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define fastcc i8*@_SMLFN8TyReduce12evalPrimInfoE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalPrimInfoE_215 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce12evalPrimInfoE_215 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce14evalConstraintE_218(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce14evalConstraintE_102(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define fastcc i8*@_SMLFN8TyReduce14evalConstraintE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce14evalConstraintE_218 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce14evalConstraintE_218 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce6evalTyE_221(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=tail call fastcc i8*@_SMLLN8TyReduce6evalTyE_96(i8*inreg%p,i8*inreg%o)
ret i8*%q
}
define fastcc i8*@_SMLFN8TyReduce6evalTyE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_221 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8TyReduce6evalTyE_221 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN8TyReduce7evalBtvE_224(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLLN8TyReduce7evalBtvE_90(i8*inreg%a,i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN8TyReduce13evalOprimInfoE_239(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce13evalOprimInfoE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce11evalConInfoE_240(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce11evalConInfoE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce11evalExnInfoE_241(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce11evalExnInfoE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce9evalTyVarE_242(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce9evalTyVarE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce10evalBtvEnvE_245(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce10evalBtvEnvE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce13evalExExnInfoE_246(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce13evalExExnInfoE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce13evalExVarInfoE_247(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce13evalExVarInfoE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce12evalPrimInfoE_248(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce12evalPrimInfoE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce14evalConstraintE_249(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce14evalConstraintE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8TyReduce6evalTyE_250(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8TyReduce6evalTyE(i8*inreg%b)
ret i8*%c
}
declare void@llvm.lifetime.start.p0i8(i64,i8*)#0
declare void@llvm.lifetime.end.p0i8(i64,i8*)#0
attributes#0={nounwind}
attributes#1={noreturn}
attributes#2={uwtable}
attributes#3={noreturn nounwind}
attributes#4={nounwind uwtable}
