@a=private unnamed_addr constant<{[4x i8],i32,[6x i8]}><{[4x i8]zeroinitializer,i32 -2147483642,[6x i8]c"IO.Io\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,[6x i8]}>,<{[4x i8],i32,[6x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 9,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL29=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,[24x i8]}><{[4x i8]zeroinitializer,i32 -2147483624,[24x i8]c"IO.BlockingNotSupported\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,[24x i8]}>,<{[4x i8],i32,[24x i8]}>*@c,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL32=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,[27x i8]}><{[4x i8]zeroinitializer,i32 -2147483621,[27x i8]c"IO.NonblockingNotSupported\00"}>,align 8
@f=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,[27x i8]}>,<{[4x i8],i32,[27x i8]}>*@e,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL35=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}>*@f,i32 0,i32 0,i32 0),i32 8)}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[28x i8]}><{[4x i8]zeroinitializer,i32 -2147483620,[28x i8]c"IO.RandomAccessNotSupported\00"}>,align 8
@h=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,[28x i8]}>,<{[4x i8],i32,[28x i8]}>*@g,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL38=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}>*@h,i32 0,i32 0,i32 0),i32 8)}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[16x i8]}><{[4x i8]zeroinitializer,i32 -2147483632,[16x i8]c"IO.ClosedStream\00"}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[16x i8]}>,<{[4x i8],i32,[16x i8]}>*@i,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL44=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}>*@j,i32 0,i32 0,i32 0),i32 8)}>,align 8
@_SMLZN2IO2IoE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL29,i64 0,i32 2)to i8*)
@_SMLZN2IO20BlockingNotSupportedE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL32,i64 0,i32 2)to i8*)
@_SMLZN2IO23NonblockingNotSupportedE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL35,i64 0,i32 2)to i8*)
@_SMLZN2IO24RandomAccessNotSupportedE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL38,i64 0,i32 2)to i8*)
@_SMLZN2IO12ClosedStreamE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL44,i64 0,i32 2)to i8*)
@_SML_ftabfe9066b69eea2866_IO=external global i8
@k=internal unnamed_addr global i1 false
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
define private void@_SML_tabbfe9066b69eea2866_IO()#1{
unreachable
}
define void@_SML_loadfe9066b69eea2866_IO(i8*%a)local_unnamed_addr#0{
%b=load i1,i1*@k,align 1
br i1%b,label%c,label%d
c:
ret void
d:
store i1 true,i1*@k,align 1
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabbfe9066b69eea2866_IO,i8*@_SML_ftabfe9066b69eea2866_IO,i8*null)#0
ret void
}
define void@_SML_mainfe9066b69eea2866_IO()local_unnamed_addr#2 gc"smlsharp"{
ret void
}
attributes#0={nounwind}
attributes#1={noreturn nounwind}
attributes#2={nounwind uwtable}
