@sml_check_flag=external local_unnamed_addr global i32
@_SMLZ3Chr=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[35x i8]}><{[4x i8]zeroinitializer,i32 -2147483613,[35x i8]c"src/basis/main/Char.sml:34.36(769)\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8(i8)*@_SMLFN4Char4succE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char4succE_221 to void(...)*),i32 -2147483647}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,[35x i8]}><{[4x i8]zeroinitializer,i32 -2147483613,[35x i8]c"src/basis/main/Char.sml:37.36(896)\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8(i8)*@_SMLFN4Char4predE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char4predE_222 to void(...)*),i32 -2147483647}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN4Char7compareE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7compareE_223 to void(...)*),i32 -2147483647}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN4Char8containsE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char8containsE_225 to void(...)*),i32 -2147483647}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN4Char11notContainsE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char11notContainsE_227 to void(...)*),i32 -2147483647}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isUpperE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isUpperE_228 to void(...)*),i32 -2147483647}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isLowerE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isLowerE_229 to void(...)*),i32 -2147483647}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isDigitE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isDigitE_230 to void(...)*),i32 -2147483647}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isAlphaE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isAlphaE_231 to void(...)*),i32 -2147483647}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char10isAlphaNumE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char10isAlphaNumE_232 to void(...)*),i32 -2147483647}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char10isHexDigitE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char10isHexDigitE_233 to void(...)*),i32 -2147483647}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isGraphE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isGraphE_234 to void(...)*),i32 -2147483647}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isPrintE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isPrintE_235 to void(...)*),i32 -2147483647}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isPunctE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isPunctE_236 to void(...)*),i32 -2147483647}>,align 8
@q=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isCntrlE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isCntrlE_237 to void(...)*),i32 -2147483647}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isSpaceE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isSpaceE_238 to void(...)*),i32 -2147483647}>,align 8
@s=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLFN4Char7isAsciiE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7isAsciiE_239 to void(...)*),i32 -2147483647}>,align 8
@t=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8(i8)*@_SMLFN4Char7toLowerE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7toLowerE_240 to void(...)*),i32 -2147483647}>,align 8
@u=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8(i8)*@_SMLFN4Char7toUpperE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char7toUpperE_241 to void(...)*),i32 -2147483647}>,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)*@_SMLFN4Char8toStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char8toStringE_242 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)*@_SMLFN4Char11toRawStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char11toRawStringE_243 to void(...)*),i32 -2147483647}>,align 8
@x=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5Ca\00"}>,align 8
@y=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5Cb\00"}>,align 8
@z=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5Ct\00"}>,align 8
@A=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5Cn\00"}>,align 8
@B=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5Cv\00"}>,align 8
@C=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5Cf\00"}>,align 8
@D=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5Cr\00"}>,align 8
@E=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5C\22\00"}>,align 8
@F=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5C'\00"}>,align 8
@G=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5C?\00"}>,align 8
@H=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5C\5C\00"}>,align 8
@I=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8)*@_SMLFN4Char9toCStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char9toCStringE_244 to void(...)*),i32 -2147483647}>,align 8
@J=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN4Char10fromStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char10fromStringE_245 to void(...)*),i32 -2147483647}>,align 8
@K=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN4Char11fromCStringE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char11fromCStringE_246 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN4Char7minCharE=local_unnamed_addr constant i8 0
@_SMLZN4Char7maxCharE=local_unnamed_addr constant i8 -1
@_SMLZN4Char6maxOrdE=local_unnamed_addr constant i32 255
@_SMLZN4Char4succE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@b,i64 0,i32 2)to i8*)
@_SMLZN4Char4predE=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*)
@_SMLZN4Char7compareE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@e,i64 0,i32 2)to i8*)
@_SMLZN4Char8containsE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@f,i64 0,i32 2)to i8*)
@_SMLZN4Char11notContainsE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@g,i64 0,i32 2)to i8*)
@_SMLZN4Char7isAsciiE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@s,i64 0,i32 2)to i8*)
@_SMLZN4Char7toLowerE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@t,i64 0,i32 2)to i8*)
@_SMLZN4Char7toUpperE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@u,i64 0,i32 2)to i8*)
@_SMLZN4Char7isAlphaE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@k,i64 0,i32 2)to i8*)
@_SMLZN4Char10isAlphaNumE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@l,i64 0,i32 2)to i8*)
@_SMLZN4Char7isCntrlE=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*)
@_SMLZN4Char7isDigitE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@j,i64 0,i32 2)to i8*)
@_SMLZN4Char7isGraphE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@n,i64 0,i32 2)to i8*)
@_SMLZN4Char10isHexDigitE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@m,i64 0,i32 2)to i8*)
@_SMLZN4Char7isLowerE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@i,i64 0,i32 2)to i8*)
@_SMLZN4Char7isPrintE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@o,i64 0,i32 2)to i8*)
@_SMLZN4Char7isSpaceE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@r,i64 0,i32 2)to i8*)
@_SMLZN4Char7isPunctE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@p,i64 0,i32 2)to i8*)
@_SMLZN4Char7isUpperE=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*)
@_SMLZN4Char8toStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@v,i64 0,i32 2)to i8*)
@_SMLZN4Char11toRawStringE=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*)
@_SMLZN4Char10fromStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@J,i64 0,i32 2)to i8*)
@_SMLZN4Char9toCStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@I,i64 0,i32 2)to i8*)
@_SMLZN4Char11fromCStringE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@K,i64 0,i32 2)to i8*)
@_SML_ftabce7036f3433e1102_Char=external global i8
@L=private unnamed_addr global i8 0
declare void@llvm.gcroot(i8**,i8*)#0
declare i8*@sml_alloc(i32 inreg)local_unnamed_addr#0
declare void@sml_check(i32 inreg)local_unnamed_addr
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare i8*@_SMLFN17SMLSharp__ScanChar8scanCharE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN17SMLSharp__ScanChar9scanCCharE(i32 inreg,i32 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_load5c37eb24573fc5f9_StringCvt(i8*)local_unnamed_addr
declare void@_SML_load4fb8d2c1f12728b2_SMLSharp_ScanChar(i8*)local_unnamed_addr
define private void@_SML_tabbce7036f3433e1102_Char()#3{
unreachable
}
define void@_SML_loadce7036f3433e1102_Char(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@L,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@L,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_gcroot(i8*%a,void()*@_SML_tabbce7036f3433e1102_Char,i8*@_SML_ftabce7036f3433e1102_Char,i8*null)#0
ret void
}
define void@_SML_maince7036f3433e1102_Char()local_unnamed_addr#2 gc"smlsharp"{
%a=load i8,i8*@L,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*@L,align 1
tail call void@_SML_main5c37eb24573fc5f9_StringCvt()#2
tail call void@_SML_main4fb8d2c1f12728b2_SMLSharp_ScanChar()#2
br label%d
}
define fastcc i8@_SMLFN4Char4succE(i8 inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=icmp eq i8%a,-1
br i1%d,label%e,label%w
e:
%f=load i8*,i8**@_SMLZ3Chr,align 8
store i8*%f,i8**%b,align 8
%g=call i8*@sml_alloc(i32 inreg 20)#0
%h=getelementptr inbounds i8,i8*%g,i64 -4
%i=bitcast i8*%h to i32*
store i32 1342177296,i32*%i,align 4
store i8*%g,i8**%c,align 8
%j=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%k=bitcast i8*%g to i8**
store i8*%j,i8**%k,align 8
%l=getelementptr inbounds i8,i8*%g,i64 8
%m=bitcast i8*%l to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[35x i8]}>,<{[4x i8],i32,[35x i8]}>*@a,i64 0,i32 2,i64 0),i8**%m,align 8
%n=getelementptr inbounds i8,i8*%g,i64 16
%o=bitcast i8*%n to i32*
store i32 3,i32*%o,align 4
%p=call i8*@sml_alloc(i32 inreg 60)#0
%q=getelementptr inbounds i8,i8*%p,i64 -4
%r=bitcast i8*%q to i32*
store i32 1342177336,i32*%r,align 4
%s=getelementptr inbounds i8,i8*%p,i64 56
%t=bitcast i8*%s to i32*
store i32 1,i32*%t,align 4
%u=load i8*,i8**%c,align 8
%v=bitcast i8*%p to i8**
store i8*%u,i8**%v,align 8
call void@sml_raise(i8*inreg%p)#1
unreachable
w:
%x=add i8%a,1
ret i8%x
}
define fastcc i8@_SMLFN4Char4predE(i8 inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=icmp eq i8%a,0
br i1%d,label%e,label%w
e:
%f=load i8*,i8**@_SMLZ3Chr,align 8
store i8*%f,i8**%b,align 8
%g=call i8*@sml_alloc(i32 inreg 20)#0
%h=getelementptr inbounds i8,i8*%g,i64 -4
%i=bitcast i8*%h to i32*
store i32 1342177296,i32*%i,align 4
store i8*%g,i8**%c,align 8
%j=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%k=bitcast i8*%g to i8**
store i8*%j,i8**%k,align 8
%l=getelementptr inbounds i8,i8*%g,i64 8
%m=bitcast i8*%l to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[35x i8]}>,<{[4x i8],i32,[35x i8]}>*@c,i64 0,i32 2,i64 0),i8**%m,align 8
%n=getelementptr inbounds i8,i8*%g,i64 16
%o=bitcast i8*%n to i32*
store i32 3,i32*%o,align 4
%p=call i8*@sml_alloc(i32 inreg 60)#0
%q=getelementptr inbounds i8,i8*%p,i64 -4
%r=bitcast i8*%q to i32*
store i32 1342177336,i32*%r,align 4
%s=getelementptr inbounds i8,i8*%p,i64 56
%t=bitcast i8*%s to i32*
store i32 1,i32*%t,align 4
%u=load i8*,i8**%c,align 8
%v=bitcast i8*%p to i8**
store i8*%u,i8**%v,align 8
call void@sml_raise(i8*inreg%p)#1
unreachable
w:
%x=add i8%a,-1
ret i8%x
}
define fastcc i32@_SMLFN4Char7compareE(i8*inreg%a)#4 gc"smlsharp"{
%b=load i8,i8*%a,align 1
%c=getelementptr inbounds i8,i8*%a,i64 1
%d=load i8,i8*%c,align 1
%e=icmp ult i8%b,%d
%f=icmp ne i8%b,%d
%g=zext i1%f to i32
%h=select i1%e,i32 2,i32%g
ret i32%h
}
define internal fastcc i32@_SMLLLN4Char8containsE_148(i8*inreg%a,i8 inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%c,align 8
%d=bitcast i8*%a to i32**
%e=load i32*,i32**%d,align 8
%f=getelementptr inbounds i32,i32*%e,i64 -1
%g=load i32,i32*%f,align 4
%h=and i32%g,268435455
%i=add nsw i32%h,-1
%j=bitcast i8**%c to i8***
br label%k
k:
%l=phi i32[0,%m],[%B,%u]
%n=load atomic i32,i32*@sml_check_flag unordered,align 4
%o=icmp eq i32%n,0
br i1%o,label%q,label%p
p:
call void@sml_check(i32 inreg%n)
br label%q
q:
%r=icmp slt i32%l,%i
br i1%r,label%u,label%s
s:
%t=phi i32[0,%q],[1,%u]
ret i32%t
u:
%v=load i8**,i8***%j,align 8
%w=load i8*,i8**%v,align 8
%x=zext i32%l to i64
%y=getelementptr inbounds i8,i8*%w,i64%x
%z=load i8,i8*%y,align 1
%A=icmp eq i8%z,%b
%B=add nuw nsw i32%l,1
br i1%A,label%s,label%k
}
define fastcc i8*@_SMLFN4Char8containsE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i32(i8*,i8)*@_SMLLLN4Char8containsE_148 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char8containsE_224 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i32@_SMLLLN4Char11notContainsE_151(i8*inreg%a,i8 inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%c,align 8
%d=bitcast i8*%a to i32**
%e=load i32*,i32**%d,align 8
%f=getelementptr inbounds i32,i32*%e,i64 -1
%g=load i32,i32*%f,align 4
%h=and i32%g,268435455
%i=add nsw i32%h,-1
%j=bitcast i8**%c to i8***
br label%k
k:
%l=phi i32[0,%m],[%z,%s]
%n=load atomic i32,i32*@sml_check_flag unordered,align 4
%o=icmp eq i32%n,0
br i1%o,label%q,label%p
p:
call void@sml_check(i32 inreg%n)
br label%q
q:
%r=icmp slt i32%l,%i
br i1%r,label%s,label%A
s:
%t=load i8**,i8***%j,align 8
%u=load i8*,i8**%t,align 8
%v=zext i32%l to i64
%w=getelementptr inbounds i8,i8*%u,i64%v
%x=load i8,i8*%w,align 1
%y=icmp eq i8%x,%b
%z=add nuw nsw i32%l,1
br i1%y,label%A,label%k
A:
%B=phi i32[1,%q],[0,%s]
ret i32%B
}
define fastcc i8*@_SMLFN4Char11notContainsE(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i32(i8*,i8)*@_SMLLLN4Char11notContainsE_151 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Char11notContainsE_226 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define fastcc i32@_SMLFN4Char7isUpperE(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp ult i8%a,65
br i1%b,label%f,label%c
c:
%d=icmp ult i8%a,91
%e=zext i1%d to i32
ret i32%e
f:
ret i32 0
}
define fastcc i32@_SMLFN4Char7isLowerE(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp ult i8%a,97
br i1%b,label%f,label%c
c:
%d=icmp ult i8%a,123
%e=zext i1%d to i32
ret i32%e
f:
ret i32 0
}
define fastcc i32@_SMLFN4Char7isDigitE(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp ult i8%a,48
br i1%b,label%f,label%c
c:
%d=icmp ult i8%a,58
%e=zext i1%d to i32
ret i32%e
f:
ret i32 0
}
define fastcc i32@_SMLFN4Char7isAlphaE(i8 inreg%a)#4 gc"smlsharp"{
f:
%b=add i8%a,-65
%c=icmp ugt i8%b,25
br i1%c,label%g,label%d
d:
%e=phi i32[1,%f],[0,%g]
ret i32%e
g:
%h=icmp ult i8%a,97
br i1%h,label%d,label%i
i:
%j=icmp ult i8%a,123
%k=zext i1%j to i32
ret i32%k
}
define fastcc i32@_SMLFN4Char10isAlphaNumE(i8 inreg%a)#4 gc"smlsharp"{
i:
%b=add i8%a,-65
%c=icmp ugt i8%b,25
%d=add i8%a,-97
%e=icmp ugt i8%d,25
%f=and i1%c,%e
br i1%f,label%j,label%g
g:
%h=phi i32[1,%i],[0,%j]
ret i32%h
j:
%k=icmp ult i8%a,48
br i1%k,label%g,label%l
l:
%m=icmp ult i8%a,58
%n=zext i1%m to i32
ret i32%n
}
define fastcc i32@_SMLFN4Char10isHexDigitE(i8 inreg%a)#4 gc"smlsharp"{
i:
%b=add i8%a,-48
%c=icmp ugt i8%b,9
%d=add i8%a,-97
%e=icmp ugt i8%d,5
%f=and i1%c,%e
br i1%f,label%j,label%g
g:
%h=phi i32[1,%i],[0,%j]
ret i32%h
j:
%k=icmp ult i8%a,65
br i1%k,label%g,label%l
l:
%m=icmp ult i8%a,71
%n=zext i1%m to i32
ret i32%n
}
define fastcc i32@_SMLFN4Char7isGraphE(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp ult i8%a,33
br i1%b,label%f,label%c
c:
%d=icmp ult i8%a,127
%e=zext i1%d to i32
ret i32%e
f:
ret i32 0
}
define fastcc i32@_SMLFN4Char7isPrintE(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp ult i8%a,32
br i1%b,label%f,label%c
c:
%d=icmp ult i8%a,127
%e=zext i1%d to i32
ret i32%e
f:
ret i32 0
}
define fastcc i32@_SMLFN4Char7isPunctE(i8 inreg%a)#4 gc"smlsharp"{
g:
%b=add i8%a,-33
%c=icmp ugt i8%b,14
br i1%c,label%d,label%e
d:
switch i8%a,label%h[
i8 96,label%e
i8 95,label%e
i8 94,label%e
i8 93,label%e
i8 92,label%e
i8 91,label%e
i8 64,label%e
i8 63,label%e
i8 62,label%e
i8 61,label%e
i8 60,label%e
i8 59,label%e
i8 58,label%e
]
e:
%f=phi i32[1,%d],[0,%h],[1,%g],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d],[1,%d]
ret i32%f
h:
%i=icmp ult i8%a,123
br i1%i,label%e,label%j
j:
%k=icmp ult i8%a,127
%l=zext i1%k to i32
ret i32%l
}
define fastcc i32@_SMLFN4Char7isCntrlE(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp ugt i8%a,31
br i1%b,label%d,label%c
c:
ret i32 1
d:
%e=icmp eq i8%a,127
%f=zext i1%e to i32
ret i32%f
}
define fastcc i32@_SMLFN4Char7isSpaceE(i8 inreg%a)#4 gc"smlsharp"{
%b=add i8%a,-9
%c=icmp ugt i8%b,4
br i1%c,label%e,label%d
d:
ret i32 1
e:
%f=icmp eq i8%a,32
%g=zext i1%f to i32
ret i32%g
}
define fastcc i32@_SMLFN4Char7isAsciiE(i8 inreg%a)#4 gc"smlsharp"{
%b=lshr i8%a,7
%c=xor i8%b,1
%d=zext i8%c to i32
ret i32%d
}
define fastcc i8@_SMLFN4Char7toLowerE(i8 inreg%a)#4 gc"smlsharp"{
%b=add i8%a,-65
%c=icmp ugt i8%b,25
br i1%c,label%f,label%d
d:
%e=add i8%a,32
ret i8%e
f:
ret i8%a
}
define fastcc i8@_SMLFN4Char7toUpperE(i8 inreg%a)#4 gc"smlsharp"{
%b=add i8%a,-97
%c=icmp ugt i8%b,25
br i1%c,label%f,label%d
d:
%e=add i8%a,-32
ret i8%e
f:
ret i8%a
}
define fastcc i8*@_SMLFN4Char8toStringE(i8 inreg%a)#2 gc"smlsharp"{
aB:
%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
switch i8%a,label%d[
i8 7,label%aJ
i8 8,label%aI
i8 9,label%aH
i8 10,label%aG
i8 11,label%aF
i8 12,label%aE
i8 13,label%aD
i8 34,label%aC
i8 92,label%az
]
d:
%e=icmp ugt i8%a,31
br i1%e,label%n,label%f
f:
%g=call i8*@sml_alloc(i32 inreg 4)#0
%h=getelementptr inbounds i8,i8*%g,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
%j=getelementptr inbounds i8,i8*%g,i64 3
store i8 0,i8*%j,align 1
%k=add i8%a,64
store i8 92,i8*%g,align 1
%l=getelementptr inbounds i8,i8*%g,i64 1
store i8 94,i8*%l,align 1
%m=getelementptr inbounds i8,i8*%g,i64 2
store i8%k,i8*%m,align 1
ret i8*%g
n:
%o=icmp ult i8%a,127
br i1%o,label%au,label%p
p:
%q=call i8*@sml_alloc(i32 inreg 5)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 5,i32*%s,align 4
store i8*%q,i8**%b,align 8
%t=getelementptr inbounds i8,i8*%q,i64 4
store i8 0,i8*%t,align 1
store i8 92,i8*%q,align 1
%u=call i8*@sml_alloc(i32 inreg 12)#0
%v=bitcast i8*%u to i32*
%w=getelementptr inbounds i8,i8*%u,i64 -4
%x=bitcast i8*%w to i32*
store i32 1342177288,i32*%x,align 4
%y=getelementptr inbounds i8,i8*%u,i64 5
call void@llvm.memset.p0i8.i32(i8*%y,i8 0,i32 3,i1 false)
store i32 3,i32*%v,align 4
br label%z
z:
%A=phi i8*[%u,%p],[%ad,%ac]
%B=phi i8[%a,%p],[%ae,%ac]
%C=getelementptr inbounds i8,i8*%A,i64 4
store i8%B,i8*%C,align 1
%D=getelementptr inbounds i8,i8*%A,i64 8
%E=bitcast i8*%D to i32*
store i32 0,i32*%E,align 4
store i8*%A,i8**%c,align 8
%F=load atomic i32,i32*@sml_check_flag unordered,align 4
%G=icmp eq i32%F,0
br i1%G,label%J,label%H
H:
call void@sml_check(i32 inreg%F)
%I=load i8*,i8**%c,align 8
br label%J
J:
%K=phi i8*[%I,%H],[%A,%z]
%L=bitcast i8*%K to i32*
%M=load i32,i32*%L,align 4
%N=icmp eq i32%M,0
br i1%N,label%as,label%O
O:
store i8*null,i8**%c,align 8
%P=getelementptr inbounds i8,i8*%K,i64 4
%Q=load i8,i8*%P,align 1
%R=icmp eq i8%Q,0
br i1%R,label%S,label%af
S:
%T=load i8*,i8**%b,align 8
%U=sext i32%M to i64
%V=getelementptr inbounds i8,i8*%T,i64%U
store i8 48,i8*%V,align 1
%W=add nsw i32%M,-1
%X=call i8*@sml_alloc(i32 inreg 12)#0
%Y=bitcast i8*%X to i32*
%Z=getelementptr inbounds i8,i8*%X,i64 -4
%aa=bitcast i8*%Z to i32*
store i32 1342177288,i32*%aa,align 4
%ab=getelementptr inbounds i8,i8*%X,i64 5
call void@llvm.memset.p0i8.i32(i8*%ab,i8 0,i32 3,i1 false)
store i32%W,i32*%Y,align 4
br label%ac
ac:
%ad=phi i8*[%X,%S],[%an,%af]
%ae=phi i8[0,%S],[%am,%af]
br label%z
af:
%ag=urem i8%Q,10
%ah=or i8%ag,48
%ai=load i8*,i8**%b,align 8
%aj=sext i32%M to i64
%ak=getelementptr inbounds i8,i8*%ai,i64%aj
store i8%ah,i8*%ak,align 1
%al=add nsw i32%M,-1
%am=udiv i8%Q,10
%an=call i8*@sml_alloc(i32 inreg 12)#0
%ao=bitcast i8*%an to i32*
%ap=getelementptr inbounds i8,i8*%an,i64 -4
%aq=bitcast i8*%ap to i32*
store i32 1342177288,i32*%aq,align 4
%ar=getelementptr inbounds i8,i8*%an,i64 5
call void@llvm.memset.p0i8.i32(i8*%ar,i8 0,i32 3,i1 false)
store i32%al,i32*%ao,align 4
br label%ac
as:
%at=load i8*,i8**%b,align 8
ret i8*%at
au:
%av=call i8*@sml_alloc(i32 inreg 2)#0
%aw=getelementptr inbounds i8,i8*%av,i64 -4
%ax=bitcast i8*%aw to i32*
store i32 2,i32*%ax,align 4
%ay=getelementptr inbounds i8,i8*%av,i64 1
store i8 0,i8*%ay,align 1
store i8%a,i8*%av,align 1
ret i8*%av
az:
%aA=phi i8*[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@H,i64 0,i32 2,i64 0),%aB],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@E,i64 0,i32 2,i64 0),%aC],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@D,i64 0,i32 2,i64 0),%aD],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@C,i64 0,i32 2,i64 0),%aE],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@B,i64 0,i32 2,i64 0),%aF],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@A,i64 0,i32 2,i64 0),%aG],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@z,i64 0,i32 2,i64 0),%aH],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@y,i64 0,i32 2,i64 0),%aI],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@x,i64 0,i32 2,i64 0),%aJ]
ret i8*%aA
aC:
br label%az
aD:
br label%az
aE:
br label%az
aF:
br label%az
aG:
br label%az
aH:
br label%az
aI:
br label%az
aJ:
br label%az
}
define fastcc i8*@_SMLFN4Char11toRawStringE(i8 inreg%a)#4 gc"smlsharp"{
s:
switch i8%a,label%b[
i8 7,label%A
i8 8,label%z
i8 9,label%y
i8 10,label%x
i8 11,label%w
i8 12,label%v
i8 13,label%u
i8 34,label%t
i8 92,label%q
]
b:
%c=icmp ugt i8%a,31
br i1%c,label%l,label%d
d:
%e=tail call i8*@sml_alloc(i32 inreg 4)#0
%f=getelementptr inbounds i8,i8*%e,i64 -4
%g=bitcast i8*%f to i32*
store i32 4,i32*%g,align 4
%h=getelementptr inbounds i8,i8*%e,i64 3
store i8 0,i8*%h,align 1
%i=add i8%a,64
store i8 92,i8*%e,align 1
%j=getelementptr inbounds i8,i8*%e,i64 1
store i8 94,i8*%j,align 1
%k=getelementptr inbounds i8,i8*%e,i64 2
store i8%i,i8*%k,align 1
ret i8*%e
l:
%m=tail call i8*@sml_alloc(i32 inreg 2)#0
%n=getelementptr inbounds i8,i8*%m,i64 -4
%o=bitcast i8*%n to i32*
store i32 2,i32*%o,align 4
%p=getelementptr inbounds i8,i8*%m,i64 1
store i8 0,i8*%p,align 1
store i8%a,i8*%m,align 1
ret i8*%m
q:
%r=phi i8*[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@H,i64 0,i32 2,i64 0),%s],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@E,i64 0,i32 2,i64 0),%t],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@D,i64 0,i32 2,i64 0),%u],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@C,i64 0,i32 2,i64 0),%v],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@B,i64 0,i32 2,i64 0),%w],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@A,i64 0,i32 2,i64 0),%x],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@z,i64 0,i32 2,i64 0),%y],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@y,i64 0,i32 2,i64 0),%z],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@x,i64 0,i32 2,i64 0),%A]
ret i8*%r
t:
br label%q
u:
br label%q
v:
br label%q
w:
br label%q
x:
br label%q
y:
br label%q
z:
br label%q
A:
br label%q
}
define fastcc i8*@_SMLFN4Char9toCStringE(i8 inreg%a)#2 gc"smlsharp"{
as:
%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
switch i8%a,label%d[
i8 7,label%aC
i8 8,label%aB
i8 9,label%aA
i8 10,label%az
i8 11,label%ay
i8 12,label%ax
i8 13,label%aw
i8 34,label%av
i8 39,label%au
i8 63,label%at
i8 92,label%aq
]
d:
%e=add i8%a,-32
%f=icmp ult i8%e,95
br i1%f,label%al,label%g
g:
%h=call i8*@sml_alloc(i32 inreg 5)#0
%i=getelementptr inbounds i8,i8*%h,i64 -4
%j=bitcast i8*%i to i32*
store i32 5,i32*%j,align 4
store i8*%h,i8**%b,align 8
%k=getelementptr inbounds i8,i8*%h,i64 4
store i8 0,i8*%k,align 1
store i8 92,i8*%h,align 1
%l=call i8*@sml_alloc(i32 inreg 12)#0
%m=bitcast i8*%l to i32*
%n=getelementptr inbounds i8,i8*%l,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177288,i32*%o,align 4
%p=getelementptr inbounds i8,i8*%l,i64 5
call void@llvm.memset.p0i8.i32(i8*%p,i8 0,i32 3,i1 false)
store i32 3,i32*%m,align 4
br label%q
q:
%r=phi i8*[%l,%g],[%U,%T]
%s=phi i8[%a,%g],[%V,%T]
%t=getelementptr inbounds i8,i8*%r,i64 4
store i8%s,i8*%t,align 1
%u=getelementptr inbounds i8,i8*%r,i64 8
%v=bitcast i8*%u to i32*
store i32 0,i32*%v,align 4
store i8*%r,i8**%c,align 8
%w=load atomic i32,i32*@sml_check_flag unordered,align 4
%x=icmp eq i32%w,0
br i1%x,label%A,label%y
y:
call void@sml_check(i32 inreg%w)
%z=load i8*,i8**%c,align 8
br label%A
A:
%B=phi i8*[%z,%y],[%r,%q]
%C=bitcast i8*%B to i32*
%D=load i32,i32*%C,align 4
%E=icmp eq i32%D,0
br i1%E,label%aj,label%F
F:
store i8*null,i8**%c,align 8
%G=getelementptr inbounds i8,i8*%B,i64 4
%H=load i8,i8*%G,align 1
%I=icmp eq i8%H,0
br i1%I,label%J,label%W
J:
%K=load i8*,i8**%b,align 8
%L=sext i32%D to i64
%M=getelementptr inbounds i8,i8*%K,i64%L
store i8 48,i8*%M,align 1
%N=add nsw i32%D,-1
%O=call i8*@sml_alloc(i32 inreg 12)#0
%P=bitcast i8*%O to i32*
%Q=getelementptr inbounds i8,i8*%O,i64 -4
%R=bitcast i8*%Q to i32*
store i32 1342177288,i32*%R,align 4
%S=getelementptr inbounds i8,i8*%O,i64 5
call void@llvm.memset.p0i8.i32(i8*%S,i8 0,i32 3,i1 false)
store i32%N,i32*%P,align 4
br label%T
T:
%U=phi i8*[%O,%J],[%ae,%W]
%V=phi i8[0,%J],[%ad,%W]
br label%q
W:
%X=and i8%H,7
%Y=or i8%X,48
%Z=load i8*,i8**%b,align 8
%aa=sext i32%D to i64
%ab=getelementptr inbounds i8,i8*%Z,i64%aa
store i8%Y,i8*%ab,align 1
%ac=add nsw i32%D,-1
%ad=lshr i8%H,3
%ae=call i8*@sml_alloc(i32 inreg 12)#0
%af=bitcast i8*%ae to i32*
%ag=getelementptr inbounds i8,i8*%ae,i64 -4
%ah=bitcast i8*%ag to i32*
store i32 1342177288,i32*%ah,align 4
%ai=getelementptr inbounds i8,i8*%ae,i64 5
call void@llvm.memset.p0i8.i32(i8*%ai,i8 0,i32 3,i1 false)
store i32%ac,i32*%af,align 4
br label%T
aj:
%ak=load i8*,i8**%b,align 8
ret i8*%ak
al:
%am=call i8*@sml_alloc(i32 inreg 2)#0
%an=getelementptr inbounds i8,i8*%am,i64 -4
%ao=bitcast i8*%an to i32*
store i32 2,i32*%ao,align 4
%ap=getelementptr inbounds i8,i8*%am,i64 1
store i8 0,i8*%ap,align 1
store i8%a,i8*%am,align 1
ret i8*%am
aq:
%ar=phi i8*[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@H,i64 0,i32 2,i64 0),%as],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@G,i64 0,i32 2,i64 0),%at],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@F,i64 0,i32 2,i64 0),%au],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@E,i64 0,i32 2,i64 0),%av],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@D,i64 0,i32 2,i64 0),%aw],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@C,i64 0,i32 2,i64 0),%ax],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@B,i64 0,i32 2,i64 0),%ay],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@A,i64 0,i32 2,i64 0),%az],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@z,i64 0,i32 2,i64 0),%aA],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@y,i64 0,i32 2,i64 0),%aB],[getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@x,i64 0,i32 2,i64 0),%aC]
ret i8*%ar
at:
br label%aq
au:
br label%aq
av:
br label%aq
aw:
br label%aq
ax:
br label%aq
ay:
br label%aq
az:
br label%aq
aA:
br label%aq
aB:
br label%aq
aC:
br label%aq
}
define fastcc i8*@_SMLFN4Char10fromStringE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call fastcc i8*@_SMLFN9StringCvt10scanStringE(i32 inreg 0,i32 inreg 1)
%i=getelementptr inbounds i8,i8*%h,i64 16
%j=bitcast i8*%i to i8*(i8*,i8*)**
%k=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j,align 8
%l=bitcast i8*%h to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%c,align 8
%n=call fastcc i8*@_SMLFN17SMLSharp__ScanChar8scanCharE(i32 inreg 0,i32 inreg 4)
%o=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%p=call fastcc i8*%k(i8*inreg%o,i8*inreg%n)
%q=getelementptr inbounds i8,i8*%p,i64 16
%r=bitcast i8*%q to i8*(i8*,i8*)**
%s=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%r,align 8
%t=bitcast i8*%p to i8**
%u=load i8*,i8**%t,align 8
%v=load i8*,i8**%b,align 8
%w=tail call fastcc i8*%s(i8*inreg%u,i8*inreg%v)
ret i8*%w
}
define fastcc i8*@_SMLFN4Char11fromCStringE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call fastcc i8*@_SMLFN9StringCvt10scanStringE(i32 inreg 0,i32 inreg 1)
%i=getelementptr inbounds i8,i8*%h,i64 16
%j=bitcast i8*%i to i8*(i8*,i8*)**
%k=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j,align 8
%l=bitcast i8*%h to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%c,align 8
%n=call fastcc i8*@_SMLFN17SMLSharp__ScanChar9scanCCharE(i32 inreg 0,i32 inreg 4)
%o=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%p=call fastcc i8*%k(i8*inreg%o,i8*inreg%n)
%q=getelementptr inbounds i8,i8*%p,i64 16
%r=bitcast i8*%q to i8*(i8*,i8*)**
%s=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%r,align 8
%t=bitcast i8*%p to i8**
%u=load i8*,i8**%t,align 8
%v=load i8*,i8**%b,align 8
%w=tail call fastcc i8*%s(i8*inreg%u,i8*inreg%v)
ret i8*%w
}
define internal fastcc i8*@_SMLLLN4Char4succE_221(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i8@_SMLFN4Char4succE(i8 inreg%c)
%e=tail call i8*@sml_alloc(i32 inreg 1)#0
%f=getelementptr inbounds i8,i8*%e,i64 -4
%g=bitcast i8*%f to i32*
store i32 1,i32*%g,align 4
store i8%d,i8*%e,align 1
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Char4predE_222(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i8@_SMLFN4Char4predE(i8 inreg%c)
%e=tail call i8*@sml_alloc(i32 inreg 1)#0
%f=getelementptr inbounds i8,i8*%e,i64 -4
%g=bitcast i8*%f to i32*
store i32 1,i32*%g,align 4
store i8%d,i8*%e,align 1
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Char7compareE_223(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=getelementptr inbounds i8,i8*%b,i64 1
%e=load i8,i8*%d,align 1
%f=icmp ult i8%c,%e
%g=icmp ne i8%c,%e
%h=zext i1%g to i32
%i=select i1%f,i32 2,i32%h
%j=tail call i8*@sml_alloc(i32 inreg 4)#0
%k=bitcast i8*%j to i32*
%l=getelementptr inbounds i8,i8*%j,i64 -4
%m=bitcast i8*%l to i32*
store i32 4,i32*%m,align 4
store i32%i,i32*%k,align 4
ret i8*%j
}
define internal fastcc i8*@_SMLLLN4Char8containsE_224(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i32@_SMLLLN4Char8containsE_148(i8*inreg%a,i8 inreg%c)
%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%d,i32*%f,align 4
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Char8containsE_225(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN4Char8containsE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN4Char11notContainsE_226(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i32@_SMLLLN4Char11notContainsE_151(i8*inreg%a,i8 inreg%c)
%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%d,i32*%f,align 4
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Char11notContainsE_227(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN4Char11notContainsE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN4Char7isUpperE_228(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-65
%e=icmp ult i8%d,26
%f=zext i1%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLLN4Char7isLowerE_229(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-97
%e=icmp ult i8%d,26
%f=zext i1%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLLN4Char7isDigitE_230(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-48
%e=icmp ult i8%d,10
%f=zext i1%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLLN4Char7isAlphaE_231(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
m:
%c=load i8,i8*%b,align 1
%d=add i8%c,-65
%e=icmp ugt i8%d,25
br i1%e,label%f,label%k
f:
%g=icmp ult i8%c,97
br i1%g,label%k,label%h
h:
%i=icmp ult i8%c,123
%j=zext i1%i to i32
br label%k
k:
%l=phi i32[%j,%h],[1,%m],[0,%f]
%n=tail call i8*@sml_alloc(i32 inreg 4)#0
%o=bitcast i8*%n to i32*
%p=getelementptr inbounds i8,i8*%n,i64 -4
%q=bitcast i8*%p to i32*
store i32 4,i32*%q,align 4
store i32%l,i32*%o,align 4
ret i8*%n
}
define internal fastcc i8*@_SMLLLN4Char10isAlphaNumE_232(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i32@_SMLFN4Char10isAlphaNumE(i8 inreg%c)
%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%d,i32*%f,align 4
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Char10isHexDigitE_233(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i32@_SMLFN4Char10isHexDigitE(i8 inreg%c)
%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%d,i32*%f,align 4
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Char7isGraphE_234(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-33
%e=icmp ult i8%d,94
%f=zext i1%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLLN4Char7isPrintE_235(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-32
%e=icmp ult i8%d,95
%f=zext i1%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLLN4Char7isPunctE_236(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i32@_SMLFN4Char7isPunctE(i8 inreg%c)
%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%d,i32*%f,align 4
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Char7isCntrlE_237(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=icmp ult i8%c,32
%e=icmp eq i8%c,127
%f=or i1%e,%d
%g=zext i1%f to i32
%h=tail call i8*@sml_alloc(i32 inreg 4)#0
%i=bitcast i8*%h to i32*
%j=getelementptr inbounds i8,i8*%h,i64 -4
%k=bitcast i8*%j to i32*
store i32 4,i32*%k,align 4
store i32%g,i32*%i,align 4
ret i8*%h
}
define internal fastcc i8*@_SMLLLN4Char7isSpaceE_238(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-9
%e=icmp ult i8%d,5
%f=icmp eq i8%c,32
%g=or i1%f,%e
%h=zext i1%g to i32
%i=tail call i8*@sml_alloc(i32 inreg 4)#0
%j=bitcast i8*%i to i32*
%k=getelementptr inbounds i8,i8*%i,i64 -4
%l=bitcast i8*%k to i32*
store i32 4,i32*%l,align 4
store i32%h,i32*%j,align 4
ret i8*%i
}
define internal fastcc i8*@_SMLLLN4Char7isAsciiE_239(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=lshr i8%c,7
%e=xor i8%d,1
%f=zext i8%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLLN4Char7toLowerE_240(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-65
%e=icmp ugt i8%d,25
%f=add i8%c,32
%g=select i1%e,i8%c,i8%f
%h=tail call i8*@sml_alloc(i32 inreg 1)#0
%i=getelementptr inbounds i8,i8*%h,i64 -4
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
store i8%g,i8*%h,align 1
ret i8*%h
}
define internal fastcc i8*@_SMLLLN4Char7toUpperE_241(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=add i8%c,-97
%e=icmp ugt i8%d,25
%f=add i8%c,-32
%g=select i1%e,i8%c,i8%f
%h=tail call i8*@sml_alloc(i32 inreg 1)#0
%i=getelementptr inbounds i8,i8*%h,i64 -4
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
store i8%g,i8*%h,align 1
ret i8*%h
}
define internal fastcc i8*@_SMLLLN4Char8toStringE_242(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i8*@_SMLFN4Char8toStringE(i8 inreg%c)
ret i8*%d
}
define internal fastcc i8*@_SMLLLN4Char11toRawStringE_243(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i8*@_SMLFN4Char11toRawStringE(i8 inreg%c)
ret i8*%d
}
define internal fastcc i8*@_SMLLLN4Char9toCStringE_244(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i8*@_SMLFN4Char9toCStringE(i8 inreg%c)
ret i8*%d
}
define internal fastcc i8*@_SMLLLN4Char10fromStringE_245(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN4Char10fromStringE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN4Char11fromCStringE_246(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN4Char11fromCStringE(i8*inreg%b)
ret i8*%c
}
declare void@llvm.memset.p0i8.i32(i8*,i8,i32,i1)#0
attributes#0={nounwind}
attributes#1={noreturn}
attributes#2={uwtable}
attributes#3={noreturn nounwind}
attributes#4={nounwind uwtable}
