@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
@_SMLDL109=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*)*@_SMLLLN8IEEEReal15setRoundingModeE_145 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*)*@_SMLLLN8IEEEReal15getRoundingModeE_146 to void(...)*),i32 -2147483647}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c"nan\00"}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c"~nan\00"}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c"inf\00"}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c"~inf\00"}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c"0.0\00"}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c"~0.0\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"E\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*)*@_SMLLLN8IEEEReal8toStringE_147 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
@v=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLLN8IEEEReal10fromStringE_138 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN8IEEEReal10fromStringE_150 to void(...)*),i32 -2147483647}>,align 8
@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*)*@_SMLLLN8IEEEReal10fromStringE_151 to void(...)*),i32 -2147483647}>,align 8
@x=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*)*@_SMLLLN8IEEEReal4scanE_152 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN8IEEEReal9UnorderedE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL109,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*)
@_SMLZN8IEEEReal4scanE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@x,i64 0,i32 2)to i8*)
@_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
@y=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*@y,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@y,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*@y,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*@y,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 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=bitcast i8*%i to i32*
%l=load i32,i32*%k,align 4
%m=getelementptr inbounds i8,i8*%i,i64 8
%n=bitcast i8*%m to i8**
%o=load i8*,i8**%n,align 8
store i8*%o,i8**%b,align 8
%p=getelementptr inbounds i8,i8*%i,i64 16
%q=bitcast i8*%p to i32*
%r=load i32,i32*%q,align 4
%s=getelementptr inbounds i8,i8*%i,i64 20
%t=bitcast i8*%s to i32*
%u=load i32,i32*%t,align 4
switch i32%l,label%v[
i32 1,label%cr
i32 0,label%co
i32 4,label%cl
i32 2,label%ba
i32 3,label%N
]
v:
call void@sml_matchcomp_bug()
%w=load i8*,i8**@_SMLZ5Match,align 8
store i8*%w,i8**%b,align 8
%x=call i8*@sml_alloc(i32 inreg 20)#0
%y=getelementptr inbounds i8,i8*%x,i64 -4
%z=bitcast i8*%y to i32*
store i32 1342177296,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,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@p,i64 0,i32 2,i64 0),i8**%D,align 8
%E=getelementptr inbounds i8,i8*%x,i64 16
%F=bitcast i8*%E to i32*
store i32 3,i32*%F,align 4
%G=call i8*@sml_alloc(i32 inreg 60)#0
%H=getelementptr inbounds i8,i8*%G,i64 -4
%I=bitcast i8*%H to i32*
store i32 1342177336,i32*%I,align 4
%J=getelementptr inbounds i8,i8*%G,i64 56
%K=bitcast i8*%J to i32*
store i32 1,i32*%K,align 4
%L=load i8*,i8**%c,align 8
%M=bitcast i8*%G to i8**
store i8*%L,i8**%M,align 8
call void@sml_raise(i8*inreg%G)#1
unreachable
N:
%O=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 0,i32 inreg 4,i32 inreg 0,i32 inreg 1)
%P=getelementptr inbounds i8,i8*%O,i64 16
%Q=bitcast i8*%P to i8*(i8*,i8*)**
%R=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Q,align 8
%S=bitcast i8*%O to i8**
%T=load i8*,i8**%S,align 8
%U=load i8*,i8**@_SMLZN17SMLSharp__ScanChar10intToDigitE,align 8
%V=call fastcc i8*%R(i8*inreg%T,i8*inreg%U)
%W=getelementptr inbounds i8,i8*%V,i64 16
%X=bitcast i8*%W to i8*(i8*,i8*)**
%Y=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%X,align 8
%Z=bitcast i8*%V to i8**
%aa=load i8*,i8**%Z,align 8
%ab=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ac=call fastcc i8*%Y(i8*inreg%aa,i8*inreg%ab)
store i8*%ac,i8**%b,align 8
%ad=call i8*@sml_alloc(i32 inreg 20)#0
%ae=getelementptr inbounds i8,i8*%ad,i64 -4
%af=bitcast i8*%ae to i32*
store i32 1342177296,i32*%af,align 4
store i8*%ad,i8**%c,align 8
%ag=getelementptr inbounds i8,i8*%ad,i64 1
call void@llvm.memset.p0i8.i32(i8*%ag,i8 0,i32 7,i1 false)
store i8 46,i8*%ad,align 1
%ah=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ai=getelementptr inbounds i8,i8*%ad,i64 8
%aj=bitcast i8*%ai to i8**
store i8*%ah,i8**%aj,align 8
%ak=getelementptr inbounds i8,i8*%ad,i64 16
%al=bitcast i8*%ak to i32*
store i32 2,i32*%al,align 4
%am=call i8*@sml_alloc(i32 inreg 20)#0
%an=getelementptr inbounds i8,i8*%am,i64 -4
%ao=bitcast i8*%an to i32*
store i32 1342177296,i32*%ao,align 4
store i8*%am,i8**%b,align 8
%ap=getelementptr inbounds i8,i8*%am,i64 1
call void@llvm.memset.p0i8.i32(i8*%ap,i8 0,i32 7,i1 false)
store i8 48,i8*%am,align 1
%aq=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ar=getelementptr inbounds i8,i8*%am,i64 8
%as=bitcast i8*%ar to i8**
store i8*%aq,i8**%as,align 8
%at=getelementptr inbounds i8,i8*%am,i64 16
%au=bitcast i8*%at to i32*
store i32 2,i32*%au,align 4
%av=icmp eq i32%u,0
br i1%av,label%aG,label%aw
aw:
%ax=call i8*@sml_alloc(i32 inreg 20)#0
%ay=getelementptr inbounds i8,i8*%ax,i64 -4
%az=bitcast i8*%ay to i32*
store i32 1342177296,i32*%az,align 4
%aA=getelementptr inbounds i8,i8*%ax,i64 1
call void@llvm.memset.p0i8.i32(i8*%aA,i8 0,i32 7,i1 false)
store i8 126,i8*%ax,align 1
%aB=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aC=getelementptr inbounds i8,i8*%ax,i64 8
%aD=bitcast i8*%aC to i8**
store i8*%aB,i8**%aD,align 8
%aE=getelementptr inbounds i8,i8*%ax,i64 16
%aF=bitcast i8*%aE to i32*
store i32 2,i32*%aF,align 4
br label%aH
aG:
store i8*null,i8**%b,align 8
br label%aH
aH:
%aI=phi i8*[%ax,%aw],[%am,%aG]
%aJ=call fastcc i8*@_SMLFN10CharVector8fromListE(i8*inreg%aI)
store i8*%aJ,i8**%b,align 8
%aK=icmp eq i32%r,0
br i1%aK,label%aL,label%aN
aL:
%aM=phi i8*[%aJ,%aH],[%bW,%bU],[%cn,%cl],[%cq,%co],[%ct,%cr]
ret i8*%aM
aN:
%aO=call i8*@sml_alloc(i32 inreg 20)#0
%aP=getelementptr inbounds i8,i8*%aO,i64 -4
%aQ=bitcast i8*%aP to i32*
store i32 1342177296,i32*%aQ,align 4
%aR=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aS=bitcast i8*%aO to i8**
store i8*%aR,i8**%aS,align 8
%aT=getelementptr inbounds i8,i8*%aO,i64 8
%aU=bitcast i8*%aT to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@o,i64 0,i32 2,i64 0),i8**%aU,align 8
%aV=getelementptr inbounds i8,i8*%aO,i64 16
%aW=bitcast i8*%aV to i32*
store i32 3,i32*%aW,align 4
%aX=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%aO)
store i8*%aX,i8**%b,align 8
%aY=call fastcc i8*@_SMLFN5Int328toStringE(i32 inreg%r)
store i8*%aY,i8**%c,align 8
%aZ=call i8*@sml_alloc(i32 inreg 20)#0
%a0=getelementptr inbounds i8,i8*%aZ,i64 -4
%a1=bitcast i8*%a0 to i32*
store i32 1342177296,i32*%a1,align 4
%a2=load i8*,i8**%b,align 8
%a3=bitcast i8*%aZ to i8**
store i8*%a2,i8**%a3,align 8
%a4=load i8*,i8**%c,align 8
%a5=getelementptr inbounds i8,i8*%aZ,i64 8
%a6=bitcast i8*%a5 to i8**
store i8*%a4,i8**%a6,align 8
%a7=getelementptr inbounds i8,i8*%aZ,i64 16
%a8=bitcast i8*%a7 to i32*
store i32 3,i32*%a8,align 4
%a9=tail call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%aZ)
ret i8*%a9
ba:
%bb=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 0,i32 inreg 4,i32 inreg 0,i32 inreg 1)
%bc=getelementptr inbounds i8,i8*%bb,i64 16
%bd=bitcast i8*%bc to i8*(i8*,i8*)**
%be=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bd,align 8
%bf=bitcast i8*%bb to i8**
%bg=load i8*,i8**%bf,align 8
%bh=load i8*,i8**@_SMLZN17SMLSharp__ScanChar10intToDigitE,align 8
%bi=call fastcc i8*%be(i8*inreg%bg,i8*inreg%bh)
%bj=getelementptr inbounds i8,i8*%bi,i64 16
%bk=bitcast i8*%bj to i8*(i8*,i8*)**
%bl=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bk,align 8
%bm=bitcast i8*%bi to i8**
%bn=load i8*,i8**%bm,align 8
%bo=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bp=call fastcc i8*%bl(i8*inreg%bn,i8*inreg%bo)
store i8*%bp,i8**%b,align 8
%bq=call i8*@sml_alloc(i32 inreg 20)#0
%br=getelementptr inbounds i8,i8*%bq,i64 -4
%bs=bitcast i8*%br to i32*
store i32 1342177296,i32*%bs,align 4
store i8*%bq,i8**%c,align 8
%bt=getelementptr inbounds i8,i8*%bq,i64 1
call void@llvm.memset.p0i8.i32(i8*%bt,i8 0,i32 7,i1 false)
store i8 46,i8*%bq,align 1
%bu=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bv=getelementptr inbounds i8,i8*%bq,i64 8
%bw=bitcast i8*%bv to i8**
store i8*%bu,i8**%bw,align 8
%bx=getelementptr inbounds i8,i8*%bq,i64 16
%by=bitcast i8*%bx to i32*
store i32 2,i32*%by,align 4
%bz=call i8*@sml_alloc(i32 inreg 20)#0
%bA=getelementptr inbounds i8,i8*%bz,i64 -4
%bB=bitcast i8*%bA to i32*
store i32 1342177296,i32*%bB,align 4
store i8*%bz,i8**%b,align 8
%bC=getelementptr inbounds i8,i8*%bz,i64 1
call void@llvm.memset.p0i8.i32(i8*%bC,i8 0,i32 7,i1 false)
store i8 48,i8*%bz,align 1
%bD=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bE=getelementptr inbounds i8,i8*%bz,i64 8
%bF=bitcast i8*%bE to i8**
store i8*%bD,i8**%bF,align 8
%bG=getelementptr inbounds i8,i8*%bz,i64 16
%bH=bitcast i8*%bG to i32*
store i32 2,i32*%bH,align 4
%bI=icmp eq i32%u,0
br i1%bI,label%bT,label%bJ
bJ:
%bK=call i8*@sml_alloc(i32 inreg 20)#0
%bL=getelementptr inbounds i8,i8*%bK,i64 -4
%bM=bitcast i8*%bL to i32*
store i32 1342177296,i32*%bM,align 4
%bN=getelementptr inbounds i8,i8*%bK,i64 1
call void@llvm.memset.p0i8.i32(i8*%bN,i8 0,i32 7,i1 false)
store i8 126,i8*%bK,align 1
%bO=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bP=getelementptr inbounds i8,i8*%bK,i64 8
%bQ=bitcast i8*%bP to i8**
store i8*%bO,i8**%bQ,align 8
%bR=getelementptr inbounds i8,i8*%bK,i64 16
%bS=bitcast i8*%bR to i32*
store i32 2,i32*%bS,align 4
br label%bU
bT:
store i8*null,i8**%b,align 8
br label%bU
bU:
%bV=phi i8*[%bK,%bJ],[%bz,%bT]
%bW=call fastcc i8*@_SMLFN10CharVector8fromListE(i8*inreg%bV)
store i8*%bW,i8**%b,align 8
%bX=icmp eq i32%r,0
br i1%bX,label%aL,label%bY
bY:
%bZ=call i8*@sml_alloc(i32 inreg 20)#0
%b0=getelementptr inbounds i8,i8*%bZ,i64 -4
%b1=bitcast i8*%b0 to i32*
store i32 1342177296,i32*%b1,align 4
%b2=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%b3=bitcast i8*%bZ to i8**
store i8*%b2,i8**%b3,align 8
%b4=getelementptr inbounds i8,i8*%bZ,i64 8
%b5=bitcast i8*%b4 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@o,i64 0,i32 2,i64 0),i8**%b5,align 8
%b6=getelementptr inbounds i8,i8*%bZ,i64 16
%b7=bitcast i8*%b6 to i32*
store i32 3,i32*%b7,align 4
%b8=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%bZ)
store i8*%b8,i8**%b,align 8
%b9=call fastcc i8*@_SMLFN5Int328toStringE(i32 inreg%r)
store i8*%b9,i8**%c,align 8
%ca=call i8*@sml_alloc(i32 inreg 20)#0
%cb=getelementptr inbounds i8,i8*%ca,i64 -4
%cc=bitcast i8*%cb to i32*
store i32 1342177296,i32*%cc,align 4
%cd=load i8*,i8**%b,align 8
%ce=bitcast i8*%ca to i8**
store i8*%cd,i8**%ce,align 8
%cf=load i8*,i8**%c,align 8
%cg=getelementptr inbounds i8,i8*%ca,i64 8
%ch=bitcast i8*%cg to i8**
store i8*%cf,i8**%ch,align 8
%ci=getelementptr inbounds i8,i8*%ca,i64 16
%cj=bitcast i8*%ci to i32*
store i32 3,i32*%cj,align 4
%ck=tail call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%ca)
ret i8*%ck
cl:
%cm=icmp eq i32%u,0
%cn=select i1%cm,i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@m,i64 0,i32 2,i64 0),i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@n,i64 0,i32 2,i64 0)
br label%aL
co:
%cp=icmp eq i32%u,0
%cq=select i1%cp,i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@k,i64 0,i32 2,i64 0),i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@l,i64 0,i32 2,i64 0)
br label%aL
cr:
%cs=icmp eq i32%u,0
%ct=select i1%cs,i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@i,i64 0,i32 2,i64 0),i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@j,i64 0,i32 2,i64 0)
br label%aL
}
define internal fastcc i8*@_SMLLLN8IEEEReal20removeTrailingZeroesE_129(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*@_SMLLLN8IEEEReal20removeTrailingZeroesE_129(i8*inreg%q)
%s=icmp eq i32%n,0
%t=icmp eq i8*%r,null
%u=and i1%s,%t
br i1%u,label%k,label%v
v:
store i8*%r,i8**%b,align 8
%w=call i8*@sml_alloc(i32 inreg 20)#0
%x=bitcast i8*%w to i32*
%y=getelementptr inbounds i8,i8*%w,i64 -4
%z=bitcast i8*%y to i32*
store i32 1342177296,i32*%z,align 4
%A=getelementptr inbounds i8,i8*%w,i64 4
%B=bitcast i8*%A to i32*
store i32 0,i32*%B,align 1
store i32%n,i32*%x,align 4
%C=load i8*,i8**%b,align 8
%D=getelementptr inbounds i8,i8*%w,i64 8
%E=bitcast i8*%D to i8**
store i8*%C,i8**%E,align 8
%F=getelementptr inbounds i8,i8*%w,i64 16
%G=bitcast i8*%F to i32*
store i32 2,i32*%G,align 4
ret i8*%w
}
define internal fastcc i8*@_SMLLLN8IEEEReal4scanE_135(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**%g,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**%g,align 8
br label%l
l:
%m=phi i8*[%k,%j],[%a,%n]
%o=getelementptr inbounds i8,i8*%m,i64 12
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=add i32%q,3
%s=sub i32 0,%q
%t=and i32%r,%s
%u=and i32%q,%s
%v=add i32%q,7
%w=add i32%v,%u
%x=and i32%w,-8
%y=lshr i32%u,3
%z=getelementptr inbounds i8,i8*%m,i64 8
%A=bitcast i8*%z to i32*
%B=load i32,i32*%A,align 4
%C=shl i32%B,%y
%D=or i32%x,4
%E=and i32%v,%s
%F=add i32%v,%E
%G=and i32%F,-8
%H=lshr i32%E,3
%I=shl i32%B,%H
%J=or i32%I,1
%K=or i32%G,4
%L=add i32%v,%t
%M=and i32%L,-8
%N=lshr i32%t,3
%O=shl i32%B,%N
%P=or i32%M,4
%Q=call fastcc i8*@_SMLFN17SMLSharp__ScanChar10skipSpacesE(i32 inreg%B,i32 inreg%q)
%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**%g 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**%c,align 8
store i8*null,i8**%c,align 8
%ag=call fastcc i8*%ac(i8*inreg%ae,i8*inreg%af)
store i8*%ag,i8**%c,align 8
%ah=load i8*,i8**%g,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**%c,align 8
store i8*null,i8**%c,align 8
%aD=call fastcc i8*%az(i8*inreg%aB,i8*inreg%aC)
store i8*%aD,i8**%c,align 8
%aE=bitcast i8*%aD to i32*
%aF=load i32,i32*%aE,align 4
%aG=load i8*,i8**%g,align 8
%aH=getelementptr inbounds i8,i8*%aG,i64 8
%aI=bitcast i8*%aH to i32*
%aJ=load i32,i32*%aI,align 4
%aK=icmp eq i32%aJ,0
br i1%aK,label%aR,label%aL
aL:
%aM=bitcast i8*%aG to i8**
store i8*null,i8**%c,align 8
%aN=sext i32%t to i64
%aO=getelementptr inbounds i8,i8*%aD,i64%aN
%aP=bitcast i8*%aO to i8**
%aQ=load i8*,i8**%aP,align 8
br label%a2
aR:
%aS=getelementptr inbounds i8,i8*%aG,i64 12
%aT=bitcast i8*%aS to i32*
%aU=load i32,i32*%aT,align 4
%aV=call i8*@sml_alloc(i32 inreg%aU)#0
%aW=getelementptr inbounds i8,i8*%aV,i64 -4
%aX=bitcast i8*%aW to i32*
store i32%aU,i32*%aX,align 4
%aY=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aZ=sext i32%t to i64
%a0=getelementptr inbounds i8,i8*%aY,i64%aZ
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%aV,i8*%a0,i32%aU,i1 false)
%a1=load i8**,i8***%W,align 8
br label%a2
a2:
%a3=phi i8**[%a1,%aR],[%aM,%aL]
%a4=phi i8*[%aV,%aR],[%aQ,%aL]
store i8*%a4,i8**%c,align 8
%a5=load i8*,i8**%a3,align 8
%a6=getelementptr inbounds i8,i8*%a5,i64 16
%a7=bitcast i8*%a6 to i8*(i8*,i8*)**
%a8=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%a7,align 8
%a9=bitcast i8*%a5 to i8**
%ba=load i8*,i8**%a9,align 8
%bb=call fastcc i8*%a8(i8*inreg%ba,i8*inreg%a4)
%bc=icmp eq i8*%bb,null
br i1%bc,label%q8,label%bd
bd:
%be=bitcast i8*%bb to i8**
%bf=load i8*,i8**%be,align 8
store i8*%bf,i8**%d,align 8
%bg=load i8,i8*%bf,align 1
%bh=load i8*,i8**%g,align 8
%bi=getelementptr inbounds i8,i8*%bh,i64 8
%bj=bitcast i8*%bi to i32*
%bk=load i32,i32*%bj,align 4
%bl=icmp eq i32%bk,0
br i1%bl,label%br,label%bm
bm:
store i8*null,i8**%d,align 8
%bn=sext i32%u to i64
%bo=getelementptr inbounds i8,i8*%bf,i64%bn
%bp=bitcast i8*%bo to i8**
%bq=load i8*,i8**%bp,align 8
br label%bB
br:
%bs=getelementptr inbounds i8,i8*%bh,i64 12
%bt=bitcast i8*%bs to i32*
%bu=load i32,i32*%bt,align 4
%bv=call i8*@sml_alloc(i32 inreg%bu)#0
%bw=getelementptr inbounds i8,i8*%bv,i64 -4
%bx=bitcast i8*%bw to i32*
store i32%bu,i32*%bx,align 4
%by=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bz=sext i32%u to i64
%bA=getelementptr inbounds i8,i8*%by,i64%bz
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bv,i8*%bA,i32%bu,i1 false)
br label%bB
bB:
%bC=phi i64[%bz,%br],[%bn,%bm]
%bD=phi i8*[%bv,%br],[%bq,%bm]
store i8*%bD,i8**%d,align 8
%bE=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%bg)
%bF=load i8*,i8**%g,align 8
%bG=getelementptr inbounds i8,i8*%bF,i64 12
%bH=bitcast i8*%bG to i32*
%bI=load i32,i32*%bH,align 4
%bJ=getelementptr inbounds i8,i8*%bF,i64 8
%bK=bitcast i8*%bJ to i32*
%bL=load i32,i32*%bK,align 4
%bM=call i8*@sml_alloc(i32 inreg%D)#0
%bN=or i32%x,1342177280
%bO=getelementptr inbounds i8,i8*%bM,i64 -4
%bP=bitcast i8*%bO to i32*
store i32%bN,i32*%bP,align 4
store i8*%bM,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%bM,i8 0,i32%D,i1 false)
store i8%bE,i8*%bM,align 1
%bQ=icmp eq i32%bL,0
%bR=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bS=getelementptr inbounds i8,i8*%bM,i64%bC
br i1%bQ,label%bT,label%bU
bT:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bS,i8*%bR,i32%bI,i1 false)
br label%bW
bU:
%bV=bitcast i8*%bS to i8**
store i8*%bR,i8**%bV,align 8
br label%bW
bW:
%bX=sext i32%x to i64
%bY=getelementptr inbounds i8,i8*%bM,i64%bX
%bZ=bitcast i8*%bY to i32*
store i32%C,i32*%bZ,align 4
%b0=call i8*@sml_alloc(i32 inreg 12)#0
%b1=getelementptr inbounds i8,i8*%b0,i64 -4
%b2=bitcast i8*%b1 to i32*
store i32 1342177288,i32*%b2,align 4
%b3=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%b4=bitcast i8*%b0 to i8**
store i8*%b3,i8**%b4,align 8
%b5=getelementptr inbounds i8,i8*%b0,i64 8
%b6=bitcast i8*%b5 to i32*
store i32 1,i32*%b6,align 4
%b7=icmp eq i8*%b0,null
br i1%b7,label%q8,label%b8
b8:
store i8*%b3,i8**%d,align 8
%b9=load i8,i8*%b3,align 1
switch i8%b9,label%ca[
i8 105,label%f2
i8 110,label%cb
]
ca:
store i8*null,i8**%d,align 8
br label%q8
cb:
%cc=load i8**,i8***%W,align 8
%cd=load i8*,i8**%cc,align 8
%ce=getelementptr inbounds i8,i8*%cd,i64 16
%cf=bitcast i8*%ce to i8*(i8*,i8*)**
%cg=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cf,align 8
%ch=bitcast i8*%cd to i8**
%ci=load i8*,i8**%ch,align 8
store i8*%ci,i8**%e,align 8
%cj=getelementptr inbounds i8*,i8**%cc,i64 1
%ck=bitcast i8**%cj to i32*
%cl=load i32,i32*%ck,align 4
%cm=icmp eq i32%cl,0
br i1%cm,label%cr,label%cn
cn:
store i8*null,i8**%d,align 8
%co=getelementptr inbounds i8,i8*%b3,i64%bC
%cp=bitcast i8*%co to i8**
%cq=load i8*,i8**%cp,align 8
br label%cC
cr:
%cs=bitcast i8**%cc to i8*
%ct=getelementptr inbounds i8,i8*%cs,i64 12
%cu=bitcast i8*%ct to i32*
%cv=load i32,i32*%cu,align 4
%cw=call i8*@sml_alloc(i32 inreg%cv)#0
%cx=getelementptr inbounds i8,i8*%cw,i64 -4
%cy=bitcast i8*%cx to i32*
store i32%cv,i32*%cy,align 4
%cz=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cA=getelementptr inbounds i8,i8*%cz,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cw,i8*%cA,i32%cv,i1 false)
%cB=load i8*,i8**%e,align 8
br label%cC
cC:
%cD=phi i8*[%ci,%cn],[%cB,%cr]
%cE=phi i8*[%cq,%cn],[%cw,%cr]
store i8*null,i8**%e,align 8
%cF=call fastcc i8*%cg(i8*inreg%cD,i8*inreg%cE)
%cG=icmp eq i8*%cF,null
br i1%cG,label%q8,label%cH
cH:
%cI=bitcast i8*%cF to i8**
%cJ=load i8*,i8**%cI,align 8
store i8*%cJ,i8**%d,align 8
%cK=load i8,i8*%cJ,align 1
%cL=load i8*,i8**%g,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%cU,label%cQ
cQ:
store i8*null,i8**%d,align 8
%cR=getelementptr inbounds i8,i8*%cJ,i64%bC
%cS=bitcast i8*%cR to i8**
%cT=load i8*,i8**%cS,align 8
br label%c3
cU:
%cV=getelementptr inbounds i8,i8*%cL,i64 12
%cW=bitcast i8*%cV to i32*
%cX=load i32,i32*%cW,align 4
%cY=call i8*@sml_alloc(i32 inreg%cX)#0
%cZ=getelementptr inbounds i8,i8*%cY,i64 -4
%c0=bitcast i8*%cZ to i32*
store i32%cX,i32*%c0,align 4
%c1=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%c2=getelementptr inbounds i8,i8*%c1,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cY,i8*%c2,i32%cX,i1 false)
br label%c3
c3:
%c4=phi i8*[%cY,%cU],[%cT,%cQ]
store i8*%c4,i8**%d,align 8
%c5=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%cK)
%c6=load i8*,i8**%g,align 8
%c7=getelementptr inbounds i8,i8*%c6,i64 12
%c8=bitcast i8*%c7 to i32*
%c9=load i32,i32*%c8,align 4
%da=getelementptr inbounds i8,i8*%c6,i64 8
%db=bitcast i8*%da to i32*
%dc=load i32,i32*%db,align 4
%dd=call i8*@sml_alloc(i32 inreg%D)#0
%de=getelementptr inbounds i8,i8*%dd,i64 -4
%df=bitcast i8*%de to i32*
store i32%bN,i32*%df,align 4
store i8*%dd,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%dd,i8 0,i32%D,i1 false)
store i8%c5,i8*%dd,align 1
%dg=icmp eq i32%dc,0
%dh=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%di=getelementptr inbounds i8,i8*%dd,i64%bC
br i1%dg,label%dj,label%dk
dj:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%di,i8*%dh,i32%c9,i1 false)
br label%dm
dk:
%dl=bitcast i8*%di to i8**
store i8*%dh,i8**%dl,align 8
br label%dm
dm:
%dn=getelementptr inbounds i8,i8*%dd,i64%bX
%do=bitcast i8*%dn to i32*
store i32%C,i32*%do,align 4
%dp=call i8*@sml_alloc(i32 inreg 12)#0
%dq=getelementptr inbounds i8,i8*%dp,i64 -4
%dr=bitcast i8*%dq to i32*
store i32 1342177288,i32*%dr,align 4
%ds=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dt=bitcast i8*%dp to i8**
store i8*%ds,i8**%dt,align 8
%du=getelementptr inbounds i8,i8*%dp,i64 8
%dv=bitcast i8*%du to i32*
store i32 1,i32*%dv,align 4
%dw=icmp eq i8*%dp,null
br i1%dw,label%q8,label%dx
dx:
store i8*%ds,i8**%d,align 8
%dy=load i8,i8*%ds,align 1
%dz=icmp eq i8%dy,97
br i1%dz,label%dB,label%dA
dA:
store i8*null,i8**%d,align 8
br label%q8
dB:
%dC=load i8**,i8***%W,align 8
%dD=load i8*,i8**%dC,align 8
%dE=getelementptr inbounds i8,i8*%dD,i64 16
%dF=bitcast i8*%dE to i8*(i8*,i8*)**
%dG=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dF,align 8
%dH=bitcast i8*%dD to i8**
%dI=load i8*,i8**%dH,align 8
store i8*%dI,i8**%e,align 8
%dJ=getelementptr inbounds i8*,i8**%dC,i64 1
%dK=bitcast i8**%dJ to i32*
%dL=load i32,i32*%dK,align 4
%dM=icmp eq i32%dL,0
br i1%dM,label%dR,label%dN
dN:
store i8*null,i8**%d,align 8
%dO=getelementptr inbounds i8,i8*%ds,i64%bC
%dP=bitcast i8*%dO to i8**
%dQ=load i8*,i8**%dP,align 8
br label%d2
dR:
%dS=bitcast i8**%dC to i8*
%dT=getelementptr inbounds i8,i8*%dS,i64 12
%dU=bitcast i8*%dT to i32*
%dV=load i32,i32*%dU,align 4
%dW=call i8*@sml_alloc(i32 inreg%dV)#0
%dX=getelementptr inbounds i8,i8*%dW,i64 -4
%dY=bitcast i8*%dX to i32*
store i32%dV,i32*%dY,align 4
%dZ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%d0=getelementptr inbounds i8,i8*%dZ,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%dW,i8*%d0,i32%dV,i1 false)
%d1=load i8*,i8**%e,align 8
br label%d2
d2:
%d3=phi i8*[%dI,%dN],[%d1,%dR]
%d4=phi i8*[%dQ,%dN],[%dW,%dR]
store i8*null,i8**%e,align 8
%d5=call fastcc i8*%dG(i8*inreg%d3,i8*inreg%d4)
%d6=icmp eq i8*%d5,null
br i1%d6,label%q8,label%d7
d7:
%d8=bitcast i8*%d5 to i8**
%d9=load i8*,i8**%d8,align 8
store i8*%d9,i8**%d,align 8
%ea=load i8,i8*%d9,align 1
%eb=load i8*,i8**%g,align 8
%ec=getelementptr inbounds i8,i8*%eb,i64 8
%ed=bitcast i8*%ec to i32*
%ee=load i32,i32*%ed,align 4
%ef=icmp eq i32%ee,0
br i1%ef,label%ek,label%eg
eg:
store i8*null,i8**%d,align 8
%eh=getelementptr inbounds i8,i8*%d9,i64%bC
%ei=bitcast i8*%eh to i8**
%ej=load i8*,i8**%ei,align 8
br label%et
ek:
%el=getelementptr inbounds i8,i8*%eb,i64 12
%em=bitcast i8*%el to i32*
%en=load i32,i32*%em,align 4
%eo=call i8*@sml_alloc(i32 inreg%en)#0
%ep=getelementptr inbounds i8,i8*%eo,i64 -4
%eq=bitcast i8*%ep to i32*
store i32%en,i32*%eq,align 4
%er=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%es=getelementptr inbounds i8,i8*%er,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%eo,i8*%es,i32%en,i1 false)
br label%et
et:
%eu=phi i8*[%eo,%ek],[%ej,%eg]
store i8*%eu,i8**%d,align 8
%ev=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%ea)
%ew=load i8*,i8**%g,align 8
%ex=getelementptr inbounds i8,i8*%ew,i64 12
%ey=bitcast i8*%ex to i32*
%ez=load i32,i32*%ey,align 4
%eA=getelementptr inbounds i8,i8*%ew,i64 8
%eB=bitcast i8*%eA to i32*
%eC=load i32,i32*%eB,align 4
%eD=call i8*@sml_alloc(i32 inreg%D)#0
%eE=getelementptr inbounds i8,i8*%eD,i64 -4
%eF=bitcast i8*%eE to i32*
store i32%bN,i32*%eF,align 4
store i8*%eD,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%eD,i8 0,i32%D,i1 false)
store i8%ev,i8*%eD,align 1
%eG=icmp eq i32%eC,0
%eH=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%eI=getelementptr inbounds i8,i8*%eD,i64%bC
br i1%eG,label%eJ,label%eK
eJ:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%eI,i8*%eH,i32%ez,i1 false)
br label%eM
eK:
%eL=bitcast i8*%eI to i8**
store i8*%eH,i8**%eL,align 8
br label%eM
eM:
%eN=getelementptr inbounds i8,i8*%eD,i64%bX
%eO=bitcast i8*%eN to i32*
store i32%C,i32*%eO,align 4
%eP=call i8*@sml_alloc(i32 inreg 12)#0
%eQ=getelementptr inbounds i8,i8*%eP,i64 -4
%eR=bitcast i8*%eQ to i32*
store i32 1342177288,i32*%eR,align 4
%eS=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%eT=bitcast i8*%eP to i8**
store i8*%eS,i8**%eT,align 8
%eU=getelementptr inbounds i8,i8*%eP,i64 8
%eV=bitcast i8*%eU to i32*
store i32 1,i32*%eV,align 4
%eW=icmp eq i8*%eP,null
br i1%eW,label%q8,label%eX
eX:
store i8*%eS,i8**%d,align 8
%eY=load i8,i8*%eS,align 1
%eZ=icmp eq i8%eY,110
br i1%eZ,label%e1,label%e0
e0:
store i8*null,i8**%d,align 8
br label%q8
e1:
%e2=load i8*,i8**%g,align 8
%e3=getelementptr inbounds i8,i8*%e2,i64 8
%e4=bitcast i8*%e3 to i32*
%e5=load i32,i32*%e4,align 4
%e6=icmp eq i32%e5,0
br i1%e6,label%fb,label%e7
e7:
store i8*null,i8**%d,align 8
%e8=getelementptr inbounds i8,i8*%eS,i64%bC
%e9=bitcast i8*%e8 to i8**
%fa=load i8*,i8**%e9,align 8
br label%fk
fb:
%fc=getelementptr inbounds i8,i8*%e2,i64 12
%fd=bitcast i8*%fc to i32*
%fe=load i32,i32*%fd,align 4
%ff=call i8*@sml_alloc(i32 inreg%fe)#0
%fg=getelementptr inbounds i8,i8*%ff,i64 -4
%fh=bitcast i8*%fg to i32*
store i32%fe,i32*%fh,align 4
%fi=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%fj=getelementptr inbounds i8,i8*%fi,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%ff,i8*%fj,i32%fe,i1 false)
br label%fk
fk:
%fl=phi i8*[%ff,%fb],[%fa,%e7]
store i8*%fl,i8**%d,align 8
%fm=call i8*@sml_alloc(i32 inreg 28)#0
%fn=getelementptr inbounds i8,i8*%fm,i64 -4
%fo=bitcast i8*%fn to i32*
store i32 1342177304,i32*%fo,align 4
store i8*%fm,i8**%e,align 8
%fp=getelementptr inbounds i8,i8*%fm,i64 4
%fq=bitcast i8*%fp to i32*
store i32 0,i32*%fq,align 1
%fr=bitcast i8*%fm to i32*
store i32 1,i32*%fr,align 4
%fs=getelementptr inbounds i8,i8*%fm,i64 8
%ft=bitcast i8*%fs to i8**
store i8*null,i8**%ft,align 8
%fu=getelementptr inbounds i8,i8*%fm,i64 16
%fv=bitcast i8*%fu to i32*
store i32 0,i32*%fv,align 4
%fw=getelementptr inbounds i8,i8*%fm,i64 20
%fx=bitcast i8*%fw to i32*
store i32%aF,i32*%fx,align 4
%fy=getelementptr inbounds i8,i8*%fm,i64 24
%fz=bitcast i8*%fy to i32*
store i32 2,i32*%fz,align 4
%fA=load i8*,i8**%g,align 8
%fB=getelementptr inbounds i8,i8*%fA,i64 12
%fC=bitcast i8*%fB to i32*
%fD=load i32,i32*%fC,align 4
%fE=getelementptr inbounds i8,i8*%fA,i64 8
%fF=bitcast i8*%fE to i32*
%fG=load i32,i32*%fF,align 4
%fH=call i8*@sml_alloc(i32 inreg%K)#0
%fI=or i32%G,1342177280
%fJ=getelementptr inbounds i8,i8*%fH,i64 -4
%fK=bitcast i8*%fJ to i32*
store i32%fI,i32*%fK,align 4
store i8*%fH,i8**%f,align 8
call void@llvm.memset.p0i8.i32(i8*%fH,i8 0,i32%K,i1 false)
%fL=load i8*,i8**%e,align 8
%fM=bitcast i8*%fH to i8**
store i8*null,i8**%e,align 8
store i8*%fL,i8**%fM,align 8
%fN=icmp eq i32%fG,0
%fO=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%fP=sext i32%E to i64
%fQ=getelementptr inbounds i8,i8*%fH,i64%fP
br i1%fN,label%fR,label%fS
fR:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%fQ,i8*%fO,i32%fD,i1 false)
br label%fU
fS:
%fT=bitcast i8*%fQ to i8**
store i8*%fO,i8**%fT,align 8
br label%fU
fU:
%fV=sext i32%G to i64
%fW=getelementptr inbounds i8,i8*%fH,i64%fV
%fX=bitcast i8*%fW to i32*
store i32%J,i32*%fX,align 4
%fY=call i8*@sml_alloc(i32 inreg 12)#0
%fZ=getelementptr inbounds i8,i8*%fY,i64 -4
%f0=bitcast i8*%fZ to i32*
store i32 1342177288,i32*%f0,align 4
%f1=load i8*,i8**%f,align 8
br label%q1
f2:
%f3=load i8**,i8***%W,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**%e,align 8
%ga=getelementptr inbounds i8*,i8**%f3,i64 1
%gb=bitcast i8**%ga to i32*
%gc=load i32,i32*%gb,align 4
%gd=icmp eq i32%gc,0
br i1%gd,label%gi,label%ge
ge:
store i8*null,i8**%d,align 8
%gf=getelementptr inbounds i8,i8*%b3,i64%bC
%gg=bitcast i8*%gf to i8**
%gh=load i8*,i8**%gg,align 8
br label%gt
gi:
%gj=bitcast i8**%f3 to i8*
%gk=getelementptr inbounds i8,i8*%gj,i64 12
%gl=bitcast i8*%gk to i32*
%gm=load i32,i32*%gl,align 4
%gn=call i8*@sml_alloc(i32 inreg%gm)#0
%go=getelementptr inbounds i8,i8*%gn,i64 -4
%gp=bitcast i8*%go to i32*
store i32%gm,i32*%gp,align 4
%gq=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%gr=getelementptr inbounds i8,i8*%gq,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%gn,i8*%gr,i32%gm,i1 false)
%gs=load i8*,i8**%e,align 8
br label%gt
gt:
%gu=phi i8*[%f9,%ge],[%gs,%gi]
%gv=phi i8*[%gh,%ge],[%gn,%gi]
store i8*null,i8**%e,align 8
%gw=call fastcc i8*%f7(i8*inreg%gu,i8*inreg%gv)
%gx=icmp eq i8*%gw,null
br i1%gx,label%q8,label%gy
gy:
%gz=bitcast i8*%gw to i8**
%gA=load i8*,i8**%gz,align 8
store i8*%gA,i8**%d,align 8
%gB=load i8,i8*%gA,align 1
%gC=load i8*,i8**%g,align 8
%gD=getelementptr inbounds i8,i8*%gC,i64 8
%gE=bitcast i8*%gD to i32*
%gF=load i32,i32*%gE,align 4
%gG=icmp eq i32%gF,0
br i1%gG,label%gL,label%gH
gH:
store i8*null,i8**%d,align 8
%gI=getelementptr inbounds i8,i8*%gA,i64%bC
%gJ=bitcast i8*%gI to i8**
%gK=load i8*,i8**%gJ,align 8
br label%gU
gL:
%gM=getelementptr inbounds i8,i8*%gC,i64 12
%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=getelementptr inbounds i8,i8*%gS,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%gP,i8*%gT,i32%gO,i1 false)
br label%gU
gU:
%gV=phi i8*[%gP,%gL],[%gK,%gH]
store i8*%gV,i8**%d,align 8
%gW=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%gB)
%gX=load i8*,i8**%g,align 8
%gY=getelementptr inbounds i8,i8*%gX,i64 12
%gZ=bitcast i8*%gY to i32*
%g0=load i32,i32*%gZ,align 4
%g1=getelementptr inbounds i8,i8*%gX,i64 8
%g2=bitcast i8*%g1 to i32*
%g3=load i32,i32*%g2,align 4
%g4=call i8*@sml_alloc(i32 inreg%D)#0
%g5=getelementptr inbounds i8,i8*%g4,i64 -4
%g6=bitcast i8*%g5 to i32*
store i32%bN,i32*%g6,align 4
store i8*%g4,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%g4,i8 0,i32%D,i1 false)
store i8%gW,i8*%g4,align 1
%g7=icmp eq i32%g3,0
%g8=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%g9=getelementptr inbounds i8,i8*%g4,i64%bC
br i1%g7,label%ha,label%hb
ha:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%g9,i8*%g8,i32%g0,i1 false)
br label%hd
hb:
%hc=bitcast i8*%g9 to i8**
store i8*%g8,i8**%hc,align 8
br label%hd
hd:
%he=getelementptr inbounds i8,i8*%g4,i64%bX
%hf=bitcast i8*%he to i32*
store i32%C,i32*%hf,align 4
%hg=call i8*@sml_alloc(i32 inreg 12)#0
%hh=getelementptr inbounds i8,i8*%hg,i64 -4
%hi=bitcast i8*%hh to i32*
store i32 1342177288,i32*%hi,align 4
%hj=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%hk=bitcast i8*%hg to i8**
store i8*%hj,i8**%hk,align 8
%hl=getelementptr inbounds i8,i8*%hg,i64 8
%hm=bitcast i8*%hl to i32*
store i32 1,i32*%hm,align 4
%hn=icmp eq i8*%hg,null
br i1%hn,label%q8,label%ho
ho:
store i8*%hj,i8**%d,align 8
%hp=load i8,i8*%hj,align 1
%hq=icmp eq i8%hp,110
br i1%hq,label%hs,label%hr
hr:
store i8*null,i8**%d,align 8
br label%q8
hs:
%ht=load i8**,i8***%W,align 8
%hu=load i8*,i8**%ht,align 8
%hv=getelementptr inbounds i8,i8*%hu,i64 16
%hw=bitcast i8*%hv to i8*(i8*,i8*)**
%hx=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%hw,align 8
%hy=bitcast i8*%hu to i8**
%hz=load i8*,i8**%hy,align 8
store i8*%hz,i8**%e,align 8
%hA=getelementptr inbounds i8*,i8**%ht,i64 1
%hB=bitcast i8**%hA to i32*
%hC=load i32,i32*%hB,align 4
%hD=icmp eq i32%hC,0
br i1%hD,label%hI,label%hE
hE:
store i8*null,i8**%d,align 8
%hF=getelementptr inbounds i8,i8*%hj,i64%bC
%hG=bitcast i8*%hF to i8**
%hH=load i8*,i8**%hG,align 8
br label%hT
hI:
%hJ=bitcast i8**%ht to i8*
%hK=getelementptr inbounds i8,i8*%hJ,i64 12
%hL=bitcast i8*%hK to i32*
%hM=load i32,i32*%hL,align 4
%hN=call i8*@sml_alloc(i32 inreg%hM)#0
%hO=getelementptr inbounds i8,i8*%hN,i64 -4
%hP=bitcast i8*%hO to i32*
store i32%hM,i32*%hP,align 4
%hQ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%hR=getelementptr inbounds i8,i8*%hQ,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%hN,i8*%hR,i32%hM,i1 false)
%hS=load i8*,i8**%e,align 8
br label%hT
hT:
%hU=phi i8*[%hz,%hE],[%hS,%hI]
%hV=phi i8*[%hH,%hE],[%hN,%hI]
store i8*null,i8**%e,align 8
%hW=call fastcc i8*%hx(i8*inreg%hU,i8*inreg%hV)
%hX=icmp eq i8*%hW,null
br i1%hX,label%q8,label%hY
hY:
%hZ=bitcast i8*%hW to i8**
%h0=load i8*,i8**%hZ,align 8
store i8*%h0,i8**%d,align 8
%h1=load i8,i8*%h0,align 1
%h2=load i8*,i8**%g,align 8
%h3=getelementptr inbounds i8,i8*%h2,i64 8
%h4=bitcast i8*%h3 to i32*
%h5=load i32,i32*%h4,align 4
%h6=icmp eq i32%h5,0
br i1%h6,label%ib,label%h7
h7:
store i8*null,i8**%d,align 8
%h8=getelementptr inbounds i8,i8*%h0,i64%bC
%h9=bitcast i8*%h8 to i8**
%ia=load i8*,i8**%h9,align 8
br label%ik
ib:
%ic=getelementptr inbounds i8,i8*%h2,i64 12
%id=bitcast i8*%ic to i32*
%ie=load i32,i32*%id,align 4
%if=call i8*@sml_alloc(i32 inreg%ie)#0
%ig=getelementptr inbounds i8,i8*%if,i64 -4
%ih=bitcast i8*%ig to i32*
store i32%ie,i32*%ih,align 4
%ii=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ij=getelementptr inbounds i8,i8*%ii,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%if,i8*%ij,i32%ie,i1 false)
br label%ik
ik:
%il=phi i8*[%if,%ib],[%ia,%h7]
store i8*%il,i8**%d,align 8
%im=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%h1)
%in=load i8*,i8**%g,align 8
%io=getelementptr inbounds i8,i8*%in,i64 12
%ip=bitcast i8*%io to i32*
%iq=load i32,i32*%ip,align 4
%ir=getelementptr inbounds i8,i8*%in,i64 8
%is=bitcast i8*%ir to i32*
%it=load i32,i32*%is,align 4
%iu=call i8*@sml_alloc(i32 inreg%D)#0
%iv=getelementptr inbounds i8,i8*%iu,i64 -4
%iw=bitcast i8*%iv to i32*
store i32%bN,i32*%iw,align 4
store i8*%iu,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%iu,i8 0,i32%D,i1 false)
store i8%im,i8*%iu,align 1
%ix=icmp eq i32%it,0
%iy=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%iz=getelementptr inbounds i8,i8*%iu,i64%bC
br i1%ix,label%iA,label%iB
iA:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%iz,i8*%iy,i32%iq,i1 false)
br label%iD
iB:
%iC=bitcast i8*%iz to i8**
store i8*%iy,i8**%iC,align 8
br label%iD
iD:
%iE=getelementptr inbounds i8,i8*%iu,i64%bX
%iF=bitcast i8*%iE to i32*
store i32%C,i32*%iF,align 4
%iG=call i8*@sml_alloc(i32 inreg 12)#0
%iH=getelementptr inbounds i8,i8*%iG,i64 -4
%iI=bitcast i8*%iH to i32*
store i32 1342177288,i32*%iI,align 4
%iJ=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%iK=bitcast i8*%iG to i8**
store i8*%iJ,i8**%iK,align 8
%iL=getelementptr inbounds i8,i8*%iG,i64 8
%iM=bitcast i8*%iL to i32*
store i32 1,i32*%iM,align 4
%iN=icmp eq i8*%iG,null
br i1%iN,label%q8,label%iO
iO:
store i8*%iJ,i8**%d,align 8
%iP=load i8,i8*%iJ,align 1
%iQ=icmp eq i8%iP,102
br i1%iQ,label%iS,label%iR
iR:
store i8*null,i8**%d,align 8
br label%q8
iS:
%iT=load i8*,i8**%g,align 8
%iU=getelementptr inbounds i8,i8*%iT,i64 8
%iV=bitcast i8*%iU to i32*
%iW=load i32,i32*%iV,align 4
%iX=icmp eq i32%iW,0
br i1%iX,label%i3,label%iY
iY:
%iZ=bitcast i8*%iT to i8**
store i8*null,i8**%d,align 8
%i0=getelementptr inbounds i8,i8*%iJ,i64%bC
%i1=bitcast i8*%i0 to i8**
%i2=load i8*,i8**%i1,align 8
br label%jd
i3:
%i4=getelementptr inbounds i8,i8*%iT,i64 12
%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=getelementptr inbounds i8,i8*%ja,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%i7,i8*%jb,i32%i6,i1 false)
%jc=load i8**,i8***%W,align 8
br label%jd
jd:
%je=phi i8**[%jc,%i3],[%iZ,%iY]
%jf=phi i8*[%i7,%i3],[%i2,%iY]
store i8*%jf,i8**%d,align 8
%jg=load i8*,i8**%je,align 8
%jh=getelementptr inbounds i8,i8*%jg,i64 16
%ji=bitcast i8*%jh to i8*(i8*,i8*)**
%jj=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ji,align 8
%jk=bitcast i8*%jg to i8**
%jl=load i8*,i8**%jk,align 8
%jm=call fastcc i8*%jj(i8*inreg%jl,i8*inreg%jf)
%jn=icmp eq i8*%jm,null
br i1%jn,label%qr,label%jo
jo:
%jp=bitcast i8*%jm to i8**
%jq=load i8*,i8**%jp,align 8
store i8*%jq,i8**%e,align 8
%jr=load i8,i8*%jq,align 1
%js=load i8*,i8**%g,align 8
%jt=getelementptr inbounds i8,i8*%js,i64 8
%ju=bitcast i8*%jt to i32*
%jv=load i32,i32*%ju,align 4
%jw=icmp eq i32%jv,0
br i1%jw,label%jB,label%jx
jx:
store i8*null,i8**%e,align 8
%jy=getelementptr inbounds i8,i8*%jq,i64%bC
%jz=bitcast i8*%jy to i8**
%jA=load i8*,i8**%jz,align 8
br label%jK
jB:
%jC=getelementptr inbounds i8,i8*%js,i64 12
%jD=bitcast i8*%jC to i32*
%jE=load i32,i32*%jD,align 4
%jF=call i8*@sml_alloc(i32 inreg%jE)#0
%jG=getelementptr inbounds i8,i8*%jF,i64 -4
%jH=bitcast i8*%jG to i32*
store i32%jE,i32*%jH,align 4
%jI=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%jJ=getelementptr inbounds i8,i8*%jI,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%jF,i8*%jJ,i32%jE,i1 false)
br label%jK
jK:
%jL=phi i8*[%jF,%jB],[%jA,%jx]
store i8*%jL,i8**%e,align 8
%jM=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%jr)
%jN=load i8*,i8**%g,align 8
%jO=getelementptr inbounds i8,i8*%jN,i64 12
%jP=bitcast i8*%jO to i32*
%jQ=load i32,i32*%jP,align 4
%jR=getelementptr inbounds i8,i8*%jN,i64 8
%jS=bitcast i8*%jR to i32*
%jT=load i32,i32*%jS,align 4
%jU=call i8*@sml_alloc(i32 inreg%D)#0
%jV=getelementptr inbounds i8,i8*%jU,i64 -4
%jW=bitcast i8*%jV to i32*
store i32%bN,i32*%jW,align 4
store i8*%jU,i8**%f,align 8
call void@llvm.memset.p0i8.i32(i8*%jU,i8 0,i32%D,i1 false)
store i8%jM,i8*%jU,align 1
%jX=icmp eq i32%jT,0
%jY=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%jZ=getelementptr inbounds i8,i8*%jU,i64%bC
br i1%jX,label%j0,label%j1
j0:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%jZ,i8*%jY,i32%jQ,i1 false)
br label%j3
j1:
%j2=bitcast i8*%jZ to i8**
store i8*%jY,i8**%j2,align 8
br label%j3
j3:
%j4=getelementptr inbounds i8,i8*%jU,i64%bX
%j5=bitcast i8*%j4 to i32*
store i32%C,i32*%j5,align 4
%j6=call i8*@sml_alloc(i32 inreg 12)#0
%j7=getelementptr inbounds i8,i8*%j6,i64 -4
%j8=bitcast i8*%j7 to i32*
store i32 1342177288,i32*%j8,align 4
%j9=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%ka=bitcast i8*%j6 to i8**
store i8*%j9,i8**%ka,align 8
%kb=getelementptr inbounds i8,i8*%j6,i64 8
%kc=bitcast i8*%kb to i32*
store i32 1,i32*%kc,align 4
%kd=icmp eq i8*%j6,null
br i1%kd,label%qr,label%ke
ke:
store i8*%j9,i8**%e,align 8
%kf=load i8,i8*%j9,align 1
%kg=icmp eq i8%kf,105
br i1%kg,label%ki,label%kh
kh:
store i8*null,i8**%e,align 8
br label%qr
ki:
%kj=load i8**,i8***%W,align 8
%kk=load i8*,i8**%kj,align 8
%kl=getelementptr inbounds i8,i8*%kk,i64 16
%km=bitcast i8*%kl to i8*(i8*,i8*)**
%kn=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%km,align 8
%ko=bitcast i8*%kk to i8**
%kp=load i8*,i8**%ko,align 8
store i8*%kp,i8**%f,align 8
%kq=getelementptr inbounds i8*,i8**%kj,i64 1
%kr=bitcast i8**%kq to i32*
%ks=load i32,i32*%kr,align 4
%kt=icmp eq i32%ks,0
br i1%kt,label%ky,label%ku
ku:
store i8*null,i8**%e,align 8
%kv=getelementptr inbounds i8,i8*%j9,i64%bC
%kw=bitcast i8*%kv to i8**
%kx=load i8*,i8**%kw,align 8
br label%kJ
ky:
%kz=bitcast i8**%kj to i8*
%kA=getelementptr inbounds i8,i8*%kz,i64 12
%kB=bitcast i8*%kA to i32*
%kC=load i32,i32*%kB,align 4
%kD=call i8*@sml_alloc(i32 inreg%kC)#0
%kE=getelementptr inbounds i8,i8*%kD,i64 -4
%kF=bitcast i8*%kE to i32*
store i32%kC,i32*%kF,align 4
%kG=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%kH=getelementptr inbounds i8,i8*%kG,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%kD,i8*%kH,i32%kC,i1 false)
%kI=load i8*,i8**%f,align 8
br label%kJ
kJ:
%kK=phi i8*[%kp,%ku],[%kI,%ky]
%kL=phi i8*[%kx,%ku],[%kD,%ky]
store i8*null,i8**%f,align 8
%kM=call fastcc i8*%kn(i8*inreg%kK,i8*inreg%kL)
%kN=icmp eq i8*%kM,null
br i1%kN,label%qn,label%kO
kO:
%kP=bitcast i8*%kM to i8**
%kQ=load i8*,i8**%kP,align 8
store i8*%kQ,i8**%e,align 8
%kR=load i8,i8*%kQ,align 1
%kS=load i8*,i8**%g,align 8
%kT=getelementptr inbounds i8,i8*%kS,i64 8
%kU=bitcast i8*%kT to i32*
%kV=load i32,i32*%kU,align 4
%kW=icmp eq i32%kV,0
br i1%kW,label%k1,label%kX
kX:
store i8*null,i8**%e,align 8
%kY=getelementptr inbounds i8,i8*%kQ,i64%bC
%kZ=bitcast i8*%kY to i8**
%k0=load i8*,i8**%kZ,align 8
br label%la
k1:
%k2=getelementptr inbounds i8,i8*%kS,i64 12
%k3=bitcast i8*%k2 to i32*
%k4=load i32,i32*%k3,align 4
%k5=call i8*@sml_alloc(i32 inreg%k4)#0
%k6=getelementptr inbounds i8,i8*%k5,i64 -4
%k7=bitcast i8*%k6 to i32*
store i32%k4,i32*%k7,align 4
%k8=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%k9=getelementptr inbounds i8,i8*%k8,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%k5,i8*%k9,i32%k4,i1 false)
br label%la
la:
%lb=phi i8*[%k5,%k1],[%k0,%kX]
store i8*%lb,i8**%e,align 8
%lc=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%kR)
%ld=load i8*,i8**%g,align 8
%le=getelementptr inbounds i8,i8*%ld,i64 12
%lf=bitcast i8*%le to i32*
%lg=load i32,i32*%lf,align 4
%lh=getelementptr inbounds i8,i8*%ld,i64 8
%li=bitcast i8*%lh to i32*
%lj=load i32,i32*%li,align 4
%lk=call i8*@sml_alloc(i32 inreg%D)#0
%ll=getelementptr inbounds i8,i8*%lk,i64 -4
%lm=bitcast i8*%ll to i32*
store i32%bN,i32*%lm,align 4
store i8*%lk,i8**%f,align 8
call void@llvm.memset.p0i8.i32(i8*%lk,i8 0,i32%D,i1 false)
store i8%lc,i8*%lk,align 1
%ln=icmp eq i32%lj,0
%lo=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%lp=getelementptr inbounds i8,i8*%lk,i64%bC
br i1%ln,label%lq,label%lr
lq:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%lp,i8*%lo,i32%lg,i1 false)
br label%lt
lr:
%ls=bitcast i8*%lp to i8**
store i8*%lo,i8**%ls,align 8
br label%lt
lt:
%lu=getelementptr inbounds i8,i8*%lk,i64%bX
%lv=bitcast i8*%lu to i32*
store i32%C,i32*%lv,align 4
%lw=call i8*@sml_alloc(i32 inreg 12)#0
%lx=getelementptr inbounds i8,i8*%lw,i64 -4
%ly=bitcast i8*%lx to i32*
store i32 1342177288,i32*%ly,align 4
%lz=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%lA=bitcast i8*%lw to i8**
store i8*%lz,i8**%lA,align 8
%lB=getelementptr inbounds i8,i8*%lw,i64 8
%lC=bitcast i8*%lB to i32*
store i32 1,i32*%lC,align 4
%lD=icmp eq i8*%lw,null
br i1%lD,label%qn,label%lE
lE:
store i8*%lz,i8**%e,align 8
%lF=load i8,i8*%lz,align 1
%lG=icmp eq i8%lF,110
br i1%lG,label%lI,label%lH
lH:
store i8*null,i8**%e,align 8
br label%qn
lI:
%lJ=load i8**,i8***%W,align 8
%lK=load i8*,i8**%lJ,align 8
%lL=getelementptr inbounds i8,i8*%lK,i64 16
%lM=bitcast i8*%lL to i8*(i8*,i8*)**
%lN=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%lM,align 8
%lO=bitcast i8*%lK to i8**
%lP=load i8*,i8**%lO,align 8
store i8*%lP,i8**%f,align 8
%lQ=getelementptr inbounds i8*,i8**%lJ,i64 1
%lR=bitcast i8**%lQ to i32*
%lS=load i32,i32*%lR,align 4
%lT=icmp eq i32%lS,0
br i1%lT,label%lY,label%lU
lU:
store i8*null,i8**%e,align 8
%lV=getelementptr inbounds i8,i8*%lz,i64%bC
%lW=bitcast i8*%lV to i8**
%lX=load i8*,i8**%lW,align 8
br label%l9
lY:
%lZ=bitcast i8**%lJ to i8*
%l0=getelementptr inbounds i8,i8*%lZ,i64 12
%l1=bitcast i8*%l0 to i32*
%l2=load i32,i32*%l1,align 4
%l3=call i8*@sml_alloc(i32 inreg%l2)#0
%l4=getelementptr inbounds i8,i8*%l3,i64 -4
%l5=bitcast i8*%l4 to i32*
store i32%l2,i32*%l5,align 4
%l6=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%l7=getelementptr inbounds i8,i8*%l6,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%l3,i8*%l7,i32%l2,i1 false)
%l8=load i8*,i8**%f,align 8
br label%l9
l9:
%ma=phi i8*[%lP,%lU],[%l8,%lY]
%mb=phi i8*[%lX,%lU],[%l3,%lY]
store i8*null,i8**%f,align 8
%mc=call fastcc i8*%lN(i8*inreg%ma,i8*inreg%mb)
%md=icmp eq i8*%mc,null
br i1%md,label%ql,label%me
me:
%mf=bitcast i8*%mc to i8**
%mg=load i8*,i8**%mf,align 8
store i8*%mg,i8**%e,align 8
%mh=load i8,i8*%mg,align 1
%mi=load i8*,i8**%g,align 8
%mj=getelementptr inbounds i8,i8*%mi,i64 8
%mk=bitcast i8*%mj to i32*
%ml=load i32,i32*%mk,align 4
%mm=icmp eq i32%ml,0
br i1%mm,label%mr,label%mn
mn:
store i8*null,i8**%e,align 8
%mo=getelementptr inbounds i8,i8*%mg,i64%bC
%mp=bitcast i8*%mo to i8**
%mq=load i8*,i8**%mp,align 8
br label%mA
mr:
%ms=getelementptr inbounds i8,i8*%mi,i64 12
%mt=bitcast i8*%ms to i32*
%mu=load i32,i32*%mt,align 4
%mv=call i8*@sml_alloc(i32 inreg%mu)#0
%mw=getelementptr inbounds i8,i8*%mv,i64 -4
%mx=bitcast i8*%mw to i32*
store i32%mu,i32*%mx,align 4
%my=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%mz=getelementptr inbounds i8,i8*%my,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%mv,i8*%mz,i32%mu,i1 false)
br label%mA
mA:
%mB=phi i8*[%mv,%mr],[%mq,%mn]
store i8*%mB,i8**%e,align 8
%mC=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%mh)
%mD=load i8*,i8**%g,align 8
%mE=getelementptr inbounds i8,i8*%mD,i64 12
%mF=bitcast i8*%mE to i32*
%mG=load i32,i32*%mF,align 4
%mH=getelementptr inbounds i8,i8*%mD,i64 8
%mI=bitcast i8*%mH to i32*
%mJ=load i32,i32*%mI,align 4
%mK=call i8*@sml_alloc(i32 inreg%D)#0
%mL=getelementptr inbounds i8,i8*%mK,i64 -4
%mM=bitcast i8*%mL to i32*
store i32%bN,i32*%mM,align 4
store i8*%mK,i8**%f,align 8
call void@llvm.memset.p0i8.i32(i8*%mK,i8 0,i32%D,i1 false)
store i8%mC,i8*%mK,align 1
%mN=icmp eq i32%mJ,0
%mO=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%mP=getelementptr inbounds i8,i8*%mK,i64%bC
br i1%mN,label%mQ,label%mR
mQ:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%mP,i8*%mO,i32%mG,i1 false)
br label%mT
mR:
%mS=bitcast i8*%mP to i8**
store i8*%mO,i8**%mS,align 8
br label%mT
mT:
%mU=getelementptr inbounds i8,i8*%mK,i64%bX
%mV=bitcast i8*%mU to i32*
store i32%C,i32*%mV,align 4
%mW=call i8*@sml_alloc(i32 inreg 12)#0
%mX=getelementptr inbounds i8,i8*%mW,i64 -4
%mY=bitcast i8*%mX to i32*
store i32 1342177288,i32*%mY,align 4
%mZ=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%m0=bitcast i8*%mW to i8**
store i8*%mZ,i8**%m0,align 8
%m1=getelementptr inbounds i8,i8*%mW,i64 8
%m2=bitcast i8*%m1 to i32*
store i32 1,i32*%m2,align 4
%m3=icmp eq i8*%mW,null
br i1%m3,label%ql,label%m4
m4:
store i8*%mZ,i8**%e,align 8
%m5=load i8,i8*%mZ,align 1
%m6=icmp eq i8%m5,105
br i1%m6,label%m8,label%m7
m7:
store i8*null,i8**%e,align 8
br label%ql
m8:
%m9=load i8**,i8***%W,align 8
%na=load i8*,i8**%m9,align 8
%nb=getelementptr inbounds i8,i8*%na,i64 16
%nc=bitcast i8*%nb to i8*(i8*,i8*)**
%nd=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%nc,align 8
%ne=bitcast i8*%na to i8**
%nf=load i8*,i8**%ne,align 8
store i8*%nf,i8**%f,align 8
%ng=getelementptr inbounds i8*,i8**%m9,i64 1
%nh=bitcast i8**%ng to i32*
%ni=load i32,i32*%nh,align 4
%nj=icmp eq i32%ni,0
br i1%nj,label%no,label%nk
nk:
store i8*null,i8**%e,align 8
%nl=getelementptr inbounds i8,i8*%mZ,i64%bC
%nm=bitcast i8*%nl to i8**
%nn=load i8*,i8**%nm,align 8
br label%nz
no:
%np=bitcast i8**%m9 to i8*
%nq=getelementptr inbounds i8,i8*%np,i64 12
%nr=bitcast i8*%nq to i32*
%ns=load i32,i32*%nr,align 4
%nt=call i8*@sml_alloc(i32 inreg%ns)#0
%nu=getelementptr inbounds i8,i8*%nt,i64 -4
%nv=bitcast i8*%nu to i32*
store i32%ns,i32*%nv,align 4
%nw=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%nx=getelementptr inbounds i8,i8*%nw,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%nt,i8*%nx,i32%ns,i1 false)
%ny=load i8*,i8**%f,align 8
br label%nz
nz:
%nA=phi i8*[%nf,%nk],[%ny,%no]
%nB=phi i8*[%nn,%nk],[%nt,%no]
store i8*null,i8**%f,align 8
%nC=call fastcc i8*%nd(i8*inreg%nA,i8*inreg%nB)
%nD=icmp eq i8*%nC,null
br i1%nD,label%qj,label%nE
nE:
%nF=bitcast i8*%nC to i8**
%nG=load i8*,i8**%nF,align 8
store i8*%nG,i8**%e,align 8
%nH=load i8,i8*%nG,align 1
%nI=load i8*,i8**%g,align 8
%nJ=getelementptr inbounds i8,i8*%nI,i64 8
%nK=bitcast i8*%nJ to i32*
%nL=load i32,i32*%nK,align 4
%nM=icmp eq i32%nL,0
br i1%nM,label%nR,label%nN
nN:
store i8*null,i8**%e,align 8
%nO=getelementptr inbounds i8,i8*%nG,i64%bC
%nP=bitcast i8*%nO to i8**
%nQ=load i8*,i8**%nP,align 8
br label%n0
nR:
%nS=getelementptr inbounds i8,i8*%nI,i64 12
%nT=bitcast i8*%nS to i32*
%nU=load i32,i32*%nT,align 4
%nV=call i8*@sml_alloc(i32 inreg%nU)#0
%nW=getelementptr inbounds i8,i8*%nV,i64 -4
%nX=bitcast i8*%nW to i32*
store i32%nU,i32*%nX,align 4
%nY=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%nZ=getelementptr inbounds i8,i8*%nY,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%nV,i8*%nZ,i32%nU,i1 false)
br label%n0
n0:
%n1=phi i8*[%nV,%nR],[%nQ,%nN]
store i8*%n1,i8**%e,align 8
%n2=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%nH)
%n3=load i8*,i8**%g,align 8
%n4=getelementptr inbounds i8,i8*%n3,i64 12
%n5=bitcast i8*%n4 to i32*
%n6=load i32,i32*%n5,align 4
%n7=getelementptr inbounds i8,i8*%n3,i64 8
%n8=bitcast i8*%n7 to i32*
%n9=load i32,i32*%n8,align 4
%oa=call i8*@sml_alloc(i32 inreg%D)#0
%ob=getelementptr inbounds i8,i8*%oa,i64 -4
%oc=bitcast i8*%ob to i32*
store i32%bN,i32*%oc,align 4
store i8*%oa,i8**%f,align 8
call void@llvm.memset.p0i8.i32(i8*%oa,i8 0,i32%D,i1 false)
store i8%n2,i8*%oa,align 1
%od=icmp eq i32%n9,0
%oe=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%of=getelementptr inbounds i8,i8*%oa,i64%bC
br i1%od,label%og,label%oh
og:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%of,i8*%oe,i32%n6,i1 false)
br label%oj
oh:
%oi=bitcast i8*%of to i8**
store i8*%oe,i8**%oi,align 8
br label%oj
oj:
%ok=getelementptr inbounds i8,i8*%oa,i64%bX
%ol=bitcast i8*%ok to i32*
store i32%C,i32*%ol,align 4
%om=call i8*@sml_alloc(i32 inreg 12)#0
%on=getelementptr inbounds i8,i8*%om,i64 -4
%oo=bitcast i8*%on to i32*
store i32 1342177288,i32*%oo,align 4
%op=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%oq=bitcast i8*%om to i8**
store i8*%op,i8**%oq,align 8
%or=getelementptr inbounds i8,i8*%om,i64 8
%os=bitcast i8*%or to i32*
store i32 1,i32*%os,align 4
%ot=icmp eq i8*%om,null
br i1%ot,label%qj,label%ou
ou:
store i8*%op,i8**%e,align 8
%ov=load i8,i8*%op,align 1
%ow=icmp eq i8%ov,116
br i1%ow,label%oy,label%ox
ox:
store i8*null,i8**%e,align 8
br label%qj
oy:
%oz=load i8**,i8***%W,align 8
%oA=load i8*,i8**%oz,align 8
%oB=getelementptr inbounds i8,i8*%oA,i64 16
%oC=bitcast i8*%oB to i8*(i8*,i8*)**
%oD=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%oC,align 8
%oE=bitcast i8*%oA to i8**
%oF=load i8*,i8**%oE,align 8
store i8*%oF,i8**%f,align 8
%oG=getelementptr inbounds i8*,i8**%oz,i64 1
%oH=bitcast i8**%oG to i32*
%oI=load i32,i32*%oH,align 4
%oJ=icmp eq i32%oI,0
br i1%oJ,label%oO,label%oK
oK:
store i8*null,i8**%e,align 8
%oL=getelementptr inbounds i8,i8*%op,i64%bC
%oM=bitcast i8*%oL to i8**
%oN=load i8*,i8**%oM,align 8
br label%oZ
oO:
%oP=bitcast i8**%oz to i8*
%oQ=getelementptr inbounds i8,i8*%oP,i64 12
%oR=bitcast i8*%oQ to i32*
%oS=load i32,i32*%oR,align 4
%oT=call i8*@sml_alloc(i32 inreg%oS)#0
%oU=getelementptr inbounds i8,i8*%oT,i64 -4
%oV=bitcast i8*%oU to i32*
store i32%oS,i32*%oV,align 4
%oW=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%oX=getelementptr inbounds i8,i8*%oW,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%oT,i8*%oX,i32%oS,i1 false)
%oY=load i8*,i8**%f,align 8
br label%oZ
oZ:
%o0=phi i8*[%oF,%oK],[%oY,%oO]
%o1=phi i8*[%oN,%oK],[%oT,%oO]
store i8*null,i8**%f,align 8
%o2=call fastcc i8*%oD(i8*inreg%o0,i8*inreg%o1)
%o3=icmp eq i8*%o2,null
br i1%o3,label%qh,label%o4
o4:
%o5=bitcast i8*%o2 to i8**
%o6=load i8*,i8**%o5,align 8
store i8*%o6,i8**%e,align 8
%o7=load i8,i8*%o6,align 1
%o8=load i8*,i8**%g,align 8
%o9=getelementptr inbounds i8,i8*%o8,i64 8
%pa=bitcast i8*%o9 to i32*
%pb=load i32,i32*%pa,align 4
%pc=icmp eq i32%pb,0
br i1%pc,label%ph,label%pd
pd:
store i8*null,i8**%e,align 8
%pe=getelementptr inbounds i8,i8*%o6,i64%bC
%pf=bitcast i8*%pe to i8**
%pg=load i8*,i8**%pf,align 8
br label%pq
ph:
%pi=getelementptr inbounds i8,i8*%o8,i64 12
%pj=bitcast i8*%pi to i32*
%pk=load i32,i32*%pj,align 4
%pl=call i8*@sml_alloc(i32 inreg%pk)#0
%pm=getelementptr inbounds i8,i8*%pl,i64 -4
%pn=bitcast i8*%pm to i32*
store i32%pk,i32*%pn,align 4
%po=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%pp=getelementptr inbounds i8,i8*%po,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%pl,i8*%pp,i32%pk,i1 false)
br label%pq
pq:
%pr=phi i8*[%pl,%ph],[%pg,%pd]
store i8*%pr,i8**%e,align 8
%ps=call fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%o7)
%pt=load i8*,i8**%g,align 8
%pu=getelementptr inbounds i8,i8*%pt,i64 12
%pv=bitcast i8*%pu to i32*
%pw=load i32,i32*%pv,align 4
%px=getelementptr inbounds i8,i8*%pt,i64 8
%py=bitcast i8*%px to i32*
%pz=load i32,i32*%py,align 4
%pA=call i8*@sml_alloc(i32 inreg%D)#0
%pB=getelementptr inbounds i8,i8*%pA,i64 -4
%pC=bitcast i8*%pB to i32*
store i32%bN,i32*%pC,align 4
store i8*%pA,i8**%f,align 8
call void@llvm.memset.p0i8.i32(i8*%pA,i8 0,i32%D,i1 false)
store i8%ps,i8*%pA,align 1
%pD=icmp eq i32%pz,0
%pE=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%pF=getelementptr inbounds i8,i8*%pA,i64%bC
br i1%pD,label%pG,label%pH
pG:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%pF,i8*%pE,i32%pw,i1 false)
br label%pJ
pH:
%pI=bitcast i8*%pF to i8**
store i8*%pE,i8**%pI,align 8
br label%pJ
pJ:
%pK=getelementptr inbounds i8,i8*%pA,i64%bX
%pL=bitcast i8*%pK to i32*
store i32%C,i32*%pL,align 4
%pM=call i8*@sml_alloc(i32 inreg 12)#0
%pN=getelementptr inbounds i8,i8*%pM,i64 -4
%pO=bitcast i8*%pN to i32*
store i32 1342177288,i32*%pO,align 4
%pP=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%pQ=bitcast i8*%pM to i8**
store i8*%pP,i8**%pQ,align 8
%pR=getelementptr inbounds i8,i8*%pM,i64 8
%pS=bitcast i8*%pR to i32*
store i32 1,i32*%pS,align 4
%pT=icmp eq i8*%pM,null
br i1%pT,label%qh,label%pU
pU:
store i8*%pP,i8**%e,align 8
%pV=load i8,i8*%pP,align 1
%pW=icmp eq i8%pV,121
br i1%pW,label%pY,label%pX
pX:
store i8*null,i8**%e,align 8
br label%qh
pY:
store i8*null,i8**%d,align 8
%pZ=load i8*,i8**%g,align 8
%p0=getelementptr inbounds i8,i8*%pZ,i64 8
%p1=bitcast i8*%p0 to i32*
%p2=load i32,i32*%p1,align 4
%p3=icmp eq i32%p2,0
br i1%p3,label%p8,label%p4
p4:
store i8*null,i8**%e,align 8
%p5=getelementptr inbounds i8,i8*%pP,i64%bC
%p6=bitcast i8*%p5 to i8**
%p7=load i8*,i8**%p6,align 8
br label%qp
p8:
%p9=getelementptr inbounds i8,i8*%pZ,i64 12
%qa=bitcast i8*%p9 to i32*
%qb=load i32,i32*%qa,align 4
%qc=call i8*@sml_alloc(i32 inreg%qb)#0
%qd=getelementptr inbounds i8,i8*%qc,i64 -4
%qe=bitcast i8*%qd to i32*
store i32%qb,i32*%qe,align 4
%qf=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%qg=getelementptr inbounds i8,i8*%qf,i64%bC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%qc,i8*%qg,i32%qb,i1 false)
br label%qp
qh:
%qi=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%qp
qj:
%qk=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%qp
ql:
%qm=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%qp
qn:
%qo=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%qp
qp:
%qq=phi i8*[%qo,%qn],[%qm,%ql],[%qk,%qj],[%qi,%qh],[%p7,%p4],[%qc,%p8]
store i8*%qq,i8**%d,align 8
br label%qr
qr:
%qs=call i8*@sml_alloc(i32 inreg 28)#0
%qt=getelementptr inbounds i8,i8*%qs,i64 -4
%qu=bitcast i8*%qt to i32*
store i32 1342177304,i32*%qu,align 4
store i8*%qs,i8**%e,align 8
%qv=getelementptr inbounds i8,i8*%qs,i64 20
%qw=bitcast i8*%qv to i32*
call void@llvm.memset.p0i8.i64(i8*%qs,i8 0,i64 20,i1 false)
store i32%aF,i32*%qw,align 4
%qx=getelementptr inbounds i8,i8*%qs,i64 24
%qy=bitcast i8*%qx to i32*
store i32 2,i32*%qy,align 4
%qz=load i8*,i8**%g,align 8
%qA=getelementptr inbounds i8,i8*%qz,i64 12
%qB=bitcast i8*%qA to i32*
%qC=load i32,i32*%qB,align 4
%qD=getelementptr inbounds i8,i8*%qz,i64 8
%qE=bitcast i8*%qD to i32*
%qF=load i32,i32*%qE,align 4
%qG=call i8*@sml_alloc(i32 inreg%K)#0
%qH=or i32%G,1342177280
%qI=getelementptr inbounds i8,i8*%qG,i64 -4
%qJ=bitcast i8*%qI to i32*
store i32%qH,i32*%qJ,align 4
store i8*%qG,i8**%f,align 8
call void@llvm.memset.p0i8.i32(i8*%qG,i8 0,i32%K,i1 false)
%qK=load i8*,i8**%e,align 8
%qL=bitcast i8*%qG to i8**
store i8*null,i8**%e,align 8
store i8*%qK,i8**%qL,align 8
%qM=icmp eq i32%qF,0
%qN=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%qO=sext i32%E to i64
%qP=getelementptr inbounds i8,i8*%qG,i64%qO
br i1%qM,label%qQ,label%qR
qQ:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%qP,i8*%qN,i32%qC,i1 false)
br label%qT
qR:
%qS=bitcast i8*%qP to i8**
store i8*%qN,i8**%qS,align 8
br label%qT
qT:
%qU=sext i32%G to i64
%qV=getelementptr inbounds i8,i8*%qG,i64%qU
%qW=bitcast i8*%qV to i32*
store i32%J,i32*%qW,align 4
%qX=call i8*@sml_alloc(i32 inreg 12)#0
%qY=getelementptr inbounds i8,i8*%qX,i64 -4
%qZ=bitcast i8*%qY to i32*
store i32 1342177288,i32*%qZ,align 4
%q0=load i8*,i8**%f,align 8
br label%q1
q1:
%q2=phi i8*[%qX,%qT],[%fY,%fU]
%q3=phi i8*[%q0,%qT],[%f1,%fU]
store i8*null,i8**%f,align 8
%q4=bitcast i8*%q2 to i8**
store i8*%q3,i8**%q4,align 8
%q5=getelementptr inbounds i8,i8*%q2,i64 8
%q6=bitcast i8*%q5 to i32*
store i32 1,i32*%q6,align 4
%q7=icmp eq i8*%q2,null
br i1%q7,label%q8,label%zv
q8:
%q9=load i8*,i8**%g,align 8
%ra=getelementptr inbounds i8,i8*%q9,i64 8
%rb=bitcast i8*%ra to i32*
%rc=load i32,i32*%rb,align 4
%rd=getelementptr inbounds i8,i8*%q9,i64 12
%re=bitcast i8*%rd to i32*
%rf=load i32,i32*%re,align 4
%rg=call fastcc i8*@_SMLFN17SMLSharp__ScanChar12scanMantissaE(i32 inreg%rc,i32 inreg%rf)
%rh=getelementptr inbounds i8,i8*%rg,i64 16
%ri=bitcast i8*%rh to i8*(i8*,i8*)**
%rj=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ri,align 8
%rk=bitcast i8*%rg to i8**
%rl=load i8*,i8**%rk,align 8
%rm=load i8**,i8***%W,align 8
%rn=load i8*,i8**%rm,align 8
%ro=call fastcc i8*%rj(i8*inreg%rl,i8*inreg%rn)
%rp=getelementptr inbounds i8,i8*%ro,i64 16
%rq=bitcast i8*%rp to i8*(i8*,i8*)**
%rr=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%rq,align 8
%rs=bitcast i8*%ro to i8**
%rt=load i8*,i8**%rs,align 8
%ru=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%rv=call fastcc i8*%rr(i8*inreg%rt,i8*inreg%ru)
%rw=icmp eq i8*%rv,null
br i1%rw,label%rx,label%ry
rx:
ret i8*null
ry:
%rz=bitcast i8*%rv to i8**
%rA=load i8*,i8**%rz,align 8
store i8*%rA,i8**%c,align 8
%rB=bitcast i8*%rA to i8**
%rC=load i8*,i8**%rB,align 8
%rD=bitcast i8*%rC to i8**
%rE=load i8*,i8**%rD,align 8
store i8*%rE,i8**%d,align 8
%rF=getelementptr inbounds i8,i8*%rC,i64 8
%rG=bitcast i8*%rF to i8**
%rH=load i8*,i8**%rG,align 8
store i8*%rH,i8**%e,align 8
%rI=load i8*,i8**%g,align 8
%rJ=getelementptr inbounds i8,i8*%rI,i64 8
%rK=bitcast i8*%rJ to i32*
%rL=load i32,i32*%rK,align 4
%rM=icmp eq i32%rL,0
br i1%rM,label%rS,label%rN
rN:
store i8*null,i8**%c,align 8
%rO=sext i32%E to i64
%rP=getelementptr inbounds i8,i8*%rA,i64%rO
%rQ=bitcast i8*%rP to i8**
%rR=load i8*,i8**%rQ,align 8
br label%r6
rS:
%rT=getelementptr inbounds i8,i8*%rI,i64 12
%rU=bitcast i8*%rT to i32*
%rV=load i32,i32*%rU,align 4
%rW=call i8*@sml_alloc(i32 inreg%rV)#0
%rX=getelementptr inbounds i8,i8*%rW,i64 -4
%rY=bitcast i8*%rX to i32*
store i32%rV,i32*%rY,align 4
%rZ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%r0=sext i32%E to i64
%r1=getelementptr inbounds i8,i8*%rZ,i64%r0
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%rW,i8*%r1,i32%rV,i1 false)
%r2=load i8*,i8**%g,align 8
%r3=getelementptr inbounds i8,i8*%r2,i64 8
%r4=bitcast i8*%r3 to i32*
%r5=load i32,i32*%r4,align 4
br label%r6
r6:
%r7=phi i32[%r5,%rS],[%rL,%rN]
%r8=phi i8*[%r2,%rS],[%rI,%rN]
%r9=phi i8*[%rW,%rS],[%rR,%rN]
store i8*%r9,i8**%c,align 8
%sa=getelementptr inbounds i8,i8*%r8,i64 12
%sb=bitcast i8*%sa to i32*
%sc=load i32,i32*%sb,align 4
%sd=call fastcc i8*@_SMLFN17SMLSharp__ScanChar12scanExponentE(i32 inreg%r7,i32 inreg%sc)
%se=getelementptr inbounds i8,i8*%sd,i64 16
%sf=bitcast i8*%se to i8*(i8*,i8*)**
%sg=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%sf,align 8
%sh=bitcast i8*%sd to i8**
%si=load i8*,i8**%sh,align 8
%sj=load i8**,i8***%W,align 8
%sk=load i8*,i8**%sj,align 8
%sl=call fastcc i8*%sg(i8*inreg%si,i8*inreg%sk)
%sm=getelementptr inbounds i8,i8*%sl,i64 16
%sn=bitcast i8*%sm to i8*(i8*,i8*)**
%so=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%sn,align 8
%sp=bitcast i8*%sl to i8**
%sq=load i8*,i8**%sp,align 8
%sr=load i8*,i8**%c,align 8
%ss=call fastcc i8*%so(i8*inreg%sq,i8*inreg%sr)
%st=icmp eq i8*%ss,null
br i1%st,label%su,label%sO
su:
%sv=load i8*,i8**%g,align 8
%sw=getelementptr inbounds i8,i8*%sv,i64 12
%sx=bitcast i8*%sw to i32*
%sy=load i32,i32*%sx,align 4
%sz=getelementptr inbounds i8,i8*%sv,i64 8
%sA=bitcast i8*%sz to i32*
%sB=load i32,i32*%sA,align 4
%sC=call i8*@sml_alloc(i32 inreg%P)#0
%sD=or i32%M,1342177280
%sE=bitcast i8*%sC to i32*
%sF=getelementptr inbounds i8,i8*%sC,i64 -4
%sG=bitcast i8*%sF to i32*
store i32%sD,i32*%sG,align 4
call void@llvm.memset.p0i8.i32(i8*%sC,i8 0,i32%P,i1 false)
store i32 0,i32*%sE,align 4
%sH=icmp eq i32%sB,0
%sI=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%sJ=sext i32%t to i64
%sK=getelementptr inbounds i8,i8*%sC,i64%sJ
br i1%sH,label%sL,label%sM
sL:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%sK,i8*%sI,i32%sy,i1 false)
br label%vq
sM:
%sN=bitcast i8*%sK to i8**
store i8*%sI,i8**%sN,align 8
br label%vq
sO:
%sP=bitcast i8*%ss to i8**
%sQ=load i8*,i8**%sP,align 8
store i8*%sQ,i8**%c,align 8
%sR=bitcast i8*%sQ to i8**
%sS=load i8*,i8**%sR,align 8
store i8*%sS,i8**%f,align 8
%sT=load i8*,i8**%g,align 8
%sU=getelementptr inbounds i8,i8*%sT,i64 8
%sV=bitcast i8*%sU to i32*
%sW=load i32,i32*%sV,align 4
%sX=icmp eq i32%sW,0
br i1%sX,label%s3,label%sY
sY:
store i8*null,i8**%c,align 8
%sZ=sext i32%E to i64
%s0=getelementptr inbounds i8,i8*%sQ,i64%sZ
%s1=bitcast i8*%s0 to i8**
%s2=load i8*,i8**%s1,align 8
br label%te
s3:
%s4=getelementptr inbounds i8,i8*%sT,i64 12
%s5=bitcast i8*%s4 to i32*
%s6=load i32,i32*%s5,align 4
%s7=call i8*@sml_alloc(i32 inreg%s6)#0
%s8=getelementptr inbounds i8,i8*%s7,i64 -4
%s9=bitcast i8*%s8 to i32*
store i32%s6,i32*%s9,align 4
%ta=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%tb=sext i32%E to i64
%tc=getelementptr inbounds i8,i8*%ta,i64%tb
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%s7,i8*%tc,i32%s6,i1 false)
%td=load i8*,i8**%f,align 8
br label%te
te:
%tf=phi i8*[%td,%s3],[%sS,%sY]
%tg=phi i8*[%s7,%s3],[%s2,%sY]
store i8*%tg,i8**%c,align 8
%th=bitcast i8*%tf to i32*
%ti=load i32,i32*%th,align 4
store i8*null,i8**%f,align 8
%tj=getelementptr inbounds i8,i8*%tf,i64 8
%tk=bitcast i8*%tj to i8**
%tl=load i8*,i8**%tk,align 8
%tm=icmp eq i32%ti,0
br i1%tm,label%ue,label%tn
tn:
%to=phi i32[%tV,%tO],[0,%te]
%tp=phi i8*[%tR,%tO],[%tl,%te]
%tq=icmp eq i8*%tp,null
br i1%tq,label%u5,label%tr
tr:
%ts=bitcast i8*%tp to i32*
%tt=load i32,i32*%ts,align 4
%tu=call{i32,i1}@llvm.smul.with.overflow.i32(i32%to,i32 10)#0
%tv=extractvalue{i32,i1}%tu,1
br i1%tv,label%tw,label%tO
tw:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
%tx=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%tx,i8**%c,align 8
%ty=call i8*@sml_alloc(i32 inreg 20)#0
%tz=getelementptr inbounds i8,i8*%ty,i64 -4
%tA=bitcast i8*%tz to i32*
store i32 1342177296,i32*%tA,align 4
store i8*%ty,i8**%d,align 8
%tB=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%tC=bitcast i8*%ty to i8**
store i8*%tB,i8**%tC,align 8
%tD=getelementptr inbounds i8,i8*%ty,i64 8
%tE=bitcast i8*%tD to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@t,i64 0,i32 2,i64 0),i8**%tE,align 8
%tF=getelementptr inbounds i8,i8*%ty,i64 16
%tG=bitcast i8*%tF to i32*
store i32 3,i32*%tG,align 4
%tH=call i8*@sml_alloc(i32 inreg 60)#0
%tI=getelementptr inbounds i8,i8*%tH,i64 -4
%tJ=bitcast i8*%tI to i32*
store i32 1342177336,i32*%tJ,align 4
%tK=getelementptr inbounds i8,i8*%tH,i64 56
%tL=bitcast i8*%tK to i32*
store i32 1,i32*%tL,align 4
%tM=load i8*,i8**%d,align 8
%tN=bitcast i8*%tH to i8**
store i8*%tM,i8**%tN,align 8
call void@sml_raise(i8*inreg%tH)#1
unreachable
tO:
%tP=getelementptr inbounds i8,i8*%tp,i64 8
%tQ=bitcast i8*%tP to i8**
%tR=load i8*,i8**%tQ,align 8
%tS=mul nsw i32%to,10
%tT=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%tS,i32%tt)#0
%tU=extractvalue{i32,i1}%tT,1
%tV=sub nsw i32%tS,%tt
br i1%tU,label%tW,label%tn
tW:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
%tX=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%tX,i8**%c,align 8
%tY=call i8*@sml_alloc(i32 inreg 20)#0
%tZ=getelementptr inbounds i8,i8*%tY,i64 -4
%t0=bitcast i8*%tZ to i32*
store i32 1342177296,i32*%t0,align 4
store i8*%tY,i8**%d,align 8
%t1=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%t2=bitcast i8*%tY to i8**
store i8*%t1,i8**%t2,align 8
%t3=getelementptr inbounds i8,i8*%tY,i64 8
%t4=bitcast i8*%t3 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@u,i64 0,i32 2,i64 0),i8**%t4,align 8
%t5=getelementptr inbounds i8,i8*%tY,i64 16
%t6=bitcast i8*%t5 to i32*
store i32 3,i32*%t6,align 4
%t7=call i8*@sml_alloc(i32 inreg 60)#0
%t8=getelementptr inbounds i8,i8*%t7,i64 -4
%t9=bitcast i8*%t8 to i32*
store i32 1342177336,i32*%t9,align 4
%ua=getelementptr inbounds i8,i8*%t7,i64 56
%ub=bitcast i8*%ua to i32*
store i32 1,i32*%ub,align 4
%uc=load i8*,i8**%d,align 8
%ud=bitcast i8*%t7 to i8**
store i8*%uc,i8**%ud,align 8
call void@sml_raise(i8*inreg%t7)#1
unreachable
ue:
%uf=phi i32[%uM,%uF],[0,%te]
%ug=phi i8*[%uI,%uF],[%tl,%te]
%uh=icmp eq i8*%ug,null
br i1%uh,label%u5,label%ui
ui:
%uj=bitcast i8*%ug to i32*
%uk=load i32,i32*%uj,align 4
%ul=call{i32,i1}@llvm.smul.with.overflow.i32(i32%uf,i32 10)#0
%um=extractvalue{i32,i1}%ul,1
br i1%um,label%un,label%uF
un:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
%uo=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%uo,i8**%c,align 8
%up=call i8*@sml_alloc(i32 inreg 20)#0
%uq=getelementptr inbounds i8,i8*%up,i64 -4
%ur=bitcast i8*%uq to i32*
store i32 1342177296,i32*%ur,align 4
store i8*%up,i8**%d,align 8
%us=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ut=bitcast i8*%up to i8**
store i8*%us,i8**%ut,align 8
%uu=getelementptr inbounds i8,i8*%up,i64 8
%uv=bitcast i8*%uu to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@r,i64 0,i32 2,i64 0),i8**%uv,align 8
%uw=getelementptr inbounds i8,i8*%up,i64 16
%ux=bitcast i8*%uw to i32*
store i32 3,i32*%ux,align 4
%uy=call i8*@sml_alloc(i32 inreg 60)#0
%uz=getelementptr inbounds i8,i8*%uy,i64 -4
%uA=bitcast i8*%uz to i32*
store i32 1342177336,i32*%uA,align 4
%uB=getelementptr inbounds i8,i8*%uy,i64 56
%uC=bitcast i8*%uB to i32*
store i32 1,i32*%uC,align 4
%uD=load i8*,i8**%d,align 8
%uE=bitcast i8*%uy to i8**
store i8*%uD,i8**%uE,align 8
call void@sml_raise(i8*inreg%uy)#1
unreachable
uF:
%uG=getelementptr inbounds i8,i8*%ug,i64 8
%uH=bitcast i8*%uG to i8**
%uI=load i8*,i8**%uH,align 8
%uJ=mul nsw i32%uf,10
%uK=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%uJ,i32%uk)#0
%uL=extractvalue{i32,i1}%uK,1
%uM=add nsw i32%uk,%uJ
br i1%uL,label%uN,label%ue
uN:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
%uO=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%uO,i8**%c,align 8
%uP=call i8*@sml_alloc(i32 inreg 20)#0
%uQ=getelementptr inbounds i8,i8*%uP,i64 -4
%uR=bitcast i8*%uQ to i32*
store i32 1342177296,i32*%uR,align 4
store i8*%uP,i8**%d,align 8
%uS=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%uT=bitcast i8*%uP to i8**
store i8*%uS,i8**%uT,align 8
%uU=getelementptr inbounds i8,i8*%uP,i64 8
%uV=bitcast i8*%uU to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[41x i8]}>,<{[4x i8],i32,[41x i8]}>*@s,i64 0,i32 2,i64 0),i8**%uV,align 8
%uW=getelementptr inbounds i8,i8*%uP,i64 16
%uX=bitcast i8*%uW to i32*
store i32 3,i32*%uX,align 4
%uY=call i8*@sml_alloc(i32 inreg 60)#0
%uZ=getelementptr inbounds i8,i8*%uY,i64 -4
%u0=bitcast i8*%uZ to i32*
store i32 1342177336,i32*%u0,align 4
%u1=getelementptr inbounds i8,i8*%uY,i64 56
%u2=bitcast i8*%u1 to i32*
store i32 1,i32*%u2,align 4
%u3=load i8*,i8**%d,align 8
%u4=bitcast i8*%uY to i8**
store i8*%u3,i8**%u4,align 8
call void@sml_raise(i8*inreg%uY)#1
unreachable
u5:
%u6=phi i32[%uf,%ue],[%to,%tn]
%u7=load i8*,i8**%g,align 8
%u8=getelementptr inbounds i8,i8*%u7,i64 12
%u9=bitcast i8*%u8 to i32*
%va=load i32,i32*%u9,align 4
%vb=getelementptr inbounds i8,i8*%u7,i64 8
%vc=bitcast i8*%vb to i32*
%vd=load i32,i32*%vc,align 4
%ve=call i8*@sml_alloc(i32 inreg%P)#0
%vf=or i32%M,1342177280
%vg=bitcast i8*%ve to i32*
%vh=getelementptr inbounds i8,i8*%ve,i64 -4
%vi=bitcast i8*%vh to i32*
store i32%vf,i32*%vi,align 4
call void@llvm.memset.p0i8.i32(i8*%ve,i8 0,i32%P,i1 false)
store i32%u6,i32*%vg,align 4
%vj=icmp eq i32%vd,0
%vk=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%vl=sext i32%t to i64
%vm=getelementptr inbounds i8,i8*%ve,i64%vl
br i1%vj,label%vn,label%vo
vn:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%vm,i8*%vk,i32%va,i1 false)
br label%vq
vo:
%vp=bitcast i8*%vm to i8**
store i8*%vk,i8**%vp,align 8
br label%vq
vq:
%vr=phi i8*[%sC,%sM],[%sC,%sL],[%ve,%vo],[%ve,%vn]
%vs=phi i32*[%sE,%sM],[%sE,%sL],[%vg,%vo],[%vg,%vn]
%vt=sext i32%M to i64
%vu=getelementptr inbounds i8,i8*%vr,i64%vt
%vv=bitcast i8*%vu to i32*
store i32%O,i32*%vv,align 4
store i8*%vr,i8**%c,align 8
%vw=load i32,i32*%vs,align 4
%vx=load i8*,i8**%g,align 8
%vy=getelementptr inbounds i8,i8*%vx,i64 8
%vz=bitcast i8*%vy to i32*
%vA=load i32,i32*%vz,align 4
%vB=icmp eq i32%vA,0
br i1%vB,label%vH,label%vC
vC:
store i8*null,i8**%c,align 8
%vD=sext i32%t to i64
%vE=getelementptr inbounds i8,i8*%vr,i64%vD
%vF=bitcast i8*%vE to i8**
%vG=load i8*,i8**%vF,align 8
br label%vR
vH:
%vI=getelementptr inbounds i8,i8*%vx,i64 12
%vJ=bitcast i8*%vI to i32*
%vK=load i32,i32*%vJ,align 4
%vL=call i8*@sml_alloc(i32 inreg%vK)#0
%vM=getelementptr inbounds i8,i8*%vL,i64 -4
%vN=bitcast i8*%vM to i32*
store i32%vK,i32*%vN,align 4
%vO=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%vP=sext i32%t to i64
%vQ=getelementptr inbounds i8,i8*%vO,i64%vP
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%vL,i8*%vQ,i32%vK,i1 false)
br label%vR
vR:
%vS=phi i8*[%vL,%vH],[%vG,%vC]
store i8*%vS,i8**%c,align 8
%vT=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%vU
vU:
%vV=phi i8*[%vT,%vR],[%v4,%v1]
%vW=icmp eq i8*%vV,null
br i1%vW,label%v5,label%vX
vX:
%vY=bitcast i8*%vV to i32*
%vZ=load i32,i32*%vY,align 4
%v0=icmp eq i32%vZ,0
br i1%v0,label%v1,label%v5
v1:
%v2=getelementptr inbounds i8,i8*%vV,i64 8
%v3=bitcast i8*%v2 to i8**
%v4=load i8*,i8**%v3,align 8
br label%vU
v5:
store i8*%vV,i8**%d,align 8
%v6=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%v7=call fastcc i8*@_SMLLLN8IEEEReal20removeTrailingZeroesE_129(i8*inreg%v6)
store i8*%v7,i8**%e,align 8
%v8=load i8*,i8**%d,align 8
%v9=icmp eq i8*%v8,null
br i1%v9,label%wa,label%yg
wa:
store i8*null,i8**%d,align 8
%wb=icmp eq i8*%v7,null
br i1%wb,label%wc,label%wW
wc:
store i8*null,i8**%e,align 8
%wd=call i8*@sml_alloc(i32 inreg 28)#0
%we=getelementptr inbounds i8,i8*%wd,i64 -4
%wf=bitcast i8*%we to i32*
store i32 1342177304,i32*%wf,align 4
store i8*%wd,i8**%d,align 8
%wg=getelementptr inbounds i8,i8*%wd,i64 4
%wh=bitcast i8*%wg to i32*
store i32 0,i32*%wh,align 1
%wi=bitcast i8*%wd to i32*
store i32 4,i32*%wi,align 4
%wj=getelementptr inbounds i8,i8*%wd,i64 8
%wk=bitcast i8*%wj to i8**
store i8*null,i8**%wk,align 8
%wl=getelementptr inbounds i8,i8*%wd,i64 16
%wm=bitcast i8*%wl to i32*
store i32 0,i32*%wm,align 4
%wn=getelementptr inbounds i8,i8*%wd,i64 20
%wo=bitcast i8*%wn to i32*
store i32%aF,i32*%wo,align 4
%wp=getelementptr inbounds i8,i8*%wd,i64 24
%wq=bitcast i8*%wp to i32*
store i32 2,i32*%wq,align 4
%wr=load i8*,i8**%g,align 8
%ws=getelementptr inbounds i8,i8*%wr,i64 12
%wt=bitcast i8*%ws to i32*
%wu=load i32,i32*%wt,align 4
store i8*null,i8**%g,align 8
%wv=getelementptr inbounds i8,i8*%wr,i64 8
%ww=bitcast i8*%wv to i32*
%wx=load i32,i32*%ww,align 4
%wy=call i8*@sml_alloc(i32 inreg%K)#0
%wz=or i32%G,1342177280
%wA=getelementptr inbounds i8,i8*%wy,i64 -4
%wB=bitcast i8*%wA to i32*
store i32%wz,i32*%wB,align 4
store i8*%wy,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%wy,i8 0,i32%K,i1 false)
%wC=load i8*,i8**%d,align 8
%wD=bitcast i8*%wy to i8**
store i8*null,i8**%d,align 8
store i8*%wC,i8**%wD,align 8
%wE=icmp eq i32%wx,0
%wF=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%wG=sext i32%E to i64
%wH=getelementptr inbounds i8,i8*%wy,i64%wG
br i1%wE,label%wI,label%wJ
wI:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%wH,i8*%wF,i32%wu,i1 false)
br label%wL
wJ:
%wK=bitcast i8*%wH to i8**
store i8*%wF,i8**%wK,align 8
br label%wL
wL:
%wM=sext i32%G to i64
%wN=getelementptr inbounds i8,i8*%wy,i64%wM
%wO=bitcast i8*%wN to i32*
store i32%J,i32*%wO,align 4
%wP=call i8*@sml_alloc(i32 inreg 12)#0
%wQ=getelementptr inbounds i8,i8*%wP,i64 -4
%wR=bitcast i8*%wQ to i32*
store i32 1342177288,i32*%wR,align 4
%wS=load i8*,i8**%e,align 8
%wT=bitcast i8*%wP to i8**
store i8*%wS,i8**%wT,align 8
%wU=getelementptr inbounds i8,i8*%wP,i64 8
%wV=bitcast i8*%wU to i32*
store i32 1,i32*%wV,align 4
ret i8*%wP
wW:
%wX=call fastcc i8*@_SMLFN4List6lengthE(i32 inreg 0,i32 inreg 4)
%wY=getelementptr inbounds i8,i8*%wX,i64 16
%wZ=bitcast i8*%wY to i8*(i8*,i8*)**
%w0=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%wZ,align 8
%w1=bitcast i8*%wX to i8**
%w2=load i8*,i8**%w1,align 8
%w3=load i8*,i8**%e,align 8
%w4=call fastcc i8*%w0(i8*inreg%w2,i8*inreg%w3)
%w5=bitcast i8*%w4 to i32*
%w6=load i32,i32*%w5,align 4
%w7=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
br label%w8
w8:
%w9=phi i8*[%w7,%wW],[%xi,%xf]
%xa=icmp eq i8*%w9,null
br i1%xa,label%xj,label%xb
xb:
%xc=bitcast i8*%w9 to i32*
%xd=load i32,i32*%xc,align 4
%xe=icmp eq i32%xd,0
br i1%xe,label%xf,label%xj
xf:
%xg=getelementptr inbounds i8,i8*%w9,i64 8
%xh=bitcast i8*%xg to i8**
%xi=load i8*,i8**%xh,align 8
br label%w8
xj:
store i8*%w9,i8**%d,align 8
%xk=call fastcc i8*@_SMLFN4List6lengthE(i32 inreg 0,i32 inreg 4)
%xl=getelementptr inbounds i8,i8*%xk,i64 16
%xm=bitcast i8*%xl to i8*(i8*,i8*)**
%xn=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%xm,align 8
%xo=bitcast i8*%xk to i8**
%xp=load i8*,i8**%xo,align 8
%xq=load i8*,i8**%d,align 8
%xr=call fastcc i8*%xn(i8*inreg%xp,i8*inreg%xq)
%xs=bitcast i8*%xr to i32*
%xt=load i32,i32*%xs,align 4
%xu=sub i32%vw,%w6
%xv=add i32%xu,%xt
%xw=call i8*@sml_alloc(i32 inreg 28)#0
%xx=getelementptr inbounds i8,i8*%xw,i64 -4
%xy=bitcast i8*%xx to i32*
store i32 1342177304,i32*%xy,align 4
store i8*%xw,i8**%e,align 8
%xz=getelementptr inbounds i8,i8*%xw,i64 4
%xA=bitcast i8*%xz to i32*
store i32 0,i32*%xA,align 1
%xB=bitcast i8*%xw to i32*
store i32 2,i32*%xB,align 4
%xC=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%xD=getelementptr inbounds i8,i8*%xw,i64 8
%xE=bitcast i8*%xD to i8**
store i8*%xC,i8**%xE,align 8
%xF=getelementptr inbounds i8,i8*%xw,i64 16
%xG=bitcast i8*%xF to i32*
store i32%xv,i32*%xG,align 4
%xH=getelementptr inbounds i8,i8*%xw,i64 20
%xI=bitcast i8*%xH to i32*
store i32%aF,i32*%xI,align 4
%xJ=getelementptr inbounds i8,i8*%xw,i64 24
%xK=bitcast i8*%xJ to i32*
store i32 2,i32*%xK,align 4
%xL=load i8*,i8**%g,align 8
%xM=getelementptr inbounds i8,i8*%xL,i64 12
%xN=bitcast i8*%xM to i32*
%xO=load i32,i32*%xN,align 4
store i8*null,i8**%g,align 8
%xP=getelementptr inbounds i8,i8*%xL,i64 8
%xQ=bitcast i8*%xP to i32*
%xR=load i32,i32*%xQ,align 4
%xS=call i8*@sml_alloc(i32 inreg%K)#0
%xT=or i32%G,1342177280
%xU=getelementptr inbounds i8,i8*%xS,i64 -4
%xV=bitcast i8*%xU to i32*
store i32%xT,i32*%xV,align 4
store i8*%xS,i8**%d,align 8
call void@llvm.memset.p0i8.i32(i8*%xS,i8 0,i32%K,i1 false)
%xW=load i8*,i8**%e,align 8
%xX=bitcast i8*%xS to i8**
store i8*null,i8**%e,align 8
store i8*%xW,i8**%xX,align 8
%xY=icmp eq i32%xR,0
%xZ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%x0=sext i32%E to i64
%x1=getelementptr inbounds i8,i8*%xS,i64%x0
br i1%xY,label%x2,label%x3
x2:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%x1,i8*%xZ,i32%xO,i1 false)
br label%x5
x3:
%x4=bitcast i8*%x1 to i8**
store i8*%xZ,i8**%x4,align 8
br label%x5
x5:
%x6=sext i32%G to i64
%x7=getelementptr inbounds i8,i8*%xS,i64%x6
%x8=bitcast i8*%x7 to i32*
store i32%J,i32*%x8,align 4
%x9=call i8*@sml_alloc(i32 inreg 12)#0
%ya=getelementptr inbounds i8,i8*%x9,i64 -4
%yb=bitcast i8*%ya to i32*
store i32 1342177288,i32*%yb,align 4
%yc=load i8*,i8**%d,align 8
%yd=bitcast i8*%x9 to i8**
store i8*%yc,i8**%yd,align 8
%ye=getelementptr inbounds i8,i8*%x9,i64 8
%yf=bitcast i8*%ye to i32*
store i32 1,i32*%yf,align 4
ret i8*%x9
yg:
%yh=call fastcc i8*@_SMLFN4List1_VE(i32 inreg 0,i32 inreg 4)
%yi=getelementptr inbounds i8,i8*%yh,i64 16
%yj=bitcast i8*%yi to i8*(i8*,i8*)**
%yk=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%yj,align 8
%yl=bitcast i8*%yh to i8**
%ym=load i8*,i8**%yl,align 8
store i8*%ym,i8**%f,align 8
%yn=call i8*@sml_alloc(i32 inreg 20)#0
%yo=getelementptr inbounds i8,i8*%yn,i64 -4
%yp=bitcast i8*%yo to i32*
store i32 1342177296,i32*%yp,align 4
%yq=load i8*,i8**%d,align 8
%yr=bitcast i8*%yn to i8**
store i8*%yq,i8**%yr,align 8
%ys=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%yt=getelementptr inbounds i8,i8*%yn,i64 8
%yu=bitcast i8*%yt to i8**
store i8*%ys,i8**%yu,align 8
%yv=getelementptr inbounds i8,i8*%yn,i64 16
%yw=bitcast i8*%yv to i32*
store i32 3,i32*%yw,align 4
%yx=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%yy=call fastcc i8*%yk(i8*inreg%yx,i8*inreg%yn)
%yz=call fastcc i8*@_SMLLLN8IEEEReal20removeTrailingZeroesE_129(i8*inreg%yy)
store i8*%yz,i8**%e,align 8
%yA=call fastcc i8*@_SMLFN4List6lengthE(i32 inreg 0,i32 inreg 4)
%yB=getelementptr inbounds i8,i8*%yA,i64 16
%yC=bitcast i8*%yB to i8*(i8*,i8*)**
%yD=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%yC,align 8
%yE=bitcast i8*%yA to i8**
%yF=load i8*,i8**%yE,align 8
%yG=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%yH=call fastcc i8*%yD(i8*inreg%yF,i8*inreg%yG)
%yI=bitcast i8*%yH to i32*
%yJ=load i32,i32*%yI,align 4
%yK=add nsw i32%yJ,%vw
%yL=call i8*@sml_alloc(i32 inreg 28)#0
%yM=getelementptr inbounds i8,i8*%yL,i64 -4
%yN=bitcast i8*%yM to i32*
store i32 1342177304,i32*%yN,align 4
store i8*%yL,i8**%d,align 8
%yO=getelementptr inbounds i8,i8*%yL,i64 4
%yP=bitcast i8*%yO to i32*
store i32 0,i32*%yP,align 1
%yQ=bitcast i8*%yL to i32*
store i32 2,i32*%yQ,align 4
%yR=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%yS=getelementptr inbounds i8,i8*%yL,i64 8
%yT=bitcast i8*%yS to i8**
store i8*%yR,i8**%yT,align 8
%yU=getelementptr inbounds i8,i8*%yL,i64 16
%yV=bitcast i8*%yU to i32*
store i32%yK,i32*%yV,align 4
%yW=getelementptr inbounds i8,i8*%yL,i64 20
%yX=bitcast i8*%yW to i32*
store i32%aF,i32*%yX,align 4
%yY=getelementptr inbounds i8,i8*%yL,i64 24
%yZ=bitcast i8*%yY to i32*
store i32 2,i32*%yZ,align 4
%y0=load i8*,i8**%g,align 8
%y1=getelementptr inbounds i8,i8*%y0,i64 12
%y2=bitcast i8*%y1 to i32*
%y3=load i32,i32*%y2,align 4
store i8*null,i8**%g,align 8
%y4=getelementptr inbounds i8,i8*%y0,i64 8
%y5=bitcast i8*%y4 to i32*
%y6=load i32,i32*%y5,align 4
%y7=call i8*@sml_alloc(i32 inreg%K)#0
%y8=or i32%G,1342177280
%y9=getelementptr inbounds i8,i8*%y7,i64 -4
%za=bitcast i8*%y9 to i32*
store i32%y8,i32*%za,align 4
store i8*%y7,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%y7,i8 0,i32%K,i1 false)
%zb=load i8*,i8**%d,align 8
%zc=bitcast i8*%y7 to i8**
store i8*null,i8**%d,align 8
store i8*%zb,i8**%zc,align 8
%zd=icmp eq i32%y6,0
%ze=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%zf=sext i32%E to i64
%zg=getelementptr inbounds i8,i8*%y7,i64%zf
br i1%zd,label%zh,label%zi
zh:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%zg,i8*%ze,i32%y3,i1 false)
br label%zk
zi:
%zj=bitcast i8*%zg to i8**
store i8*%ze,i8**%zj,align 8
br label%zk
zk:
%zl=sext i32%G to i64
%zm=getelementptr inbounds i8,i8*%y7,i64%zl
%zn=bitcast i8*%zm to i32*
store i32%J,i32*%zn,align 4
%zo=call i8*@sml_alloc(i32 inreg 12)#0
%zp=getelementptr inbounds i8,i8*%zo,i64 -4
%zq=bitcast i8*%zp to i32*
store i32 1342177288,i32*%zq,align 4
%zr=load i8*,i8**%e,align 8
%zs=bitcast i8*%zo to i8**
store i8*%zr,i8**%zs,align 8
%zt=getelementptr inbounds i8,i8*%zo,i64 8
%zu=bitcast i8*%zt to i32*
store i32 1,i32*%zu,align 4
ret i8*%zo
zv:
store i8*%q3,i8**%c,align 8
%zw=bitcast i8*%q3 to i8**
%zx=load i8*,i8**%zw,align 8
store i8*%zx,i8**%d,align 8
%zy=load i8*,i8**%g,align 8
%zz=getelementptr inbounds i8,i8*%zy,i64 8
%zA=bitcast i8*%zz to i32*
%zB=load i32,i32*%zA,align 4
%zC=icmp eq i32%zB,0
br i1%zC,label%zI,label%zD
zD:
store i8*null,i8**%c,align 8
%zE=sext i32%E to i64
%zF=getelementptr inbounds i8,i8*%q3,i64%zE
%zG=bitcast i8*%zF to i8**
%zH=load i8*,i8**%zG,align 8
br label%zW
zI:
%zJ=getelementptr inbounds i8,i8*%zy,i64 12
%zK=bitcast i8*%zJ to i32*
%zL=load i32,i32*%zK,align 4
%zM=call i8*@sml_alloc(i32 inreg%zL)#0
%zN=getelementptr inbounds i8,i8*%zM,i64 -4
%zO=bitcast i8*%zN to i32*
store i32%zL,i32*%zO,align 4
%zP=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%zQ=sext i32%E to i64
%zR=getelementptr inbounds i8,i8*%zP,i64%zQ
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%zM,i8*%zR,i32%zL,i1 false)
%zS=load i8*,i8**%g,align 8
%zT=getelementptr inbounds i8,i8*%zS,i64 8
%zU=bitcast i8*%zT to i32*
%zV=load i32,i32*%zU,align 4
br label%zW
zW:
%zX=phi i64[%zQ,%zI],[%zE,%zD]
%zY=phi i32[%zV,%zI],[%zB,%zD]
%zZ=phi i8*[%zS,%zI],[%zy,%zD]
%z0=phi i8*[%zM,%zI],[%zH,%zD]
store i8*%z0,i8**%c,align 8
%z1=getelementptr inbounds i8,i8*%zZ,i64 12
%z2=bitcast i8*%z1 to i32*
%z3=load i32,i32*%z2,align 4
store i8*null,i8**%g,align 8
%z4=call i8*@sml_alloc(i32 inreg%K)#0
%z5=or i32%G,1342177280
%z6=getelementptr inbounds i8,i8*%z4,i64 -4
%z7=bitcast i8*%z6 to i32*
store i32%z5,i32*%z7,align 4
store i8*%z4,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%z4,i8 0,i32%K,i1 false)
%z8=load i8*,i8**%d,align 8
%z9=bitcast i8*%z4 to i8**
store i8*null,i8**%d,align 8
store i8*%z8,i8**%z9,align 8
%Aa=icmp eq i32%zY,0
%Ab=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%Ac=getelementptr inbounds i8,i8*%z4,i64%zX
br i1%Aa,label%Ad,label%Ae
Ad:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%Ac,i8*%Ab,i32%z3,i1 false)
br label%Ag
Ae:
%Af=bitcast i8*%Ac to i8**
store i8*%Ab,i8**%Af,align 8
br label%Ag
Ag:
%Ah=sext i32%G to i64
%Ai=getelementptr inbounds i8,i8*%z4,i64%Ah
%Aj=bitcast i8*%Ai to i32*
store i32%J,i32*%Aj,align 4
%Ak=call i8*@sml_alloc(i32 inreg 12)#0
%Al=getelementptr inbounds i8,i8*%Ak,i64 -4
%Am=bitcast i8*%Al to i32*
store i32 1342177288,i32*%Am,align 4
%An=load i8*,i8**%e,align 8
%Ao=bitcast i8*%Ak to i8**
store i8*%An,i8**%Ao,align 8
%Ap=getelementptr inbounds i8,i8*%Ak,i64 8
%Aq=bitcast i8*%Ap to i32*
store i32 1,i32*%Aq,align 4
ret i8*%Ak
}
define internal fastcc i8*@_SMLLLN8IEEEReal4scanE_136(i32 inreg%a,i32 inreg%b,i8*inreg%c)unnamed_addr#4 gc"smlsharp"{
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%c,i8**%d,align 8
%f=call i8*@sml_alloc(i32 inreg 20)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 1342177296,i32*%h,align 4
store i8*%f,i8**%e,align 8
%i=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%j=bitcast i8*%f to i8**
store i8*%i,i8**%j,align 8
%k=getelementptr inbounds i8,i8*%f,i64 8
%l=bitcast i8*%k to i32*
store i32%a,i32*%l,align 4
%m=getelementptr inbounds i8,i8*%f,i64 12
%n=bitcast i8*%m to i32*
store i32%b,i32*%n,align 4
%o=getelementptr inbounds i8,i8*%f,i64 16
%p=bitcast i8*%o to i32*
store i32 1,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**%e,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*)*@_SMLLLN8IEEEReal4scanE_135 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*)*@_SMLLLN8IEEEReal4scanE_135 to void(...)*),void(...)**%y,align 8
%z=getelementptr inbounds i8,i8*%q,i64 24
%A=bitcast i8*%z to i32*
store i32 1,i32*%A,align 4
ret i8*%q
}
define internal fastcc i8*@_SMLLLN8IEEEReal10fromStringE_138(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
%j=tail call fastcc i8*@_SMLLLN8IEEEReal4scanE_136(i32 inreg 0,i32 inreg 4,i8*inreg%h)
ret i8*%j
}
define fastcc i8*@_SMLFN8IEEEReal10fromStringE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%f,label%e
e:
call void@sml_check(i32 inreg%c)
br label%f
f:
%g=call fastcc i8*@_SMLFN9StringCvt10scanStringE(i32 inreg 1,i32 inreg 8)
%h=getelementptr inbounds i8,i8*%g,i64 16
%i=bitcast i8*%h to i8*(i8*,i8*)**
%j=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%i,align 8
%k=bitcast i8*%g to i8**
%l=load i8*,i8**%k,align 8
%m=call fastcc i8*%j(i8*inreg%l,i8*inreg 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*))
%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**%b,align 8
%t=tail call fastcc i8*%p(i8*inreg%r,i8*inreg%s)
ret i8*%t
}
define internal fastcc i8*@_SMLLLN8IEEEReal4scanE_142(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=bitcast i8*%k to i32*
%o=load i32,i32*%n,align 4
%p=getelementptr inbounds i8,i8*%k,i64 4
%q=bitcast i8*%p to i32*
%r=load i32,i32*%q,align 4
%s=tail call fastcc i8*@_SMLLLN8IEEEReal4scanE_136(i32 inreg%o,i32 inreg%r,i8*inreg%m)
ret i8*%s
}
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*)*@_SMLLLN8IEEEReal4scanE_142 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*)*@_SMLLLN8IEEEReal4scanE_142 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*@_SMLLLN8IEEEReal15setRoundingModeE_145(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*@_SMLLLN8IEEEReal15getRoundingModeE_146(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*@_SMLLLN8IEEEReal8toStringE_147(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*@_SMLLLN8IEEEReal10fromStringE_150(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLLN8IEEEReal10fromStringE_138(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN8IEEEReal10fromStringE_151(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN8IEEEReal10fromStringE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN8IEEEReal4scanE_152(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
}
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
attributes#0={nounwind}
attributes#1={noreturn}
attributes#2={uwtable}
attributes#3={noreturn nounwind}
attributes#4={nounwind uwtable}
