@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN16SMLSharp__Runtime6SysErrE=external local_unnamed_addr global i8*
@_SMLZN17SMLSharp__ScanChar10intToDigitE=external local_unnamed_addr global i8*
@_SMLZ5Match=external unnamed_addr constant i8*
@_SMLZ8Overflow=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[19x i8]}><{[4x i8]zeroinitializer,i32 -2147483629,[19x i8]c"IEEEReal.Unordered\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,[19x i8]}>,<{[4x i8],i32,[19x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL108=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,[40x i8]}><{[4x i8]zeroinitializer,i32 -2147483608,[40x i8]c"src/basis/main/IEEEReal.sml:53.12(1426)\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(void(i32)*@_SMLFN8IEEEReal15setRoundingModeE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal15setRoundingModeE_163 to void(...)*),i32 -2147483647}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,[40x i8]}><{[4x i8]zeroinitializer,i32 -2147483608,[40x i8]c"src/basis/main/IEEEReal.sml:71.19(2042)\00"}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"getRoundingMode: unknown rounding mode\00"}>,align 8
@g=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,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@f,i32 0,i32 0,i32 0),i32 8),i8*null,i32 3}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN8IEEEReal15getRoundingModeE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal15getRoundingModeE_164 to void(...)*),i32 -2147483647}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"E\00"}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c"nan\00"}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c"~nan\00"}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c"inf\00"}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c"~inf\00"}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c"0.0\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c"~0.0\00"}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/basis/main/IEEEReal.sml:87.8(2587)\00"}>,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*)*@_SMLFN8IEEEReal8toStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal8toStringE_166 to void(...)*),i32 -2147483647}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,[41x i8]}><{[4x i8]zeroinitializer,i32 -2147483607,[41x i8]c"src/basis/main/IEEEReal.sml:150.42(4880)\00"}>,align 8
@s=private unnamed_addr constant<{[4x i8],i32,[41x i8]}><{[4x i8]zeroinitializer,i32 -2147483607,[41x i8]c"src/basis/main/IEEEReal.sml:150.47(4885)\00"}>,align 8
@t=private unnamed_addr constant<{[4x i8],i32,[41x i8]}><{[4x i8]zeroinitializer,i32 -2147483607,[41x i8]c"src/basis/main/IEEEReal.sml:152.42(4964)\00"}>,align 8
@u=private unnamed_addr constant<{[4x i8],i32,[41x i8]}><{[4x i8]zeroinitializer,i32 -2147483607,[41x i8]c"src/basis/main/IEEEReal.sml:152.47(4969)\00"}>,align 8
@_SMLZN8IEEEReal9UnorderedE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL108,i64 0,i32 2)to i8*)
@_SMLZN8IEEEReal15setRoundingModeE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@d,i64 0,i32 2)to i8*)
@_SMLZN8IEEEReal15getRoundingModeE=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*)
@_SMLZN8IEEEReal8toStringE=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*)
@v=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32,i32)*@_SMLFN8IEEEReal4scanE to void(...)*),void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN8IEEEReal4scanE_176 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8IEEEReal4scanE=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*)
@w=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN8IEEEReal10fromStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal10fromStringE_177 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8IEEEReal10fromStringE=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*)
@_SML_ftabde1ed1506b8bef54_IEEEReal=external global i8
@x=private unnamed_addr global i8 0
declare void@llvm.gcroot(i8**,i8*)#0
declare{i32,i1}@llvm.sadd.with.overflow.i32(i32,i32)#0
declare{i32,i1}@llvm.smul.with.overflow.i32(i32,i32)#0
declare{i32,i1}@llvm.ssub.with.overflow.i32(i32,i32)#0
declare i32@prim_const_FE_DOWNWARD()local_unnamed_addr
declare i32@prim_const_FE_TONEAREST()local_unnamed_addr
declare i32@prim_const_FE_TOWARDZERO()local_unnamed_addr
declare i32@prim_const_FE_UPWARD()local_unnamed_addr
declare i32@prim_fegetround()local_unnamed_addr
declare i32@prim_fesetround(i32)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 void@sml_matchcomp_bug()local_unnamed_addr
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare i8*@_SMLFN10CharVector8fromListE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN17SMLSharp__ScanChar10skipSpacesE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN17SMLSharp__ScanChar12scanExponentE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN17SMLSharp__ScanChar12scanMantissaE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN17SMLSharp__ScanChar8scanSignE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8@_SMLFN4Char7toLowerE(i8 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List1_VE(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*@_SMLFN4List6lengthE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5Int328toStringE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String1_ZE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9StringCvt10scanStringE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main5c37eb24573fc5f9_StringCvt()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main4fb8d2c1f12728b2_SMLSharp_ScanChar()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maince7036f3433e1102_Char()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main5148a836b3728be9_Int32()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main00d884c96265bfea_SMLSharp_Runtime()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainadbb5309e852b68c_CharVector()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main1ef93e13728790b1_String()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load5c37eb24573fc5f9_StringCvt(i8*)local_unnamed_addr
declare void@_SML_load4fb8d2c1f12728b2_SMLSharp_ScanChar(i8*)local_unnamed_addr
declare void@_SML_loadce7036f3433e1102_Char(i8*)local_unnamed_addr
declare void@_SML_load5148a836b3728be9_Int32(i8*)local_unnamed_addr
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load00d884c96265bfea_SMLSharp_Runtime(i8*)local_unnamed_addr
declare void@_SML_loadadbb5309e852b68c_CharVector(i8*)local_unnamed_addr
declare void@_SML_load1ef93e13728790b1_String(i8*)local_unnamed_addr
define private void@_SML_tabbde1ed1506b8bef54_IEEEReal()#3{
unreachable
}
define void@_SML_loadde1ed1506b8bef54_IEEEReal(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@x,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@x,align 1
tail call void@_SML_load5c37eb24573fc5f9_StringCvt(i8*%a)#0
tail call void@_SML_load4fb8d2c1f12728b2_SMLSharp_ScanChar(i8*%a)#0
tail call void@_SML_loadce7036f3433e1102_Char(i8*%a)#0
tail call void@_SML_load5148a836b3728be9_Int32(i8*%a)#0
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load00d884c96265bfea_SMLSharp_Runtime(i8*%a)#0
tail call void@_SML_loadadbb5309e852b68c_CharVector(i8*%a)#0
tail call void@_SML_load1ef93e13728790b1_String(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabbde1ed1506b8bef54_IEEEReal,i8*@_SML_ftabde1ed1506b8bef54_IEEEReal,i8*null)#0
ret void
}
define void@_SML_mainde1ed1506b8bef54_IEEEReal()local_unnamed_addr#2 gc"smlsharp"{
%a=load i8,i8*@x,align 1
%b=and i8%a,2
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 3,i8*@x,align 1
tail call void@_SML_main5c37eb24573fc5f9_StringCvt()#2
tail call void@_SML_main4fb8d2c1f12728b2_SMLSharp_ScanChar()#2
tail call void@_SML_maince7036f3433e1102_Char()#2
tail call void@_SML_main5148a836b3728be9_Int32()#2
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main00d884c96265bfea_SMLSharp_Runtime()#2
tail call void@_SML_mainadbb5309e852b68c_CharVector()#2
tail call void@_SML_main1ef93e13728790b1_String()#2
br label%d
}
define fastcc void@_SMLFN8IEEEReal15setRoundingModeE(i32 inreg%a)#2 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
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
switch i32%a,label%h[
i32 0,label%F
i32 1,label%D
i32 2,label%B
i32 3,label%z
]
h:
call void@sml_matchcomp_bug()
%i=load i8*,i8**@_SMLZ5Match,align 8
store i8*%i,i8**%b,align 8
%j=call i8*@sml_alloc(i32 inreg 20)#0
%k=getelementptr inbounds i8,i8*%j,i64 -4
%l=bitcast i8*%k to i32*
store i32 1342177296,i32*%l,align 4
store i8*%j,i8**%c,align 8
%m=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%n=bitcast i8*%j to i8**
store i8*%m,i8**%n,align 8
%o=getelementptr inbounds i8,i8*%j,i64 8
%p=bitcast i8*%o to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[40x i8]}>,<{[4x i8],i32,[40x i8]}>*@c,i64 0,i32 2,i64 0),i8**%p,align 8
%q=getelementptr inbounds i8,i8*%j,i64 16
%r=bitcast i8*%q to i32*
store i32 3,i32*%r,align 4
%s=call i8*@sml_alloc(i32 inreg 60)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177336,i32*%u,align 4
%v=getelementptr inbounds i8,i8*%s,i64 56
%w=bitcast i8*%v to i32*
store i32 1,i32*%w,align 4
%x=load i8*,i8**%c,align 8
%y=bitcast i8*%s to i8**
store i8*%x,i8**%y,align 8
call void@sml_raise(i8*inreg%s)#1
unreachable
z:
%A=call i32@prim_const_FE_TOWARDZERO()
br label%H
B:
%C=call i32@prim_const_FE_UPWARD()
br label%H
D:
%E=call i32@prim_const_FE_DOWNWARD()
br label%H
F:
%G=call i32@prim_const_FE_TONEAREST()
br label%H
H:
%I=phi i32[%A,%z],[%C,%B],[%E,%D],[%G,%F]
%J=call i32@prim_fesetround(i32%I)
%K=icmp eq i32%J,0
br i1%K,label%L,label%M
L:
ret void
M:
%N=call fastcc i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg 0)
store i8*%N,i8**%b,align 8
%O=call i8*@sml_alloc(i32 inreg 60)#0
%P=getelementptr inbounds i8,i8*%O,i64 -4
%Q=bitcast i8*%P to i32*
store i32 1342177336,i32*%Q,align 4
%R=getelementptr inbounds i8,i8*%O,i64 56
%S=bitcast i8*%R to i32*
store i32 1,i32*%S,align 4
%T=load i8*,i8**%b,align 8
%U=bitcast i8*%O to i8**
store i8*%T,i8**%U,align 8
call void@sml_raise(i8*inreg%O)#1
unreachable
}
define fastcc i32@_SMLFN8IEEEReal15getRoundingModeE(i32 inreg%a)#2 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
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call i32@prim_fegetround()
%i=call i32@prim_const_FE_TONEAREST()
%j=icmp eq i32%h,%i
br i1%j,label%k,label%m
k:
%l=phi i32[0,%g],[1,%m],[2,%p],[3,%s]
ret i32%l
m:
%n=call i32@prim_const_FE_DOWNWARD()
%o=icmp eq i32%h,%n
br i1%o,label%k,label%p
p:
%q=call i32@prim_const_FE_UPWARD()
%r=icmp eq i32%h,%q
br i1%r,label%k,label%s
s:
%t=call i32@prim_const_FE_TOWARDZERO()
%u=icmp eq i32%h,%t
br i1%u,label%k,label%v
v:
%w=load i8*,i8**@_SMLZN16SMLSharp__Runtime6SysErrE,align 8
store i8*%w,i8**%b,align 8
%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
store i8*%x,i8**%c,align 8
%A=load i8*,i8**%b,align 8
store i8*null,i8**%b,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[40x i8]}>,<{[4x i8],i32,[40x i8]}>*@e,i64 0,i32 2,i64 0),i8**%D,align 8
%E=getelementptr inbounds i8,i8*%x,i64 16
%F=bitcast i8*%E to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@g,i64 0,i32 2)to i8*),i8**%F,align 8
%G=getelementptr inbounds i8,i8*%x,i64 24
%H=bitcast i8*%G to i32*
store i32 7,i32*%H,align 4
%I=call i8*@sml_alloc(i32 inreg 60)#0
%J=getelementptr inbounds i8,i8*%I,i64 -4
%K=bitcast i8*%J to i32*
store i32 1342177336,i32*%K,align 4
%L=getelementptr inbounds i8,i8*%I,i64 56
%M=bitcast i8*%L to i32*
store i32 1,i32*%M,align 4
%N=load i8*,i8**%c,align 8
%O=bitcast i8*%I to i8**
store i8*%N,i8**%O,align 8
call void@sml_raise(i8*inreg%I)#1
unreachable
}
define internal fastcc i8*@_SMLL14digitsToString_118(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=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
store i8*%a,i8**%d,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%i,label%h
h:
call void@sml_check(i32 inreg%f)
br label%i
i:
%j=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 0,i32 inreg 4,i32 inreg 0,i32 inreg 1)
%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**@_SMLZN17SMLSharp__ScanChar10intToDigitE,align 8
%q=call fastcc i8*%m(i8*inreg%o,i8*inreg%p)
%r=getelementptr inbounds i8,i8*%q,i64 16
%s=bitcast i8*%r to i8*(i8*,i8*)**
%t=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%s,align 8
%u=bitcast i8*%q to i8**
%v=load i8*,i8**%u,align 8
%w=bitcast i8**%d to i8***
%x=load i8**,i8***%w,align 8
%y=load i8*,i8**%x,align 8
%z=getelementptr inbounds i8,i8*%y,i64 8
%A=bitcast i8*%z to i8**
%B=load i8*,i8**%A,align 8
%C=call fastcc i8*%t(i8*inreg%v,i8*inreg%B)
store i8*%C,i8**%c,align 8
%D=call i8*@sml_alloc(i32 inreg 20)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177296,i32*%F,align 4
store i8*%D,i8**%e,align 8
%G=getelementptr inbounds i8,i8*%D,i64 1
call void@llvm.memset.p0i8.i32(i8*%G,i8 0,i32 7,i1 false)
store i8 46,i8*%D,align 1
%H=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%I=getelementptr inbounds i8,i8*%D,i64 8
%J=bitcast i8*%I to i8**
store i8*%H,i8**%J,align 8
%K=getelementptr inbounds i8,i8*%D,i64 16
%L=bitcast i8*%K to i32*
store i32 2,i32*%L,align 4
%M=call i8*@sml_alloc(i32 inreg 20)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177296,i32*%O,align 4
store i8*%M,i8**%c,align 8
%P=getelementptr inbounds i8,i8*%M,i64 1
call void@llvm.memset.p0i8.i32(i8*%P,i8 0,i32 7,i1 false)
store i8 48,i8*%M,align 1
%Q=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%R=getelementptr inbounds i8,i8*%M,i64 8
%S=bitcast i8*%R to i8**
store i8*%Q,i8**%S,align 8
%T=getelementptr inbounds i8,i8*%M,i64 16
%U=bitcast i8*%T to i32*
store i32 2,i32*%U,align 4
%V=load i8**,i8***%w,align 8
%W=load i8*,i8**%V,align 8
%X=getelementptr inbounds i8,i8*%W,i64 20
%Y=bitcast i8*%X to i32*
%Z=load i32,i32*%Y,align 4
%aa=icmp eq i32%Z,0
br i1%aa,label%al,label%ab
ab:
%ac=call i8*@sml_alloc(i32 inreg 20)#0
%ad=getelementptr inbounds i8,i8*%ac,i64 -4
%ae=bitcast i8*%ad to i32*
store i32 1342177296,i32*%ae,align 4
%af=getelementptr inbounds i8,i8*%ac,i64 1
call void@llvm.memset.p0i8.i32(i8*%af,i8 0,i32 7,i1 false)
store i8 126,i8*%ac,align 1
%ag=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ah=getelementptr inbounds i8,i8*%ac,i64 8
%ai=bitcast i8*%ah to i8**
store i8*%ag,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%ac,i64 16
%ak=bitcast i8*%aj to i32*
store i32 2,i32*%ak,align 4
br label%am
al:
store i8*null,i8**%c,align 8
br label%am
am:
%an=phi i8*[%ac,%ab],[%M,%al]
%ao=call fastcc i8*@_SMLFN10CharVector8fromListE(i8*inreg%an)
store i8*%ao,i8**%c,align 8
%ap=load i8*,i8**%d,align 8
%aq=getelementptr inbounds i8,i8*%ap,i64 8
%ar=bitcast i8*%aq to i32*
%as=load i32,i32*%ar,align 4
%at=icmp eq i32%as,0
br i1%at,label%au,label%av
au:
ret i8*%ao
av:
%aw=call i8*@sml_alloc(i32 inreg 20)#0
%ax=getelementptr inbounds i8,i8*%aw,i64 -4
%ay=bitcast i8*%ax to i32*
store i32 1342177296,i32*%ay,align 4
%az=load i8*,i8**%c,align 8
store i8*null,i8**%c,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@i,i64 0,i32 2,i64 0),i8**%aC,align 8
%aD=getelementptr inbounds i8,i8*%aw,i64 16
%aE=bitcast i8*%aD to i32*
store i32 3,i32*%aE,align 4
%aF=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%aw)
store i8*%aF,i8**%c,align 8
%aG=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aH=getelementptr inbounds i8,i8*%aG,i64 8
%aI=bitcast i8*%aH to i32*
%aJ=load i32,i32*%aI,align 4
%aK=call fastcc i8*@_SMLFN5Int328toStringE(i32 inreg%aJ)
store i8*%aK,i8**%d,align 8
%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=load i8*,i8**%c,align 8
%aP=bitcast i8*%aL to i8**
store i8*%aO,i8**%aP,align 8
%aQ=load i8*,i8**%d,align 8
%aR=getelementptr inbounds i8,i8*%aL,i64 8
%aS=bitcast i8*%aR to i8**
store i8*%aQ,i8**%aS,align 8
%aT=getelementptr inbounds i8,i8*%aL,i64 16
%aU=bitcast i8*%aT to i32*
store i32 3,i32*%aU,align 4
%aV=tail call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%aL)
ret i8*%aV
}
define fastcc i8*@_SMLFN8IEEEReal8toStringE(i8*inreg%a)#2 gc"smlsharp"{
j:
%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=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%h,label%f
f:
call void@sml_check(i32 inreg%d)
%g=load i8*,i8**%b,align 8
br label%h
h:
%i=phi i8*[%g,%f],[%a,%j]
%k=getelementptr inbounds i8,i8*%i,i64 16
%l=bitcast i8*%k to i32*
%m=load i32,i32*%l,align 4
%n=call i8*@sml_alloc(i32 inreg 20)#0
%o=getelementptr inbounds i8,i8*%n,i64 -4
%p=bitcast i8*%o to i32*
store i32 1342177296,i32*%p,align 4
store i8*%n,i8**%c,align 8
%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%m,i32*%t,align 4
%u=getelementptr inbounds i8,i8*%n,i64 16
%v=bitcast i8*%u to i32*
store i32 1,i32*%v,align 4
%w=call i8*@sml_alloc(i32 inreg 28)#0
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177304,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=getelementptr inbounds i8,i8*%w,i64 8
%C=bitcast i8*%B to void(...)**
store void(...)*bitcast(i8*(i8*,i32)*@_SMLL14digitsToString_118 to void(...)*),void(...)**%C,align 8
%D=getelementptr inbounds i8,i8*%w,i64 16
%E=bitcast i8*%D to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL14digitsToString_165 to void(...)*),void(...)**%E,align 8
%F=getelementptr inbounds i8,i8*%w,i64 24
%G=bitcast i8*%F to i32*
store i32 -2147483647,i32*%G,align 4
%H=load i8*,i8**%b,align 8
%I=bitcast i8*%H to i32*
%J=load i32,i32*%I,align 4
switch i32%J,label%K[
i32 1,label%au
i32 0,label%ao
i32 4,label%ag
i32 2,label%ae
i32 3,label%ac
]
K:
store i8*null,i8**%c,align 8
call void@sml_matchcomp_bug()
%L=load i8*,i8**@_SMLZ5Match,align 8
store i8*%L,i8**%b,align 8
%M=call i8*@sml_alloc(i32 inreg 20)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177296,i32*%O,align 4
store i8*%M,i8**%c,align 8
%P=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%Q=bitcast i8*%M to i8**
store i8*%P,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%M,i64 8
%S=bitcast i8*%R to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@p,i64 0,i32 2,i64 0),i8**%S,align 8
%T=getelementptr inbounds i8,i8*%M,i64 16
%U=bitcast i8*%T to i32*
store i32 3,i32*%U,align 4
%V=call i8*@sml_alloc(i32 inreg 60)#0
%W=getelementptr inbounds i8,i8*%V,i64 -4
%X=bitcast i8*%W to i32*
store i32 1342177336,i32*%X,align 4
%Y=getelementptr inbounds i8,i8*%V,i64 56
%Z=bitcast i8*%Y to i32*
store i32 1,i32*%Z,align 4
%aa=load i8*,i8**%c,align 8
%ab=bitcast i8*%V to i8**
store i8*%aa,i8**%ab,align 8
call void@sml_raise(i8*inreg%V)#1
unreachable
ac:
%ad=tail call fastcc i8*@_SMLL14digitsToString_118(i8*inreg%z,i32 inreg 0)
ret i8*%ad
ae:
%af=tail call fastcc i8*@_SMLL14digitsToString_118(i8*inreg%z,i32 inreg 0)
ret i8*%af
ag:
%ah=getelementptr inbounds i8,i8*%H,i64 20
%ai=bitcast i8*%ah to i32*
%aj=load i32,i32*%ai,align 4
%ak=icmp eq i32%aj,0
%al=select i1%ak,i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@n,i64 0,i32 2,i64 0),i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@o,i64 0,i32 2,i64 0)
br label%am
am:
%an=phi i8*[%al,%ag],[%at,%ao],[%az,%au]
ret i8*%an
ao:
%ap=getelementptr inbounds i8,i8*%H,i64 20
%aq=bitcast i8*%ap to i32*
%ar=load i32,i32*%aq,align 4
%as=icmp eq i32%ar,0
%at=select i1%as,i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@l,i64 0,i32 2,i64 0),i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@m,i64 0,i32 2,i64 0)
br label%am
au:
%av=getelementptr inbounds i8,i8*%H,i64 20
%aw=bitcast i8*%av to i32*
%ax=load i32,i32*%aw,align 4
%ay=icmp eq i32%ax,0
%az=select i1%ay,i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@j,i64 0,i32 2,i64 0),i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@k,i64 0,i32 2,i64 0)
br label%am
}
define internal fastcc i8*@_SMLLN8IEEEReal7toLowerE_128(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=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
store i8*%a,i8**%e,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%k,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%c,align 8
%j=load i8*,i8**%e,align 8
br label%k
k:
%l=phi i8*[%j,%h],[%a,%m]
%n=phi i8*[%i,%h],[%b,%m]
%o=getelementptr inbounds i8,i8*%l,i64 4
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=sub i32 0,%q
%s=and i32%q,%r
%t=add i32%q,7
%u=add i32%t,%s
%v=and i32%u,-8
%w=lshr i32%s,3
%x=bitcast i8*%l to i32*
%y=load i32,i32*%x,align 4
%z=shl i32%y,%w
%A=or i32%v,4
%B=icmp eq i8*%n,null
br i1%B,label%C,label%D
C:
ret i8*null
D:
%E=bitcast i8*%n to i8**
%F=load i8*,i8**%E,align 8
store i8*%F,i8**%c,align 8
%G=load i32,i32*%x,align 4
%H=icmp eq i32%G,0
br i1%H,label%N,label%I
I:
%J=sext i32%s to i64
%K=getelementptr inbounds i8,i8*%F,i64%J
%L=bitcast i8*%K to i8**
%M=load i8*,i8**%L,align 8
br label%V
N:
%O=load i32,i32*%p,align 4
%P=call i8*@sml_alloc(i32 inreg%O)#0
%Q=getelementptr inbounds i8,i8*%P,i64 -4
%R=bitcast i8*%Q to i32*
store i32%O,i32*%R,align 4
%S=load i8*,i8**%c,align 8
%T=sext i32%s to i64
%U=getelementptr inbounds i8,i8*%S,i64%T
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%P,i8*%U,i32%O,i1 false)
br label%V
V:
%W=phi i64[%T,%N],[%J,%I]
%X=phi i8*[%S,%N],[%F,%I]
%Y=phi i8*[%P,%N],[%M,%I]
store i8*%Y,i8**%d,align 8
store i8*null,i8**%c,align 8
%Z=load i8,i8*%X,align 1
%aa=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%Z)
%ab=load i8*,i8**%e,align 8
%ac=getelementptr inbounds i8,i8*%ab,i64 4
%ad=bitcast i8*%ac to i32*
%ae=load i32,i32*%ad,align 4
store i8*null,i8**%e,align 8
%af=bitcast i8*%ab to i32*
%ag=load i32,i32*%af,align 4
%ah=call i8*@sml_alloc(i32 inreg%A)#0
%ai=or i32%v,1342177280
%aj=getelementptr inbounds i8,i8*%ah,i64 -4
%ak=bitcast i8*%aj to i32*
store i32%ai,i32*%ak,align 4
store i8*%ah,i8**%c,align 8
call void@llvm.memset.p0i8.i32(i8*%ah,i8 0,i32%A,i1 false)
store i8%aa,i8*%ah,align 1
%al=icmp eq i32%ag,0
%am=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%an=getelementptr inbounds i8,i8*%ah,i64%W
br i1%al,label%aq,label%ao
ao:
%ap=bitcast i8*%an to i8**
store i8*%am,i8**%ap,align 8
br label%ar
aq:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%an,i8*%am,i32%ae,i1 false)
br label%ar
ar:
%as=sext i32%v to i64
%at=getelementptr inbounds i8,i8*%ah,i64%as
%au=bitcast i8*%at to i32*
store i32%z,i32*%au,align 4
%av=call i8*@sml_alloc(i32 inreg 12)#0
%aw=getelementptr inbounds i8,i8*%av,i64 -4
%ax=bitcast i8*%aw to i32*
store i32 1342177288,i32*%ax,align 4
%ay=load i8*,i8**%c,align 8
%az=bitcast i8*%av to i8**
store i8*%ay,i8**%az,align 8
%aA=getelementptr inbounds i8,i8*%av,i64 8
%aB=bitcast i8*%aA to i32*
store i32 1,i32*%aB,align 4
ret i8*%av
}
define internal fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%a,i32 inreg%b)unnamed_addr#4 gc"smlsharp"{
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 1342177288,i32*%g,align 4
store i8*%d,i8**%c,align 8
store i32%a,i32*%e,align 4
%h=getelementptr inbounds i8,i8*%d,i64 4
%i=bitcast i8*%h to i32*
store i32%b,i32*%i,align 4
%j=getelementptr inbounds i8,i8*%d,i64 8
%k=bitcast i8*%j to i32*
store i32 0,i32*%k,align 4
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=getelementptr inbounds i8,i8*%l,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177304,i32*%n,align 4
%o=load i8*,i8**%c,align 8
%p=bitcast i8*%l to i8**
store i8*%o,i8**%p,align 8
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal7toLowerE_128 to void(...)*),void(...)**%r,align 8
%s=getelementptr inbounds i8,i8*%l,i64 16
%t=bitcast i8*%s to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal7toLowerE_128 to void(...)*),void(...)**%t,align 8
%u=getelementptr inbounds i8,i8*%l,i64 24
%v=bitcast i8*%u to i32*
store i32 -2147483647,i32*%v,align 4
ret i8*%l
}
define internal fastcc i8*@_SMLLN8IEEEReal7scanInfE_131(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
n:
%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**%e,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%l,label%j
j:
call void@sml_check(i32 inreg%h)
%k=load i8*,i8**%e,align 8
br label%l
l:
%m=phi i8*[%k,%j],[%a,%n]
%o=getelementptr inbounds i8,i8*%m,i64 16
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=sub i32 0,%q
%s=and i32%q,%r
%t=add i32%q,7
%u=and i32%t,%r
%v=add i32%t,%u
%w=and i32%v,-8
%x=lshr i32%u,3
%y=getelementptr inbounds i8,i8*%m,i64 12
%z=bitcast i8*%y to i32*
%A=load i32,i32*%z,align 4
%B=shl i32%A,%x
%C=or i32%B,1
%D=or i32%w,4
%E=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%A,i32 inreg%q)
%F=getelementptr inbounds i8,i8*%E,i64 16
%G=bitcast i8*%F to i8*(i8*,i8*)**
%H=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%G,align 8
%I=bitcast i8*%E to i8**
%J=load i8*,i8**%I,align 8
store i8*%J,i8**%d,align 8
%K=bitcast i8**%e to i8***
%L=load i8**,i8***%K,align 8
%M=load i8*,i8**%L,align 8
%N=getelementptr inbounds i8,i8*%M,i64 16
%O=bitcast i8*%N to i8*(i8*,i8*)**
%P=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%O,align 8
%Q=bitcast i8*%M to i8**
%R=load i8*,i8**%Q,align 8
%S=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%T=call fastcc i8*%P(i8*inreg%R,i8*inreg%S)
%U=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%V=call fastcc i8*%H(i8*inreg%U,i8*inreg%T)
%W=icmp eq i8*%V,null
br i1%W,label%c8,label%X
X:
%Y=bitcast i8*%V to i8**
%Z=load i8*,i8**%Y,align 8
store i8*%Z,i8**%c,align 8
%aa=load i8,i8*%Z,align 1
switch i8%aa,label%c8[
i8 105,label%c9
i8 110,label%ab
]
ab:
%ac=load i8*,i8**%e,align 8
%ad=getelementptr inbounds i8,i8*%ac,i64 12
%ae=bitcast i8*%ad to i32*
%af=load i32,i32*%ae,align 4
%ag=getelementptr inbounds i8,i8*%ac,i64 16
%ah=bitcast i8*%ag to i32*
%ai=load i32,i32*%ah,align 4
%aj=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%af,i32 inreg%ai)
%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**%f,align 8
%ap=load i8**,i8***%K,align 8
%aq=load i8*,i8**%ap,align 8
%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
store i8*%av,i8**%d,align 8
%aw=bitcast i8**%ap to i8*
%ax=getelementptr inbounds i8,i8*%aw,i64 12
%ay=bitcast i8*%ax to i32*
%az=load i32,i32*%ay,align 4
%aA=icmp eq i32%az,0
br i1%aA,label%aH,label%aB
aB:
%aC=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aD=sext i32%s to i64
%aE=getelementptr inbounds i8,i8*%aC,i64%aD
%aF=bitcast i8*%aE to i8**
%aG=load i8*,i8**%aF,align 8
br label%aS
aH:
%aI=getelementptr inbounds i8*,i8**%ap,i64 2
%aJ=bitcast i8**%aI to i32*
%aK=load i32,i32*%aJ,align 4
%aL=call i8*@sml_alloc(i32 inreg%aK)#0
%aM=getelementptr inbounds i8,i8*%aL,i64 -4
%aN=bitcast i8*%aM to i32*
store i32%aK,i32*%aN,align 4
%aO=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aP=sext i32%s to i64
%aQ=getelementptr inbounds i8,i8*%aO,i64%aP
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%aL,i8*%aQ,i32%aK,i1 false)
%aR=load i8*,i8**%d,align 8
br label%aS
aS:
%aT=phi i8*[%av,%aB],[%aR,%aH]
%aU=phi i8*[%aG,%aB],[%aL,%aH]
store i8*null,i8**%d,align 8
%aV=call fastcc i8*%at(i8*inreg%aT,i8*inreg%aU)
%aW=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aX=call fastcc i8*%am(i8*inreg%aW,i8*inreg%aV)
%aY=icmp eq i8*%aX,null
br i1%aY,label%c8,label%aZ
aZ:
%a0=bitcast i8*%aX to i8**
%a1=load i8*,i8**%a0,align 8
store i8*%a1,i8**%c,align 8
%a2=load i8,i8*%a1,align 1
%a3=icmp eq i8%a2,97
br i1%a3,label%a4,label%c8
a4:
%a5=load i8*,i8**%e,align 8
%a6=getelementptr inbounds i8,i8*%a5,i64 12
%a7=bitcast i8*%a6 to i32*
%a8=load i32,i32*%a7,align 4
%a9=getelementptr inbounds i8,i8*%a5,i64 16
%ba=bitcast i8*%a9 to i32*
%bb=load i32,i32*%ba,align 4
%bc=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%a8,i32 inreg%bb)
%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
store i8*%bh,i8**%f,align 8
%bi=load i8**,i8***%K,align 8
%bj=load i8*,i8**%bi,align 8
%bk=getelementptr inbounds i8,i8*%bj,i64 16
%bl=bitcast i8*%bk to i8*(i8*,i8*)**
%bm=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bl,align 8
%bn=bitcast i8*%bj to i8**
%bo=load i8*,i8**%bn,align 8
store i8*%bo,i8**%d,align 8
%bp=bitcast i8**%bi to i8*
%bq=getelementptr inbounds i8,i8*%bp,i64 12
%br=bitcast i8*%bq to i32*
%bs=load i32,i32*%br,align 4
%bt=icmp eq i32%bs,0
br i1%bt,label%bA,label%bu
bu:
%bv=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bw=sext i32%s to i64
%bx=getelementptr inbounds i8,i8*%bv,i64%bw
%by=bitcast i8*%bx to i8**
%bz=load i8*,i8**%by,align 8
br label%bL
bA:
%bB=getelementptr inbounds i8*,i8**%bi,i64 2
%bC=bitcast i8**%bB to i32*
%bD=load i32,i32*%bC,align 4
%bE=call i8*@sml_alloc(i32 inreg%bD)#0
%bF=getelementptr inbounds i8,i8*%bE,i64 -4
%bG=bitcast i8*%bF to i32*
store i32%bD,i32*%bG,align 4
%bH=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bI=sext i32%s to i64
%bJ=getelementptr inbounds i8,i8*%bH,i64%bI
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bE,i8*%bJ,i32%bD,i1 false)
%bK=load i8*,i8**%d,align 8
br label%bL
bL:
%bM=phi i8*[%bo,%bu],[%bK,%bA]
%bN=phi i8*[%bz,%bu],[%bE,%bA]
store i8*null,i8**%d,align 8
%bO=call fastcc i8*%bm(i8*inreg%bM,i8*inreg%bN)
%bP=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bQ=call fastcc i8*%bf(i8*inreg%bP,i8*inreg%bO)
%bR=icmp eq i8*%bQ,null
br i1%bR,label%c8,label%bS
bS:
%bT=bitcast i8*%bQ to i8**
%bU=load i8*,i8**%bT,align 8
store i8*%bU,i8**%c,align 8
%bV=load i8,i8*%bU,align 1
%bW=icmp eq i8%bV,110
br i1%bW,label%bX,label%c8
bX:
%bY=load i8*,i8**%e,align 8
%bZ=getelementptr inbounds i8,i8*%bY,i64 12
%b0=bitcast i8*%bZ to i32*
%b1=load i32,i32*%b0,align 4
%b2=icmp eq i32%b1,0
br i1%b2,label%b8,label%b3
b3:
store i8*null,i8**%c,align 8
%b4=sext i32%s to i64
%b5=getelementptr inbounds i8,i8*%bU,i64%b4
%b6=bitcast i8*%b5 to i8**
%b7=load i8*,i8**%b6,align 8
br label%cj
b8:
%b9=getelementptr inbounds i8,i8*%bY,i64 16
%ca=bitcast i8*%b9 to i32*
%cb=load i32,i32*%ca,align 4
%cc=call i8*@sml_alloc(i32 inreg%cb)#0
%cd=getelementptr inbounds i8,i8*%cc,i64 -4
%ce=bitcast i8*%cd to i32*
store i32%cb,i32*%ce,align 4
%cf=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cg=sext i32%s to i64
%ch=getelementptr inbounds i8,i8*%cf,i64%cg
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cc,i8*%ch,i32%cb,i1 false)
%ci=load i8*,i8**%e,align 8
br label%cj
cj:
%ck=phi i8*[%ci,%b8],[%bY,%b3]
%cl=phi i8*[%cc,%b8],[%b7,%b3]
store i8*%cl,i8**%d,align 8
%cm=getelementptr inbounds i8,i8*%ck,i64 8
%cn=bitcast i8*%cm to i32*
%co=load i32,i32*%cn,align 4
%cp=call i8*@sml_alloc(i32 inreg 28)#0
%cq=getelementptr inbounds i8,i8*%cp,i64 -4
%cr=bitcast i8*%cq to i32*
store i32 1342177304,i32*%cr,align 4
store i8*%cp,i8**%c,align 8
%cs=getelementptr inbounds i8,i8*%cp,i64 4
%ct=bitcast i8*%cs to i32*
store i32 0,i32*%ct,align 1
%cu=bitcast i8*%cp to i32*
store i32 1,i32*%cu,align 4
%cv=getelementptr inbounds i8,i8*%cp,i64 8
%cw=bitcast i8*%cv to i8**
store i8*null,i8**%cw,align 8
%cx=getelementptr inbounds i8,i8*%cp,i64 16
%cy=bitcast i8*%cx to i32*
store i32 0,i32*%cy,align 4
%cz=getelementptr inbounds i8,i8*%cp,i64 20
%cA=bitcast i8*%cz to i32*
store i32%co,i32*%cA,align 4
%cB=getelementptr inbounds i8,i8*%cp,i64 24
%cC=bitcast i8*%cB to i32*
store i32 2,i32*%cC,align 4
%cD=load i8*,i8**%e,align 8
%cE=getelementptr inbounds i8,i8*%cD,i64 16
%cF=bitcast i8*%cE to i32*
%cG=load i32,i32*%cF,align 4
store i8*null,i8**%e,align 8
%cH=getelementptr inbounds i8,i8*%cD,i64 12
%cI=bitcast i8*%cH to i32*
%cJ=load i32,i32*%cI,align 4
%cK=call i8*@sml_alloc(i32 inreg%D)#0
%cL=or i32%w,1342177280
%cM=getelementptr inbounds i8,i8*%cK,i64 -4
%cN=bitcast i8*%cM to i32*
store i32%cL,i32*%cN,align 4
store i8*%cK,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%cK,i8 0,i32%D,i1 false)
%cO=load i8*,i8**%c,align 8
%cP=bitcast i8*%cK to i8**
store i8*null,i8**%c,align 8
store i8*%cO,i8**%cP,align 8
%cQ=icmp eq i32%cJ,0
%cR=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cS=sext i32%u to i64
%cT=getelementptr inbounds i8,i8*%cK,i64%cS
br i1%cQ,label%cW,label%cU
cU:
%cV=bitcast i8*%cT to i8**
store i8*%cR,i8**%cV,align 8
br label%cX
cW:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cT,i8*%cR,i32%cG,i1 false)
br label%cX
cX:
%cY=sext i32%w to i64
%cZ=getelementptr inbounds i8,i8*%cK,i64%cY
%c0=bitcast i8*%cZ to i32*
store i32%C,i32*%c0,align 4
%c1=call i8*@sml_alloc(i32 inreg 12)#0
%c2=getelementptr inbounds i8,i8*%c1,i64 -4
%c3=bitcast i8*%c2 to i32*
store i32 1342177288,i32*%c3,align 4
%c4=load i8*,i8**%e,align 8
%c5=bitcast i8*%c1 to i8**
store i8*%c4,i8**%c5,align 8
%c6=getelementptr inbounds i8,i8*%c1,i64 8
%c7=bitcast i8*%c6 to i32*
store i32 1,i32*%c7,align 4
ret i8*%c1
c8:
ret i8*null
c9:
%da=load i8*,i8**%e,align 8
%db=getelementptr inbounds i8,i8*%da,i64 12
%dc=bitcast i8*%db to i32*
%dd=load i32,i32*%dc,align 4
%de=getelementptr inbounds i8,i8*%da,i64 16
%df=bitcast i8*%de to i32*
%dg=load i32,i32*%df,align 4
%dh=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%dd,i32 inreg%dg)
%di=getelementptr inbounds i8,i8*%dh,i64 16
%dj=bitcast i8*%di to i8*(i8*,i8*)**
%dk=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dj,align 8
%dl=bitcast i8*%dh to i8**
%dm=load i8*,i8**%dl,align 8
store i8*%dm,i8**%f,align 8
%dn=load i8**,i8***%K,align 8
%do=load i8*,i8**%dn,align 8
%dp=getelementptr inbounds i8,i8*%do,i64 16
%dq=bitcast i8*%dp to i8*(i8*,i8*)**
%dr=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dq,align 8
%ds=bitcast i8*%do to i8**
%dt=load i8*,i8**%ds,align 8
store i8*%dt,i8**%d,align 8
%du=bitcast i8**%dn to i8*
%dv=getelementptr inbounds i8,i8*%du,i64 12
%dw=bitcast i8*%dv to i32*
%dx=load i32,i32*%dw,align 4
%dy=icmp eq i32%dx,0
br i1%dy,label%dF,label%dz
dz:
%dA=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dB=sext i32%s to i64
%dC=getelementptr inbounds i8,i8*%dA,i64%dB
%dD=bitcast i8*%dC to i8**
%dE=load i8*,i8**%dD,align 8
br label%dQ
dF:
%dG=getelementptr inbounds i8*,i8**%dn,i64 2
%dH=bitcast i8**%dG to i32*
%dI=load i32,i32*%dH,align 4
%dJ=call i8*@sml_alloc(i32 inreg%dI)#0
%dK=getelementptr inbounds i8,i8*%dJ,i64 -4
%dL=bitcast i8*%dK to i32*
store i32%dI,i32*%dL,align 4
%dM=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dN=sext i32%s to i64
%dO=getelementptr inbounds i8,i8*%dM,i64%dN
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%dJ,i8*%dO,i32%dI,i1 false)
%dP=load i8*,i8**%d,align 8
br label%dQ
dQ:
%dR=phi i8*[%dt,%dz],[%dP,%dF]
%dS=phi i8*[%dE,%dz],[%dJ,%dF]
store i8*null,i8**%d,align 8
%dT=call fastcc i8*%dr(i8*inreg%dR,i8*inreg%dS)
%dU=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%dV=call fastcc i8*%dk(i8*inreg%dU,i8*inreg%dT)
%dW=icmp eq i8*%dV,null
br i1%dW,label%c8,label%dX
dX:
%dY=bitcast i8*%dV to i8**
%dZ=load i8*,i8**%dY,align 8
store i8*%dZ,i8**%c,align 8
%d0=load i8,i8*%dZ,align 1
%d1=icmp eq i8%d0,110
br i1%d1,label%d2,label%c8
d2:
%d3=load i8*,i8**%e,align 8
%d4=getelementptr inbounds i8,i8*%d3,i64 12
%d5=bitcast i8*%d4 to i32*
%d6=load i32,i32*%d5,align 4
%d7=getelementptr inbounds i8,i8*%d3,i64 16
%d8=bitcast i8*%d7 to i32*
%d9=load i32,i32*%d8,align 4
%ea=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%d6,i32 inreg%d9)
%eb=getelementptr inbounds i8,i8*%ea,i64 16
%ec=bitcast i8*%eb to i8*(i8*,i8*)**
%ed=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ec,align 8
%ee=bitcast i8*%ea to i8**
%ef=load i8*,i8**%ee,align 8
store i8*%ef,i8**%f,align 8
%eg=load i8**,i8***%K,align 8
%eh=load i8*,i8**%eg,align 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**%d,align 8
%en=bitcast i8**%eg to i8*
%eo=getelementptr inbounds i8,i8*%en,i64 12
%ep=bitcast i8*%eo to i32*
%eq=load i32,i32*%ep,align 4
%er=icmp eq i32%eq,0
br i1%er,label%ey,label%es
es:
%et=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%eu=sext i32%s to i64
%ev=getelementptr inbounds i8,i8*%et,i64%eu
%ew=bitcast i8*%ev to i8**
%ex=load i8*,i8**%ew,align 8
br label%eJ
ey:
%ez=getelementptr inbounds i8*,i8**%eg,i64 2
%eA=bitcast i8**%ez to i32*
%eB=load i32,i32*%eA,align 4
%eC=call i8*@sml_alloc(i32 inreg%eB)#0
%eD=getelementptr inbounds i8,i8*%eC,i64 -4
%eE=bitcast i8*%eD to i32*
store i32%eB,i32*%eE,align 4
%eF=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%eG=sext i32%s to i64
%eH=getelementptr inbounds i8,i8*%eF,i64%eG
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%eC,i8*%eH,i32%eB,i1 false)
%eI=load i8*,i8**%d,align 8
br label%eJ
eJ:
%eK=phi i8*[%em,%es],[%eI,%ey]
%eL=phi i8*[%ex,%es],[%eC,%ey]
store i8*null,i8**%d,align 8
%eM=call fastcc i8*%ek(i8*inreg%eK,i8*inreg%eL)
%eN=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%eO=call fastcc i8*%ed(i8*inreg%eN,i8*inreg%eM)
%eP=icmp eq i8*%eO,null
br i1%eP,label%c8,label%eQ
eQ:
%eR=bitcast i8*%eO to i8**
%eS=load i8*,i8**%eR,align 8
store i8*%eS,i8**%c,align 8
%eT=load i8,i8*%eS,align 1
%eU=icmp eq i8%eT,102
br i1%eU,label%eV,label%c8
eV:
%eW=load i8*,i8**%e,align 8
%eX=getelementptr inbounds i8,i8*%eW,i64 12
%eY=bitcast i8*%eX to i32*
%eZ=load i32,i32*%eY,align 4
%e0=getelementptr inbounds i8,i8*%eW,i64 16
%e1=bitcast i8*%e0 to i32*
%e2=load i32,i32*%e1,align 4
%e3=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%eZ,i32 inreg%e2)
%e4=getelementptr inbounds i8,i8*%e3,i64 16
%e5=bitcast i8*%e4 to i8*(i8*,i8*)**
%e6=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%e5,align 8
%e7=bitcast i8*%e3 to i8**
%e8=load i8*,i8**%e7,align 8
store i8*%e8,i8**%f,align 8
%e9=load i8**,i8***%K,align 8
%fa=load i8*,i8**%e9,align 8
%fb=getelementptr inbounds i8,i8*%fa,i64 16
%fc=bitcast i8*%fb to i8*(i8*,i8*)**
%fd=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%fc,align 8
%fe=bitcast i8*%fa to i8**
%ff=load i8*,i8**%fe,align 8
store i8*%ff,i8**%d,align 8
%fg=bitcast i8**%e9 to i8*
%fh=getelementptr inbounds i8,i8*%fg,i64 12
%fi=bitcast i8*%fh to i32*
%fj=load i32,i32*%fi,align 4
%fk=icmp eq i32%fj,0
br i1%fk,label%fr,label%fl
fl:
%fm=load i8*,i8**%c,align 8
%fn=sext i32%s to i64
%fo=getelementptr inbounds i8,i8*%fm,i64%fn
%fp=bitcast i8*%fo to i8**
%fq=load i8*,i8**%fp,align 8
br label%fC
fr:
%fs=getelementptr inbounds i8*,i8**%e9,i64 2
%ft=bitcast i8**%fs to i32*
%fu=load i32,i32*%ft,align 4
%fv=call i8*@sml_alloc(i32 inreg%fu)#0
%fw=getelementptr inbounds i8,i8*%fv,i64 -4
%fx=bitcast i8*%fw to i32*
store i32%fu,i32*%fx,align 4
%fy=load i8*,i8**%c,align 8
%fz=sext i32%s to i64
%fA=getelementptr inbounds i8,i8*%fy,i64%fz
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%fv,i8*%fA,i32%fu,i1 false)
%fB=load i8*,i8**%d,align 8
br label%fC
fC:
%fD=phi i8*[%ff,%fl],[%fB,%fr]
%fE=phi i8*[%fq,%fl],[%fv,%fr]
store i8*null,i8**%d,align 8
%fF=call fastcc i8*%fd(i8*inreg%fD,i8*inreg%fE)
%fG=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%fH=call fastcc i8*%e6(i8*inreg%fG,i8*inreg%fF)
%fI=icmp eq i8*%fH,null
br i1%fI,label%lc,label%fJ
fJ:
%fK=bitcast i8*%fH to i8**
%fL=load i8*,i8**%fK,align 8
store i8*%fL,i8**%d,align 8
%fM=load i8,i8*%fL,align 1
%fN=icmp eq i8%fM,105
br i1%fN,label%fP,label%fO
fO:
store i8*null,i8**%d,align 8
br label%lc
fP:
%fQ=load i8*,i8**%e,align 8
%fR=getelementptr inbounds i8,i8*%fQ,i64 12
%fS=bitcast i8*%fR to i32*
%fT=load i32,i32*%fS,align 4
%fU=getelementptr inbounds i8,i8*%fQ,i64 16
%fV=bitcast i8*%fU to i32*
%fW=load i32,i32*%fV,align 4
%fX=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%fT,i32 inreg%fW)
%fY=getelementptr inbounds i8,i8*%fX,i64 16
%fZ=bitcast i8*%fY to i8*(i8*,i8*)**
%f0=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%fZ,align 8
%f1=bitcast i8*%fX to i8**
%f2=load i8*,i8**%f1,align 8
store i8*%f2,i8**%g,align 8
%f3=load i8**,i8***%K,align 8
%f4=load i8*,i8**%f3,align 8
%f5=getelementptr inbounds i8,i8*%f4,i64 16
%f6=bitcast i8*%f5 to i8*(i8*,i8*)**
%f7=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%f6,align 8
%f8=bitcast i8*%f4 to i8**
%f9=load i8*,i8**%f8,align 8
store i8*%f9,i8**%f,align 8
%ga=bitcast i8**%f3 to i8*
%gb=getelementptr inbounds i8,i8*%ga,i64 12
%gc=bitcast i8*%gb to i32*
%gd=load i32,i32*%gc,align 4
%ge=icmp eq i32%gd,0
br i1%ge,label%gl,label%gf
gf:
%gg=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%gh=sext i32%s to i64
%gi=getelementptr inbounds i8,i8*%gg,i64%gh
%gj=bitcast i8*%gi to i8**
%gk=load i8*,i8**%gj,align 8
br label%gw
gl:
%gm=getelementptr inbounds i8*,i8**%f3,i64 2
%gn=bitcast i8**%gm to i32*
%go=load i32,i32*%gn,align 4
%gp=call i8*@sml_alloc(i32 inreg%go)#0
%gq=getelementptr inbounds i8,i8*%gp,i64 -4
%gr=bitcast i8*%gq to i32*
store i32%go,i32*%gr,align 4
%gs=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%gt=sext i32%s to i64
%gu=getelementptr inbounds i8,i8*%gs,i64%gt
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%gp,i8*%gu,i32%go,i1 false)
%gv=load i8*,i8**%f,align 8
br label%gw
gw:
%gx=phi i8*[%f9,%gf],[%gv,%gl]
%gy=phi i8*[%gk,%gf],[%gp,%gl]
store i8*null,i8**%f,align 8
%gz=call fastcc i8*%f7(i8*inreg%gx,i8*inreg%gy)
%gA=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%gB=call fastcc i8*%f0(i8*inreg%gA,i8*inreg%gz)
%gC=icmp eq i8*%gB,null
br i1%gC,label%kQ,label%gD
gD:
%gE=bitcast i8*%gB to i8**
%gF=load i8*,i8**%gE,align 8
store i8*%gF,i8**%d,align 8
%gG=load i8,i8*%gF,align 1
%gH=icmp eq i8%gG,110
br i1%gH,label%gJ,label%gI
gI:
store i8*null,i8**%d,align 8
br label%kQ
gJ:
%gK=load i8*,i8**%e,align 8
%gL=getelementptr inbounds i8,i8*%gK,i64 12
%gM=bitcast i8*%gL to i32*
%gN=load i32,i32*%gM,align 4
%gO=getelementptr inbounds i8,i8*%gK,i64 16
%gP=bitcast i8*%gO to i32*
%gQ=load i32,i32*%gP,align 4
%gR=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%gN,i32 inreg%gQ)
%gS=getelementptr inbounds i8,i8*%gR,i64 16
%gT=bitcast i8*%gS to i8*(i8*,i8*)**
%gU=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%gT,align 8
%gV=bitcast i8*%gR to i8**
%gW=load i8*,i8**%gV,align 8
store i8*%gW,i8**%g,align 8
%gX=load i8**,i8***%K,align 8
%gY=load i8*,i8**%gX,align 8
%gZ=getelementptr inbounds i8,i8*%gY,i64 16
%g0=bitcast i8*%gZ to i8*(i8*,i8*)**
%g1=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%g0,align 8
%g2=bitcast i8*%gY to i8**
%g3=load i8*,i8**%g2,align 8
store i8*%g3,i8**%f,align 8
%g4=bitcast i8**%gX to i8*
%g5=getelementptr inbounds i8,i8*%g4,i64 12
%g6=bitcast i8*%g5 to i32*
%g7=load i32,i32*%g6,align 4
%g8=icmp eq i32%g7,0
br i1%g8,label%hf,label%g9
g9:
%ha=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%hb=sext i32%s to i64
%hc=getelementptr inbounds i8,i8*%ha,i64%hb
%hd=bitcast i8*%hc to i8**
%he=load i8*,i8**%hd,align 8
br label%hq
hf:
%hg=getelementptr inbounds i8*,i8**%gX,i64 2
%hh=bitcast i8**%hg to i32*
%hi=load i32,i32*%hh,align 4
%hj=call i8*@sml_alloc(i32 inreg%hi)#0
%hk=getelementptr inbounds i8,i8*%hj,i64 -4
%hl=bitcast i8*%hk to i32*
store i32%hi,i32*%hl,align 4
%hm=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%hn=sext i32%s to i64
%ho=getelementptr inbounds i8,i8*%hm,i64%hn
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%hj,i8*%ho,i32%hi,i1 false)
%hp=load i8*,i8**%f,align 8
br label%hq
hq:
%hr=phi i8*[%g3,%g9],[%hp,%hf]
%hs=phi i8*[%he,%g9],[%hj,%hf]
store i8*null,i8**%f,align 8
%ht=call fastcc i8*%g1(i8*inreg%hr,i8*inreg%hs)
%hu=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%hv=call fastcc i8*%gU(i8*inreg%hu,i8*inreg%ht)
%hw=icmp eq i8*%hv,null
br i1%hw,label%ku,label%hx
hx:
%hy=bitcast i8*%hv to i8**
%hz=load i8*,i8**%hy,align 8
store i8*%hz,i8**%d,align 8
%hA=load i8,i8*%hz,align 1
%hB=icmp eq i8%hA,105
br i1%hB,label%hD,label%hC
hC:
store i8*null,i8**%d,align 8
br label%ku
hD:
%hE=load i8*,i8**%e,align 8
%hF=getelementptr inbounds i8,i8*%hE,i64 12
%hG=bitcast i8*%hF to i32*
%hH=load i32,i32*%hG,align 4
%hI=getelementptr inbounds i8,i8*%hE,i64 16
%hJ=bitcast i8*%hI to i32*
%hK=load i32,i32*%hJ,align 4
%hL=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%hH,i32 inreg%hK)
%hM=getelementptr inbounds i8,i8*%hL,i64 16
%hN=bitcast i8*%hM to i8*(i8*,i8*)**
%hO=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%hN,align 8
%hP=bitcast i8*%hL to i8**
%hQ=load i8*,i8**%hP,align 8
store i8*%hQ,i8**%g,align 8
%hR=load i8**,i8***%K,align 8
%hS=load i8*,i8**%hR,align 8
%hT=getelementptr inbounds i8,i8*%hS,i64 16
%hU=bitcast i8*%hT to i8*(i8*,i8*)**
%hV=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%hU,align 8
%hW=bitcast i8*%hS to i8**
%hX=load i8*,i8**%hW,align 8
store i8*%hX,i8**%f,align 8
%hY=bitcast i8**%hR to i8*
%hZ=getelementptr inbounds i8,i8*%hY,i64 12
%h0=bitcast i8*%hZ to i32*
%h1=load i32,i32*%h0,align 4
%h2=icmp eq i32%h1,0
br i1%h2,label%h9,label%h3
h3:
%h4=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%h5=sext i32%s to i64
%h6=getelementptr inbounds i8,i8*%h4,i64%h5
%h7=bitcast i8*%h6 to i8**
%h8=load i8*,i8**%h7,align 8
br label%ik
h9:
%ia=getelementptr inbounds i8*,i8**%hR,i64 2
%ib=bitcast i8**%ia to i32*
%ic=load i32,i32*%ib,align 4
%id=call i8*@sml_alloc(i32 inreg%ic)#0
%ie=getelementptr inbounds i8,i8*%id,i64 -4
%if=bitcast i8*%ie to i32*
store i32%ic,i32*%if,align 4
%ig=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ih=sext i32%s to i64
%ii=getelementptr inbounds i8,i8*%ig,i64%ih
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%id,i8*%ii,i32%ic,i1 false)
%ij=load i8*,i8**%f,align 8
br label%ik
ik:
%il=phi i8*[%hX,%h3],[%ij,%h9]
%im=phi i8*[%h8,%h3],[%id,%h9]
store i8*null,i8**%f,align 8
%in=call fastcc i8*%hV(i8*inreg%il,i8*inreg%im)
%io=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%ip=call fastcc i8*%hO(i8*inreg%io,i8*inreg%in)
%iq=icmp eq i8*%ip,null
br i1%iq,label%j8,label%ir
ir:
%is=bitcast i8*%ip to i8**
%it=load i8*,i8**%is,align 8
store i8*%it,i8**%d,align 8
%iu=load i8,i8*%it,align 1
%iv=icmp eq i8%iu,116
br i1%iv,label%ix,label%iw
iw:
store i8*null,i8**%d,align 8
br label%j8
ix:
%iy=load i8*,i8**%e,align 8
%iz=getelementptr inbounds i8,i8*%iy,i64 12
%iA=bitcast i8*%iz to i32*
%iB=load i32,i32*%iA,align 4
%iC=getelementptr inbounds i8,i8*%iy,i64 16
%iD=bitcast i8*%iC to i32*
%iE=load i32,i32*%iD,align 4
%iF=call fastcc i8*@_SMLLN8IEEEReal7toLowerE_129(i32 inreg%iB,i32 inreg%iE)
%iG=getelementptr inbounds i8,i8*%iF,i64 16
%iH=bitcast i8*%iG to i8*(i8*,i8*)**
%iI=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%iH,align 8
%iJ=bitcast i8*%iF to i8**
%iK=load i8*,i8**%iJ,align 8
store i8*%iK,i8**%g,align 8
%iL=load i8**,i8***%K,align 8
%iM=load i8*,i8**%iL,align 8
%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
store i8*%iR,i8**%f,align 8
%iS=bitcast i8**%iL to i8*
%iT=getelementptr inbounds i8,i8*%iS,i64 12
%iU=bitcast i8*%iT to i32*
%iV=load i32,i32*%iU,align 4
%iW=icmp eq i32%iV,0
br i1%iW,label%i3,label%iX
iX:
%iY=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%iZ=sext i32%s to i64
%i0=getelementptr inbounds i8,i8*%iY,i64%iZ
%i1=bitcast i8*%i0 to i8**
%i2=load i8*,i8**%i1,align 8
br label%je
i3:
%i4=getelementptr inbounds i8*,i8**%iL,i64 2
%i5=bitcast i8**%i4 to i32*
%i6=load i32,i32*%i5,align 4
%i7=call i8*@sml_alloc(i32 inreg%i6)#0
%i8=getelementptr inbounds i8,i8*%i7,i64 -4
%i9=bitcast i8*%i8 to i32*
store i32%i6,i32*%i9,align 4
%ja=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%jb=sext i32%s to i64
%jc=getelementptr inbounds i8,i8*%ja,i64%jb
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%i7,i8*%jc,i32%i6,i1 false)
%jd=load i8*,i8**%f,align 8
br label%je
je:
%jf=phi i8*[%iR,%iX],[%jd,%i3]
%jg=phi i8*[%i2,%iX],[%i7,%i3]
store i8*null,i8**%f,align 8
%jh=call fastcc i8*%iP(i8*inreg%jf,i8*inreg%jg)
%ji=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%jj=call fastcc i8*%iI(i8*inreg%ji,i8*inreg%jh)
%jk=icmp eq i8*%jj,null
br i1%jk,label%jM,label%jl
jl:
%jm=bitcast i8*%jj to i8**
%jn=load i8*,i8**%jm,align 8
store i8*%jn,i8**%d,align 8
%jo=load i8,i8*%jn,align 1
%jp=icmp eq i8%jo,121
br i1%jp,label%jr,label%jq
jq:
store i8*null,i8**%d,align 8
br label%jM
jr:
%js=load i8*,i8**%e,align 8
%jt=getelementptr inbounds i8,i8*%js,i64 12
%ju=bitcast i8*%jt to i32*
%jv=load i32,i32*%ju,align 4
%jw=icmp eq i32%jv,0
br i1%jw,label%jC,label%jx
jx:
store i8*null,i8**%d,align 8
%jy=sext i32%s to i64
%jz=getelementptr inbounds i8,i8*%jn,i64%jy
%jA=bitcast i8*%jz to i8**
%jB=load i8*,i8**%jA,align 8
br label%ly
jC:
%jD=getelementptr inbounds i8,i8*%js,i64 16
%jE=bitcast i8*%jD to i32*
%jF=load i32,i32*%jE,align 4
%jG=call i8*@sml_alloc(i32 inreg%jF)#0
%jH=getelementptr inbounds i8,i8*%jG,i64 -4
%jI=bitcast i8*%jH to i32*
store i32%jF,i32*%jI,align 4
%jJ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%jK=sext i32%s to i64
%jL=getelementptr inbounds i8,i8*%jJ,i64%jK
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%jG,i8*%jL,i32%jF,i1 false)
br label%ly
jM:
%jN=load i8*,i8**%e,align 8
%jO=getelementptr inbounds i8,i8*%jN,i64 12
%jP=bitcast i8*%jO to i32*
%jQ=load i32,i32*%jP,align 4
%jR=icmp eq i32%jQ,0
br i1%jR,label%jY,label%jS
jS:
%jT=load i8*,i8**%c,align 8
%jU=sext i32%s to i64
%jV=getelementptr inbounds i8,i8*%jT,i64%jU
%jW=bitcast i8*%jV to i8**
%jX=load i8*,i8**%jW,align 8
br label%ly
jY:
%jZ=getelementptr inbounds i8,i8*%jN,i64 16
%j0=bitcast i8*%jZ to i32*
%j1=load i32,i32*%j0,align 4
%j2=call i8*@sml_alloc(i32 inreg%j1)#0
%j3=getelementptr inbounds i8,i8*%j2,i64 -4
%j4=bitcast i8*%j3 to i32*
store i32%j1,i32*%j4,align 4
%j5=load i8*,i8**%c,align 8
%j6=sext i32%s to i64
%j7=getelementptr inbounds i8,i8*%j5,i64%j6
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%j2,i8*%j7,i32%j1,i1 false)
br label%ly
j8:
%j9=load i8*,i8**%e,align 8
%ka=getelementptr inbounds i8,i8*%j9,i64 12
%kb=bitcast i8*%ka to i32*
%kc=load i32,i32*%kb,align 4
%kd=icmp eq i32%kc,0
br i1%kd,label%kk,label%ke
ke:
%kf=load i8*,i8**%c,align 8
%kg=sext i32%s to i64
%kh=getelementptr inbounds i8,i8*%kf,i64%kg
%ki=bitcast i8*%kh to i8**
%kj=load i8*,i8**%ki,align 8
br label%ly
kk:
%kl=getelementptr inbounds i8,i8*%j9,i64 16
%km=bitcast i8*%kl to i32*
%kn=load i32,i32*%km,align 4
%ko=call i8*@sml_alloc(i32 inreg%kn)#0
%kp=getelementptr inbounds i8,i8*%ko,i64 -4
%kq=bitcast i8*%kp to i32*
store i32%kn,i32*%kq,align 4
%kr=load i8*,i8**%c,align 8
%ks=sext i32%s to i64
%kt=getelementptr inbounds i8,i8*%kr,i64%ks
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%ko,i8*%kt,i32%kn,i1 false)
br label%ly
ku:
%kv=load i8*,i8**%e,align 8
%kw=getelementptr inbounds i8,i8*%kv,i64 12
%kx=bitcast i8*%kw to i32*
%ky=load i32,i32*%kx,align 4
%kz=icmp eq i32%ky,0
br i1%kz,label%kG,label%kA
kA:
%kB=load i8*,i8**%c,align 8
%kC=sext i32%s to i64
%kD=getelementptr inbounds i8,i8*%kB,i64%kC
%kE=bitcast i8*%kD to i8**
%kF=load i8*,i8**%kE,align 8
br label%ly
kG:
%kH=getelementptr inbounds i8,i8*%kv,i64 16
%kI=bitcast i8*%kH to i32*
%kJ=load i32,i32*%kI,align 4
%kK=call i8*@sml_alloc(i32 inreg%kJ)#0
%kL=getelementptr inbounds i8,i8*%kK,i64 -4
%kM=bitcast i8*%kL to i32*
store i32%kJ,i32*%kM,align 4
%kN=load i8*,i8**%c,align 8
%kO=sext i32%s to i64
%kP=getelementptr inbounds i8,i8*%kN,i64%kO
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%kK,i8*%kP,i32%kJ,i1 false)
br label%ly
kQ:
%kR=load i8*,i8**%e,align 8
%kS=getelementptr inbounds i8,i8*%kR,i64 12
%kT=bitcast i8*%kS to i32*
%kU=load i32,i32*%kT,align 4
%kV=icmp eq i32%kU,0
br i1%kV,label%k2,label%kW
kW:
%kX=load i8*,i8**%c,align 8
%kY=sext i32%s to i64
%kZ=getelementptr inbounds i8,i8*%kX,i64%kY
%k0=bitcast i8*%kZ to i8**
%k1=load i8*,i8**%k0,align 8
br label%ly
k2:
%k3=getelementptr inbounds i8,i8*%kR,i64 16
%k4=bitcast i8*%k3 to i32*
%k5=load i32,i32*%k4,align 4
%k6=call i8*@sml_alloc(i32 inreg%k5)#0
%k7=getelementptr inbounds i8,i8*%k6,i64 -4
%k8=bitcast i8*%k7 to i32*
store i32%k5,i32*%k8,align 4
%k9=load i8*,i8**%c,align 8
%la=sext i32%s to i64
%lb=getelementptr inbounds i8,i8*%k9,i64%la
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%k6,i8*%lb,i32%k5,i1 false)
br label%ly
lc:
%ld=load i8*,i8**%e,align 8
%le=getelementptr inbounds i8,i8*%ld,i64 12
%lf=bitcast i8*%le to i32*
%lg=load i32,i32*%lf,align 4
%lh=icmp eq i32%lg,0
br i1%lh,label%lo,label%li
li:
%lj=load i8*,i8**%c,align 8
%lk=sext i32%s to i64
%ll=getelementptr inbounds i8,i8*%lj,i64%lk
%lm=bitcast i8*%ll to i8**
%ln=load i8*,i8**%lm,align 8
br label%ly
lo:
%lp=getelementptr inbounds i8,i8*%ld,i64 16
%lq=bitcast i8*%lp to i32*
%lr=load i32,i32*%lq,align 4
%ls=call i8*@sml_alloc(i32 inreg%lr)#0
%lt=getelementptr inbounds i8,i8*%ls,i64 -4
%lu=bitcast i8*%lt to i32*
store i32%lr,i32*%lu,align 4
%lv=load i8*,i8**%c,align 8
%lw=sext i32%s to i64
%lx=getelementptr inbounds i8,i8*%lv,i64%lw
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%ls,i8*%lx,i32%lr,i1 false)
br label%ly
ly:
%lz=phi i8*[%jB,%jx],[%jG,%jC],[%jX,%jS],[%j2,%jY],[%kj,%ke],[%ko,%kk],[%kF,%kA],[%kK,%kG],[%k1,%kW],[%k6,%k2],[%ln,%li],[%ls,%lo]
store i8*%lz,i8**%c,align 8
%lA=load i8*,i8**%e,align 8
%lB=getelementptr inbounds i8,i8*%lA,i64 8
%lC=bitcast i8*%lB to i32*
%lD=load i32,i32*%lC,align 4
%lE=call i8*@sml_alloc(i32 inreg 28)#0
%lF=getelementptr inbounds i8,i8*%lE,i64 -4
%lG=bitcast i8*%lF to i32*
store i32 1342177304,i32*%lG,align 4
store i8*%lE,i8**%d,align 8
%lH=getelementptr inbounds i8,i8*%lE,i64 20
%lI=bitcast i8*%lH to i32*
call void@llvm.memset.p0i8.i64(i8*%lE,i8 0,i64 20,i1 false)
store i32%lD,i32*%lI,align 4
%lJ=getelementptr inbounds i8,i8*%lE,i64 24
%lK=bitcast i8*%lJ to i32*
store i32 2,i32*%lK,align 4
%lL=load i8*,i8**%e,align 8
%lM=getelementptr inbounds i8,i8*%lL,i64 16
%lN=bitcast i8*%lM to i32*
%lO=load i32,i32*%lN,align 4
store i8*null,i8**%e,align 8
%lP=getelementptr inbounds i8,i8*%lL,i64 12
%lQ=bitcast i8*%lP to i32*
%lR=load i32,i32*%lQ,align 4
%lS=call i8*@sml_alloc(i32 inreg%D)#0
%lT=or i32%w,1342177280
%lU=getelementptr inbounds i8,i8*%lS,i64 -4
%lV=bitcast i8*%lU to i32*
store i32%lT,i32*%lV,align 4
store i8*%lS,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%lS,i8 0,i32%D,i1 false)
%lW=load i8*,i8**%d,align 8
%lX=bitcast i8*%lS to i8**
store i8*null,i8**%d,align 8
store i8*%lW,i8**%lX,align 8
%lY=icmp eq i32%lR,0
%lZ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%l0=sext i32%u to i64
%l1=getelementptr inbounds i8,i8*%lS,i64%l0
br i1%lY,label%l4,label%l2
l2:
%l3=bitcast i8*%l1 to i8**
store i8*%lZ,i8**%l3,align 8
br label%l5
l4:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%l1,i8*%lZ,i32%lO,i1 false)
br label%l5
l5:
%l6=sext i32%w to i64
%l7=getelementptr inbounds i8,i8*%lS,i64%l6
%l8=bitcast i8*%l7 to i32*
store i32%C,i32*%l8,align 4
%l9=call i8*@sml_alloc(i32 inreg 12)#0
%ma=getelementptr inbounds i8,i8*%l9,i64 -4
%mb=bitcast i8*%ma to i32*
store i32 1342177288,i32*%mb,align 4
%mc=load i8*,i8**%e,align 8
%md=bitcast i8*%l9 to i8**
store i8*%mc,i8**%md,align 8
%me=getelementptr inbounds i8,i8*%l9,i64 8
%mf=bitcast i8*%me to i32*
store i32 1,i32*%mf,align 4
ret i8*%l9
}
define internal fastcc i8*@_SMLLN8IEEEReal7scanInfE_132(i8*inreg%a,i8*inreg%b)#4 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*%b,i8**%c,align 8
%e=bitcast i8*%a to i32*
%f=load i32,i32*%e,align 4
%g=getelementptr inbounds i8,i8*%a,i64 4
%h=bitcast i8*%g to i32*
%i=load i32,i32*%h,align 4
%j=getelementptr inbounds i8,i8*%a,i64 8
%k=bitcast i8*%j to i32*
%l=load i32,i32*%k,align 4
%m=call i8*@sml_alloc(i32 inreg 28)#0
%n=getelementptr inbounds i8,i8*%m,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177304,i32*%o,align 4
store i8*%m,i8**%d,align 8
%p=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%q=bitcast i8*%m to i8**
store i8*%p,i8**%q,align 8
%r=getelementptr inbounds i8,i8*%m,i64 8
%s=bitcast i8*%r to i32*
store i32%f,i32*%s,align 4
%t=getelementptr inbounds i8,i8*%m,i64 12
%u=bitcast i8*%t to i32*
store i32%i,i32*%u,align 4
%v=getelementptr inbounds i8,i8*%m,i64 16
%w=bitcast i8*%v to i32*
store i32%l,i32*%w,align 4
%x=getelementptr inbounds i8,i8*%m,i64 24
%y=bitcast i8*%x to i32*
store i32 1,i32*%y,align 4
%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=load i8*,i8**%d,align 8
%D=bitcast i8*%z to i8**
store i8*%C,i8**%D,align 8
%E=getelementptr inbounds i8,i8*%z,i64 8
%F=bitcast i8*%E to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal7scanInfE_131 to void(...)*),void(...)**%F,align 8
%G=getelementptr inbounds i8,i8*%z,i64 16
%H=bitcast i8*%G to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal7scanInfE_131 to void(...)*),void(...)**%H,align 8
%I=getelementptr inbounds i8,i8*%z,i64 24
%J=bitcast i8*%I to i32*
store i32 1,i32*%J,align 4
ret i8*%z
}
define internal fastcc i8*@_SMLLN8IEEEReal7scanInfE_133(i8*inreg%a,i32 inreg%b,i32 inreg%c)#4 gc"smlsharp"{
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%d,i8*null)#0
%e=bitcast i8*%a to i32*
%f=load i32,i32*%e,align 4
%g=call i8*@sml_alloc(i32 inreg 20)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 1342177296,i32*%j,align 4
store i8*%g,i8**%d,align 8
store i32%f,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%c,i32*%n,align 4
%o=getelementptr inbounds i8,i8*%g,i64 16
%p=bitcast i8*%o to i32*
store i32 0,i32*%p,align 4
%q=call i8*@sml_alloc(i32 inreg 28)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177304,i32*%s,align 4
%t=load i8*,i8**%d,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 void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal7scanInfE_132 to void(...)*),void(...)**%w,align 8
%x=getelementptr inbounds i8,i8*%q,i64 16
%y=bitcast i8*%x to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal7scanInfE_132 to void(...)*),void(...)**%y,align 8
%z=getelementptr inbounds i8,i8*%q,i64 24
%A=bitcast i8*%z to i32*
store i32 -2147483647,i32*%A,align 4
ret i8*%q
}
define internal fastcc i8*@_SMLLN8IEEEReal19removeLeadingZeroesE_136(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
e:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
br label%c
c:
%d=phi i8*[%t,%q],[%a,%e]
store i8*%d,i8**%b,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%j,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%b,align 8
br label%j
j:
%k=phi i8*[%i,%h],[%d,%c]
%l=icmp eq i8*%k,null
br i1%l,label%u,label%m
m:
%n=bitcast i8*%k to i32*
%o=load i32,i32*%n,align 4
%p=icmp eq i32%o,0
br i1%p,label%q,label%u
q:
%r=getelementptr inbounds i8,i8*%k,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
br label%c
u:
ret i8*%k
}
define internal fastcc i8*@_SMLLN8IEEEReal20removeTrailingZeroesE_138(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
store i8*null,i8**%b,align 8
%j=icmp eq i8*%h,null
br i1%j,label%k,label%l
k:
ret i8*null
l:
%m=bitcast i8*%h to i32*
%n=load i32,i32*%m,align 4
%o=getelementptr inbounds i8,i8*%h,i64 8
%p=bitcast i8*%o to i8**
%q=load i8*,i8**%p,align 8
%r=call fastcc i8*@_SMLLN8IEEEReal20removeTrailingZeroesE_138(i8*inreg%q)
store i8*%r,i8**%b,align 8
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=bitcast i8*%s to i32*
%u=getelementptr inbounds i8,i8*%s,i64 -4
%v=bitcast i8*%u to i32*
store i32 1342177296,i32*%v,align 4
%w=getelementptr inbounds i8,i8*%s,i64 4
%x=bitcast i8*%w to i32*
store i32 0,i32*%x,align 1
store i32%n,i32*%t,align 4
%y=load i8*,i8**%b,align 8
%z=getelementptr inbounds i8,i8*%s,i64 8
%A=bitcast i8*%z to i8**
store i8*%y,i8**%A,align 8
%B=getelementptr inbounds i8,i8*%s,i64 16
%C=bitcast i8*%B to i32*
store i32 2,i32*%C,align 4
%D=icmp eq i32%n,0
%E=icmp eq i8*%y,null
%F=and i1%D,%E
br i1%F,label%k,label%G
G:
%H=call i8*@sml_alloc(i32 inreg 20)#0
%I=bitcast i8*%H to i32*
%J=getelementptr inbounds i8,i8*%H,i64 -4
%K=bitcast i8*%J to i32*
store i32 1342177296,i32*%K,align 4
%L=getelementptr inbounds i8,i8*%H,i64 4
%M=bitcast i8*%L to i32*
store i32 0,i32*%M,align 1
store i32%n,i32*%I,align 4
%N=load i8*,i8**%b,align 8
%O=getelementptr inbounds i8,i8*%H,i64 8
%P=bitcast i8*%O to i8**
store i8*%N,i8**%P,align 8
%Q=getelementptr inbounds i8,i8*%H,i64 16
%R=bitcast i8*%Q to i32*
store i32 2,i32*%R,align 4
ret i8*%H
}
define internal fastcc i8*@_SMLLN8IEEEReal4scanE_154(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
t:
%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
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
call void@llvm.gcroot(i8**%m,i8*null)#0
store i8*%a,i8**%m,align 8
store i8*%b,i8**%i,align 8
%n=load atomic i32,i32*@sml_check_flag unordered,align 4
%o=icmp eq i32%n,0
br i1%o,label%r,label%p
p:
call void@sml_check(i32 inreg%n)
%q=load i8*,i8**%m,align 8
br label%r
r:
%s=phi i8*[%q,%p],[%a,%t]
%u=getelementptr inbounds i8,i8*%s,i64 12
%v=bitcast i8*%u to i32*
%w=load i32,i32*%v,align 4
%x=add i32%w,3
%y=sub i32 0,%w
%z=and i32%x,%y
%A=add i32%w,7
%B=and i32%A,%y
%C=add i32%B,%A
%D=and i32%C,-8
%E=lshr i32%B,3
%F=getelementptr inbounds i8,i8*%s,i64 8
%G=bitcast i8*%F to i32*
%H=load i32,i32*%G,align 4
%I=shl i32%H,%E
%J=or i32%I,1
%K=or i32%D,4
%L=add i32%z,%A
%M=and i32%L,-8
%N=lshr i32%z,3
%O=shl i32%H,%N
%P=or i32%M,4
%Q=call fastcc i8*@_SMLFN17SMLSharp__ScanChar10skipSpacesE(i32 inreg%H,i32 inreg%w)
%R=getelementptr inbounds i8,i8*%Q,i64 16
%S=bitcast i8*%R to i8*(i8*,i8*)**
%T=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%S,align 8
%U=bitcast i8*%Q to i8**
%V=load i8*,i8**%U,align 8
%W=bitcast i8**%m to i8***
%X=load i8**,i8***%W,align 8
%Y=load i8*,i8**%X,align 8
%Z=call fastcc i8*%T(i8*inreg%V,i8*inreg%Y)
%aa=getelementptr inbounds i8,i8*%Z,i64 16
%ab=bitcast i8*%aa to i8*(i8*,i8*)**
%ac=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ab,align 8
%ad=bitcast i8*%Z to i8**
%ae=load i8*,i8**%ad,align 8
%af=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%ag=call fastcc i8*%ac(i8*inreg%ae,i8*inreg%af)
store i8*%ag,i8**%i,align 8
%ah=load i8*,i8**%m,align 8
%ai=getelementptr inbounds i8,i8*%ah,i64 8
%aj=bitcast i8*%ai to i32*
%ak=load i32,i32*%aj,align 4
%al=getelementptr inbounds i8,i8*%ah,i64 12
%am=bitcast i8*%al to i32*
%an=load i32,i32*%am,align 4
%ao=call fastcc i8*@_SMLFN17SMLSharp__ScanChar8scanSignE(i32 inreg%ak,i32 inreg%an)
%ap=getelementptr inbounds i8,i8*%ao,i64 16
%aq=bitcast i8*%ap to i8*(i8*,i8*)**
%ar=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aq,align 8
%as=bitcast i8*%ao to i8**
%at=load i8*,i8**%as,align 8
%au=load i8**,i8***%W,align 8
%av=load i8*,i8**%au,align 8
%aw=call fastcc i8*%ar(i8*inreg%at,i8*inreg%av)
%ax=getelementptr inbounds i8,i8*%aw,i64 16
%ay=bitcast i8*%ax to i8*(i8*,i8*)**
%az=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ay,align 8
%aA=bitcast i8*%aw to i8**
%aB=load i8*,i8**%aA,align 8
%aC=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%aD=call fastcc i8*%az(i8*inreg%aB,i8*inreg%aC)
store i8*%aD,i8**%i,align 8
%aE=bitcast i8*%aD to i32*
%aF=load i32,i32*%aE,align 4
%aG=bitcast i8**%h to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%aG)
call void@llvm.gcroot(i8**%h,i8*null)#0
%aH=call i8*@sml_alloc(i32 inreg 12)#0
%aI=bitcast i8*%aH to i32*
%aJ=getelementptr inbounds i8,i8*%aH,i64 -4
%aK=bitcast i8*%aJ to i32*
store i32 1342177288,i32*%aK,align 4
store i8*%aH,i8**%h,align 8
store i32%aF,i32*%aI,align 4
%aL=getelementptr inbounds i8,i8*%aH,i64 8
%aM=bitcast i8*%aL to i32*
store i32 0,i32*%aM,align 4
%aN=call i8*@sml_alloc(i32 inreg 28)#0
%aO=getelementptr inbounds i8,i8*%aN,i64 -4
%aP=bitcast i8*%aO to i32*
store i32 1342177304,i32*%aP,align 4
%aQ=load i8*,i8**%h,align 8
%aR=bitcast i8*%aN to i8**
store i8*%aQ,i8**%aR,align 8
%aS=getelementptr inbounds i8,i8*%aN,i64 8
%aT=bitcast i8*%aS to void(...)**
store void(...)*bitcast(i8*(i8*,i32,i32)*@_SMLLN8IEEEReal7scanInfE_133 to void(...)*),void(...)**%aT,align 8
%aU=getelementptr inbounds i8,i8*%aN,i64 16
%aV=bitcast i8*%aU to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN8IEEEReal7scanInfE_168 to void(...)*),void(...)**%aV,align 8
%aW=getelementptr inbounds i8,i8*%aN,i64 24
%aX=bitcast i8*%aW to i32*
store i32 -2147483647,i32*%aX,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aG)
store i8*%aQ,i8**%j,align 8
%aY=load i8*,i8**%m,align 8
%aZ=getelementptr inbounds i8,i8*%aY,i64 8
%a0=bitcast i8*%aZ to i32*
%a1=load i32,i32*%a0,align 4
%a2=getelementptr inbounds i8,i8*%aY,i64 12
%a3=bitcast i8*%a2 to i32*
%a4=load i32,i32*%a3,align 4
%a5=call i8*@sml_alloc(i32 inreg 4)#0
%a6=bitcast i8*%a5 to i32*
%a7=getelementptr inbounds i8,i8*%a5,i64 -4
%a8=bitcast i8*%a7 to i32*
store i32 4,i32*%a8,align 4
store i8*%a5,i8**%k,align 8
store i32%a1,i32*%a6,align 4
%a9=call i8*@sml_alloc(i32 inreg 4)#0
%ba=bitcast i8*%a9 to i32*
%bb=getelementptr inbounds i8,i8*%a9,i64 -4
%bc=bitcast i8*%bb to i32*
store i32 4,i32*%bc,align 4
store i32%a4,i32*%ba,align 4
%bd=load i8*,i8**%j,align 8
%be=load i8*,i8**%k,align 8
store i8*null,i8**%j,align 8
store i8*null,i8**%k,align 8
%bf=call fastcc i8*@_SMLLN8IEEEReal7scanInfE_168(i8*inreg%bd,i8*inreg%be,i8*inreg%a9)
%bg=getelementptr inbounds i8,i8*%bf,i64 16
%bh=bitcast i8*%bg to i8*(i8*,i8*)**
%bi=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bh,align 8
%bj=bitcast i8*%bf to i8**
%bk=load i8*,i8**%bj,align 8
%bl=load i8**,i8***%W,align 8
%bm=load i8*,i8**%bl,align 8
%bn=call fastcc i8*%bi(i8*inreg%bk,i8*inreg%bm)
%bo=getelementptr inbounds i8,i8*%bn,i64 16
%bp=bitcast i8*%bo to i8*(i8*,i8*)**
%bq=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bp,align 8
%br=bitcast i8*%bn to i8**
%bs=load i8*,i8**%br,align 8
store i8*%bs,i8**%j,align 8
%bt=load i8*,i8**%m,align 8
%bu=getelementptr inbounds i8,i8*%bt,i64 8
%bv=bitcast i8*%bu to i32*
%bw=load i32,i32*%bv,align 4
%bx=icmp eq i32%bw,0
br i1%bx,label%bE,label%by
by:
%bz=load i8*,i8**%i,align 8
%bA=sext i32%z to i64
%bB=getelementptr inbounds i8,i8*%bz,i64%bA
%bC=bitcast i8*%bB to i8**
%bD=load i8*,i8**%bC,align 8
br label%bP
bE:
%bF=getelementptr inbounds i8,i8*%bt,i64 12
%bG=bitcast i8*%bF to i32*
%bH=load i32,i32*%bG,align 4
%bI=call i8*@sml_alloc(i32 inreg%bH)#0
%bJ=getelementptr inbounds i8,i8*%bI,i64 -4
%bK=bitcast i8*%bJ to i32*
store i32%bH,i32*%bK,align 4
%bL=load i8*,i8**%i,align 8
%bM=sext i32%z to i64
%bN=getelementptr inbounds i8,i8*%bL,i64%bM
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bI,i8*%bN,i32%bH,i1 false)
%bO=load i8*,i8**%j,align 8
br label%bP
bP:
%bQ=phi i8*[%bs,%by],[%bO,%bE]
%bR=phi i8*[%bD,%by],[%bI,%bE]
store i8*null,i8**%j,align 8
%bS=call fastcc i8*%bq(i8*inreg%bQ,i8*inreg%bR)
%bT=icmp eq i8*%bS,null
br i1%bT,label%bU,label%k1
bU:
%bV=load i8*,i8**%m,align 8
%bW=getelementptr inbounds i8,i8*%bV,i64 8
%bX=bitcast i8*%bW to i32*
%bY=load i32,i32*%bX,align 4
%bZ=getelementptr inbounds i8,i8*%bV,i64 12
%b0=bitcast i8*%bZ to i32*
%b1=load i32,i32*%b0,align 4
%b2=call fastcc i8*@_SMLFN17SMLSharp__ScanChar12scanMantissaE(i32 inreg%bY,i32 inreg%b1)
%b3=getelementptr inbounds i8,i8*%b2,i64 16
%b4=bitcast i8*%b3 to i8*(i8*,i8*)**
%b5=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%b4,align 8
%b6=bitcast i8*%b2 to i8**
%b7=load i8*,i8**%b6,align 8
%b8=load i8**,i8***%W,align 8
%b9=load i8*,i8**%b8,align 8
%ca=call fastcc i8*%b5(i8*inreg%b7,i8*inreg%b9)
%cb=getelementptr inbounds i8,i8*%ca,i64 16
%cc=bitcast i8*%cb to i8*(i8*,i8*)**
%cd=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cc,align 8
%ce=bitcast i8*%ca to i8**
%cf=load i8*,i8**%ce,align 8
store i8*%cf,i8**%j,align 8
%cg=load i8*,i8**%m,align 8
%ch=getelementptr inbounds i8,i8*%cg,i64 8
%ci=bitcast i8*%ch to i32*
%cj=load i32,i32*%ci,align 4
%ck=icmp eq i32%cj,0
br i1%ck,label%cr,label%cl
cl:
%cm=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%cn=sext i32%z to i64
%co=getelementptr inbounds i8,i8*%cm,i64%cn
%cp=bitcast i8*%co to i8**
%cq=load i8*,i8**%cp,align 8
br label%cC
cr:
%cs=getelementptr inbounds i8,i8*%cg,i64 12
%ct=bitcast i8*%cs to i32*
%cu=load i32,i32*%ct,align 4
%cv=call i8*@sml_alloc(i32 inreg%cu)#0
%cw=getelementptr inbounds i8,i8*%cv,i64 -4
%cx=bitcast i8*%cw to i32*
store i32%cu,i32*%cx,align 4
%cy=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%cz=sext i32%z to i64
%cA=getelementptr inbounds i8,i8*%cy,i64%cz
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cv,i8*%cA,i32%cu,i1 false)
%cB=load i8*,i8**%j,align 8
br label%cC
cC:
%cD=phi i8*[%cf,%cl],[%cB,%cr]
%cE=phi i8*[%cq,%cl],[%cv,%cr]
store i8*null,i8**%j,align 8
%cF=call fastcc i8*%cd(i8*inreg%cD,i8*inreg%cE)
%cG=icmp eq i8*%cF,null
br i1%cG,label%cH,label%cI
cH:
ret i8*null
cI:
%cJ=bitcast i8*%cF to i8**
%cK=load i8*,i8**%cJ,align 8
store i8*%cK,i8**%k,align 8
%cL=load i8*,i8**%m,align 8
%cM=getelementptr inbounds i8,i8*%cL,i64 8
%cN=bitcast i8*%cM to i32*
%cO=load i32,i32*%cN,align 4
%cP=icmp eq i32%cO,0
br i1%cP,label%cV,label%cQ
cQ:
%cR=sext i32%B to i64
%cS=getelementptr inbounds i8,i8*%cK,i64%cR
%cT=bitcast i8*%cS to i8**
%cU=load i8*,i8**%cT,align 8
br label%c9
cV:
%cW=getelementptr inbounds i8,i8*%cL,i64 12
%cX=bitcast i8*%cW to i32*
%cY=load i32,i32*%cX,align 4
%cZ=call i8*@sml_alloc(i32 inreg%cY)#0
%c0=getelementptr inbounds i8,i8*%cZ,i64 -4
%c1=bitcast i8*%c0 to i32*
store i32%cY,i32*%c1,align 4
%c2=load i8*,i8**%k,align 8
%c3=sext i32%B to i64
%c4=getelementptr inbounds i8,i8*%c2,i64%c3
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cZ,i8*%c4,i32%cY,i1 false)
%c5=load i8*,i8**%m,align 8
%c6=getelementptr inbounds i8,i8*%c5,i64 8
%c7=bitcast i8*%c6 to i32*
%c8=load i32,i32*%c7,align 4
br label%c9
c9:
%da=phi i32[%c8,%cV],[%cO,%cQ]
%db=phi i8*[%c5,%cV],[%cL,%cQ]
%dc=phi i8*[%cZ,%cV],[%cU,%cQ]
store i8*%dc,i8**%i,align 8
%dd=getelementptr inbounds i8,i8*%db,i64 12
%de=bitcast i8*%dd to i32*
%df=load i32,i32*%de,align 4
%dg=call fastcc i8*@_SMLFN17SMLSharp__ScanChar12scanExponentE(i32 inreg%da,i32 inreg%df)
%dh=getelementptr inbounds i8,i8*%dg,i64 16
%di=bitcast i8*%dh to i8*(i8*,i8*)**
%dj=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%di,align 8
%dk=bitcast i8*%dg to i8**
%dl=load i8*,i8**%dk,align 8
%dm=load i8**,i8***%W,align 8
%dn=load i8*,i8**%dm,align 8
%do=call fastcc i8*%dj(i8*inreg%dl,i8*inreg%dn)
%dp=getelementptr inbounds i8,i8*%do,i64 16
%dq=bitcast i8*%dp to i8*(i8*,i8*)**
%dr=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dq,align 8
%ds=bitcast i8*%do to i8**
%dt=load i8*,i8**%ds,align 8
%du=load i8*,i8**%i,align 8
%dv=call fastcc i8*%dr(i8*inreg%dt,i8*inreg%du)
%dw=icmp eq i8*%dv,null
br i1%dw,label%dx,label%dR
dx:
%dy=load i8*,i8**%m,align 8
%dz=getelementptr inbounds i8,i8*%dy,i64 12
%dA=bitcast i8*%dz to i32*
%dB=load i32,i32*%dA,align 4
%dC=getelementptr inbounds i8,i8*%dy,i64 8
%dD=bitcast i8*%dC to i32*
%dE=load i32,i32*%dD,align 4
%dF=call i8*@sml_alloc(i32 inreg%P)#0
%dG=or i32%M,1342177280
%dH=bitcast i8*%dF to i32*
%dI=getelementptr inbounds i8,i8*%dF,i64 -4
%dJ=bitcast i8*%dI to i32*
store i32%dG,i32*%dJ,align 4
call void@llvm.memset.p0i8.i32(i8*%dF,i8 0,i32%P,i1 false)
store i32 0,i32*%dH,align 4
%dK=icmp eq i32%dE,0
%dL=load i8*,i8**%i,align 8
%dM=sext i32%z to i64
%dN=getelementptr inbounds i8,i8*%dF,i64%dM
br i1%dK,label%dQ,label%dO
dO:
%dP=bitcast i8*%dN to i8**
store i8*%dL,i8**%dP,align 8
br label%gV
dQ:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%dN,i8*%dL,i32%dB,i1 false)
br label%gV
dR:
%dS=bitcast i8*%dv to i8**
%dT=load i8*,i8**%dS,align 8
store i8*%dT,i8**%i,align 8
%dU=load i8*,i8**%m,align 8
%dV=getelementptr inbounds i8,i8*%dU,i64 8
%dW=bitcast i8*%dV to i32*
%dX=load i32,i32*%dW,align 4
%dY=icmp eq i32%dX,0
br i1%dY,label%d4,label%dZ
dZ:
%d0=sext i32%B to i64
%d1=getelementptr inbounds i8,i8*%dT,i64%d0
%d2=bitcast i8*%d1 to i8**
%d3=load i8*,i8**%d2,align 8
br label%ee
d4:
%d5=getelementptr inbounds i8,i8*%dU,i64 12
%d6=bitcast i8*%d5 to i32*
%d7=load i32,i32*%d6,align 4
%d8=call i8*@sml_alloc(i32 inreg%d7)#0
%d9=getelementptr inbounds i8,i8*%d8,i64 -4
%ea=bitcast i8*%d9 to i32*
store i32%d7,i32*%ea,align 4
%eb=load i8*,i8**%i,align 8
%ec=sext i32%B to i64
%ed=getelementptr inbounds i8,i8*%eb,i64%ec
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%d8,i8*%ed,i32%d7,i1 false)
br label%ee
ee:
%ef=phi i8*[%eb,%d4],[%dT,%dZ]
%eg=phi i8*[%d8,%d4],[%d3,%dZ]
%eh=bitcast i8*%ef to i8**
store i8*%eg,i8**%j,align 8
store i8*null,i8**%i,align 8
%ei=load i8*,i8**%eh,align 8
%ej=bitcast i8**%g to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%ej)
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%ei,i8**%g,align 8
%ek=load atomic i32,i32*@sml_check_flag unordered,align 4
%el=icmp eq i32%ek,0
br i1%el,label%eo,label%em
em:
call void@sml_check(i32 inreg%ek)
%en=load i8*,i8**%g,align 8
br label%eo
eo:
%ep=phi i8*[%en,%em],[%ei,%ee]
%eq=bitcast i8*%ep to i32*
%er=load i32,i32*%eq,align 4
%es=icmp eq i32%er,0
%et=getelementptr inbounds i8,i8*%ep,i64 8
%eu=bitcast i8*%et to i8**
%ev=load i8*,i8**%eu,align 8
br i1%es,label%fy,label%ew
ew:
%ex=bitcast i8**%e to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%ex)
%ey=bitcast i8**%f to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%ey)
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
br label%ez
ez:
%eA=phi i8*[%fw,%fs],[%ev,%ew]
%eB=phi i32[%ft,%fs],[0,%ew]
store i8*%eA,i8**%e,align 8
%eC=load atomic i32,i32*@sml_check_flag unordered,align 4
%eD=icmp eq i32%eC,0
br i1%eD,label%eG,label%eE
eE:
call void@sml_check(i32 inreg%eC)
%eF=load i8*,i8**%e,align 8
br label%eG
eG:
%eH=phi i8*[%eF,%eE],[%eA,%ez]
%eI=icmp eq i8*%eH,null
br i1%eI,label%fx,label%eJ
eJ:
%eK=bitcast i8*%eH to i32*
%eL=load i32,i32*%eK,align 4
%eM=call{i32,i1}@llvm.smul.with.overflow.i32(i32%eB,i32 10)#0
%eN=extractvalue{i32,i1}%eM,1
br i1%eN,label%eO,label%e6
eO:
%eP=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%eP,i8**%e,align 8
%eQ=call i8*@sml_alloc(i32 inreg 20)#0
%eR=getelementptr inbounds i8,i8*%eQ,i64 -4
%eS=bitcast i8*%eR to i32*
store i32 1342177296,i32*%eS,align 4
store i8*%eQ,i8**%f,align 8
%eT=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%eU=bitcast i8*%eQ to i8**
store i8*%eT,i8**%eU,align 8
%eV=getelementptr inbounds i8,i8*%eQ,i64 8
%eW=bitcast i8*%eV to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@t,i64 0,i32 2,i64 0),i8**%eW,align 8
%eX=getelementptr inbounds i8,i8*%eQ,i64 16
%eY=bitcast i8*%eX to i32*
store i32 3,i32*%eY,align 4
%eZ=call i8*@sml_alloc(i32 inreg 60)#0
%e0=getelementptr inbounds i8,i8*%eZ,i64 -4
%e1=bitcast i8*%e0 to i32*
store i32 1342177336,i32*%e1,align 4
%e2=getelementptr inbounds i8,i8*%eZ,i64 56
%e3=bitcast i8*%e2 to i32*
store i32 1,i32*%e3,align 4
%e4=load i8*,i8**%f,align 8
%e5=bitcast i8*%eZ to i8**
store i8*%e4,i8**%e5,align 8
call void@sml_raise(i8*inreg%eZ)#1
unreachable
e6:
%e7=mul nsw i32%eB,10
%e8=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%e7,i32%eL)#0
%e9=extractvalue{i32,i1}%e8,1
br i1%e9,label%fa,label%fs
fa:
%fb=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%fb,i8**%e,align 8
%fc=call i8*@sml_alloc(i32 inreg 20)#0
%fd=getelementptr inbounds i8,i8*%fc,i64 -4
%fe=bitcast i8*%fd to i32*
store i32 1342177296,i32*%fe,align 4
store i8*%fc,i8**%f,align 8
%ff=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%fg=bitcast i8*%fc to i8**
store i8*%ff,i8**%fg,align 8
%fh=getelementptr inbounds i8,i8*%fc,i64 8
%fi=bitcast i8*%fh to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@u,i64 0,i32 2,i64 0),i8**%fi,align 8
%fj=getelementptr inbounds i8,i8*%fc,i64 16
%fk=bitcast i8*%fj to i32*
store i32 3,i32*%fk,align 4
%fl=call i8*@sml_alloc(i32 inreg 60)#0
%fm=getelementptr inbounds i8,i8*%fl,i64 -4
%fn=bitcast i8*%fm to i32*
store i32 1342177336,i32*%fn,align 4
%fo=getelementptr inbounds i8,i8*%fl,i64 56
%fp=bitcast i8*%fo to i32*
store i32 1,i32*%fp,align 4
%fq=load i8*,i8**%f,align 8
%fr=bitcast i8*%fl to i8**
store i8*%fq,i8**%fr,align 8
call void@sml_raise(i8*inreg%fl)#1
unreachable
fs:
%ft=sub nsw i32%e7,%eL
%fu=getelementptr inbounds i8,i8*%eH,i64 8
%fv=bitcast i8*%fu to i8**
%fw=load i8*,i8**%fv,align 8
br label%ez
fx:
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ex)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ey)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ej)
br label%gA
fy:
%fz=bitcast i8**%c to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%fz)
%fA=bitcast i8**%d to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%fA)
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
br label%fB
fB:
%fC=phi i8*[%gy,%gu],[%ev,%fy]
%fD=phi i32[%gv,%gu],[0,%fy]
store i8*%fC,i8**%c,align 8
%fE=load atomic i32,i32*@sml_check_flag unordered,align 4
%fF=icmp eq i32%fE,0
br i1%fF,label%fI,label%fG
fG:
call void@sml_check(i32 inreg%fE)
%fH=load i8*,i8**%c,align 8
br label%fI
fI:
%fJ=phi i8*[%fH,%fG],[%fC,%fB]
%fK=icmp eq i8*%fJ,null
br i1%fK,label%gz,label%fL
fL:
%fM=bitcast i8*%fJ to i32*
%fN=load i32,i32*%fM,align 4
%fO=call{i32,i1}@llvm.smul.with.overflow.i32(i32%fD,i32 10)#0
%fP=extractvalue{i32,i1}%fO,1
br i1%fP,label%fQ,label%f8
fQ:
%fR=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%fR,i8**%c,align 8
%fS=call i8*@sml_alloc(i32 inreg 20)#0
%fT=getelementptr inbounds i8,i8*%fS,i64 -4
%fU=bitcast i8*%fT to i32*
store i32 1342177296,i32*%fU,align 4
store i8*%fS,i8**%d,align 8
%fV=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%fW=bitcast i8*%fS to i8**
store i8*%fV,i8**%fW,align 8
%fX=getelementptr inbounds i8,i8*%fS,i64 8
%fY=bitcast i8*%fX to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@r,i64 0,i32 2,i64 0),i8**%fY,align 8
%fZ=getelementptr inbounds i8,i8*%fS,i64 16
%f0=bitcast i8*%fZ to i32*
store i32 3,i32*%f0,align 4
%f1=call i8*@sml_alloc(i32 inreg 60)#0
%f2=getelementptr inbounds i8,i8*%f1,i64 -4
%f3=bitcast i8*%f2 to i32*
store i32 1342177336,i32*%f3,align 4
%f4=getelementptr inbounds i8,i8*%f1,i64 56
%f5=bitcast i8*%f4 to i32*
store i32 1,i32*%f5,align 4
%f6=load i8*,i8**%d,align 8
%f7=bitcast i8*%f1 to i8**
store i8*%f6,i8**%f7,align 8
call void@sml_raise(i8*inreg%f1)#1
unreachable
f8:
%f9=mul nsw i32%fD,10
%ga=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%f9,i32%fN)#0
%gb=extractvalue{i32,i1}%ga,1
br i1%gb,label%gc,label%gu
gc:
%gd=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%gd,i8**%c,align 8
%ge=call i8*@sml_alloc(i32 inreg 20)#0
%gf=getelementptr inbounds i8,i8*%ge,i64 -4
%gg=bitcast i8*%gf to i32*
store i32 1342177296,i32*%gg,align 4
store i8*%ge,i8**%d,align 8
%gh=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%gi=bitcast i8*%ge to i8**
store i8*%gh,i8**%gi,align 8
%gj=getelementptr inbounds i8,i8*%ge,i64 8
%gk=bitcast i8*%gj to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@s,i64 0,i32 2,i64 0),i8**%gk,align 8
%gl=getelementptr inbounds i8,i8*%ge,i64 16
%gm=bitcast i8*%gl to i32*
store i32 3,i32*%gm,align 4
%gn=call i8*@sml_alloc(i32 inreg 60)#0
%go=getelementptr inbounds i8,i8*%gn,i64 -4
%gp=bitcast i8*%go to i32*
store i32 1342177336,i32*%gp,align 4
%gq=getelementptr inbounds i8,i8*%gn,i64 56
%gr=bitcast i8*%gq to i32*
store i32 1,i32*%gr,align 4
%gs=load i8*,i8**%d,align 8
%gt=bitcast i8*%gn to i8**
store i8*%gs,i8**%gt,align 8
call void@sml_raise(i8*inreg%gn)#1
unreachable
gu:
%gv=add nsw i32%fN,%f9
%gw=getelementptr inbounds i8,i8*%fJ,i64 8
%gx=bitcast i8*%gw to i8**
%gy=load i8*,i8**%gx,align 8
br label%fB
gz:
call void@llvm.lifetime.end.p0i8(i64 8,i8*%fz)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%fA)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ej)
br label%gA
gA:
%gB=phi i32[%eB,%fx],[%fD,%gz]
%gC=load i8*,i8**%m,align 8
%gD=getelementptr inbounds i8,i8*%gC,i64 12
%gE=bitcast i8*%gD to i32*
%gF=load i32,i32*%gE,align 4
%gG=getelementptr inbounds i8,i8*%gC,i64 8
%gH=bitcast i8*%gG to i32*
%gI=load i32,i32*%gH,align 4
%gJ=call i8*@sml_alloc(i32 inreg%P)#0
%gK=or i32%M,1342177280
%gL=bitcast i8*%gJ to i32*
%gM=getelementptr inbounds i8,i8*%gJ,i64 -4
%gN=bitcast i8*%gM to i32*
store i32%gK,i32*%gN,align 4
call void@llvm.memset.p0i8.i32(i8*%gJ,i8 0,i32%P,i1 false)
store i32%gB,i32*%gL,align 4
%gO=icmp eq i32%gI,0
%gP=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%gQ=sext i32%z to i64
%gR=getelementptr inbounds i8,i8*%gJ,i64%gQ
br i1%gO,label%gU,label%gS
gS:
%gT=bitcast i8*%gR to i8**
store i8*%gP,i8**%gT,align 8
br label%gV
gU:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%gR,i8*%gP,i32%gF,i1 false)
br label%gV
gV:
%gW=phi i8*[%dF,%dQ],[%dF,%dO],[%gJ,%gU],[%gJ,%gS]
%gX=phi i32*[%dH,%dQ],[%dH,%dO],[%gL,%gU],[%gL,%gS]
%gY=sext i32%M to i64
%gZ=getelementptr inbounds i8,i8*%gW,i64%gY
%g0=bitcast i8*%gZ to i32*
store i32%O,i32*%g0,align 4
store i8*%gW,i8**%i,align 8
%g1=load i32,i32*%gX,align 4
%g2=load i8*,i8**%m,align 8
%g3=getelementptr inbounds i8,i8*%g2,i64 8
%g4=bitcast i8*%g3 to i32*
%g5=load i32,i32*%g4,align 4
%g6=icmp eq i32%g5,0
br i1%g6,label%hc,label%g7
g7:
store i8*null,i8**%i,align 8
%g8=sext i32%z to i64
%g9=getelementptr inbounds i8,i8*%gW,i64%g8
%ha=bitcast i8*%g9 to i8**
%hb=load i8*,i8**%ha,align 8
br label%hm
hc:
%hd=getelementptr inbounds i8,i8*%g2,i64 12
%he=bitcast i8*%hd to i32*
%hf=load i32,i32*%he,align 4
%hg=call i8*@sml_alloc(i32 inreg%hf)#0
%hh=getelementptr inbounds i8,i8*%hg,i64 -4
%hi=bitcast i8*%hh to i32*
store i32%hf,i32*%hi,align 4
%hj=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%hk=sext i32%z to i64
%hl=getelementptr inbounds i8,i8*%hj,i64%hk
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%hg,i8*%hl,i32%hf,i1 false)
br label%hm
hm:
%hn=phi i8*[%hg,%hc],[%hb,%g7]
store i8*%hn,i8**%i,align 8
%ho=bitcast i8**%k to i8****
%hp=load i8***,i8****%ho,align 8
%hq=load i8**,i8***%hp,align 8
%hr=load i8*,i8**%hq,align 8
%hs=call fastcc i8*@_SMLLN8IEEEReal19removeLeadingZeroesE_136(i8*inreg%hr)
store i8*%hs,i8**%j,align 8
%ht=bitcast i8**%k to i8***
%hu=load i8**,i8***%ht,align 8
store i8*null,i8**%k,align 8
%hv=load i8*,i8**%hu,align 8
%hw=getelementptr inbounds i8,i8*%hv,i64 8
%hx=bitcast i8*%hw to i8**
%hy=load i8*,i8**%hx,align 8
%hz=call fastcc i8*@_SMLLN8IEEEReal20removeTrailingZeroesE_138(i8*inreg%hy)
store i8*%hz,i8**%k,align 8
%hA=call i8*@sml_alloc(i32 inreg 20)#0
%hB=getelementptr inbounds i8,i8*%hA,i64 -4
%hC=bitcast i8*%hB to i32*
store i32 1342177296,i32*%hC,align 4
store i8*%hA,i8**%l,align 8
%hD=load i8*,i8**%j,align 8
%hE=bitcast i8*%hA to i8**
store i8*%hD,i8**%hE,align 8
%hF=load i8*,i8**%k,align 8
%hG=getelementptr inbounds i8,i8*%hA,i64 8
%hH=bitcast i8*%hG to i8**
store i8*%hF,i8**%hH,align 8
%hI=getelementptr inbounds i8,i8*%hA,i64 16
%hJ=bitcast i8*%hI to i32*
store i32 3,i32*%hJ,align 4
store i8*%hD,i8**%k,align 8
%hK=icmp eq i8*%hD,null
br i1%hK,label%hL,label%jM
hL:
store i8*null,i8**%k,align 8
%hM=icmp eq i8*%hF,null
br i1%hM,label%hN,label%ix
hN:
store i8*null,i8**%l,align 8
%hO=call i8*@sml_alloc(i32 inreg 28)#0
%hP=getelementptr inbounds i8,i8*%hO,i64 -4
%hQ=bitcast i8*%hP to i32*
store i32 1342177304,i32*%hQ,align 4
store i8*%hO,i8**%j,align 8
%hR=getelementptr inbounds i8,i8*%hO,i64 4
%hS=bitcast i8*%hR to i32*
store i32 0,i32*%hS,align 1
%hT=bitcast i8*%hO to i32*
store i32 4,i32*%hT,align 4
%hU=getelementptr inbounds i8,i8*%hO,i64 8
%hV=bitcast i8*%hU to i8**
store i8*null,i8**%hV,align 8
%hW=getelementptr inbounds i8,i8*%hO,i64 16
%hX=bitcast i8*%hW to i32*
store i32 0,i32*%hX,align 4
%hY=getelementptr inbounds i8,i8*%hO,i64 20
%hZ=bitcast i8*%hY to i32*
store i32%aF,i32*%hZ,align 4
%h0=getelementptr inbounds i8,i8*%hO,i64 24
%h1=bitcast i8*%h0 to i32*
store i32 2,i32*%h1,align 4
%h2=load i8*,i8**%m,align 8
%h3=getelementptr inbounds i8,i8*%h2,i64 12
%h4=bitcast i8*%h3 to i32*
%h5=load i32,i32*%h4,align 4
store i8*null,i8**%m,align 8
%h6=getelementptr inbounds i8,i8*%h2,i64 8
%h7=bitcast i8*%h6 to i32*
%h8=load i32,i32*%h7,align 4
%h9=call i8*@sml_alloc(i32 inreg%K)#0
%ia=or i32%D,1342177280
%ib=getelementptr inbounds i8,i8*%h9,i64 -4
%ic=bitcast i8*%ib to i32*
store i32%ia,i32*%ic,align 4
store i8*%h9,i8**%k,align 8
call void@llvm.memset.p0i8.i32(i8*%h9,i8 0,i32%K,i1 false)
%id=load i8*,i8**%j,align 8
%ie=bitcast i8*%h9 to i8**
store i8*null,i8**%j,align 8
store i8*%id,i8**%ie,align 8
%if=icmp eq i32%h8,0
%ig=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%ih=sext i32%B to i64
%ii=getelementptr inbounds i8,i8*%h9,i64%ih
br i1%if,label%il,label%ij
ij:
%ik=bitcast i8*%ii to i8**
store i8*%ig,i8**%ik,align 8
br label%im
il:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%ii,i8*%ig,i32%h5,i1 false)
br label%im
im:
%in=sext i32%D to i64
%io=getelementptr inbounds i8,i8*%h9,i64%in
%ip=bitcast i8*%io to i32*
store i32%J,i32*%ip,align 4
%iq=call i8*@sml_alloc(i32 inreg 12)#0
%ir=getelementptr inbounds i8,i8*%iq,i64 -4
%is=bitcast i8*%ir to i32*
store i32 1342177288,i32*%is,align 4
%it=load i8*,i8**%k,align 8
%iu=bitcast i8*%iq to i8**
store i8*%it,i8**%iu,align 8
%iv=getelementptr inbounds i8,i8*%iq,i64 8
%iw=bitcast i8*%iv to i32*
store i32 1,i32*%iw,align 4
ret i8*%iq
ix:
%iy=call fastcc i8*@_SMLFN4List6lengthE(i32 inreg 0,i32 inreg 4)
%iz=getelementptr inbounds i8,i8*%iy,i64 16
%iA=bitcast i8*%iz to i8*(i8*,i8*)**
%iB=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%iA,align 8
%iC=bitcast i8*%iy to i8**
%iD=load i8*,i8**%iC,align 8
%iE=load i8*,i8**%l,align 8
%iF=getelementptr inbounds i8,i8*%iE,i64 8
%iG=bitcast i8*%iF to i8**
%iH=load i8*,i8**%iG,align 8
%iI=call fastcc i8*%iB(i8*inreg%iD,i8*inreg%iH)
%iJ=bitcast i8*%iI to i32*
%iK=load i32,i32*%iJ,align 4
%iL=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%iM=getelementptr inbounds i8,i8*%iL,i64 8
%iN=bitcast i8*%iM to i8**
%iO=load i8*,i8**%iN,align 8
%iP=call fastcc i8*@_SMLLN8IEEEReal19removeLeadingZeroesE_136(i8*inreg%iO)
store i8*%iP,i8**%j,align 8
%iQ=call fastcc i8*@_SMLFN4List6lengthE(i32 inreg 0,i32 inreg 4)
%iR=getelementptr inbounds i8,i8*%iQ,i64 16
%iS=bitcast i8*%iR to i8*(i8*,i8*)**
%iT=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%iS,align 8
%iU=bitcast i8*%iQ to i8**
%iV=load i8*,i8**%iU,align 8
%iW=load i8*,i8**%j,align 8
%iX=call fastcc i8*%iT(i8*inreg%iV,i8*inreg%iW)
%iY=bitcast i8*%iX to i32*
%iZ=load i32,i32*%iY,align 4
%i0=sub i32%g1,%iK
%i1=add i32%i0,%iZ
%i2=call i8*@sml_alloc(i32 inreg 28)#0
%i3=getelementptr inbounds i8,i8*%i2,i64 -4
%i4=bitcast i8*%i3 to i32*
store i32 1342177304,i32*%i4,align 4
store i8*%i2,i8**%k,align 8
%i5=getelementptr inbounds i8,i8*%i2,i64 4
%i6=bitcast i8*%i5 to i32*
store i32 0,i32*%i6,align 1
%i7=bitcast i8*%i2 to i32*
store i32 2,i32*%i7,align 4
%i8=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%i9=getelementptr inbounds i8,i8*%i2,i64 8
%ja=bitcast i8*%i9 to i8**
store i8*%i8,i8**%ja,align 8
%jb=getelementptr inbounds i8,i8*%i2,i64 16
%jc=bitcast i8*%jb to i32*
store i32%i1,i32*%jc,align 4
%jd=getelementptr inbounds i8,i8*%i2,i64 20
%je=bitcast i8*%jd to i32*
store i32%aF,i32*%je,align 4
%jf=getelementptr inbounds i8,i8*%i2,i64 24
%jg=bitcast i8*%jf to i32*
store i32 2,i32*%jg,align 4
%jh=load i8*,i8**%m,align 8
%ji=getelementptr inbounds i8,i8*%jh,i64 12
%jj=bitcast i8*%ji to i32*
%jk=load i32,i32*%jj,align 4
store i8*null,i8**%m,align 8
%jl=getelementptr inbounds i8,i8*%jh,i64 8
%jm=bitcast i8*%jl to i32*
%jn=load i32,i32*%jm,align 4
%jo=call i8*@sml_alloc(i32 inreg%K)#0
%jp=or i32%D,1342177280
%jq=getelementptr inbounds i8,i8*%jo,i64 -4
%jr=bitcast i8*%jq to i32*
store i32%jp,i32*%jr,align 4
store i8*%jo,i8**%j,align 8
call void@llvm.memset.p0i8.i32(i8*%jo,i8 0,i32%K,i1 false)
%js=load i8*,i8**%k,align 8
%jt=bitcast i8*%jo to i8**
store i8*null,i8**%k,align 8
store i8*%js,i8**%jt,align 8
%ju=icmp eq i32%jn,0
%jv=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%jw=sext i32%B to i64
%jx=getelementptr inbounds i8,i8*%jo,i64%jw
br i1%ju,label%jA,label%jy
jy:
%jz=bitcast i8*%jx to i8**
store i8*%jv,i8**%jz,align 8
br label%jB
jA:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%jx,i8*%jv,i32%jk,i1 false)
br label%jB
jB:
%jC=sext i32%D to i64
%jD=getelementptr inbounds i8,i8*%jo,i64%jC
%jE=bitcast i8*%jD to i32*
store i32%J,i32*%jE,align 4
%jF=call i8*@sml_alloc(i32 inreg 12)#0
%jG=getelementptr inbounds i8,i8*%jF,i64 -4
%jH=bitcast i8*%jG to i32*
store i32 1342177288,i32*%jH,align 4
%jI=load i8*,i8**%j,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 i32*
store i32 1,i32*%jL,align 4
ret i8*%jF
jM:
store i8*null,i8**%l,align 8
store i8*%hF,i8**%j,align 8
%jN=call fastcc i8*@_SMLFN4List1_VE(i32 inreg 0,i32 inreg 4)
%jO=getelementptr inbounds i8,i8*%jN,i64 16
%jP=bitcast i8*%jO to i8*(i8*,i8*)**
%jQ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%jP,align 8
%jR=bitcast i8*%jN to i8**
%jS=load i8*,i8**%jR,align 8
store i8*%jS,i8**%l,align 8
%jT=call i8*@sml_alloc(i32 inreg 20)#0
%jU=getelementptr inbounds i8,i8*%jT,i64 -4
%jV=bitcast i8*%jU to i32*
store i32 1342177296,i32*%jV,align 4
%jW=load i8*,i8**%k,align 8
%jX=bitcast i8*%jT to i8**
store i8*%jW,i8**%jX,align 8
%jY=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%jZ=getelementptr inbounds i8,i8*%jT,i64 8
%j0=bitcast i8*%jZ to i8**
store i8*%jY,i8**%j0,align 8
%j1=getelementptr inbounds i8,i8*%jT,i64 16
%j2=bitcast i8*%j1 to i32*
store i32 3,i32*%j2,align 4
%j3=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%j4=call fastcc i8*%jQ(i8*inreg%j3,i8*inreg%jT)
%j5=call fastcc i8*@_SMLLN8IEEEReal20removeTrailingZeroesE_138(i8*inreg%j4)
store i8*%j5,i8**%j,align 8
%j6=call fastcc i8*@_SMLFN4List6lengthE(i32 inreg 0,i32 inreg 4)
%j7=getelementptr inbounds i8,i8*%j6,i64 16
%j8=bitcast i8*%j7 to i8*(i8*,i8*)**
%j9=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j8,align 8
%ka=bitcast i8*%j6 to i8**
%kb=load i8*,i8**%ka,align 8
%kc=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%kd=call fastcc i8*%j9(i8*inreg%kb,i8*inreg%kc)
%ke=bitcast i8*%kd to i32*
%kf=load i32,i32*%ke,align 4
%kg=add nsw i32%kf,%g1
%kh=call i8*@sml_alloc(i32 inreg 28)#0
%ki=getelementptr inbounds i8,i8*%kh,i64 -4
%kj=bitcast i8*%ki to i32*
store i32 1342177304,i32*%kj,align 4
store i8*%kh,i8**%k,align 8
%kk=getelementptr inbounds i8,i8*%kh,i64 4
%kl=bitcast i8*%kk to i32*
store i32 0,i32*%kl,align 1
%km=bitcast i8*%kh to i32*
store i32 2,i32*%km,align 4
%kn=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%ko=getelementptr inbounds i8,i8*%kh,i64 8
%kp=bitcast i8*%ko to i8**
store i8*%kn,i8**%kp,align 8
%kq=getelementptr inbounds i8,i8*%kh,i64 16
%kr=bitcast i8*%kq to i32*
store i32%kg,i32*%kr,align 4
%ks=getelementptr inbounds i8,i8*%kh,i64 20
%kt=bitcast i8*%ks to i32*
store i32%aF,i32*%kt,align 4
%ku=getelementptr inbounds i8,i8*%kh,i64 24
%kv=bitcast i8*%ku to i32*
store i32 2,i32*%kv,align 4
%kw=load i8*,i8**%m,align 8
%kx=getelementptr inbounds i8,i8*%kw,i64 12
%ky=bitcast i8*%kx to i32*
%kz=load i32,i32*%ky,align 4
store i8*null,i8**%m,align 8
%kA=getelementptr inbounds i8,i8*%kw,i64 8
%kB=bitcast i8*%kA to i32*
%kC=load i32,i32*%kB,align 4
%kD=call i8*@sml_alloc(i32 inreg%K)#0
%kE=or i32%D,1342177280
%kF=getelementptr inbounds i8,i8*%kD,i64 -4
%kG=bitcast i8*%kF to i32*
store i32%kE,i32*%kG,align 4
store i8*%kD,i8**%j,align 8
call void@llvm.memset.p0i8.i32(i8*%kD,i8 0,i32%K,i1 false)
%kH=load i8*,i8**%k,align 8
%kI=bitcast i8*%kD to i8**
store i8*null,i8**%k,align 8
store i8*%kH,i8**%kI,align 8
%kJ=icmp eq i32%kC,0
%kK=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%kL=sext i32%B to i64
%kM=getelementptr inbounds i8,i8*%kD,i64%kL
br i1%kJ,label%kP,label%kN
kN:
%kO=bitcast i8*%kM to i8**
store i8*%kK,i8**%kO,align 8
br label%kQ
kP:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%kM,i8*%kK,i32%kz,i1 false)
br label%kQ
kQ:
%kR=sext i32%D to i64
%kS=getelementptr inbounds i8,i8*%kD,i64%kR
%kT=bitcast i8*%kS to i32*
store i32%J,i32*%kT,align 4
%kU=call i8*@sml_alloc(i32 inreg 12)#0
%kV=getelementptr inbounds i8,i8*%kU,i64 -4
%kW=bitcast i8*%kV to i32*
store i32 1342177288,i32*%kW,align 4
%kX=load i8*,i8**%j,align 8
%kY=bitcast i8*%kU to i8**
store i8*%kX,i8**%kY,align 8
%kZ=getelementptr inbounds i8,i8*%kU,i64 8
%k0=bitcast i8*%kZ to i32*
store i32 1,i32*%k0,align 4
ret i8*%kU
k1:
%k2=bitcast i8*%bS to i8**
%k3=load i8*,i8**%k2,align 8
store i8*%k3,i8**%i,align 8
%k4=bitcast i8*%k3 to i8**
%k5=load i8*,i8**%k4,align 8
store i8*%k5,i8**%j,align 8
%k6=load i8*,i8**%m,align 8
%k7=getelementptr inbounds i8,i8*%k6,i64 8
%k8=bitcast i8*%k7 to i32*
%k9=load i32,i32*%k8,align 4
%la=icmp eq i32%k9,0
br i1%la,label%lg,label%lb
lb:
store i8*null,i8**%i,align 8
%lc=sext i32%B to i64
%ld=getelementptr inbounds i8,i8*%k3,i64%lc
%le=bitcast i8*%ld to i8**
%lf=load i8*,i8**%le,align 8
br label%lu
lg:
%lh=getelementptr inbounds i8,i8*%k6,i64 12
%li=bitcast i8*%lh to i32*
%lj=load i32,i32*%li,align 4
%lk=call i8*@sml_alloc(i32 inreg%lj)#0
%ll=getelementptr inbounds i8,i8*%lk,i64 -4
%lm=bitcast i8*%ll to i32*
store i32%lj,i32*%lm,align 4
%ln=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%lo=sext i32%B to i64
%lp=getelementptr inbounds i8,i8*%ln,i64%lo
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%lk,i8*%lp,i32%lj,i1 false)
%lq=load i8*,i8**%m,align 8
%lr=getelementptr inbounds i8,i8*%lq,i64 8
%ls=bitcast i8*%lr to i32*
%lt=load i32,i32*%ls,align 4
br label%lu
lu:
%lv=phi i64[%lo,%lg],[%lc,%lb]
%lw=phi i32[%lt,%lg],[%k9,%lb]
%lx=phi i8*[%lq,%lg],[%k6,%lb]
%ly=phi i8*[%lk,%lg],[%lf,%lb]
store i8*%ly,i8**%i,align 8
%lz=getelementptr inbounds i8,i8*%lx,i64 12
%lA=bitcast i8*%lz to i32*
%lB=load i32,i32*%lA,align 4
store i8*null,i8**%m,align 8
%lC=call i8*@sml_alloc(i32 inreg%K)#0
%lD=or i32%D,1342177280
%lE=getelementptr inbounds i8,i8*%lC,i64 -4
%lF=bitcast i8*%lE to i32*
store i32%lD,i32*%lF,align 4
store i8*%lC,i8**%k,align 8
call void@llvm.memset.p0i8.i32(i8*%lC,i8 0,i32%K,i1 false)
%lG=load i8*,i8**%j,align 8
%lH=bitcast i8*%lC to i8**
store i8*null,i8**%j,align 8
store i8*%lG,i8**%lH,align 8
%lI=icmp eq i32%lw,0
%lJ=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%lK=getelementptr inbounds i8,i8*%lC,i64%lv
br i1%lI,label%lN,label%lL
lL:
%lM=bitcast i8*%lK to i8**
store i8*%lJ,i8**%lM,align 8
br label%lO
lN:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%lK,i8*%lJ,i32%lB,i1 false)
br label%lO
lO:
%lP=sext i32%D to i64
%lQ=getelementptr inbounds i8,i8*%lC,i64%lP
%lR=bitcast i8*%lQ to i32*
store i32%J,i32*%lR,align 4
%lS=call i8*@sml_alloc(i32 inreg 12)#0
%lT=getelementptr inbounds i8,i8*%lS,i64 -4
%lU=bitcast i8*%lT to i32*
store i32 1342177288,i32*%lU,align 4
%lV=load i8*,i8**%k,align 8
%lW=bitcast i8*%lS to i8**
store i8*%lV,i8**%lW,align 8
%lX=getelementptr inbounds i8,i8*%lS,i64 8
%lY=bitcast i8*%lX to i32*
store i32 1,i32*%lY,align 4
ret i8*%lS
}
define internal fastcc i8*@_SMLLN8IEEEReal4scanE_155(i8*inreg%a,i8*inreg%b)#4 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*%b,i8**%c,align 8
%e=bitcast i8*%a to i32*
%f=load i32,i32*%e,align 4
%g=getelementptr inbounds i8,i8*%a,i64 4
%h=bitcast i8*%g to i32*
%i=load i32,i32*%h,align 4
%j=call i8*@sml_alloc(i32 inreg 20)#0
%k=getelementptr inbounds i8,i8*%j,i64 -4
%l=bitcast i8*%k to i32*
store i32 1342177296,i32*%l,align 4
store i8*%j,i8**%d,align 8
%m=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%n=bitcast i8*%j to i8**
store i8*%m,i8**%n,align 8
%o=getelementptr inbounds i8,i8*%j,i64 8
%p=bitcast i8*%o to i32*
store i32%f,i32*%p,align 4
%q=getelementptr inbounds i8,i8*%j,i64 12
%r=bitcast i8*%q to i32*
store i32%i,i32*%r,align 4
%s=getelementptr inbounds i8,i8*%j,i64 16
%t=bitcast i8*%s to i32*
store i32 1,i32*%t,align 4
%u=call i8*@sml_alloc(i32 inreg 28)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177304,i32*%w,align 4
%x=load i8*,i8**%d,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 void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal4scanE_154 to void(...)*),void(...)**%A,align 8
%B=getelementptr inbounds i8,i8*%u,i64 16
%C=bitcast i8*%B to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal4scanE_154 to void(...)*),void(...)**%C,align 8
%D=getelementptr inbounds i8,i8*%u,i64 24
%E=bitcast i8*%D to i32*
store i32 1,i32*%E,align 4
ret i8*%u
}
define internal fastcc i8*@_SMLLN8IEEEReal4scanE_156(i32 inreg%a,i32 inreg%b)unnamed_addr#4 gc"smlsharp"{
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 1342177288,i32*%g,align 4
store i8*%d,i8**%c,align 8
store i32%a,i32*%e,align 4
%h=getelementptr inbounds i8,i8*%d,i64 4
%i=bitcast i8*%h to i32*
store i32%b,i32*%i,align 4
%j=getelementptr inbounds i8,i8*%d,i64 8
%k=bitcast i8*%j to i32*
store i32 0,i32*%k,align 4
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=getelementptr inbounds i8,i8*%l,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177304,i32*%n,align 4
%o=load i8*,i8**%c,align 8
%p=bitcast i8*%l to i8**
store i8*%o,i8**%p,align 8
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal4scanE_155 to void(...)*),void(...)**%r,align 8
%s=getelementptr inbounds i8,i8*%l,i64 16
%t=bitcast i8*%s to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal4scanE_155 to void(...)*),void(...)**%t,align 8
%u=getelementptr inbounds i8,i8*%l,i64 24
%v=bitcast i8*%u to i32*
store i32 -2147483647,i32*%v,align 4
ret i8*%l
}
define internal fastcc i8*@_SMLLN8IEEEReal4scanE_158(i8*inreg%a,i8*inreg%b)#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**%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%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],[%a,%k]
%l=bitcast i8*%j to i32*
%m=load i32,i32*%l,align 4
store i8*null,i8**%d,align 8
%n=getelementptr inbounds i8,i8*%j,i64 4
%o=bitcast i8*%n to i32*
%p=load i32,i32*%o,align 4
%q=call fastcc i8*@_SMLLN8IEEEReal4scanE_156(i32 inreg%m,i32 inreg%p)
%r=getelementptr inbounds i8,i8*%q,i64 16
%s=bitcast i8*%r to i8*(i8*,i8*)**
%t=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%s,align 8
%u=bitcast i8*%q to i8**
%v=load i8*,i8**%u,align 8
%w=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%x=call fastcc i8*%t(i8*inreg%v,i8*inreg%w)
ret i8*%x
}
define fastcc i8*@_SMLFN8IEEEReal4scanE(i32 inreg%a,i32 inreg%b)#4 gc"smlsharp"{
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 1342177288,i32*%g,align 4
store i8*%d,i8**%c,align 8
store i32%a,i32*%e,align 4
%h=getelementptr inbounds i8,i8*%d,i64 4
%i=bitcast i8*%h to i32*
store i32%b,i32*%i,align 4
%j=getelementptr inbounds i8,i8*%d,i64 8
%k=bitcast i8*%j to i32*
store i32 0,i32*%k,align 4
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=getelementptr inbounds i8,i8*%l,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177304,i32*%n,align 4
%o=load i8*,i8**%c,align 8
%p=bitcast i8*%l to i8**
store i8*%o,i8**%p,align 8
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal4scanE_158 to void(...)*),void(...)**%r,align 8
%s=getelementptr inbounds i8,i8*%l,i64 16
%t=bitcast i8*%s to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN8IEEEReal4scanE_158 to void(...)*),void(...)**%t,align 8
%u=getelementptr inbounds i8,i8*%l,i64 24
%v=bitcast i8*%u to i32*
store i32 -2147483647,i32*%v,align 4
ret i8*%l
}
define fastcc i8*@_SMLFN8IEEEReal10fromStringE(i8*inreg%a)#2 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=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call fastcc i8*@_SMLFN9StringCvt10scanStringE(i32 inreg 1,i32 inreg 8)
%i=getelementptr inbounds i8,i8*%h,i64 16
%j=bitcast i8*%i to i8*(i8*,i8*)**
%k=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j,align 8
%l=bitcast i8*%h to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%c,align 8
%n=call fastcc i8*@_SMLLN8IEEEReal4scanE_156(i32 inreg 0,i32 inreg 4)
%o=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%p=call fastcc i8*%k(i8*inreg%o,i8*inreg%n)
%q=getelementptr inbounds i8,i8*%p,i64 16
%r=bitcast i8*%q to i8*(i8*,i8*)**
%s=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%r,align 8
%t=bitcast i8*%p to i8**
%u=load i8*,i8**%t,align 8
%v=load i8*,i8**%b,align 8
%w=tail call fastcc i8*%s(i8*inreg%u,i8*inreg%v)
ret i8*%w
}
define internal fastcc i8*@_SMLLN8IEEEReal15setRoundingModeE_163(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
tail call fastcc void@_SMLFN8IEEEReal15setRoundingModeE(i32 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*@_SMLLN8IEEEReal15getRoundingModeE_164(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN8IEEEReal15getRoundingModeE(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*@_SMLL14digitsToString_165(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*@_SMLL14digitsToString_118(i8*inreg%a,i32 inreg%d)
ret i8*%e
}
define internal fastcc i8*@_SMLLN8IEEEReal8toStringE_166(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8IEEEReal8toStringE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN8IEEEReal7scanInfE_168(i8*inreg%a,i8*inreg%b,i8*inreg%c)#4 gc"smlsharp"{
%d=bitcast i8*%b to i32*
%e=load i32,i32*%d,align 4
%f=bitcast i8*%c to i32*
%g=load i32,i32*%f,align 4
%h=tail call fastcc i8*@_SMLLN8IEEEReal7scanInfE_133(i8*inreg%a,i32 inreg%e,i32 inreg%g)
ret i8*%h
}
define internal fastcc i8*@_SMLLN8IEEEReal4scanE_176(i8*inreg%a,i8*inreg%b,i8*inreg%c)#4 gc"smlsharp"{
%d=bitcast i8*%b to i32*
%e=load i32,i32*%d,align 4
%f=bitcast i8*%c to i32*
%g=load i32,i32*%f,align 4
%h=tail call fastcc i8*@_SMLFN8IEEEReal4scanE(i32 inreg%e,i32 inreg%g)
ret i8*%h
}
define internal fastcc i8*@_SMLLN8IEEEReal10fromStringE_177(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8IEEEReal10fromStringE(i8*inreg%b)
ret i8*%c
}
declare void@llvm.memcpy.p0i8.p0i8.i32(i8*,i8*,i32,i1)#0
declare void@llvm.memset.p0i8.i32(i8*,i8,i32,i1)#0
declare void@llvm.memset.p0i8.i64(i8*,i8,i64,i1)#0
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}
