@sml_check_flag=external local_unnamed_addr global i32
@a=private unnamed_addr constant<{[4x i8],i32,[10x i8]}><{[4x i8]zeroinitializer,i32 -2147483638,[10x i8]c"OS.SysErr\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[10x i8]}>,<{[4x i8],i32,[10x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 1,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL34=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@b,i32 0,i32 0,i32 0),i32 8)}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,[21x i8]}><{[4x i8]zeroinitializer,i32 -2147483627,[21x i8]c"SMLSharp_Runtime.Bug\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[21x i8]}>,<{[4x i8],i32,[21x i8]}>*@c,i32 0,i32 0,i32 0),i32 8),i32 16,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL37=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@d,i32 0,i32 0,i32 0),i32 8)}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN16SMLSharp__Runtime8syserrorE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime8syserrorE_57 to void(...)*),i32 -2147483647}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i64)*@_SMLFN16SMLSharp__Runtime14str__new__optionE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime14str__new__optionE_58 to void(...)*),i32 -2147483647}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[47x i8]}><{[4x i8]zeroinitializer,i32 -2147483601,[47x i8]c"src/basis/main/SMLSharp_Runtime.sml:61.8(1365)\00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN16SMLSharp__Runtime9OS__SysErrE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime9OS__SysErrE_59 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN16SMLSharp__Runtime3BugE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL37,i64 0,i32 2)to i8*)
@_SMLZN16SMLSharp__Runtime6SysErrE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL34,i64 0,i32 2)to i8*)
@i=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i64)*@_SMLFN16SMLSharp__Runtime7str__newE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime7str__newE_60 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN16SMLSharp__Runtime7str__newE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@i,i64 0,i32 2)to i8*)
@_SMLZN16SMLSharp__Runtime14str__new__optionE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@f,i64 0,i32 2)to i8*)
@j=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN16SMLSharp__Runtime5errnoE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime5errnoE_61 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN16SMLSharp__Runtime5errnoE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@j,i64 0,i32 2)to i8*)
@k=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN16SMLSharp__Runtime8errorMsgE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime8errorMsgE_62 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN16SMLSharp__Runtime8errorMsgE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@k,i64 0,i32 2)to i8*)
@l=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32)*@_SMLFN16SMLSharp__Runtime9errorNameE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime9errorNameE_63 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN16SMLSharp__Runtime9errorNameE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@l,i64 0,i32 2)to i8*)
@_SMLZN16SMLSharp__Runtime8syserrorE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@e,i64 0,i32 2)to i8*)
@_SMLZN16SMLSharp__Runtime9OS__SysErrE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@h,i64 0,i32 2)to i8*)
@m=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(void(i64)*@_SMLLN16SMLSharp__Runtime4freeE_53 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN16SMLSharp__Runtime4freeE_64 to void(...)*),i32 -2147483647}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32,i32)*@_SMLFN16SMLSharp__Runtime4freeE to void(...)*),void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN16SMLSharp__Runtime4freeE_65 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN16SMLSharp__Runtime4freeE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@n,i64 0,i32 2)to i8*)
@_SML_ftab00d884c96265bfea_SMLSharp_Runtime=external global i8
@o=internal unnamed_addr global i1 false
declare void@free(i8*)local_unnamed_addr#0
declare void@llvm.gcroot(i8**,i8*)#0
declare i8*@prim_GenericOS_errorName(i32)local_unnamed_addr
declare i32@prim_GenericOS_syserror(i8*)local_unnamed_addr
declare i32@prim_StandardC_errno()local_unnamed_addr
declare i8*@sml_alloc(i32 inreg)local_unnamed_addr#0
declare void@sml_check(i32 inreg)local_unnamed_addr
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare i32@sml_personality(...)#0
declare i8*@sml_save()local_unnamed_addr#0
declare i8*@sml_str_new(i8*)local_unnamed_addr
declare void@sml_unsave()local_unnamed_addr#0
declare i8*@sml_unsave_exn(i8*inreg)local_unnamed_addr#0
declare i8*@strerror(i32)local_unnamed_addr
define private void@_SML_tabb00d884c96265bfea_SMLSharp_Runtime()#1{
unreachable
}
define void@_SML_load00d884c96265bfea_SMLSharp_Runtime(i8*%a)local_unnamed_addr#0{
%b=load i1,i1*@o,align 1
br i1%b,label%c,label%d
c:
ret void
d:
store i1 true,i1*@o,align 1
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabb00d884c96265bfea_SMLSharp_Runtime,i8*@_SML_ftab00d884c96265bfea_SMLSharp_Runtime,i8*null)#0
ret void
}
define void@_SML_main00d884c96265bfea_SMLSharp_Runtime()local_unnamed_addr#2 gc"smlsharp"{
ret void
}
define fastcc i8*@_SMLFN16SMLSharp__Runtime8syserrorE(i8*inreg%a)#3 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
store i8*null,i8**%b,align 8
%j=call i32@prim_GenericOS_syserror(i8*%h)
%k=icmp sgt i32%j,-1
br i1%k,label%m,label%l
l:
ret i8*null
m:
%n=call i8*@sml_alloc(i32 inreg 12)#0
%o=bitcast i8*%n to i32*
%p=getelementptr inbounds i8,i8*%n,i64 -4
%q=bitcast i8*%p to i32*
store i32 1342177288,i32*%q,align 4
%r=getelementptr inbounds i8,i8*%n,i64 4
%s=bitcast i8*%r to i32*
store i32 0,i32*%s,align 1
store i32%j,i32*%o,align 4
%t=getelementptr inbounds i8,i8*%n,i64 8
%u=bitcast i8*%t to i32*
store i32 0,i32*%u,align 4
ret i8*%n
}
define fastcc i8*@_SMLFN16SMLSharp__Runtime14str__new__optionE(i64 inreg%a)#3 gc"smlsharp"personality i32(...)*@sml_personality{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%f,label%e
e:
call void@sml_check(i32 inreg%c)
br label%f
f:
%g=icmp eq i64%a,0
br i1%g,label%h,label%i
h:
ret i8*null
i:
%j=inttoptr i64%a to i8*
%k=call i8*@sml_save()#0
%l=invoke i8*@sml_str_new(i8*%j)
to label%m unwind label%u
m:
call void@sml_unsave()#0
store i8*%l,i8**%b,align 8
%n=call i8*@sml_alloc(i32 inreg 12)#0
%o=getelementptr inbounds i8,i8*%n,i64 -4
%p=bitcast i8*%o to i32*
store i32 1342177288,i32*%p,align 4
%q=load i8*,i8**%b,align 8
%r=bitcast i8*%n to i8**
store i8*%q,i8**%r,align 8
%s=getelementptr inbounds i8,i8*%n,i64 8
%t=bitcast i8*%s to i32*
store i32 1,i32*%t,align 4
ret i8*%n
u:
%v=landingpad{i8*,i8*}
cleanup
%w=extractvalue{i8*,i8*}%v,1
call void@sml_unsave()#0
%x=call i8*@sml_unsave_exn(i8*inreg%w)#0
resume{i8*,i8*}%v
}
define fastcc i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg%a)#3 gc"smlsharp"personality i32(...)*@sml_personality{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
%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 i32@prim_StandardC_errno()
%j=call i8*@strerror(i32%i)
%k=call i8*@sml_save()#0
%l=invoke i8*@sml_str_new(i8*%j)
to label%m unwind label%Q
m:
call void@sml_unsave()#0
store i8*%l,i8**%b,align 8
%n=call i8*@sml_alloc(i32 inreg 12)#0
%o=getelementptr inbounds i8,i8*%n,i64 -4
%p=bitcast i8*%o to i32*
store i32 1342177288,i32*%p,align 4
store i8*%n,i8**%d,align 8
%q=getelementptr inbounds i8,i8*%n,i64 4
%r=bitcast i8*%q to i32*
store i32 0,i32*%r,align 1
%s=bitcast i8*%n to i32*
store i32%i,i32*%s,align 4
%t=getelementptr inbounds i8,i8*%n,i64 8
%u=bitcast i8*%t to i32*
store i32 0,i32*%u,align 4
%v=call i8*@sml_alloc(i32 inreg 20)#0
%w=getelementptr inbounds i8,i8*%v,i64 -4
%x=bitcast i8*%w to i32*
store i32 1342177296,i32*%x,align 4
store i8*%v,i8**%c,align 8
%y=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%z=bitcast i8*%v to i8**
store i8*%y,i8**%z,align 8
%A=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%B=getelementptr inbounds i8,i8*%v,i64 8
%C=bitcast i8*%B to i8**
store i8*%A,i8**%C,align 8
%D=getelementptr inbounds i8,i8*%v,i64 16
%E=bitcast i8*%D to i32*
store i32 3,i32*%E,align 4
%F=call i8*@sml_alloc(i32 inreg 28)#0
%G=getelementptr inbounds i8,i8*%F,i64 -4
%H=bitcast i8*%G to i32*
store i32 1342177304,i32*%H,align 4
%I=bitcast i8*%F to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL34,i64 0,i32 2)to i8*),i8**%I,align 8
%J=getelementptr inbounds i8,i8*%F,i64 8
%K=bitcast i8*%J to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[47x i8]}>,<{[4x i8],i32,[47x i8]}>*@g,i64 0,i32 2,i64 0),i8**%K,align 8
%L=load i8*,i8**%c,align 8
%M=getelementptr inbounds i8,i8*%F,i64 16
%N=bitcast i8*%M to i8**
store i8*%L,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%F,i64 24
%P=bitcast i8*%O to i32*
store i32 7,i32*%P,align 4
ret i8*%F
Q:
%R=landingpad{i8*,i8*}
cleanup
%S=extractvalue{i8*,i8*}%R,1
call void@sml_unsave()#0
%T=call i8*@sml_unsave_exn(i8*inreg%S)#0
resume{i8*,i8*}%R
}
define fastcc i8*@_SMLFN16SMLSharp__Runtime7str__newE(i64 inreg%a)#3 gc"smlsharp"personality i32(...)*@sml_personality{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=inttoptr i64%a to i8*
%g=tail call i8*@sml_save()#0
%h=invoke i8*@sml_str_new(i8*%f)
to label%i unwind label%j
i:
tail call void@sml_unsave()#0
ret i8*%h
j:
%k=landingpad{i8*,i8*}
cleanup
%l=extractvalue{i8*,i8*}%k,1
tail call void@sml_unsave()#0
%m=tail call i8*@sml_unsave_exn(i8*inreg%l)#0
resume{i8*,i8*}%k
}
define fastcc i32@_SMLFN16SMLSharp__Runtime5errnoE(i32 inreg%a)#3 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call i32@prim_StandardC_errno()
ret i32%f
}
define fastcc i8*@_SMLFN16SMLSharp__Runtime8errorMsgE(i32 inreg%a)#3 gc"smlsharp"personality i32(...)*@sml_personality{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call i8*@strerror(i32%a)
%g=tail call i8*@sml_save()#0
%h=invoke i8*@sml_str_new(i8*%f)
to label%i unwind label%j
i:
tail call void@sml_unsave()#0
ret i8*%h
j:
%k=landingpad{i8*,i8*}
cleanup
%l=extractvalue{i8*,i8*}%k,1
tail call void@sml_unsave()#0
%m=tail call i8*@sml_unsave_exn(i8*inreg%l)#0
resume{i8*,i8*}%k
}
define fastcc i8*@_SMLFN16SMLSharp__Runtime9errorNameE(i32 inreg%a)#3 gc"smlsharp"personality i32(...)*@sml_personality{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call i8*@sml_save()#0
%g=invoke i8*@prim_GenericOS_errorName(i32%a)
to label%h unwind label%i
h:
tail call void@sml_unsave()#0
ret i8*%g
i:
%j=landingpad{i8*,i8*}
cleanup
%k=extractvalue{i8*,i8*}%j,1
tail call void@sml_unsave()#0
%l=tail call i8*@sml_unsave_exn(i8*inreg%k)#0
resume{i8*,i8*}%j
}
define internal fastcc void@_SMLLN16SMLSharp__Runtime4freeE_53(i64 inreg%a)#3 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=inttoptr i64%a to i8*
tail call void@free(i8*%f)
ret void
}
define fastcc i8*@_SMLFN16SMLSharp__Runtime4freeE(i32 inreg%a,i32 inreg%b)#2 gc"smlsharp"{
ret i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@m,i64 0,i32 2)to i8*)
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime8syserrorE_57(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN16SMLSharp__Runtime8syserrorE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime14str__new__optionE_58(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=bitcast i8*%b to i64*
%d=load i64,i64*%c,align 4
%e=tail call fastcc i8*@_SMLFN16SMLSharp__Runtime14str__new__optionE(i64 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime9OS__SysErrE_59(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg undef)
ret i8*%c
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime7str__newE_60(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=bitcast i8*%b to i64*
%d=load i64,i64*%c,align 4
%e=tail call fastcc i8*@_SMLFN16SMLSharp__Runtime7str__newE(i64 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime5errnoE_61(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN16SMLSharp__Runtime5errnoE(i32 inreg undef)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 4,i32*%g,align 4
store i32%c,i32*%e,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime8errorMsgE_62(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN16SMLSharp__Runtime8errorMsgE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime9errorNameE_63(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i8*@_SMLFN16SMLSharp__Runtime9errorNameE(i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime4freeE_64(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=bitcast i8*%b to i64*
%d=load i64,i64*%c,align 4
tail call fastcc void@_SMLLN16SMLSharp__Runtime4freeE_53(i64 inreg%d)
%e=tail call i8*@sml_alloc(i32 inreg 4)#0
%f=bitcast i8*%e to i32*
%g=getelementptr inbounds i8,i8*%e,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
store i32 0,i32*%f,align 4
ret i8*%e
}
define internal fastcc i8*@_SMLLN16SMLSharp__Runtime4freeE_65(i8*inreg%a,i8*inreg%b,i8*inreg%c)#2 gc"smlsharp"{
ret i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@m,i64 0,i32 2)to i8*)
}
attributes#0={nounwind}
attributes#1={noreturn nounwind}
attributes#2={nounwind uwtable}
attributes#3={uwtable}
