@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN4Char7isAlphaE=external local_unnamed_addr global i8*
@_SMLZN4Time8zeroTimeE=external local_unnamed_addr global i8*
@_SMLZ5Match=external unnamed_addr constant i8*
@_SMLZ9Subscript=external unnamed_addr constant i8*
@_SMLZ8Overflow=external unnamed_addr constant i8*
@_SMLZ3Div=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[10x i8]}><{[4x i8]zeroinitializer,i32 -2147483638,[10x i8]c"Date.Date\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[10x i8]}>,<{[4x i8],i32,[10x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL228=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,[37x i8]}><{[4x i8]zeroinitializer,i32 -2147483611,[37x i8]c"src/smlnj/Basis/date.sml:99.11(3208)\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:100.11(3239)\00"}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:101.11(3270)\00"}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:102.11(3301)\00"}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:103.11(3332)\00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:104.11(3363)\00"}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:105.11(3394)\00"}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:106.11(3425)\00"}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:107.11(3456)\00"}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,i32,i32,i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 9,i32 0,i32 0}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:119.11(3921)\00"}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:120.11(3952)\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:121.11(3983)\00"}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:122.11(4014)\00"}>,align 8
@q=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:123.11(4045)\00"}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:124.11(4076)\00"}>,align 8
@s=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:125.11(4107)\00"}>,align 8
@t=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:126.11(4138)\00"}>,align 8
@u=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:127.11(4169)\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*(i32)*@_SMLFN4Date11localOffsetE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date11localOffsetE_454 to void(...)*),i32 -2147483647}>,align 8
@w=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 0,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@C,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@x=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 4,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@w,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@y=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 6,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@x,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@z=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 5,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@y,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@A=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 1,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@z,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@B=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 3,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@A,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@C=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 2,[4x i8]zeroinitializer,i8*null,i32 2}>,align 8
@D=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 9,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@C,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@E=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 10,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@D,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@F=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 11,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@E,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@G=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 1,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@F,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@H=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 5,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@G,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@I=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 6,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@H,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@J=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 8,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@I,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@K=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 0,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@J,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@L=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 7,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@K,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@M=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 3,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@L,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@N=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 4,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@M,i32 0,i32 0,i32 0),i32 8),i32 2}>,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*)*@_SMLFN4Date4yearE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4yearE_455 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*)*@_SMLFN4Date5monthE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date5monthE_456 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*)*@_SMLFN4Date3dayE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date3dayE_457 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*)*@_SMLFN4Date4hourE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4hourE_458 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*)*@_SMLFN4Date6minuteE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date6minuteE_459 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(i32(i8*)*@_SMLFN4Date6secondE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date6secondE_460 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(i32(i8*)*@_SMLFN4Date7weekDayE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7weekDayE_461 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(i32(i8*)*@_SMLFN4Date7yearDayE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7yearDayE_462 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*)*@_SMLFN4Date5isDstE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date5isDstE_463 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*(i8*)*@_SMLFN4Date6offsetE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date6offsetE_464 to void(...)*),i32 -2147483647}>,align 8
@Y=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:256.23(8571)\00"}>,align 8
@Z=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:257.13(8596)\00"}>,align 8
@aa=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:263.12(8760)\00"}>,align 8
@ab=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:275.13(9147)\00"}>,align 8
@ac=private unnamed_addr constant<{[4x i8],i32,[37x i8]}><{[4x i8]zeroinitializer,i32 -2147483611,[37x i8]c"src/smlnj/Basis/date.sml:221.4(7499)\00"}>,align 8
@ad=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*null,i32 2}>,align 8
@ae=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 30,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ad,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@af=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ae,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ag=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 30,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@af,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ah=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ag,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ai=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ah,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@aj=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 30,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ai,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ak=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@aj,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@al=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 30,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ak,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@am=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@al,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@an=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 28,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@am,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ao=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@an,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ap=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 334,[4x i8]zeroinitializer,i8*null,i32 2}>,align 8
@aq=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 304,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ap,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ar=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 273,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@aq,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@as=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 243,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ar,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@at=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 212,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@as,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@au=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 181,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@at,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@av=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 151,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@au,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@aw=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 120,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@av,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ax=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 90,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@aw,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@ay=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 59,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ax,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@az=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 31,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ay,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@aA=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 0,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@az,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@aB=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:308.44(10416)\00"}>,align 8
@aC=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:308.11(10383)\00"}>,align 8
@aD=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:308.48(10420)\00"}>,align 8
@aE=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:312.13(10507)\00"}>,align 8
@aF=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:318.25(10718)\00"}>,align 8
@aG=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:320.19(10797)\00"}>,align 8
@aH=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:320.13(10791)\00"}>,align 8
@aI=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:321.13(10872)\00"}>,align 8
@aJ=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:322.13(10948)\00"}>,align 8
@aK=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:323.13(11020)\00"}>,align 8
@aL=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:325.7(11097)\00"}>,align 8
@aM=private unnamed_addr constant[6x i8]c"15180\00"
@aN=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:429.50(14654)\00"}>,align 8
@aO=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:384.12(13353)\00"}>,align 8
@aP=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:386.14(13378)\00"}>,align 8
@aQ=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:386.10(13374)\00"}>,align 8
@aR=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:391.12(13471)\00"}>,align 8
@aS=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:396.10(13563)\00"}>,align 8
@aT=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:400.16(13654)\00"}>,align 8
@aU=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:406.39(13875)\00"}>,align 8
@aV=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,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL228,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aU,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@aW=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:331.36(11300)\00"}>,align 8
@aX=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:305.8(10203)\00"}>,align 8
@aY=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:343.14(11605)\00"}>,align 8
@aZ=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:351.13(11707)\00"}>,align 8
@a0=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:351.60(11754)\00"}>,align 8
@a1=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:432.44(14754)\00"}>,align 8
@a2=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,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL228,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@a1,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@a3=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:436.10(14819)\00"}>,align 8
@a4=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:444.53(15075)\00"}>,align 8
@a5=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:446.9(15116)\00"}>,align 8
@a6=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:187.14(6459)\00"}>,align 8
@a7=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:470.14(15906)\00"}>,align 8
@a8=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN4Date6toTimeE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date6toTimeE_470 to void(...)*),i32 -2147483647}>,align 8
@a9=private unnamed_addr constant<{[4x i8],i32,[37x i8]}><{[4x i8]zeroinitializer,i32 -2147483611,[37x i8]c"src/smlnj/Basis/date.sml:230.4(7730)\00"}>,align 8
@ba=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN4Date7compareE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7compareE_483 to void(...)*),i32 -2147483647}>,align 8
@bb=private unnamed_addr constant<{[4x i8],i32,i32,i8,[3x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 512,i8 0,[3x i8]zeroinitializer,i32 0}>,align 8
@bc=private unnamed_addr constant<{[4x i8],i32,[38x i8]}><{[4x i8]zeroinitializer,i32 -2147483610,[38x i8]c"src/smlnj/Basis/date.sml:143.49(4858)\00"}>,align 8
@bd=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLLL6notPct_414 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL6notPct_485 to void(...)*),i32 -2147483647}>,align 8
@be=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:550.23(18663)\00"}>,align 8
@bf=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 2,[4x i8]zeroinitializer,i32 0}>,align 8
@bg=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"%\00"}>,align 8
@bh=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:561.38(18970)\00"}>,align 8
@bi=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN4Date3fmtE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date3fmtE_486 to void(...)*),i32 -2147483647}>,align 8
@bj=private unnamed_addr constant<{[4x i8],i32,[21x i8]}><{[4x i8]zeroinitializer,i32 -2147483627,[21x i8]c"%a %b %d %H:%M:%S %Y\00"}>,align 8
@bk=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:601.39(20254)\00"}>,align 8
@bl=private unnamed_addr constant<{[4x i8],i32,[39x i8]}><{[4x i8]zeroinitializer,i32 -2147483609,[39x i8]c"src/smlnj/Basis/date.sml:601.44(20259)\00"}>,align 8
@_SMLZN4Date4DateE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL228,i64 0,i32 2)to i8*)
@_SMLZN4Date4yearE=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*)
@_SMLZN4Date5monthE=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*)
@_SMLZN4Date3dayE=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*)
@_SMLZN4Date4hourE=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*)
@_SMLZN4Date6minuteE=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*)
@_SMLZN4Date6secondE=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*)
@_SMLZN4Date7weekDayE=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*)
@_SMLZN4Date7yearDayE=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*)
@_SMLZN4Date6offsetE=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*)
@_SMLZN4Date5isDstE=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*)
@_SMLZN4Date11localOffsetE=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*)
@_SMLZN4Date6toTimeE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@a8,i64 0,i32 2)to i8*)
@_SMLZN4Date7compareE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ba,i64 0,i32 2)to i8*)
@_SMLZN4Date3fmtE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@bi,i64 0,i32 2)to i8*)
@_SML_gvarf7f5b9a54382c7f7_date=private global<{[4x i8],i32,[6x i8*]}><{[4x i8]zeroinitializer,i32 -1342177232,[6x i8*]zeroinitializer}>,align 8
@bm=private unnamed_addr global[2x i64][i64 1,i64 sub(i64 ptrtoint(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i32 0,i32 2,i32 0)to i64),i64 ptrtoint([2x i64]*@bm to i64))]
@_SML_ftabf7f5b9a54382c7f7_date=external global i8
@bn=private unnamed_addr global i8 0
@bo=private unnamed_addr constant[7x i32][i32 5,i32 1,i32 6,i32 0,i32 4,i32 2,i32 3]
@bp=private unnamed_addr constant[12x i32][i32 4,i32 8,i32 12,i32 2,i32 1,i32 7,i32 6,i32 3,i32 5,i32 11,i32 10,i32 9]
@bq=private unnamed_addr constant[12x i32][i32 3,i32 7,i32 11,i32 1,i32 0,i32 6,i32 5,i32 2,i32 4,i32 10,i32 9,i32 8]
@_SMLZN4Date4dateE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i32 0,i32 2,i32 0)
@_SMLZN4Date13fromTimeLocalE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i32 0,i32 2,i32 1)
@_SMLZN4Date12fromTimeUnivE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i32 0,i32 2,i32 2)
@_SMLZN4Date8toStringE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i32 0,i32 2,i32 3)
@_SMLZN4Date4scanE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i32 0,i32 2,i32 4)
@_SMLZN4Date10fromStringE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i32 0,i32 2,i32 5)
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_Date_gmTime(i32,i8*)local_unnamed_addr
declare i32@prim_Date_localTime(i32,i8*)local_unnamed_addr
declare i32@prim_Date_mkTime(i8*)local_unnamed_addr
declare i32@prim_Date_strfTime(i8*,i32,i8*,i8*)local_unnamed_addr
declare i32@prim_Time_gettimeofday(i8*)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_end()local_unnamed_addr#0
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare i8*@sml_load_intinf(i8*inreg)local_unnamed_addr#0
declare void@sml_matchcomp_bug()local_unnamed_addr
declare i32@sml_personality(...)#0
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare i8*@sml_save()local_unnamed_addr#0
declare void@sml_save_exn(i8*inreg)local_unnamed_addr#0
declare void@sml_start(i8*inreg)local_unnamed_addr#0
declare void@sml_unsave()local_unnamed_addr#0
declare void@sml_write(i8*inreg,i8**inreg,i8*inreg)local_unnamed_addr#0
declare i8*@_SMLFN10CharVector6concatE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN14CharArraySlice5sliceE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN14CharArraySlice6vectorE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN4Char7isDigitE(i8 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*@_SMLFN4List3revE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List4nullE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4Time11fromSecondsE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4Time9toSecondsE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5Array5arrayE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5Int324scanE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN5Int327compareE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6IntInf3remE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN6IntInf5toIntE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6IntInf7fromIntE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String3strE(i8 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Vector8fromListE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9CharArray5arrayE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9StringCvt10scanStringE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9StringCvt6splitlE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring4fullE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring4getcE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN9Substring4sizeE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring5sliceE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring6concatE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring6splitlE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring6stringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main5c37eb24573fc5f9_StringCvt()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main5d4c3ea7bd6f9540_IntInf()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main5148a836b3728be9_Int32()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_mainfd227ec42a85e2d0_Array()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maincbf81bea2bc04eab_Vector()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maince7036f3433e1102_Char()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main145db56e6796da5b_Substring()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main23870d5de35409ab_Time()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main00d884c96265bfea_SMLSharp_Runtime()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main4beb4c3c7634547e_CharArraySlice()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main83aaee9bdacb8a0e_CharArray()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load5c37eb24573fc5f9_StringCvt(i8*)local_unnamed_addr
declare void@_SML_load5d4c3ea7bd6f9540_IntInf(i8*)local_unnamed_addr
declare void@_SML_load5148a836b3728be9_Int32(i8*)local_unnamed_addr
declare void@_SML_loadadbb5309e852b68c_CharVector(i8*)local_unnamed_addr
declare void@_SML_load1ef93e13728790b1_String(i8*)local_unnamed_addr
declare void@_SML_loadfd227ec42a85e2d0_Array(i8*)local_unnamed_addr
declare void@_SML_loadcbf81bea2bc04eab_Vector(i8*)local_unnamed_addr
declare void@_SML_loadce7036f3433e1102_Char(i8*)local_unnamed_addr
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load145db56e6796da5b_Substring(i8*)local_unnamed_addr
declare void@_SML_load23870d5de35409ab_Time(i8*)local_unnamed_addr
declare void@_SML_load00d884c96265bfea_SMLSharp_Runtime(i8*)local_unnamed_addr
declare void@_SML_load4beb4c3c7634547e_CharArraySlice(i8*)local_unnamed_addr
declare void@_SML_load83aaee9bdacb8a0e_CharArray(i8*)local_unnamed_addr
define private void@_SML_tabbf7f5b9a54382c7f7_date()#3{
unreachable
}
define void@_SML_loadf7f5b9a54382c7f7_date(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@bn,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@bn,align 1
tail call void@_SML_load5c37eb24573fc5f9_StringCvt(i8*%a)#0
tail call void@_SML_load5d4c3ea7bd6f9540_IntInf(i8*%a)#0
tail call void@_SML_load5148a836b3728be9_Int32(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_loadfd227ec42a85e2d0_Array(i8*%a)#0
tail call void@_SML_loadcbf81bea2bc04eab_Vector(i8*%a)#0
tail call void@_SML_loadce7036f3433e1102_Char(i8*%a)#0
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load145db56e6796da5b_Substring(i8*%a)#0
tail call void@_SML_load23870d5de35409ab_Time(i8*%a)#0
tail call void@_SML_load00d884c96265bfea_SMLSharp_Runtime(i8*%a)#0
tail call void@_SML_load4beb4c3c7634547e_CharArraySlice(i8*%a)#0
tail call void@_SML_load83aaee9bdacb8a0e_CharArray(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabbf7f5b9a54382c7f7_date,i8*@_SML_ftabf7f5b9a54382c7f7_date,i8*bitcast([2x i64]*@bm to i8*))#0
ret void
}
define void@_SML_mainf7f5b9a54382c7f7_date()local_unnamed_addr#2 gc"smlsharp"personality i32(...)*@sml_personality{
%a=alloca[3x i8*],align 8
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
%i=load i8,i8*@bn,align 1
%j=and i8%i,2
%k=icmp eq i8%j,0
br i1%k,label%m,label%l
l:
ret void
m:
store i8 3,i8*@bn,align 1
tail call void@_SML_main5c37eb24573fc5f9_StringCvt()#2
tail call void@_SML_main5d4c3ea7bd6f9540_IntInf()#2
tail call void@_SML_main5148a836b3728be9_Int32()#2
tail call void@_SML_mainadbb5309e852b68c_CharVector()#2
tail call void@_SML_main1ef93e13728790b1_String()#2
tail call void@_SML_mainfd227ec42a85e2d0_Array()#2
tail call void@_SML_maincbf81bea2bc04eab_Vector()#2
tail call void@_SML_maince7036f3433e1102_Char()#2
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main145db56e6796da5b_Substring()#2
tail call void@_SML_main23870d5de35409ab_Time()#2
tail call void@_SML_main00d884c96265bfea_SMLSharp_Runtime()#2
tail call void@_SML_main4beb4c3c7634547e_CharArraySlice()#2
tail call void@_SML_main83aaee9bdacb8a0e_CharArray()#2
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
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
call void@llvm.gcroot(i8**%h,i8*null)#0
%n=bitcast[3x i8*]*%a to i8*
call void@sml_start(i8*inreg%n)#0
%o=load atomic i32,i32*@sml_check_flag unordered,align 4
%p=icmp eq i32%o,0
br i1%p,label%r,label%q
q:
invoke void@sml_check(i32 inreg%o)
to label%r unwind label%da
r:
%s=invoke fastcc i8*@_SMLFN6Vector8fromListE(i32 inreg 0,i32 inreg 4)
to label%t unwind label%da
t:
%u=getelementptr inbounds i8,i8*%s,i64 16
%v=bitcast i8*%u to i8*(i8*,i8*)**
%w=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%v,align 8
%x=bitcast i8*%s to i8**
%y=load i8*,i8**%x,align 8
%z=invoke fastcc i8*%w(i8*inreg%y,i8*inreg bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@B,i64 0,i32 2)to i8*))
to label%A unwind label%da
A:
store i8*%z,i8**%b,align 8
%B=invoke fastcc i8*@_SMLFN6Vector8fromListE(i32 inreg 0,i32 inreg 4)
to label%C unwind label%da
C:
%D=getelementptr inbounds i8,i8*%B,i64 16
%E=bitcast i8*%D to i8*(i8*,i8*)**
%F=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%E,align 8
%G=bitcast i8*%B to i8**
%H=load i8*,i8**%G,align 8
%I=invoke fastcc i8*%F(i8*inreg%H,i8*inreg bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@N,i64 0,i32 2)to i8*))
to label%J unwind label%da
J:
store i8*%I,i8**%c,align 8
%K=call i8*@sml_alloc(i32 inreg 20)#0
%L=getelementptr inbounds i8,i8*%K,i64 -4
%M=bitcast i8*%L to i32*
store i32 1342177296,i32*%M,align 4
store i8*%K,i8**%f,align 8
%N=load i8*,i8**%b,align 8
%O=bitcast i8*%K to i8**
store i8*%N,i8**%O,align 8
%P=load i8*,i8**%c,align 8
%Q=getelementptr inbounds i8,i8*%K,i64 8
%R=bitcast i8*%Q to i8**
store i8*%P,i8**%R,align 8
%S=getelementptr inbounds i8,i8*%K,i64 16
%T=bitcast i8*%S to i32*
store i32 3,i32*%T,align 4
%U=call i8*@sml_alloc(i32 inreg 28)#0
%V=getelementptr inbounds i8,i8*%U,i64 -4
%W=bitcast i8*%V to i32*
store i32 1342177304,i32*%W,align 4
%X=load i8*,i8**%f,align 8
%Y=bitcast i8*%U to i8**
store i8*%X,i8**%Y,align 8
%Z=getelementptr inbounds i8,i8*%U,i64 8
%aa=bitcast i8*%Z to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7tm2dateE_299 to void(...)*),void(...)**%aa,align 8
%ab=getelementptr inbounds i8,i8*%U,i64 16
%ac=bitcast i8*%ab to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7tm2dateE_299 to void(...)*),void(...)**%ac,align 8
%ad=getelementptr inbounds i8,i8*%U,i64 24
%ae=bitcast i8*%ad to i32*
store i32 -2147483647,i32*%ae,align 4
%af=invoke fastcc i8*@_SMLFN6Vector8fromListE(i32 inreg 0,i32 inreg 4)
to label%ag unwind label%da
ag:
%ah=getelementptr inbounds i8,i8*%af,i64 16
%ai=bitcast i8*%ah to i8*(i8*,i8*)**
%aj=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ai,align 8
%ak=bitcast i8*%af to i8**
%al=load i8*,i8**%ak,align 8
%am=invoke fastcc i8*%aj(i8*inreg%al,i8*inreg bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@ao,i64 0,i32 2)to i8*))
to label%an unwind label%da
an:
store i8*%am,i8**%d,align 8
%ao=invoke fastcc i8*@_SMLFN6Vector8fromListE(i32 inreg 0,i32 inreg 4)
to label%ap unwind label%da
ap:
%aq=getelementptr inbounds i8,i8*%ao,i64 16
%ar=bitcast i8*%aq to i8*(i8*,i8*)**
%as=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ar,align 8
%at=bitcast i8*%ao to i8**
%au=load i8*,i8**%at,align 8
%av=invoke fastcc i8*%as(i8*inreg%au,i8*inreg bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i8*,i32}>,<{[4x i8],i32,i32,[4x i8],i8*,i32}>*@aA,i64 0,i32 2)to i8*))
to label%aw unwind label%da
aw:
store i8*%av,i8**%e,align 8
%ax=call i8*@sml_alloc(i32 inreg 12)#0
%ay=getelementptr inbounds i8,i8*%ax,i64 -4
%az=bitcast i8*%ay to i32*
store i32 1342177288,i32*%az,align 4
store i8*%ax,i8**%g,align 8
%aA=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aB=bitcast i8*%ax to i8**
store i8*%aA,i8**%aB,align 8
%aC=getelementptr inbounds i8,i8*%ax,i64 8
%aD=bitcast i8*%aC to i32*
store i32 1,i32*%aD,align 4
%aE=call i8*@sml_alloc(i32 inreg 28)#0
%aF=getelementptr inbounds i8,i8*%aE,i64 -4
%aG=bitcast i8*%aF to i32*
store i32 1342177304,i32*%aG,align 4
%aH=load i8*,i8**%g,align 8
%aI=bitcast i8*%aE to i8**
store i8*%aH,i8**%aI,align 8
%aJ=getelementptr inbounds i8,i8*%aE,i64 8
%aK=bitcast i8*%aJ to void(...)**
store void(...)*bitcast(i32(i8*,i8*)*@_SMLLLN4Date10daysInYearE_335 to void(...)*),void(...)**%aK,align 8
%aL=getelementptr inbounds i8,i8*%aE,i64 16
%aM=bitcast i8*%aL to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date10daysInYearE_467 to void(...)*),void(...)**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aE,i64 24
%aO=bitcast i8*%aN to i32*
store i32 -2147483647,i32*%aO,align 4
%aP=call i8*@sml_alloc(i32 inreg 12)#0
%aQ=getelementptr inbounds i8,i8*%aP,i64 -4
%aR=bitcast i8*%aQ to i32*
store i32 1342177288,i32*%aR,align 4
store i8*%aP,i8**%e,align 8
%aS=load i8*,i8**%g,align 8
%aT=bitcast i8*%aP to i8**
store i8*%aS,i8**%aT,align 8
%aU=getelementptr inbounds i8,i8*%aP,i64 8
%aV=bitcast i8*%aU to i32*
store i32 1,i32*%aV,align 4
%aW=call i8*@sml_alloc(i32 inreg 28)#0
%aX=getelementptr inbounds i8,i8*%aW,i64 -4
%aY=bitcast i8*%aX to i32*
store i32 1342177304,i32*%aY,align 4
%aZ=load i8*,i8**%e,align 8
%a0=bitcast i8*%aW to i8**
store i8*%aZ,i8**%a0,align 8
%a1=getelementptr inbounds i8,i8*%aW,i64 8
%a2=bitcast i8*%a1 to void(...)**
store void(...)*bitcast(i32(i8*,i8*)*@_SMLLLN4Date13toAbsoluteDayE_346 to void(...)*),void(...)**%a2,align 8
%a3=getelementptr inbounds i8,i8*%aW,i64 16
%a4=bitcast i8*%a3 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date13toAbsoluteDayE_468 to void(...)*),void(...)**%a4,align 8
%a5=getelementptr inbounds i8,i8*%aW,i64 24
%a6=bitcast i8*%a5 to i32*
store i32 -2147483647,i32*%a6,align 4
%a7=call i8*@sml_alloc(i32 inreg 44)#0
%a8=getelementptr inbounds i8,i8*%a7,i64 -4
%a9=bitcast i8*%a8 to i32*
store i32 1342177320,i32*%a9,align 4
store i8*%a7,i8**%h,align 8
%ba=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bb=bitcast i8*%a7 to i8**
store i8*%ba,i8**%bb,align 8
%bc=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bd=getelementptr inbounds i8,i8*%a7,i64 8
%be=bitcast i8*%bd to i8**
store i8*%bc,i8**%be,align 8
%bf=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bg=getelementptr inbounds i8,i8*%a7,i64 16
%bh=bitcast i8*%bg to i8**
store i8*%bf,i8**%bh,align 8
%bi=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%bj=getelementptr inbounds i8,i8*%a7,i64 24
%bk=bitcast i8*%bj to i8**
store i8*%bi,i8**%bk,align 8
%bl=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bm=getelementptr inbounds i8,i8*%a7,i64 32
%bn=bitcast i8*%bm to i8**
store i8*%bl,i8**%bn,align 8
%bo=getelementptr inbounds i8,i8*%a7,i64 40
%bp=bitcast i8*%bo to i32*
store i32 31,i32*%bp,align 4
%bq=call i8*@sml_alloc(i32 inreg 28)#0
%br=getelementptr inbounds i8,i8*%bq,i64 -4
%bs=bitcast i8*%br to i32*
store i32 1342177304,i32*%bs,align 4
store i8*%bq,i8**%c,align 8
%bt=load i8*,i8**%h,align 8
%bu=bitcast i8*%bq to i8**
store i8*%bt,i8**%bu,align 8
%bv=getelementptr inbounds i8,i8*%bq,i64 8
%bw=bitcast i8*%bv to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4dateE_377 to void(...)*),void(...)**%bw,align 8
%bx=getelementptr inbounds i8,i8*%bq,i64 16
%by=bitcast i8*%bx to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4dateE_377 to void(...)*),void(...)**%by,align 8
%bz=getelementptr inbounds i8,i8*%bq,i64 24
%bA=bitcast i8*%bz to i32*
store i32 -2147483647,i32*%bA,align 4
%bB=call i8*@sml_alloc(i32 inreg 12)#0
%bC=getelementptr inbounds i8,i8*%bB,i64 -4
%bD=bitcast i8*%bC to i32*
store i32 1342177288,i32*%bD,align 4
store i8*%bB,i8**%b,align 8
%bE=load i8*,i8**%f,align 8
%bF=bitcast i8*%bB to i8**
store i8*%bE,i8**%bF,align 8
%bG=getelementptr inbounds i8,i8*%bB,i64 8
%bH=bitcast i8*%bG to i32*
store i32 1,i32*%bH,align 4
%bI=call i8*@sml_alloc(i32 inreg 28)#0
%bJ=getelementptr inbounds i8,i8*%bI,i64 -4
%bK=bitcast i8*%bJ to i32*
store i32 1342177304,i32*%bK,align 4
store i8*%bI,i8**%d,align 8
%bL=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bM=bitcast i8*%bI to i8**
store i8*%bL,i8**%bM,align 8
%bN=getelementptr inbounds i8,i8*%bI,i64 8
%bO=bitcast i8*%bN to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date13fromTimeLocalE_379 to void(...)*),void(...)**%bO,align 8
%bP=getelementptr inbounds i8,i8*%bI,i64 16
%bQ=bitcast i8*%bP to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date13fromTimeLocalE_379 to void(...)*),void(...)**%bQ,align 8
%bR=getelementptr inbounds i8,i8*%bI,i64 24
%bS=bitcast i8*%bR to i32*
store i32 -2147483647,i32*%bS,align 4
%bT=call i8*@sml_alloc(i32 inreg 12)#0
%bU=getelementptr inbounds i8,i8*%bT,i64 -4
%bV=bitcast i8*%bU to i32*
store i32 1342177288,i32*%bV,align 4
store i8*%bT,i8**%b,align 8
%bW=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bX=bitcast i8*%bT to i8**
store i8*%bW,i8**%bX,align 8
%bY=getelementptr inbounds i8,i8*%bT,i64 8
%bZ=bitcast i8*%bY to i32*
store i32 1,i32*%bZ,align 4
%b0=call i8*@sml_alloc(i32 inreg 28)#0
%b1=getelementptr inbounds i8,i8*%b0,i64 -4
%b2=bitcast i8*%b1 to i32*
store i32 1342177304,i32*%b2,align 4
store i8*%b0,i8**%e,align 8
%b3=load i8*,i8**%b,align 8
store i8*null,i8**%b,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 void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date12fromTimeUnivE_380 to void(...)*),void(...)**%b6,align 8
%b7=getelementptr inbounds i8,i8*%b0,i64 16
%b8=bitcast i8*%b7 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date12fromTimeUnivE_380 to void(...)*),void(...)**%b8,align 8
%b9=getelementptr inbounds i8,i8*%b0,i64 24
%ca=bitcast i8*%b9 to i32*
store i32 -2147483647,i32*%ca,align 4
%cb=invoke fastcc i8*@_SMLFN4Date3fmtE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[21x i8]}>,<{[4x i8],i32,[21x i8]}>*@bj,i64 0,i32 2,i64 0))
to label%cc unwind label%da
cc:
store i8*%cb,i8**%b,align 8
%cd=call i8*@sml_alloc(i32 inreg 12)#0
%ce=getelementptr inbounds i8,i8*%cd,i64 -4
%cf=bitcast i8*%ce to i32*
store i32 1342177288,i32*%cf,align 4
store i8*%cd,i8**%f,align 8
%cg=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%ch=bitcast i8*%cd to i8**
store i8*%cg,i8**%ch,align 8
%ci=getelementptr inbounds i8,i8*%cd,i64 8
%cj=bitcast i8*%ci to i32*
store i32 1,i32*%cj,align 4
%ck=call i8*@sml_alloc(i32 inreg 28)#0
%cl=getelementptr inbounds i8,i8*%ck,i64 -4
%cm=bitcast i8*%cl to i32*
store i32 1342177304,i32*%cm,align 4
%cn=load i8*,i8**%f,align 8
%co=bitcast i8*%ck to i8**
store i8*%cn,i8**%co,align 8
%cp=getelementptr inbounds i8,i8*%ck,i64 8
%cq=bitcast i8*%cp to void(...)**
store void(...)*bitcast(i8*(i8*,i32,i32,i8*)*@_SMLLLN4Date4scanE_441 to void(...)*),void(...)**%cq,align 8
%cr=getelementptr inbounds i8,i8*%ck,i64 16
%cs=bitcast i8*%cr to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*,i8*)*@_SMLLLN4Date4scanE_487 to void(...)*),void(...)**%cs,align 8
%ct=getelementptr inbounds i8,i8*%ck,i64 24
%cu=bitcast i8*%ct to i32*
store i32 -2147483647,i32*%cu,align 4
%cv=call i8*@sml_alloc(i32 inreg 12)#0
%cw=getelementptr inbounds i8,i8*%cv,i64 -4
%cx=bitcast i8*%cw to i32*
store i32 1342177288,i32*%cx,align 4
store i8*%cv,i8**%g,align 8
%cy=load i8*,i8**%f,align 8
%cz=bitcast i8*%cv to i8**
store i8*%cy,i8**%cz,align 8
%cA=getelementptr inbounds i8,i8*%cv,i64 8
%cB=bitcast i8*%cA to i32*
store i32 1,i32*%cB,align 4
%cC=call i8*@sml_alloc(i32 inreg 28)#0
%cD=getelementptr inbounds i8,i8*%cC,i64 -4
%cE=bitcast i8*%cD to i32*
store i32 1342177304,i32*%cE,align 4
store i8*%cC,i8**%h,align 8
%cF=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cG=bitcast i8*%cC to i8**
store i8*%cF,i8**%cG,align 8
%cH=getelementptr inbounds i8,i8*%cC,i64 8
%cI=bitcast i8*%cH to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date10fromStringE_443 to void(...)*),void(...)**%cI,align 8
%cJ=getelementptr inbounds i8,i8*%cC,i64 16
%cK=bitcast i8*%cJ to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date10fromStringE_443 to void(...)*),void(...)**%cK,align 8
%cL=getelementptr inbounds i8,i8*%cC,i64 24
%cM=bitcast i8*%cL to i32*
store i32 -2147483647,i32*%cM,align 4
%cN=call i8*@sml_alloc(i32 inreg 12)#0
%cO=getelementptr inbounds i8,i8*%cN,i64 -4
%cP=bitcast i8*%cO to i32*
store i32 1342177288,i32*%cP,align 4
store i8*%cN,i8**%g,align 8
%cQ=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cR=bitcast i8*%cN to i8**
store i8*%cQ,i8**%cR,align 8
%cS=getelementptr inbounds i8,i8*%cN,i64 8
%cT=bitcast i8*%cS to i32*
store i32 1,i32*%cT,align 4
%cU=call i8*@sml_alloc(i32 inreg 28)#0
%cV=getelementptr inbounds i8,i8*%cU,i64 -4
%cW=bitcast i8*%cV to i32*
store i32 1342177304,i32*%cW,align 4
%cX=load i8*,i8**%g,align 8
%cY=bitcast i8*%cU to i8**
store i8*%cX,i8**%cY,align 8
%cZ=getelementptr inbounds i8,i8*%cU,i64 8
%c0=bitcast i8*%cZ to void(...)**
store void(...)*bitcast(i8*(i8*,i32,i32)*@_SMLLLN4Date4scanE_445 to void(...)*),void(...)**%c0,align 8
%c1=getelementptr inbounds i8,i8*%cU,i64 16
%c2=bitcast i8*%c1 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLLN4Date4scanE_488 to void(...)*),void(...)**%c2,align 8
%c3=getelementptr inbounds i8,i8*%cU,i64 24
%c4=bitcast i8*%c3 to i32*
store i32 -2147483647,i32*%c4,align 4
%c5=load i8*,i8**%c,align 8
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0),i8*inreg%c5)#0
%c6=load i8*,i8**%d,align 8
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 1),i8*inreg%c6)#0
%c7=load i8*,i8**%e,align 8
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 2),i8*inreg%c7)#0
%c8=load i8*,i8**%b,align 8
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 3),i8*inreg%c8)#0
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 4),i8*inreg%cU)#0
%c9=load i8*,i8**%h,align 8
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 5),i8*inreg%c9)#0
call void@sml_end()#0
ret void
da:
%db=landingpad{i8*,i8*}
cleanup
%dc=extractvalue{i8*,i8*}%db,1
call void@sml_save_exn(i8*inreg%dc)#0
call void@sml_end()#0
resume{i8*,i8*}%db
}
define internal fastcc i8*@_SMLLLN4Date10localTime_GE_239(i32 inreg%a)unnamed_addr#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 fastcc i8*@_SMLFN5Array5arrayE(i32 inreg 0,i32 inreg 4)
%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
%n=call fastcc i8*%k(i8*inreg%m,i8*inreg bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,i32,i32}>,<{[4x i8],i32,i32,i32,i32}>*@l,i64 0,i32 2)to i8*))
%o=call i32@prim_Date_localTime(i32%a,i8*%n)
%p=icmp eq i32%o,0
br i1%p,label%z,label%q
q:
%r=call fastcc i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg 0)
store i8*%r,i8**%b,align 8
%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**%b,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=getelementptr inbounds i8,i8*%n,i64 -4
%B=bitcast i8*%A to i32*
%C=load i32,i32*%B,align 4
%D=lshr i32%C,2
%E=and i32%D,67108863
%F=icmp eq i32%E,0
br i1%F,label%K,label%G
G:
%H=bitcast i8*%n to i32*
%I=load i32,i32*%H,align 4
%J=icmp eq i32%E,1
br i1%J,label%ah,label%ac
K:
%L=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%L,i8**%b,align 8
%M=call i8*@sml_alloc(i32 inreg 20)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177296,i32*%O,align 4
store i8*%M,i8**%c,align 8
%P=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%Q=bitcast i8*%M to i8**
store i8*%P,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%M,i64 8
%S=bitcast i8*%R to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[37x i8]}>,<{[4x i8],i32,[37x i8]}>*@c,i64 0,i32 2,i64 0),i8**%S,align 8
%T=getelementptr inbounds i8,i8*%M,i64 16
%U=bitcast i8*%T to i32*
store i32 3,i32*%U,align 4
%V=call i8*@sml_alloc(i32 inreg 60)#0
%W=getelementptr inbounds i8,i8*%V,i64 -4
%X=bitcast i8*%W to i32*
store i32 1342177336,i32*%X,align 4
%Y=getelementptr inbounds i8,i8*%V,i64 56
%Z=bitcast i8*%Y to i32*
store i32 1,i32*%Z,align 4
%aa=load i8*,i8**%c,align 8
%ab=bitcast i8*%V to i8**
store i8*%aa,i8**%ab,align 8
call void@sml_raise(i8*inreg%V)#1
unreachable
ac:
%ad=getelementptr inbounds i8,i8*%n,i64 4
%ae=bitcast i8*%ad to i32*
%af=load i32,i32*%ae,align 4
%ag=icmp ult i32%E,3
br i1%ag,label%aE,label%az
ah:
%ai=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%ai,i8**%b,align 8
%aj=call i8*@sml_alloc(i32 inreg 20)#0
%ak=getelementptr inbounds i8,i8*%aj,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177296,i32*%al,align 4
store i8*%aj,i8**%c,align 8
%am=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%an=bitcast i8*%aj to i8**
store i8*%am,i8**%an,align 8
%ao=getelementptr inbounds i8,i8*%aj,i64 8
%ap=bitcast i8*%ao to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@d,i64 0,i32 2,i64 0),i8**%ap,align 8
%aq=getelementptr inbounds i8,i8*%aj,i64 16
%ar=bitcast i8*%aq to i32*
store i32 3,i32*%ar,align 4
%as=call i8*@sml_alloc(i32 inreg 60)#0
%at=getelementptr inbounds i8,i8*%as,i64 -4
%au=bitcast i8*%at to i32*
store i32 1342177336,i32*%au,align 4
%av=getelementptr inbounds i8,i8*%as,i64 56
%aw=bitcast i8*%av to i32*
store i32 1,i32*%aw,align 4
%ax=load i8*,i8**%c,align 8
%ay=bitcast i8*%as to i8**
store i8*%ax,i8**%ay,align 8
call void@sml_raise(i8*inreg%as)#1
unreachable
az:
%aA=getelementptr inbounds i8,i8*%n,i64 8
%aB=bitcast i8*%aA to i32*
%aC=load i32,i32*%aB,align 4
%aD=icmp eq i32%E,3
br i1%aD,label%a1,label%aW
aE:
%aF=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%aF,i8**%b,align 8
%aG=call i8*@sml_alloc(i32 inreg 20)#0
%aH=getelementptr inbounds i8,i8*%aG,i64 -4
%aI=bitcast i8*%aH to i32*
store i32 1342177296,i32*%aI,align 4
store i8*%aG,i8**%c,align 8
%aJ=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aK=bitcast i8*%aG to i8**
store i8*%aJ,i8**%aK,align 8
%aL=getelementptr inbounds i8,i8*%aG,i64 8
%aM=bitcast i8*%aL to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@e,i64 0,i32 2,i64 0),i8**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aG,i64 16
%aO=bitcast i8*%aN to i32*
store i32 3,i32*%aO,align 4
%aP=call i8*@sml_alloc(i32 inreg 60)#0
%aQ=getelementptr inbounds i8,i8*%aP,i64 -4
%aR=bitcast i8*%aQ to i32*
store i32 1342177336,i32*%aR,align 4
%aS=getelementptr inbounds i8,i8*%aP,i64 56
%aT=bitcast i8*%aS to i32*
store i32 1,i32*%aT,align 4
%aU=load i8*,i8**%c,align 8
%aV=bitcast i8*%aP to i8**
store i8*%aU,i8**%aV,align 8
call void@sml_raise(i8*inreg%aP)#1
unreachable
aW:
%aX=getelementptr inbounds i8,i8*%n,i64 12
%aY=bitcast i8*%aX to i32*
%aZ=load i32,i32*%aY,align 4
%a0=icmp ult i32%E,5
br i1%a0,label%bo,label%bj
a1:
%a2=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%a2,i8**%b,align 8
%a3=call i8*@sml_alloc(i32 inreg 20)#0
%a4=getelementptr inbounds i8,i8*%a3,i64 -4
%a5=bitcast i8*%a4 to i32*
store i32 1342177296,i32*%a5,align 4
store i8*%a3,i8**%c,align 8
%a6=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%a7=bitcast i8*%a3 to i8**
store i8*%a6,i8**%a7,align 8
%a8=getelementptr inbounds i8,i8*%a3,i64 8
%a9=bitcast i8*%a8 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@f,i64 0,i32 2,i64 0),i8**%a9,align 8
%ba=getelementptr inbounds i8,i8*%a3,i64 16
%bb=bitcast i8*%ba to i32*
store i32 3,i32*%bb,align 4
%bc=call i8*@sml_alloc(i32 inreg 60)#0
%bd=getelementptr inbounds i8,i8*%bc,i64 -4
%be=bitcast i8*%bd to i32*
store i32 1342177336,i32*%be,align 4
%bf=getelementptr inbounds i8,i8*%bc,i64 56
%bg=bitcast i8*%bf to i32*
store i32 1,i32*%bg,align 4
%bh=load i8*,i8**%c,align 8
%bi=bitcast i8*%bc to i8**
store i8*%bh,i8**%bi,align 8
call void@sml_raise(i8*inreg%bc)#1
unreachable
bj:
%bk=getelementptr inbounds i8,i8*%n,i64 16
%bl=bitcast i8*%bk to i32*
%bm=load i32,i32*%bl,align 4
%bn=icmp eq i32%E,5
br i1%bn,label%bL,label%bG
bo:
%bp=load i8*,i8**@_SMLZ9Subscript,align 8
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=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bu=bitcast i8*%bq to i8**
store i8*%bt,i8**%bu,align 8
%bv=getelementptr inbounds i8,i8*%bq,i64 8
%bw=bitcast i8*%bv to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@g,i64 0,i32 2,i64 0),i8**%bw,align 8
%bx=getelementptr inbounds i8,i8*%bq,i64 16
%by=bitcast i8*%bx to i32*
store i32 3,i32*%by,align 4
%bz=call i8*@sml_alloc(i32 inreg 60)#0
%bA=getelementptr inbounds i8,i8*%bz,i64 -4
%bB=bitcast i8*%bA to i32*
store i32 1342177336,i32*%bB,align 4
%bC=getelementptr inbounds i8,i8*%bz,i64 56
%bD=bitcast i8*%bC to i32*
store i32 1,i32*%bD,align 4
%bE=load i8*,i8**%c,align 8
%bF=bitcast i8*%bz to i8**
store i8*%bE,i8**%bF,align 8
call void@sml_raise(i8*inreg%bz)#1
unreachable
bG:
%bH=getelementptr inbounds i8,i8*%n,i64 20
%bI=bitcast i8*%bH to i32*
%bJ=load i32,i32*%bI,align 4
%bK=icmp ult i32%E,7
br i1%bK,label%b8,label%b3
bL:
%bM=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%bM,i8**%b,align 8
%bN=call i8*@sml_alloc(i32 inreg 20)#0
%bO=getelementptr inbounds i8,i8*%bN,i64 -4
%bP=bitcast i8*%bO to i32*
store i32 1342177296,i32*%bP,align 4
store i8*%bN,i8**%c,align 8
%bQ=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bR=bitcast i8*%bN to i8**
store i8*%bQ,i8**%bR,align 8
%bS=getelementptr inbounds i8,i8*%bN,i64 8
%bT=bitcast i8*%bS to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@h,i64 0,i32 2,i64 0),i8**%bT,align 8
%bU=getelementptr inbounds i8,i8*%bN,i64 16
%bV=bitcast i8*%bU to i32*
store i32 3,i32*%bV,align 4
%bW=call i8*@sml_alloc(i32 inreg 60)#0
%bX=getelementptr inbounds i8,i8*%bW,i64 -4
%bY=bitcast i8*%bX to i32*
store i32 1342177336,i32*%bY,align 4
%bZ=getelementptr inbounds i8,i8*%bW,i64 56
%b0=bitcast i8*%bZ to i32*
store i32 1,i32*%b0,align 4
%b1=load i8*,i8**%c,align 8
%b2=bitcast i8*%bW to i8**
store i8*%b1,i8**%b2,align 8
call void@sml_raise(i8*inreg%bW)#1
unreachable
b3:
%b4=getelementptr inbounds i8,i8*%n,i64 24
%b5=bitcast i8*%b4 to i32*
%b6=load i32,i32*%b5,align 4
%b7=icmp eq i32%E,7
br i1%b7,label%cs,label%cq
b8:
%b9=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%b9,i8**%b,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
store i8*%ca,i8**%c,align 8
%cd=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ce=bitcast i8*%ca to i8**
store i8*%cd,i8**%ce,align 8
%cf=getelementptr inbounds i8,i8*%ca,i64 8
%cg=bitcast i8*%cf to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@i,i64 0,i32 2,i64 0),i8**%cg,align 8
%ch=getelementptr inbounds i8,i8*%ca,i64 16
%ci=bitcast i8*%ch to i32*
store i32 3,i32*%ci,align 4
%cj=call i8*@sml_alloc(i32 inreg 60)#0
%ck=getelementptr inbounds i8,i8*%cj,i64 -4
%cl=bitcast i8*%ck to i32*
store i32 1342177336,i32*%cl,align 4
%cm=getelementptr inbounds i8,i8*%cj,i64 56
%cn=bitcast i8*%cm to i32*
store i32 1,i32*%cn,align 4
%co=load i8*,i8**%c,align 8
%cp=bitcast i8*%cj to i8**
store i8*%co,i8**%cp,align 8
call void@sml_raise(i8*inreg%cj)#1
unreachable
cq:
%cr=icmp ult i32%E,9
br i1%cr,label%df,label%cK
cs:
%ct=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%ct,i8**%b,align 8
%cu=call i8*@sml_alloc(i32 inreg 20)#0
%cv=getelementptr inbounds i8,i8*%cu,i64 -4
%cw=bitcast i8*%cv to i32*
store i32 1342177296,i32*%cw,align 4
store i8*%cu,i8**%c,align 8
%cx=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%cy=bitcast i8*%cu to i8**
store i8*%cx,i8**%cy,align 8
%cz=getelementptr inbounds i8,i8*%cu,i64 8
%cA=bitcast i8*%cz to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@j,i64 0,i32 2,i64 0),i8**%cA,align 8
%cB=getelementptr inbounds i8,i8*%cu,i64 16
%cC=bitcast i8*%cB to i32*
store i32 3,i32*%cC,align 4
%cD=call i8*@sml_alloc(i32 inreg 60)#0
%cE=getelementptr inbounds i8,i8*%cD,i64 -4
%cF=bitcast i8*%cE to i32*
store i32 1342177336,i32*%cF,align 4
%cG=getelementptr inbounds i8,i8*%cD,i64 56
%cH=bitcast i8*%cG to i32*
store i32 1,i32*%cH,align 4
%cI=load i8*,i8**%c,align 8
%cJ=bitcast i8*%cD to i8**
store i8*%cI,i8**%cJ,align 8
call void@sml_raise(i8*inreg%cD)#1
unreachable
cK:
%cL=getelementptr inbounds i8,i8*%n,i64 28
%cM=bitcast i8*%cL to i32*
%cN=load i32,i32*%cM,align 4
%cO=getelementptr inbounds i8,i8*%n,i64 32
%cP=bitcast i8*%cO to i32*
%cQ=load i32,i32*%cP,align 4
%cR=call i8*@sml_alloc(i32 inreg 44)#0
%cS=bitcast i8*%cR to i32*
%cT=getelementptr inbounds i8,i8*%cR,i64 -4
%cU=bitcast i8*%cT to i32*
store i32 1342177320,i32*%cU,align 4
%cV=getelementptr inbounds i8,i8*%cR,i64 36
%cW=bitcast i8*%cV to i32*
store i32 0,i32*%cW,align 1
store i32%I,i32*%cS,align 4
%cX=getelementptr inbounds i8,i8*%cR,i64 4
%cY=bitcast i8*%cX to i32*
store i32%af,i32*%cY,align 4
%cZ=getelementptr inbounds i8,i8*%cR,i64 8
%c0=bitcast i8*%cZ to i32*
store i32%aC,i32*%c0,align 4
%c1=getelementptr inbounds i8,i8*%cR,i64 12
%c2=bitcast i8*%c1 to i32*
store i32%aZ,i32*%c2,align 4
%c3=getelementptr inbounds i8,i8*%cR,i64 16
%c4=bitcast i8*%c3 to i32*
store i32%bm,i32*%c4,align 4
%c5=getelementptr inbounds i8,i8*%cR,i64 20
%c6=bitcast i8*%c5 to i32*
store i32%bJ,i32*%c6,align 4
%c7=getelementptr inbounds i8,i8*%cR,i64 24
%c8=bitcast i8*%c7 to i32*
store i32%b6,i32*%c8,align 4
%c9=getelementptr inbounds i8,i8*%cR,i64 28
%da=bitcast i8*%c9 to i32*
store i32%cN,i32*%da,align 4
%db=getelementptr inbounds i8,i8*%cR,i64 32
%dc=bitcast i8*%db to i32*
store i32%cQ,i32*%dc,align 4
%dd=getelementptr inbounds i8,i8*%cR,i64 40
%de=bitcast i8*%dd to i32*
store i32 0,i32*%de,align 4
ret i8*%cR
df:
%dg=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%dg,i8**%b,align 8
%dh=call i8*@sml_alloc(i32 inreg 20)#0
%di=getelementptr inbounds i8,i8*%dh,i64 -4
%dj=bitcast i8*%di to i32*
store i32 1342177296,i32*%dj,align 4
store i8*%dh,i8**%c,align 8
%dk=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%dl=bitcast i8*%dh to i8**
store i8*%dk,i8**%dl,align 8
%dm=getelementptr inbounds i8,i8*%dh,i64 8
%dn=bitcast i8*%dm to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@k,i64 0,i32 2,i64 0),i8**%dn,align 8
%do=getelementptr inbounds i8,i8*%dh,i64 16
%dp=bitcast i8*%do to i32*
store i32 3,i32*%dp,align 4
%dq=call i8*@sml_alloc(i32 inreg 60)#0
%dr=getelementptr inbounds i8,i8*%dq,i64 -4
%ds=bitcast i8*%dr to i32*
store i32 1342177336,i32*%ds,align 4
%dt=getelementptr inbounds i8,i8*%dq,i64 56
%du=bitcast i8*%dt to i32*
store i32 1,i32*%du,align 4
%dv=load i8*,i8**%c,align 8
%dw=bitcast i8*%dq to i8**
store i8*%dv,i8**%dw,align 8
call void@sml_raise(i8*inreg%dq)#1
unreachable
}
define internal fastcc i8*@_SMLLLN4Date7gmTime_GE_251(i32 inreg%a)unnamed_addr#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 fastcc i8*@_SMLFN5Array5arrayE(i32 inreg 0,i32 inreg 4)
%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
%n=call fastcc i8*%k(i8*inreg%m,i8*inreg bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,i32,i32}>,<{[4x i8],i32,i32,i32,i32}>*@l,i64 0,i32 2)to i8*))
%o=call i32@prim_Date_gmTime(i32%a,i8*%n)
%p=icmp eq i32%o,0
br i1%p,label%z,label%q
q:
%r=call fastcc i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg 0)
store i8*%r,i8**%b,align 8
%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**%b,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=getelementptr inbounds i8,i8*%n,i64 -4
%B=bitcast i8*%A to i32*
%C=load i32,i32*%B,align 4
%D=lshr i32%C,2
%E=and i32%D,67108863
%F=icmp eq i32%E,0
br i1%F,label%K,label%G
G:
%H=bitcast i8*%n to i32*
%I=load i32,i32*%H,align 4
%J=icmp eq i32%E,1
br i1%J,label%ah,label%ac
K:
%L=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%L,i8**%b,align 8
%M=call i8*@sml_alloc(i32 inreg 20)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177296,i32*%O,align 4
store i8*%M,i8**%c,align 8
%P=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%Q=bitcast i8*%M to i8**
store i8*%P,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%M,i64 8
%S=bitcast i8*%R to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@m,i64 0,i32 2,i64 0),i8**%S,align 8
%T=getelementptr inbounds i8,i8*%M,i64 16
%U=bitcast i8*%T to i32*
store i32 3,i32*%U,align 4
%V=call i8*@sml_alloc(i32 inreg 60)#0
%W=getelementptr inbounds i8,i8*%V,i64 -4
%X=bitcast i8*%W to i32*
store i32 1342177336,i32*%X,align 4
%Y=getelementptr inbounds i8,i8*%V,i64 56
%Z=bitcast i8*%Y to i32*
store i32 1,i32*%Z,align 4
%aa=load i8*,i8**%c,align 8
%ab=bitcast i8*%V to i8**
store i8*%aa,i8**%ab,align 8
call void@sml_raise(i8*inreg%V)#1
unreachable
ac:
%ad=getelementptr inbounds i8,i8*%n,i64 4
%ae=bitcast i8*%ad to i32*
%af=load i32,i32*%ae,align 4
%ag=icmp ult i32%E,3
br i1%ag,label%aE,label%az
ah:
%ai=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%ai,i8**%b,align 8
%aj=call i8*@sml_alloc(i32 inreg 20)#0
%ak=getelementptr inbounds i8,i8*%aj,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177296,i32*%al,align 4
store i8*%aj,i8**%c,align 8
%am=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%an=bitcast i8*%aj to i8**
store i8*%am,i8**%an,align 8
%ao=getelementptr inbounds i8,i8*%aj,i64 8
%ap=bitcast i8*%ao to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@n,i64 0,i32 2,i64 0),i8**%ap,align 8
%aq=getelementptr inbounds i8,i8*%aj,i64 16
%ar=bitcast i8*%aq to i32*
store i32 3,i32*%ar,align 4
%as=call i8*@sml_alloc(i32 inreg 60)#0
%at=getelementptr inbounds i8,i8*%as,i64 -4
%au=bitcast i8*%at to i32*
store i32 1342177336,i32*%au,align 4
%av=getelementptr inbounds i8,i8*%as,i64 56
%aw=bitcast i8*%av to i32*
store i32 1,i32*%aw,align 4
%ax=load i8*,i8**%c,align 8
%ay=bitcast i8*%as to i8**
store i8*%ax,i8**%ay,align 8
call void@sml_raise(i8*inreg%as)#1
unreachable
az:
%aA=getelementptr inbounds i8,i8*%n,i64 8
%aB=bitcast i8*%aA to i32*
%aC=load i32,i32*%aB,align 4
%aD=icmp eq i32%E,3
br i1%aD,label%a1,label%aW
aE:
%aF=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%aF,i8**%b,align 8
%aG=call i8*@sml_alloc(i32 inreg 20)#0
%aH=getelementptr inbounds i8,i8*%aG,i64 -4
%aI=bitcast i8*%aH to i32*
store i32 1342177296,i32*%aI,align 4
store i8*%aG,i8**%c,align 8
%aJ=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aK=bitcast i8*%aG to i8**
store i8*%aJ,i8**%aK,align 8
%aL=getelementptr inbounds i8,i8*%aG,i64 8
%aM=bitcast i8*%aL to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@o,i64 0,i32 2,i64 0),i8**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aG,i64 16
%aO=bitcast i8*%aN to i32*
store i32 3,i32*%aO,align 4
%aP=call i8*@sml_alloc(i32 inreg 60)#0
%aQ=getelementptr inbounds i8,i8*%aP,i64 -4
%aR=bitcast i8*%aQ to i32*
store i32 1342177336,i32*%aR,align 4
%aS=getelementptr inbounds i8,i8*%aP,i64 56
%aT=bitcast i8*%aS to i32*
store i32 1,i32*%aT,align 4
%aU=load i8*,i8**%c,align 8
%aV=bitcast i8*%aP to i8**
store i8*%aU,i8**%aV,align 8
call void@sml_raise(i8*inreg%aP)#1
unreachable
aW:
%aX=getelementptr inbounds i8,i8*%n,i64 12
%aY=bitcast i8*%aX to i32*
%aZ=load i32,i32*%aY,align 4
%a0=icmp ult i32%E,5
br i1%a0,label%bo,label%bj
a1:
%a2=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%a2,i8**%b,align 8
%a3=call i8*@sml_alloc(i32 inreg 20)#0
%a4=getelementptr inbounds i8,i8*%a3,i64 -4
%a5=bitcast i8*%a4 to i32*
store i32 1342177296,i32*%a5,align 4
store i8*%a3,i8**%c,align 8
%a6=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%a7=bitcast i8*%a3 to i8**
store i8*%a6,i8**%a7,align 8
%a8=getelementptr inbounds i8,i8*%a3,i64 8
%a9=bitcast i8*%a8 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@p,i64 0,i32 2,i64 0),i8**%a9,align 8
%ba=getelementptr inbounds i8,i8*%a3,i64 16
%bb=bitcast i8*%ba to i32*
store i32 3,i32*%bb,align 4
%bc=call i8*@sml_alloc(i32 inreg 60)#0
%bd=getelementptr inbounds i8,i8*%bc,i64 -4
%be=bitcast i8*%bd to i32*
store i32 1342177336,i32*%be,align 4
%bf=getelementptr inbounds i8,i8*%bc,i64 56
%bg=bitcast i8*%bf to i32*
store i32 1,i32*%bg,align 4
%bh=load i8*,i8**%c,align 8
%bi=bitcast i8*%bc to i8**
store i8*%bh,i8**%bi,align 8
call void@sml_raise(i8*inreg%bc)#1
unreachable
bj:
%bk=getelementptr inbounds i8,i8*%n,i64 16
%bl=bitcast i8*%bk to i32*
%bm=load i32,i32*%bl,align 4
%bn=icmp eq i32%E,5
br i1%bn,label%bL,label%bG
bo:
%bp=load i8*,i8**@_SMLZ9Subscript,align 8
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=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bu=bitcast i8*%bq to i8**
store i8*%bt,i8**%bu,align 8
%bv=getelementptr inbounds i8,i8*%bq,i64 8
%bw=bitcast i8*%bv to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@q,i64 0,i32 2,i64 0),i8**%bw,align 8
%bx=getelementptr inbounds i8,i8*%bq,i64 16
%by=bitcast i8*%bx to i32*
store i32 3,i32*%by,align 4
%bz=call i8*@sml_alloc(i32 inreg 60)#0
%bA=getelementptr inbounds i8,i8*%bz,i64 -4
%bB=bitcast i8*%bA to i32*
store i32 1342177336,i32*%bB,align 4
%bC=getelementptr inbounds i8,i8*%bz,i64 56
%bD=bitcast i8*%bC to i32*
store i32 1,i32*%bD,align 4
%bE=load i8*,i8**%c,align 8
%bF=bitcast i8*%bz to i8**
store i8*%bE,i8**%bF,align 8
call void@sml_raise(i8*inreg%bz)#1
unreachable
bG:
%bH=getelementptr inbounds i8,i8*%n,i64 20
%bI=bitcast i8*%bH to i32*
%bJ=load i32,i32*%bI,align 4
%bK=icmp ult i32%E,7
br i1%bK,label%b8,label%b3
bL:
%bM=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%bM,i8**%b,align 8
%bN=call i8*@sml_alloc(i32 inreg 20)#0
%bO=getelementptr inbounds i8,i8*%bN,i64 -4
%bP=bitcast i8*%bO to i32*
store i32 1342177296,i32*%bP,align 4
store i8*%bN,i8**%c,align 8
%bQ=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bR=bitcast i8*%bN to i8**
store i8*%bQ,i8**%bR,align 8
%bS=getelementptr inbounds i8,i8*%bN,i64 8
%bT=bitcast i8*%bS to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@r,i64 0,i32 2,i64 0),i8**%bT,align 8
%bU=getelementptr inbounds i8,i8*%bN,i64 16
%bV=bitcast i8*%bU to i32*
store i32 3,i32*%bV,align 4
%bW=call i8*@sml_alloc(i32 inreg 60)#0
%bX=getelementptr inbounds i8,i8*%bW,i64 -4
%bY=bitcast i8*%bX to i32*
store i32 1342177336,i32*%bY,align 4
%bZ=getelementptr inbounds i8,i8*%bW,i64 56
%b0=bitcast i8*%bZ to i32*
store i32 1,i32*%b0,align 4
%b1=load i8*,i8**%c,align 8
%b2=bitcast i8*%bW to i8**
store i8*%b1,i8**%b2,align 8
call void@sml_raise(i8*inreg%bW)#1
unreachable
b3:
%b4=getelementptr inbounds i8,i8*%n,i64 24
%b5=bitcast i8*%b4 to i32*
%b6=load i32,i32*%b5,align 4
%b7=icmp eq i32%E,7
br i1%b7,label%cs,label%cq
b8:
%b9=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%b9,i8**%b,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
store i8*%ca,i8**%c,align 8
%cd=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ce=bitcast i8*%ca to i8**
store i8*%cd,i8**%ce,align 8
%cf=getelementptr inbounds i8,i8*%ca,i64 8
%cg=bitcast i8*%cf to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@s,i64 0,i32 2,i64 0),i8**%cg,align 8
%ch=getelementptr inbounds i8,i8*%ca,i64 16
%ci=bitcast i8*%ch to i32*
store i32 3,i32*%ci,align 4
%cj=call i8*@sml_alloc(i32 inreg 60)#0
%ck=getelementptr inbounds i8,i8*%cj,i64 -4
%cl=bitcast i8*%ck to i32*
store i32 1342177336,i32*%cl,align 4
%cm=getelementptr inbounds i8,i8*%cj,i64 56
%cn=bitcast i8*%cm to i32*
store i32 1,i32*%cn,align 4
%co=load i8*,i8**%c,align 8
%cp=bitcast i8*%cj to i8**
store i8*%co,i8**%cp,align 8
call void@sml_raise(i8*inreg%cj)#1
unreachable
cq:
%cr=icmp ult i32%E,9
br i1%cr,label%df,label%cK
cs:
%ct=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%ct,i8**%b,align 8
%cu=call i8*@sml_alloc(i32 inreg 20)#0
%cv=getelementptr inbounds i8,i8*%cu,i64 -4
%cw=bitcast i8*%cv to i32*
store i32 1342177296,i32*%cw,align 4
store i8*%cu,i8**%c,align 8
%cx=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%cy=bitcast i8*%cu to i8**
store i8*%cx,i8**%cy,align 8
%cz=getelementptr inbounds i8,i8*%cu,i64 8
%cA=bitcast i8*%cz to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@t,i64 0,i32 2,i64 0),i8**%cA,align 8
%cB=getelementptr inbounds i8,i8*%cu,i64 16
%cC=bitcast i8*%cB to i32*
store i32 3,i32*%cC,align 4
%cD=call i8*@sml_alloc(i32 inreg 60)#0
%cE=getelementptr inbounds i8,i8*%cD,i64 -4
%cF=bitcast i8*%cE to i32*
store i32 1342177336,i32*%cF,align 4
%cG=getelementptr inbounds i8,i8*%cD,i64 56
%cH=bitcast i8*%cG to i32*
store i32 1,i32*%cH,align 4
%cI=load i8*,i8**%c,align 8
%cJ=bitcast i8*%cD to i8**
store i8*%cI,i8**%cJ,align 8
call void@sml_raise(i8*inreg%cD)#1
unreachable
cK:
%cL=getelementptr inbounds i8,i8*%n,i64 28
%cM=bitcast i8*%cL to i32*
%cN=load i32,i32*%cM,align 4
%cO=getelementptr inbounds i8,i8*%n,i64 32
%cP=bitcast i8*%cO to i32*
%cQ=load i32,i32*%cP,align 4
%cR=call i8*@sml_alloc(i32 inreg 44)#0
%cS=bitcast i8*%cR to i32*
%cT=getelementptr inbounds i8,i8*%cR,i64 -4
%cU=bitcast i8*%cT to i32*
store i32 1342177320,i32*%cU,align 4
%cV=getelementptr inbounds i8,i8*%cR,i64 36
%cW=bitcast i8*%cV to i32*
store i32 0,i32*%cW,align 1
store i32%I,i32*%cS,align 4
%cX=getelementptr inbounds i8,i8*%cR,i64 4
%cY=bitcast i8*%cX to i32*
store i32%af,i32*%cY,align 4
%cZ=getelementptr inbounds i8,i8*%cR,i64 8
%c0=bitcast i8*%cZ to i32*
store i32%aC,i32*%c0,align 4
%c1=getelementptr inbounds i8,i8*%cR,i64 12
%c2=bitcast i8*%c1 to i32*
store i32%aZ,i32*%c2,align 4
%c3=getelementptr inbounds i8,i8*%cR,i64 16
%c4=bitcast i8*%c3 to i32*
store i32%bm,i32*%c4,align 4
%c5=getelementptr inbounds i8,i8*%cR,i64 20
%c6=bitcast i8*%c5 to i32*
store i32%bJ,i32*%c6,align 4
%c7=getelementptr inbounds i8,i8*%cR,i64 24
%c8=bitcast i8*%c7 to i32*
store i32%b6,i32*%c8,align 4
%c9=getelementptr inbounds i8,i8*%cR,i64 28
%da=bitcast i8*%c9 to i32*
store i32%cN,i32*%da,align 4
%db=getelementptr inbounds i8,i8*%cR,i64 32
%dc=bitcast i8*%db to i32*
store i32%cQ,i32*%dc,align 4
%dd=getelementptr inbounds i8,i8*%cR,i64 40
%de=bitcast i8*%dd to i32*
store i32 0,i32*%de,align 4
ret i8*%cR
df:
%dg=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%dg,i8**%b,align 8
%dh=call i8*@sml_alloc(i32 inreg 20)#0
%di=getelementptr inbounds i8,i8*%dh,i64 -4
%dj=bitcast i8*%di to i32*
store i32 1342177296,i32*%dj,align 4
store i8*%dh,i8**%c,align 8
%dk=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%dl=bitcast i8*%dh to i8**
store i8*%dk,i8**%dl,align 8
%dm=getelementptr inbounds i8,i8*%dh,i64 8
%dn=bitcast i8*%dm to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@u,i64 0,i32 2,i64 0),i8**%dn,align 8
%do=getelementptr inbounds i8,i8*%dh,i64 16
%dp=bitcast i8*%do to i32*
store i32 3,i32*%dp,align 4
%dq=call i8*@sml_alloc(i32 inreg 60)#0
%dr=getelementptr inbounds i8,i8*%dq,i64 -4
%ds=bitcast i8*%dr to i32*
store i32 1342177336,i32*%ds,align 4
%dt=getelementptr inbounds i8,i8*%dq,i64 56
%du=bitcast i8*%dt to i32*
store i32 1,i32*%du,align 4
%dv=load i8*,i8**%c,align 8
%dw=bitcast i8*%dq to i8**
store i8*%dv,i8**%dw,align 8
call void@sml_raise(i8*inreg%dq)#1
unreachable
}
define fastcc i8*@_SMLFN4Date11localOffsetE(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 i8*@sml_alloc(i32 inreg 8)#0
%i=getelementptr inbounds i8,i8*%h,i64 -4
%j=bitcast i8*%i to i32*
store i32 536870920,i32*%j,align 4
%k=call i32@prim_Time_gettimeofday(i8*%h)
%l=icmp sgt i32%k,-1
br i1%l,label%v,label%m
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
v:
%w=bitcast i8*%h to i32*
%x=load i32,i32*%w,align 4
%y=call fastcc i8*@_SMLLLN4Date7gmTime_GE_251(i32 inreg%x)
store i8*%y,i8**%b,align 8
%z=call fastcc i8*@_SMLLLN4Date10localTime_GE_239(i32 inreg%x)
%A=getelementptr inbounds i8,i8*%z,i64 32
%B=bitcast i8*%A to i32*
%C=load i32,i32*%B,align 4
%D=load i8*,i8**%b,align 8
%E=bitcast i8*%D to i32*
%F=load i32,i32*%E,align 4
%G=getelementptr inbounds i8,i8*%D,i64 4
%H=bitcast i8*%G to i32*
%I=load i32,i32*%H,align 4
%J=getelementptr inbounds i8,i8*%D,i64 8
%K=bitcast i8*%J to i32*
%L=load i32,i32*%K,align 4
%M=getelementptr inbounds i8,i8*%D,i64 12
%N=bitcast i8*%M to i32*
%O=load i32,i32*%N,align 4
%P=getelementptr inbounds i8,i8*%D,i64 16
%Q=bitcast i8*%P to i32*
%R=load i32,i32*%Q,align 4
%S=getelementptr inbounds i8,i8*%D,i64 20
%T=bitcast i8*%S to i32*
%U=load i32,i32*%T,align 4
%V=getelementptr inbounds i8,i8*%D,i64 24
%W=bitcast i8*%V to i32*
%X=load i32,i32*%W,align 4
store i8*null,i8**%b,align 8
%Y=getelementptr inbounds i8,i8*%D,i64 28
%Z=bitcast i8*%Y to i32*
%aa=load i32,i32*%Z,align 4
%ab=call i8*@sml_alloc(i32 inreg 44)#0
%ac=bitcast i8*%ab to i32*
%ad=getelementptr inbounds i8,i8*%ab,i64 -4
%ae=bitcast i8*%ad to i32*
store i32 1342177320,i32*%ae,align 4
%af=getelementptr inbounds i8,i8*%ab,i64 36
%ag=bitcast i8*%af to i32*
store i32 0,i32*%ag,align 1
store i32%F,i32*%ac,align 4
%ah=getelementptr inbounds i8,i8*%ab,i64 4
%ai=bitcast i8*%ah to i32*
store i32%I,i32*%ai,align 4
%aj=getelementptr inbounds i8,i8*%ab,i64 8
%ak=bitcast i8*%aj to i32*
store i32%L,i32*%ak,align 4
%al=getelementptr inbounds i8,i8*%ab,i64 12
%am=bitcast i8*%al to i32*
store i32%O,i32*%am,align 4
%an=getelementptr inbounds i8,i8*%ab,i64 16
%ao=bitcast i8*%an to i32*
store i32%R,i32*%ao,align 4
%ap=getelementptr inbounds i8,i8*%ab,i64 20
%aq=bitcast i8*%ap to i32*
store i32%U,i32*%aq,align 4
%ar=getelementptr inbounds i8,i8*%ab,i64 24
%as=bitcast i8*%ar to i32*
store i32%X,i32*%as,align 4
%at=getelementptr inbounds i8,i8*%ab,i64 28
%au=bitcast i8*%at to i32*
store i32%aa,i32*%au,align 4
%av=getelementptr inbounds i8,i8*%ab,i64 32
%aw=bitcast i8*%av to i32*
store i32%C,i32*%aw,align 4
%ax=getelementptr inbounds i8,i8*%ab,i64 40
%ay=bitcast i8*%ax to i32*
store i32 0,i32*%ay,align 4
%az=call i32@prim_Date_mkTime(i8*%ab)
%aA=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%x,i32%az)#0
%aB=extractvalue{i32,i1}%aA,1
br i1%aB,label%aC,label%aU
aC:
%aD=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aD,i8**%b,align 8
%aE=call i8*@sml_alloc(i32 inreg 20)#0
%aF=getelementptr inbounds i8,i8*%aE,i64 -4
%aG=bitcast i8*%aF to i32*
store i32 1342177296,i32*%aG,align 4
store i8*%aE,i8**%c,align 8
%aH=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aI=bitcast i8*%aE to i8**
store i8*%aH,i8**%aI,align 8
%aJ=getelementptr inbounds i8,i8*%aE,i64 8
%aK=bitcast i8*%aJ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@a6,i64 0,i32 2,i64 0),i8**%aK,align 8
%aL=getelementptr inbounds i8,i8*%aE,i64 16
%aM=bitcast i8*%aL to i32*
store i32 3,i32*%aM,align 4
%aN=call i8*@sml_alloc(i32 inreg 60)#0
%aO=getelementptr inbounds i8,i8*%aN,i64 -4
%aP=bitcast i8*%aO to i32*
store i32 1342177336,i32*%aP,align 4
%aQ=getelementptr inbounds i8,i8*%aN,i64 56
%aR=bitcast i8*%aQ to i32*
store i32 1,i32*%aR,align 4
%aS=load i8*,i8**%c,align 8
%aT=bitcast i8*%aN to i8**
store i8*%aS,i8**%aT,align 8
call void@sml_raise(i8*inreg%aN)#1
unreachable
aU:
%aV=sub nsw i32%x,%az
%aW=call fastcc i8*@_SMLFN6IntInf7fromIntE(i32 inreg%aV)
%aX=tail call fastcc i8*@_SMLFN4Time11fromSecondsE(i8*inreg%aW)
ret i8*%aX
}
define fastcc i32@_SMLFN4Date4yearE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 44
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
ret i32%d
}
define fastcc i32@_SMLFN4Date5monthE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 20
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
ret i32%d
}
define fastcc i32@_SMLFN4Date3dayE(i8*inreg%a)#4 gc"smlsharp"{
%b=bitcast i8*%a to i32*
%c=load i32,i32*%b,align 4
ret i32%c
}
define fastcc i32@_SMLFN4Date4hourE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 4
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
ret i32%d
}
define fastcc i32@_SMLFN4Date6minuteE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 16
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
ret i32%d
}
define fastcc i32@_SMLFN4Date6secondE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 32
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
ret i32%d
}
define fastcc i32@_SMLFN4Date7weekDayE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 36
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
ret i32%d
}
define fastcc i32@_SMLFN4Date7yearDayE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 40
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
ret i32%d
}
define fastcc i8*@_SMLFN4Date5isDstE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 8
%c=bitcast i8*%b to i8**
%d=load i8*,i8**%c,align 8
ret i8*%d
}
define fastcc i8*@_SMLFN4Date6offsetE(i8*inreg%a)#4 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 24
%c=bitcast i8*%b to i8**
%d=load i8*,i8**%c,align 8
ret i8*%d
}
define internal fastcc i8*@_SMLLLN4Date7tm2dateE_299(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
%e=bitcast i8*%b to i8**
%f=load i8*,i8**%e,align 8
%g=getelementptr inbounds i8,i8*%b,i64 8
%h=bitcast i8*%g to i8**
%i=load i8*,i8**%h,align 8
store i8*%i,i8**%c,align 8
%j=getelementptr inbounds i8,i8*%f,i64 20
%k=bitcast i8*%j to i32*
%l=load i32,i32*%k,align 4
%m=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%l,i32 1900)#0
%n=extractvalue{i32,i1}%m,1
br i1%n,label%o,label%G
o:
%p=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%p,i8**%c,align 8
%q=call i8*@sml_alloc(i32 inreg 20)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177296,i32*%s,align 4
store i8*%q,i8**%d,align 8
%t=load i8*,i8**%c,align 8
store i8*null,i8**%c,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@Y,i64 0,i32 2,i64 0),i8**%w,align 8
%x=getelementptr inbounds i8,i8*%q,i64 16
%y=bitcast i8*%x to i32*
store i32 3,i32*%y,align 4
%z=call i8*@sml_alloc(i32 inreg 60)#0
%A=getelementptr inbounds i8,i8*%z,i64 -4
%B=bitcast i8*%A to i32*
store i32 1342177336,i32*%B,align 4
%C=getelementptr inbounds i8,i8*%z,i64 56
%D=bitcast i8*%C to i32*
store i32 1,i32*%D,align 4
%E=load i8*,i8**%d,align 8
%F=bitcast i8*%z to i8**
store i8*%E,i8**%F,align 8
call void@sml_raise(i8*inreg%z)#1
unreachable
G:
%H=add nsw i32%l,1900
%I=getelementptr inbounds i8,i8*%f,i64 16
%J=bitcast i8*%I to i32*
%K=load i32,i32*%J,align 4
%L=icmp slt i32%K,0
br i1%L,label%ar,label%M
M:
%N=getelementptr inbounds i8,i8*%a,i64 8
%O=bitcast i8*%N to i32**
%P=load i32*,i32**%O,align 8
%Q=getelementptr inbounds i32,i32*%P,i64 -1
%R=load i32,i32*%Q,align 4
%S=lshr i32%R,2
%T=and i32%S,67108863
%U=icmp slt i32%K,%T
br i1%U,label%V,label%ar
V:
%W=bitcast i32*%P to i8*
%X=shl i32%K,2
%Y=sext i32%X to i64
%Z=getelementptr inbounds i8,i8*%W,i64%Y
%aa=bitcast i8*%Z to i32*
%ab=load i32,i32*%aa,align 4
%ac=getelementptr inbounds i8,i8*%f,i64 12
%ad=bitcast i8*%ac to i32*
%ae=load i32,i32*%ad,align 4
%af=getelementptr inbounds i8,i8*%f,i64 8
%ag=bitcast i8*%af to i32*
%ah=load i32,i32*%ag,align 4
%ai=getelementptr inbounds i8,i8*%f,i64 4
%aj=bitcast i8*%ai to i32*
%ak=load i32,i32*%aj,align 4
%al=bitcast i8*%f to i32*
%am=load i32,i32*%al,align 4
%an=getelementptr inbounds i8,i8*%f,i64 24
%ao=bitcast i8*%an to i32*
%ap=load i32,i32*%ao,align 4
%aq=icmp slt i32%ap,0
br i1%aq,label%a5,label%aJ
ar:
%as=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%as,i8**%c,align 8
%at=call i8*@sml_alloc(i32 inreg 20)#0
%au=getelementptr inbounds i8,i8*%at,i64 -4
%av=bitcast i8*%au to i32*
store i32 1342177296,i32*%av,align 4
store i8*%at,i8**%d,align 8
%aw=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ax=bitcast i8*%at to i8**
store i8*%aw,i8**%ax,align 8
%ay=getelementptr inbounds i8,i8*%at,i64 8
%az=bitcast i8*%ay to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@Z,i64 0,i32 2,i64 0),i8**%az,align 8
%aA=getelementptr inbounds i8,i8*%at,i64 16
%aB=bitcast i8*%aA to i32*
store i32 3,i32*%aB,align 4
%aC=call i8*@sml_alloc(i32 inreg 60)#0
%aD=getelementptr inbounds i8,i8*%aC,i64 -4
%aE=bitcast i8*%aD to i32*
store i32 1342177336,i32*%aE,align 4
%aF=getelementptr inbounds i8,i8*%aC,i64 56
%aG=bitcast i8*%aF to i32*
store i32 1,i32*%aG,align 4
%aH=load i8*,i8**%d,align 8
%aI=bitcast i8*%aC to i8**
store i8*%aH,i8**%aI,align 8
call void@sml_raise(i8*inreg%aC)#1
unreachable
aJ:
%aK=bitcast i8*%a to i32**
%aL=load i32*,i32**%aK,align 8
%aM=getelementptr inbounds i32,i32*%aL,i64 -1
%aN=load i32,i32*%aM,align 4
%aO=lshr i32%aN,2
%aP=and i32%aO,67108863
%aQ=icmp slt i32%ap,%aP
br i1%aQ,label%aR,label%a5
aR:
%aS=bitcast i32*%aL to i8*
%aT=shl i32%ap,2
%aU=sext i32%aT to i64
%aV=getelementptr inbounds i8,i8*%aS,i64%aU
%aW=bitcast i8*%aV to i32*
%aX=load i32,i32*%aW,align 4
%aY=getelementptr inbounds i8,i8*%f,i64 28
%aZ=bitcast i8*%aY to i32*
%a0=load i32,i32*%aZ,align 4
%a1=getelementptr inbounds i8,i8*%f,i64 32
%a2=bitcast i8*%a1 to i32*
%a3=load i32,i32*%a2,align 4
%a4=icmp sgt i32%a3,-1
br i1%a4,label%bn,label%by
a5:
%a6=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%a6,i8**%c,align 8
%a7=call i8*@sml_alloc(i32 inreg 20)#0
%a8=getelementptr inbounds i8,i8*%a7,i64 -4
%a9=bitcast i8*%a8 to i32*
store i32 1342177296,i32*%a9,align 4
store i8*%a7,i8**%d,align 8
%ba=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bb=bitcast i8*%a7 to i8**
store i8*%ba,i8**%bb,align 8
%bc=getelementptr inbounds i8,i8*%a7,i64 8
%bd=bitcast i8*%bc to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@aa,i64 0,i32 2,i64 0),i8**%bd,align 8
%be=getelementptr inbounds i8,i8*%a7,i64 16
%bf=bitcast i8*%be to i32*
store i32 3,i32*%bf,align 4
%bg=call i8*@sml_alloc(i32 inreg 60)#0
%bh=getelementptr inbounds i8,i8*%bg,i64 -4
%bi=bitcast i8*%bh to i32*
store i32 1342177336,i32*%bi,align 4
%bj=getelementptr inbounds i8,i8*%bg,i64 56
%bk=bitcast i8*%bj to i32*
store i32 1,i32*%bk,align 4
%bl=load i8*,i8**%d,align 8
%bm=bitcast i8*%bg to i8**
store i8*%bl,i8**%bm,align 8
call void@sml_raise(i8*inreg%bg)#1
unreachable
bn:
%bo=icmp ne i32%a3,0
%bp=zext i1%bo to i32
%bq=call i8*@sml_alloc(i32 inreg 12)#0
%br=bitcast i8*%bq to i32*
%bs=getelementptr inbounds i8,i8*%bq,i64 -4
%bt=bitcast i8*%bs to i32*
store i32 1342177288,i32*%bt,align 4
%bu=getelementptr inbounds i8,i8*%bq,i64 4
%bv=bitcast i8*%bu to i32*
store i32 0,i32*%bv,align 1
store i32%bp,i32*%br,align 4
%bw=getelementptr inbounds i8,i8*%bq,i64 8
%bx=bitcast i8*%bw to i32*
store i32 0,i32*%bx,align 4
br label%by
by:
%bz=phi i8*[%bq,%bn],[null,%aR]
store i8*%bz,i8**%d,align 8
%bA=call i8*@sml_alloc(i32 inreg 52)#0
%bB=bitcast i8*%bA to i32*
%bC=getelementptr inbounds i8,i8*%bA,i64 -4
%bD=bitcast i8*%bC to i32*
store i32 1342177328,i32*%bD,align 4
store i32%ae,i32*%bB,align 4
%bE=getelementptr inbounds i8,i8*%bA,i64 4
%bF=bitcast i8*%bE to i32*
store i32%ah,i32*%bF,align 4
%bG=load i8*,i8**%d,align 8
%bH=getelementptr inbounds i8,i8*%bA,i64 8
%bI=bitcast i8*%bH to i8**
store i8*%bG,i8**%bI,align 8
%bJ=getelementptr inbounds i8,i8*%bA,i64 16
%bK=bitcast i8*%bJ to i32*
store i32%ak,i32*%bK,align 4
%bL=getelementptr inbounds i8,i8*%bA,i64 20
%bM=bitcast i8*%bL to i32*
store i32%ab,i32*%bM,align 4
%bN=load i8*,i8**%c,align 8
%bO=getelementptr inbounds i8,i8*%bA,i64 24
%bP=bitcast i8*%bO to i8**
store i8*%bN,i8**%bP,align 8
%bQ=getelementptr inbounds i8,i8*%bA,i64 32
%bR=bitcast i8*%bQ to i32*
store i32%am,i32*%bR,align 4
%bS=getelementptr inbounds i8,i8*%bA,i64 36
%bT=bitcast i8*%bS to i32*
store i32%aX,i32*%bT,align 4
%bU=getelementptr inbounds i8,i8*%bA,i64 40
%bV=bitcast i8*%bU to i32*
store i32%a0,i32*%bV,align 4
%bW=getelementptr inbounds i8,i8*%bA,i64 44
%bX=bitcast i8*%bW to i32*
store i32%H,i32*%bX,align 4
%bY=getelementptr inbounds i8,i8*%bA,i64 48
%bZ=bitcast i8*%bY to i32*
store i32 10,i32*%bZ,align 4
ret i8*%bA
}
define internal fastcc i8*@_SMLLLN4Date7date2tmE_303(i8*inreg%a)unnamed_addr#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]
store i8*null,i8**%b,align 8
%k=getelementptr inbounds i8,i8*%i,i64 20
%l=bitcast i8*%k to i32*
%m=load i32,i32*%l,align 4
%n=icmp ult i32%m,12
br i1%n,label%G,label%o
o:
call void@sml_matchcomp_bug()
%p=load i8*,i8**@_SMLZ5Match,align 8
store i8*%p,i8**%b,align 8
%q=call i8*@sml_alloc(i32 inreg 20)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177296,i32*%s,align 4
store i8*%q,i8**%c,align 8
%t=load i8*,i8**%b,align 8
store i8*null,i8**%b,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[37x i8]}>,<{[4x i8],i32,[37x i8]}>*@a9,i64 0,i32 2,i64 0),i8**%w,align 8
%x=getelementptr inbounds i8,i8*%q,i64 16
%y=bitcast i8*%x to i32*
store i32 3,i32*%y,align 4
%z=call i8*@sml_alloc(i32 inreg 60)#0
%A=getelementptr inbounds i8,i8*%z,i64 -4
%B=bitcast i8*%A to i32*
store i32 1342177336,i32*%B,align 4
%C=getelementptr inbounds i8,i8*%z,i64 56
%D=bitcast i8*%C to i32*
store i32 1,i32*%D,align 4
%E=load i8*,i8**%c,align 8
%F=bitcast i8*%z to i8**
store i8*%E,i8**%F,align 8
call void@sml_raise(i8*inreg%z)#1
unreachable
G:
%H=sext i32%m to i64
%I=getelementptr inbounds[12x i32],[12x i32]*@bq,i64 0,i64%H
%J=load i32,i32*%I,align 4
%K=getelementptr inbounds i8,i8*%i,i64 44
%L=bitcast i8*%K to i32*
%M=load i32,i32*%L,align 4
%N=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%M,i32 1900)#0
%O=extractvalue{i32,i1}%N,1
br i1%O,label%P,label%ah
P:
%Q=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%Q,i8**%b,align 8
%R=call i8*@sml_alloc(i32 inreg 20)#0
%S=getelementptr inbounds i8,i8*%R,i64 -4
%T=bitcast i8*%S to i32*
store i32 1342177296,i32*%T,align 4
store i8*%R,i8**%c,align 8
%U=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%V=bitcast i8*%R to i8**
store i8*%U,i8**%V,align 8
%W=getelementptr inbounds i8,i8*%R,i64 8
%X=bitcast i8*%W to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@ab,i64 0,i32 2,i64 0),i8**%X,align 8
%Y=getelementptr inbounds i8,i8*%R,i64 16
%Z=bitcast i8*%Y to i32*
store i32 3,i32*%Z,align 4
%aa=call i8*@sml_alloc(i32 inreg 60)#0
%ab=getelementptr inbounds i8,i8*%aa,i64 -4
%ac=bitcast i8*%ab to i32*
store i32 1342177336,i32*%ac,align 4
%ad=getelementptr inbounds i8,i8*%aa,i64 56
%ae=bitcast i8*%ad to i32*
store i32 1,i32*%ae,align 4
%af=load i8*,i8**%c,align 8
%ag=bitcast i8*%aa to i8**
store i8*%af,i8**%ag,align 8
call void@sml_raise(i8*inreg%aa)#1
unreachable
ah:
%ai=add nsw i32%M,-1900
%aj=getelementptr inbounds i8,i8*%i,i64 36
%ak=bitcast i8*%aj to i32*
%al=load i32,i32*%ak,align 4
%am=icmp ult i32%al,7
br i1%am,label%aF,label%an
an:
call void@sml_matchcomp_bug()
%ao=load i8*,i8**@_SMLZ5Match,align 8
store i8*%ao,i8**%b,align 8
%ap=call i8*@sml_alloc(i32 inreg 20)#0
%aq=getelementptr inbounds i8,i8*%ap,i64 -4
%ar=bitcast i8*%aq to i32*
store i32 1342177296,i32*%ar,align 4
store i8*%ap,i8**%c,align 8
%as=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%at=bitcast i8*%ap to i8**
store i8*%as,i8**%at,align 8
%au=getelementptr inbounds i8,i8*%ap,i64 8
%av=bitcast i8*%au to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[37x i8]}>,<{[4x i8],i32,[37x i8]}>*@ac,i64 0,i32 2,i64 0),i8**%av,align 8
%aw=getelementptr inbounds i8,i8*%ap,i64 16
%ax=bitcast i8*%aw to i32*
store i32 3,i32*%ax,align 4
%ay=call i8*@sml_alloc(i32 inreg 60)#0
%az=getelementptr inbounds i8,i8*%ay,i64 -4
%aA=bitcast i8*%az to i32*
store i32 1342177336,i32*%aA,align 4
%aB=getelementptr inbounds i8,i8*%ay,i64 56
%aC=bitcast i8*%aB to i32*
store i32 1,i32*%aC,align 4
%aD=load i8*,i8**%c,align 8
%aE=bitcast i8*%ay to i8**
store i8*%aD,i8**%aE,align 8
call void@sml_raise(i8*inreg%ay)#1
unreachable
aF:
%aG=sext i32%al to i64
%aH=getelementptr inbounds[7x i32],[7x i32]*@bo,i64 0,i64%aG
%aI=load i32,i32*%aH,align 4
%aJ=getelementptr inbounds i8,i8*%i,i64 8
%aK=bitcast i8*%aJ to i8**
%aL=load i8*,i8**%aK,align 8
%aM=icmp eq i8*%aL,null
br i1%aM,label%aS,label%aN
aN:
%aO=bitcast i8*%aL to i32*
%aP=load i32,i32*%aO,align 4
%aQ=icmp ne i32%aP,0
%aR=zext i1%aQ to i32
br label%aS
aS:
%aT=phi i32[%aR,%aN],[-1,%aF]
%aU=getelementptr inbounds i8,i8*%i,i64 32
%aV=bitcast i8*%aU to i32*
%aW=load i32,i32*%aV,align 4
%aX=getelementptr inbounds i8,i8*%i,i64 16
%aY=bitcast i8*%aX to i32*
%aZ=load i32,i32*%aY,align 4
%a0=getelementptr inbounds i8,i8*%i,i64 4
%a1=bitcast i8*%a0 to i32*
%a2=load i32,i32*%a1,align 4
%a3=bitcast i8*%i to i32*
%a4=load i32,i32*%a3,align 4
%a5=getelementptr inbounds i8,i8*%i,i64 40
%a6=bitcast i8*%a5 to i32*
%a7=load i32,i32*%a6,align 4
%a8=call i8*@sml_alloc(i32 inreg 44)#0
%a9=bitcast i8*%a8 to i32*
%ba=getelementptr inbounds i8,i8*%a8,i64 -4
%bb=bitcast i8*%ba to i32*
store i32 1342177320,i32*%bb,align 4
%bc=getelementptr inbounds i8,i8*%a8,i64 36
%bd=bitcast i8*%bc to i32*
store i32 0,i32*%bd,align 1
store i32%aW,i32*%a9,align 4
%be=getelementptr inbounds i8,i8*%a8,i64 4
%bf=bitcast i8*%be to i32*
store i32%aZ,i32*%bf,align 4
%bg=getelementptr inbounds i8,i8*%a8,i64 8
%bh=bitcast i8*%bg to i32*
store i32%a2,i32*%bh,align 4
%bi=getelementptr inbounds i8,i8*%a8,i64 12
%bj=bitcast i8*%bi to i32*
store i32%a4,i32*%bj,align 4
%bk=getelementptr inbounds i8,i8*%a8,i64 16
%bl=bitcast i8*%bk to i32*
store i32%J,i32*%bl,align 4
%bm=getelementptr inbounds i8,i8*%a8,i64 20
%bn=bitcast i8*%bm to i32*
store i32%ai,i32*%bn,align 4
%bo=getelementptr inbounds i8,i8*%a8,i64 24
%bp=bitcast i8*%bo to i32*
store i32%aI,i32*%bp,align 4
%bq=getelementptr inbounds i8,i8*%a8,i64 28
%br=bitcast i8*%bq to i32*
store i32%a7,i32*%br,align 4
%bs=getelementptr inbounds i8,i8*%a8,i64 32
%bt=bitcast i8*%bs to i32*
store i32%aT,i32*%bt,align 4
%bu=getelementptr inbounds i8,i8*%a8,i64 40
%bv=bitcast i8*%bu to i32*
store i32 0,i32*%bv,align 4
ret i8*%a8
}
define internal fastcc i32@_SMLLLN4Date10isLeapYearE_329(i32 inreg%a)unnamed_addr#4 gc"smlsharp"{
v:
%b=srem i32%a,4
%c=lshr i32%a,31
%d=icmp ne i32%b,0
%e=zext i1%d to i32
%f=and i32%c,%e
%g=sub nsw i32 0,%f
%h=and i32%g,4
%i=sub nsw i32 0,%h
%j=icmp eq i32%b,%i
br i1%j,label%k,label%t
k:
%l=srem i32%a,100
%m=icmp ne i32%l,0
%n=zext i1%m to i32
%o=and i32%c,%n
%p=sub nsw i32 0,%o
%q=and i32%p,100
%r=sub nsw i32 0,%q
%s=icmp eq i32%l,%r
br i1%s,label%w,label%t
t:
%u=phi i32[1,%k],[0,%v]
ret i32%u
w:
%x=srem i32%a,400
%y=icmp ne i32%x,0
%z=zext i1%y to i32
%A=and i32%c,%z
%B=sub nsw i32 0,%A
%C=and i32%B,400
%D=sub nsw i32 0,%C
%E=icmp eq i32%x,%D
%F=zext i1%E to i32
ret i32%F
}
define internal fastcc i32@_SMLLLN4Date10daysInYearE_335(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
k:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%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%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%b,%k]
store i8*null,i8**%d,align 8
%l=bitcast i8*%j to i32*
%m=load i32,i32*%l,align 4
%n=getelementptr inbounds i8,i8*%j,i64 4
%o=bitcast i8*%n to i32*
%p=load i32,i32*%o,align 4
%q=getelementptr inbounds i8,i8*%j,i64 8
%r=bitcast i8*%q to i32*
%s=load i32,i32*%r,align 4
%t=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%p,i32 1)#0
%u=extractvalue{i32,i1}%t,1
br i1%u,label%v,label%N
v:
%w=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%w,i8**%c,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**%d,align 8
%A=load i8*,i8**%c,align 8
store i8*null,i8**%c,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]}>*@aB,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**%d,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=icmp slt i32%p,1
br i1%O,label%aj,label%P
P:
%Q=bitcast i8**%c to i32***
%R=load i32**,i32***%Q,align 8
%S=load i32*,i32**%R,align 8
%T=getelementptr inbounds i32,i32*%S,i64 -1
%U=load i32,i32*%T,align 4
%V=lshr i32%U,2
%W=and i32%V,67108863
%X=icmp sgt i32%p,%W
br i1%X,label%aj,label%Y
Y:
%Z=bitcast i32**%R to i8**
store i8*null,i8**%c,align 8
%aa=load i8*,i8**%Z,align 8
%ab=shl i32%p,2
%ac=add i32%ab,-4
%ad=sext i32%ac to i64
%ae=getelementptr inbounds i8,i8*%aa,i64%ad
%af=bitcast i8*%ae to i32*
%ag=load i32,i32*%af,align 4
%ah=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%ag,i32%m)#0
%ai=extractvalue{i32,i1}%ah,1
br i1%ai,label%aB,label%aT
aj:
%ak=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%ak,i8**%c,align 8
%al=call i8*@sml_alloc(i32 inreg 20)#0
%am=getelementptr inbounds i8,i8*%al,i64 -4
%an=bitcast i8*%am to i32*
store i32 1342177296,i32*%an,align 4
store i8*%al,i8**%d,align 8
%ao=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ap=bitcast i8*%al to i8**
store i8*%ao,i8**%ap,align 8
%aq=getelementptr inbounds i8,i8*%al,i64 8
%ar=bitcast i8*%aq to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aC,i64 0,i32 2,i64 0),i8**%ar,align 8
%as=getelementptr inbounds i8,i8*%al,i64 16
%at=bitcast i8*%as to i32*
store i32 3,i32*%at,align 4
%au=call i8*@sml_alloc(i32 inreg 60)#0
%av=getelementptr inbounds i8,i8*%au,i64 -4
%aw=bitcast i8*%av to i32*
store i32 1342177336,i32*%aw,align 4
%ax=getelementptr inbounds i8,i8*%au,i64 56
%ay=bitcast i8*%ax to i32*
store i32 1,i32*%ay,align 4
%az=load i8*,i8**%d,align 8
%aA=bitcast i8*%au to i8**
store i8*%az,i8**%aA,align 8
call void@sml_raise(i8*inreg%au)#1
unreachable
aB:
%aC=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aC,i8**%c,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**%d,align 8
%aG=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aH=bitcast i8*%aD to i8**
store i8*%aG,i8**%aH,align 8
%aI=getelementptr inbounds i8,i8*%aD,i64 8
%aJ=bitcast i8*%aI to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aD,i64 0,i32 2,i64 0),i8**%aJ,align 8
%aK=getelementptr inbounds i8,i8*%aD,i64 16
%aL=bitcast i8*%aK to i32*
store i32 3,i32*%aL,align 4
%aM=call i8*@sml_alloc(i32 inreg 60)#0
%aN=getelementptr inbounds i8,i8*%aM,i64 -4
%aO=bitcast i8*%aN to i32*
store i32 1342177336,i32*%aO,align 4
%aP=getelementptr inbounds i8,i8*%aM,i64 56
%aQ=bitcast i8*%aP to i32*
store i32 1,i32*%aQ,align 4
%aR=load i8*,i8**%d,align 8
%aS=bitcast i8*%aM to i8**
store i8*%aR,i8**%aS,align 8
call void@sml_raise(i8*inreg%aM)#1
unreachable
aT:
%aU=add nsw i32%ag,%m
%aV=icmp slt i32%p,3
br i1%aV,label%a0,label%aW
aW:
%aX=call fastcc i32@_SMLLLN4Date10isLeapYearE_329(i32 inreg%s)
%aY=icmp eq i32%aX,0
br i1%aY,label%a0,label%aZ
aZ:
ret i32%aU
a0:
%a1=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%aU,i32 1)#0
%a2=extractvalue{i32,i1}%a1,1
br i1%a2,label%a3,label%bl
a3:
%a4=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%a4,i8**%c,align 8
%a5=call i8*@sml_alloc(i32 inreg 20)#0
%a6=getelementptr inbounds i8,i8*%a5,i64 -4
%a7=bitcast i8*%a6 to i32*
store i32 1342177296,i32*%a7,align 4
store i8*%a5,i8**%d,align 8
%a8=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a9=bitcast i8*%a5 to i8**
store i8*%a8,i8**%a9,align 8
%ba=getelementptr inbounds i8,i8*%a5,i64 8
%bb=bitcast i8*%ba to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aE,i64 0,i32 2,i64 0),i8**%bb,align 8
%bc=getelementptr inbounds i8,i8*%a5,i64 16
%bd=bitcast i8*%bc to i32*
store i32 3,i32*%bd,align 4
%be=call i8*@sml_alloc(i32 inreg 60)#0
%bf=getelementptr inbounds i8,i8*%be,i64 -4
%bg=bitcast i8*%bf to i32*
store i32 1342177336,i32*%bg,align 4
%bh=getelementptr inbounds i8,i8*%be,i64 56
%bi=bitcast i8*%bh to i32*
store i32 1,i32*%bi,align 4
%bj=load i8*,i8**%d,align 8
%bk=bitcast i8*%be to i8**
store i8*%bj,i8**%bk,align 8
call void@sml_raise(i8*inreg%be)#1
unreachable
bl:
%bm=add nsw i32%aU,-1
ret i32%bm
}
define internal fastcc i32@_SMLLLN4Date13toAbsoluteDayE_346(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
k:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%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%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%b,%k]
store i8*null,i8**%d,align 8
%l=getelementptr inbounds i8,i8*%j,i64 8
%m=bitcast i8*%l to i32*
%n=load i32,i32*%m,align 4
%o=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%n,i32 1)#0
%p=extractvalue{i32,i1}%o,1
br i1%p,label%q,label%I
q:
%r=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%r,i8**%c,align 8
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
store i8*%s,i8**%d,align 8
%v=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%s,i64 8
%y=bitcast i8*%x to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aF,i64 0,i32 2,i64 0),i8**%y,align 8
%z=getelementptr inbounds i8,i8*%s,i64 16
%A=bitcast i8*%z to i32*
store i32 3,i32*%A,align 4
%B=call i8*@sml_alloc(i32 inreg 60)#0
%C=getelementptr inbounds i8,i8*%B,i64 -4
%D=bitcast i8*%C to i32*
store i32 1342177336,i32*%D,align 4
%E=getelementptr inbounds i8,i8*%B,i64 56
%F=bitcast i8*%E to i32*
store i32 1,i32*%F,align 4
%G=load i8*,i8**%d,align 8
%H=bitcast i8*%B to i8**
store i8*%G,i8**%H,align 8
call void@sml_raise(i8*inreg%B)#1
unreachable
I:
%J=getelementptr inbounds i8,i8*%j,i64 4
%K=bitcast i8*%J to i32*
%L=load i32,i32*%K,align 4
%M=bitcast i8*%j to i32*
%N=load i32,i32*%M,align 4
%O=add nsw i32%n,-1
%P=bitcast i8**%c to i8***
%Q=load i8**,i8***%P,align 8
%R=load i8*,i8**%Q,align 8
store i8*%R,i8**%c,align 8
%S=call i8*@sml_alloc(i32 inreg 20)#0
%T=bitcast i8*%S to i32*
%U=getelementptr inbounds i8,i8*%S,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177296,i32*%V,align 4
%W=getelementptr inbounds i8,i8*%S,i64 12
%X=bitcast i8*%W to i32*
store i32 0,i32*%X,align 1
store i32%N,i32*%T,align 4
%Y=getelementptr inbounds i8,i8*%S,i64 4
%Z=bitcast i8*%Y to i32*
store i32%L,i32*%Z,align 4
%aa=getelementptr inbounds i8,i8*%S,i64 8
%ab=bitcast i8*%aa to i32*
store i32%n,i32*%ab,align 4
%ac=getelementptr inbounds i8,i8*%S,i64 16
%ad=bitcast i8*%ac to i32*
store i32 0,i32*%ad,align 4
%ae=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%af=call fastcc i32@_SMLLLN4Date10daysInYearE_335(i8*inreg%ae,i8*inreg%S)
%ag=call{i32,i1}@llvm.smul.with.overflow.i32(i32%O,i32 365)#0
%ah=extractvalue{i32,i1}%ag,1
br i1%ah,label%ai,label%aA
ai:
%aj=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aj,i8**%c,align 8
%ak=call i8*@sml_alloc(i32 inreg 20)#0
%al=getelementptr inbounds i8,i8*%ak,i64 -4
%am=bitcast i8*%al to i32*
store i32 1342177296,i32*%am,align 4
store i8*%ak,i8**%d,align 8
%an=load i8*,i8**%c,align 8
store i8*null,i8**%c,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aG,i64 0,i32 2,i64 0),i8**%aq,align 8
%ar=getelementptr inbounds i8,i8*%ak,i64 16
%as=bitcast i8*%ar to i32*
store i32 3,i32*%as,align 4
%at=call i8*@sml_alloc(i32 inreg 60)#0
%au=getelementptr inbounds i8,i8*%at,i64 -4
%av=bitcast i8*%au to i32*
store i32 1342177336,i32*%av,align 4
%aw=getelementptr inbounds i8,i8*%at,i64 56
%ax=bitcast i8*%aw to i32*
store i32 1,i32*%ax,align 4
%ay=load i8*,i8**%d,align 8
%az=bitcast i8*%at to i8**
store i8*%ay,i8**%az,align 8
call void@sml_raise(i8*inreg%at)#1
unreachable
aA:
%aB=mul nsw i32%O,365
%aC=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%af,i32%aB)#0
%aD=extractvalue{i32,i1}%aC,1
br i1%aD,label%aE,label%aW
aE:
%aF=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aF,i8**%c,align 8
%aG=call i8*@sml_alloc(i32 inreg 20)#0
%aH=getelementptr inbounds i8,i8*%aG,i64 -4
%aI=bitcast i8*%aH to i32*
store i32 1342177296,i32*%aI,align 4
store i8*%aG,i8**%d,align 8
%aJ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aK=bitcast i8*%aG to i8**
store i8*%aJ,i8**%aK,align 8
%aL=getelementptr inbounds i8,i8*%aG,i64 8
%aM=bitcast i8*%aL to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aH,i64 0,i32 2,i64 0),i8**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aG,i64 16
%aO=bitcast i8*%aN to i32*
store i32 3,i32*%aO,align 4
%aP=call i8*@sml_alloc(i32 inreg 60)#0
%aQ=getelementptr inbounds i8,i8*%aP,i64 -4
%aR=bitcast i8*%aQ to i32*
store i32 1342177336,i32*%aR,align 4
%aS=getelementptr inbounds i8,i8*%aP,i64 56
%aT=bitcast i8*%aS to i32*
store i32 1,i32*%aT,align 4
%aU=load i8*,i8**%d,align 8
%aV=bitcast i8*%aP to i8**
store i8*%aU,i8**%aV,align 8
call void@sml_raise(i8*inreg%aP)#1
unreachable
aW:
%aX=add nsw i32%af,%aB
%aY=sdiv i32%O,4
%aZ=icmp slt i32%n,1
%a0=and i32%O,3
%a1=icmp ne i32%a0,0
%a2=and i1%aZ,%a1
%a3=zext i1%a2 to i32
%a4=sub nsw i32%aY,%a3
%a5=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%aX,i32%a4)#0
%a6=extractvalue{i32,i1}%a5,1
br i1%a6,label%a7,label%bp
a7:
%a8=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%a8,i8**%c,align 8
%a9=call i8*@sml_alloc(i32 inreg 20)#0
%ba=getelementptr inbounds i8,i8*%a9,i64 -4
%bb=bitcast i8*%ba to i32*
store i32 1342177296,i32*%bb,align 4
store i8*%a9,i8**%d,align 8
%bc=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bd=bitcast i8*%a9 to i8**
store i8*%bc,i8**%bd,align 8
%be=getelementptr inbounds i8,i8*%a9,i64 8
%bf=bitcast i8*%be to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aI,i64 0,i32 2,i64 0),i8**%bf,align 8
%bg=getelementptr inbounds i8,i8*%a9,i64 16
%bh=bitcast i8*%bg to i32*
store i32 3,i32*%bh,align 4
%bi=call i8*@sml_alloc(i32 inreg 60)#0
%bj=getelementptr inbounds i8,i8*%bi,i64 -4
%bk=bitcast i8*%bj to i32*
store i32 1342177336,i32*%bk,align 4
%bl=getelementptr inbounds i8,i8*%bi,i64 56
%bm=bitcast i8*%bl to i32*
store i32 1,i32*%bm,align 4
%bn=load i8*,i8**%d,align 8
%bo=bitcast i8*%bi to i8**
store i8*%bn,i8**%bo,align 8
call void@sml_raise(i8*inreg%bi)#1
unreachable
bp:
%bq=add nsw i32%aX,%a4
%br=sdiv i32%O,100
%bs=srem i32%O,100
%bt=icmp ne i32%bs,0
%bu=and i1%aZ,%bt
%bv=zext i1%bu to i32
%bw=sub nsw i32%br,%bv
%bx=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%bq,i32%bw)#0
%by=extractvalue{i32,i1}%bx,1
br i1%by,label%bz,label%bR
bz:
%bA=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%bA,i8**%c,align 8
%bB=call i8*@sml_alloc(i32 inreg 20)#0
%bC=getelementptr inbounds i8,i8*%bB,i64 -4
%bD=bitcast i8*%bC to i32*
store i32 1342177296,i32*%bD,align 4
store i8*%bB,i8**%d,align 8
%bE=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bF=bitcast i8*%bB to i8**
store i8*%bE,i8**%bF,align 8
%bG=getelementptr inbounds i8,i8*%bB,i64 8
%bH=bitcast i8*%bG to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aJ,i64 0,i32 2,i64 0),i8**%bH,align 8
%bI=getelementptr inbounds i8,i8*%bB,i64 16
%bJ=bitcast i8*%bI to i32*
store i32 3,i32*%bJ,align 4
%bK=call i8*@sml_alloc(i32 inreg 60)#0
%bL=getelementptr inbounds i8,i8*%bK,i64 -4
%bM=bitcast i8*%bL to i32*
store i32 1342177336,i32*%bM,align 4
%bN=getelementptr inbounds i8,i8*%bK,i64 56
%bO=bitcast i8*%bN to i32*
store i32 1,i32*%bO,align 4
%bP=load i8*,i8**%d,align 8
%bQ=bitcast i8*%bK to i8**
store i8*%bP,i8**%bQ,align 8
call void@sml_raise(i8*inreg%bK)#1
unreachable
bR:
%bS=sub nsw i32%bq,%bw
%bT=sdiv i32%O,400
%bU=srem i32%O,400
%bV=icmp ne i32%bU,0
%bW=and i1%aZ,%bV
%bX=zext i1%bW to i32
%bY=sub nsw i32%bT,%bX
%bZ=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%bS,i32%bY)#0
%b0=extractvalue{i32,i1}%bZ,1
br i1%b0,label%b1,label%cj
b1:
%b2=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%b2,i8**%c,align 8
%b3=call i8*@sml_alloc(i32 inreg 20)#0
%b4=getelementptr inbounds i8,i8*%b3,i64 -4
%b5=bitcast i8*%b4 to i32*
store i32 1342177296,i32*%b5,align 4
store i8*%b3,i8**%d,align 8
%b6=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%b7=bitcast i8*%b3 to i8**
store i8*%b6,i8**%b7,align 8
%b8=getelementptr inbounds i8,i8*%b3,i64 8
%b9=bitcast i8*%b8 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aK,i64 0,i32 2,i64 0),i8**%b9,align 8
%ca=getelementptr inbounds i8,i8*%b3,i64 16
%cb=bitcast i8*%ca to i32*
store i32 3,i32*%cb,align 4
%cc=call i8*@sml_alloc(i32 inreg 60)#0
%cd=getelementptr inbounds i8,i8*%cc,i64 -4
%ce=bitcast i8*%cd to i32*
store i32 1342177336,i32*%ce,align 4
%cf=getelementptr inbounds i8,i8*%cc,i64 56
%cg=bitcast i8*%cf to i32*
store i32 1,i32*%cg,align 4
%ch=load i8*,i8**%d,align 8
%ci=bitcast i8*%cc to i8**
store i8*%ch,i8**%ci,align 8
call void@sml_raise(i8*inreg%cc)#1
unreachable
cj:
%ck=add nsw i32%bS,%bY
%cl=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%ck,i32 1)#0
%cm=extractvalue{i32,i1}%cl,1
br i1%cm,label%cn,label%cF
cn:
%co=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%co,i8**%c,align 8
%cp=call i8*@sml_alloc(i32 inreg 20)#0
%cq=getelementptr inbounds i8,i8*%cp,i64 -4
%cr=bitcast i8*%cq to i32*
store i32 1342177296,i32*%cr,align 4
store i8*%cp,i8**%d,align 8
%cs=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ct=bitcast i8*%cp to i8**
store i8*%cs,i8**%ct,align 8
%cu=getelementptr inbounds i8,i8*%cp,i64 8
%cv=bitcast i8*%cu to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@aL,i64 0,i32 2,i64 0),i8**%cv,align 8
%cw=getelementptr inbounds i8,i8*%cp,i64 16
%cx=bitcast i8*%cw to i32*
store i32 3,i32*%cx,align 4
%cy=call i8*@sml_alloc(i32 inreg 60)#0
%cz=getelementptr inbounds i8,i8*%cy,i64 -4
%cA=bitcast i8*%cz to i32*
store i32 1342177336,i32*%cA,align 4
%cB=getelementptr inbounds i8,i8*%cy,i64 56
%cC=bitcast i8*%cB to i32*
store i32 1,i32*%cC,align 4
%cD=load i8*,i8**%d,align 8
%cE=bitcast i8*%cy to i8**
store i8*%cD,i8**%cE,align 8
call void@sml_raise(i8*inreg%cy)#1
unreachable
cF:
%cG=add nsw i32%ck,1
ret i32%cG
}
define internal fastcc i8*@_SMLLL6divMod_355(i8*inreg%a)unnamed_addr#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=bitcast i8*%a to i32*
%e=load i32,i32*%d,align 4
%f=getelementptr inbounds i8,i8*%a,i64 4
%g=bitcast i8*%f to i32*
%h=load i32,i32*%g,align 4
%i=icmp eq i32%h,0
br i1%i,label%R,label%j
j:
%k=xor i32%e,-2147483648
%l=add i32%h,1
%m=or i32%l,%k
%n=icmp eq i32%m,0
br i1%n,label%z,label%o
o:
%p=sdiv i32%e,%h
%q=srem i32%e,%h
%r=xor i32%h,%e
%s=lshr i32%r,31
%t=icmp ne i32%q,0
%u=zext i1%t to i32
%v=and i32%s,%u
%w=sub nsw i32%p,%v
%x=call{i32,i1}@llvm.smul.with.overflow.i32(i32%w,i32%h)#0
%y=extractvalue{i32,i1}%x,1
br i1%y,label%aj,label%aB
z:
%A=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%A,i8**%b,align 8
%B=call i8*@sml_alloc(i32 inreg 20)#0
%C=getelementptr inbounds i8,i8*%B,i64 -4
%D=bitcast i8*%C to i32*
store i32 1342177296,i32*%D,align 4
store i8*%B,i8**%c,align 8
%E=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%F=bitcast i8*%B to i8**
store i8*%E,i8**%F,align 8
%G=getelementptr inbounds i8,i8*%B,i64 8
%H=bitcast i8*%G to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aO,i64 0,i32 2,i64 0),i8**%H,align 8
%I=getelementptr inbounds i8,i8*%B,i64 16
%J=bitcast i8*%I to i32*
store i32 3,i32*%J,align 4
%K=call i8*@sml_alloc(i32 inreg 60)#0
%L=getelementptr inbounds i8,i8*%K,i64 -4
%M=bitcast i8*%L to i32*
store i32 1342177336,i32*%M,align 4
%N=getelementptr inbounds i8,i8*%K,i64 56
%O=bitcast i8*%N to i32*
store i32 1,i32*%O,align 4
%P=load i8*,i8**%c,align 8
%Q=bitcast i8*%K to i8**
store i8*%P,i8**%Q,align 8
call void@sml_raise(i8*inreg%K)#1
unreachable
R:
%S=load i8*,i8**@_SMLZ3Div,align 8
store i8*%S,i8**%b,align 8
%T=call i8*@sml_alloc(i32 inreg 20)#0
%U=getelementptr inbounds i8,i8*%T,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177296,i32*%V,align 4
store i8*%T,i8**%c,align 8
%W=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%X=bitcast i8*%T to i8**
store i8*%W,i8**%X,align 8
%Y=getelementptr inbounds i8,i8*%T,i64 8
%Z=bitcast i8*%Y to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aO,i64 0,i32 2,i64 0),i8**%Z,align 8
%aa=getelementptr inbounds i8,i8*%T,i64 16
%ab=bitcast i8*%aa to i32*
store i32 3,i32*%ab,align 4
%ac=call i8*@sml_alloc(i32 inreg 60)#0
%ad=getelementptr inbounds i8,i8*%ac,i64 -4
%ae=bitcast i8*%ad to i32*
store i32 1342177336,i32*%ae,align 4
%af=getelementptr inbounds i8,i8*%ac,i64 56
%ag=bitcast i8*%af to i32*
store i32 1,i32*%ag,align 4
%ah=load i8*,i8**%c,align 8
%ai=bitcast i8*%ac to i8**
store i8*%ah,i8**%ai,align 8
call void@sml_raise(i8*inreg%ac)#1
unreachable
aj:
%ak=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%ak,i8**%b,align 8
%al=call i8*@sml_alloc(i32 inreg 20)#0
%am=getelementptr inbounds i8,i8*%al,i64 -4
%an=bitcast i8*%am to i32*
store i32 1342177296,i32*%an,align 4
store i8*%al,i8**%c,align 8
%ao=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ap=bitcast i8*%al to i8**
store i8*%ao,i8**%ap,align 8
%aq=getelementptr inbounds i8,i8*%al,i64 8
%ar=bitcast i8*%aq to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aP,i64 0,i32 2,i64 0),i8**%ar,align 8
%as=getelementptr inbounds i8,i8*%al,i64 16
%at=bitcast i8*%as to i32*
store i32 3,i32*%at,align 4
%au=call i8*@sml_alloc(i32 inreg 60)#0
%av=getelementptr inbounds i8,i8*%au,i64 -4
%aw=bitcast i8*%av to i32*
store i32 1342177336,i32*%aw,align 4
%ax=getelementptr inbounds i8,i8*%au,i64 56
%ay=bitcast i8*%ax to i32*
store i32 1,i32*%ay,align 4
%az=load i8*,i8**%c,align 8
%aA=bitcast i8*%au to i8**
store i8*%az,i8**%aA,align 8
call void@sml_raise(i8*inreg%au)#1
unreachable
aB:
%aC=mul nsw i32%w,%h
%aD=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%e,i32%aC)#0
%aE=extractvalue{i32,i1}%aD,1
br i1%aE,label%aF,label%aX
aF:
%aG=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aG,i8**%b,align 8
%aH=call i8*@sml_alloc(i32 inreg 20)#0
%aI=getelementptr inbounds i8,i8*%aH,i64 -4
%aJ=bitcast i8*%aI to i32*
store i32 1342177296,i32*%aJ,align 4
store i8*%aH,i8**%c,align 8
%aK=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aL=bitcast i8*%aH to i8**
store i8*%aK,i8**%aL,align 8
%aM=getelementptr inbounds i8,i8*%aH,i64 8
%aN=bitcast i8*%aM to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aQ,i64 0,i32 2,i64 0),i8**%aN,align 8
%aO=getelementptr inbounds i8,i8*%aH,i64 16
%aP=bitcast i8*%aO to i32*
store i32 3,i32*%aP,align 4
%aQ=call i8*@sml_alloc(i32 inreg 60)#0
%aR=getelementptr inbounds i8,i8*%aQ,i64 -4
%aS=bitcast i8*%aR to i32*
store i32 1342177336,i32*%aS,align 4
%aT=getelementptr inbounds i8,i8*%aQ,i64 56
%aU=bitcast i8*%aT to i32*
store i32 1,i32*%aU,align 4
%aV=load i8*,i8**%c,align 8
%aW=bitcast i8*%aQ to i8**
store i8*%aV,i8**%aW,align 8
call void@sml_raise(i8*inreg%aQ)#1
unreachable
aX:
%aY=sub nsw i32%e,%aC
%aZ=call i8*@sml_alloc(i32 inreg 12)#0
%a0=bitcast i8*%aZ to i32*
%a1=getelementptr inbounds i8,i8*%aZ,i64 -4
%a2=bitcast i8*%a1 to i32*
store i32 1342177288,i32*%a2,align 4
store i32%w,i32*%a0,align 4
%a3=getelementptr inbounds i8,i8*%aZ,i64 4
%a4=bitcast i8*%a3 to i32*
store i32%aY,i32*%a4,align 4
%a5=getelementptr inbounds i8,i8*%aZ,i64 8
%a6=bitcast i8*%a5 to i32*
store i32 0,i32*%a6,align 4
ret i8*%aZ
}
define internal fastcc i8*@_SMLLLN4Date4dateE_377(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%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],[%b,%l]
store i8*null,i8**%c,align 8
%m=bitcast i8*%k to i32*
%n=load i32,i32*%m,align 4
%o=getelementptr inbounds i8,i8*%k,i64 4
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=getelementptr inbounds i8,i8*%k,i64 8
%s=bitcast i8*%r to i32*
%t=load i32,i32*%s,align 4
%u=getelementptr inbounds i8,i8*%k,i64 12
%v=bitcast i8*%u to i32*
%w=load i32,i32*%v,align 4
%x=getelementptr inbounds i8,i8*%k,i64 16
%y=bitcast i8*%x to i8**
%z=load i8*,i8**%y,align 8
%A=getelementptr inbounds i8,i8*%k,i64 24
%B=bitcast i8*%A to i32*
%C=load i32,i32*%B,align 4
%D=getelementptr inbounds i8,i8*%k,i64 28
%E=bitcast i8*%D to i32*
%F=load i32,i32*%E,align 4
%G=icmp eq i8*%z,null
br i1%G,label%at,label%H
H:
%I=bitcast i8*%z to i8**
%J=load i8*,i8**%I,align 8
%K=call fastcc i8*@_SMLFN4Time9toSecondsE(i8*inreg%J)
store i8*%K,i8**%c,align 8
%L=call i8*@sml_save()#0
%M=call i8*@sml_load_intinf(i8*inreg getelementptr inbounds([6x i8],[6x i8]*@aM,i64 0,i64 0))#0
call void@sml_unsave()#0
store i8*%M,i8**%e,align 8
%N=call i8*@sml_alloc(i32 inreg 20)#0
%O=getelementptr inbounds i8,i8*%N,i64 -4
%P=bitcast i8*%O to i32*
store i32 1342177296,i32*%P,align 4
%Q=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%R=bitcast i8*%N to i8**
store i8*%Q,i8**%R,align 8
%S=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%T=getelementptr inbounds i8,i8*%N,i64 8
%U=bitcast i8*%T to i8**
store i8*%S,i8**%U,align 8
%V=getelementptr inbounds i8,i8*%N,i64 16
%W=bitcast i8*%V to i32*
store i32 3,i32*%W,align 4
%X=call fastcc i8*@_SMLFN6IntInf3remE(i8*inreg%N)
store i8*%X,i8**%c,align 8
%Y=call fastcc i32@_SMLFN6IntInf5toIntE(i8*inreg%X)
%Z=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aa=call fastcc i8*@_SMLFN4Time11fromSecondsE(i8*inreg%Z)
store i8*%aa,i8**%c,align 8
%ab=call i8*@sml_alloc(i32 inreg 12)#0
%ac=getelementptr inbounds i8,i8*%ab,i64 -4
%ad=bitcast i8*%ac to i32*
store i32 1342177288,i32*%ad,align 4
store i8*%ab,i8**%e,align 8
%ae=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%af=bitcast i8*%ab to i8**
store i8*%ae,i8**%af,align 8
%ag=getelementptr inbounds i8,i8*%ab,i64 8
%ah=bitcast i8*%ag to i32*
store i32 1,i32*%ah,align 4
%ai=call i8*@sml_alloc(i32 inreg 20)#0
%aj=bitcast i8*%ai to i32*
%ak=getelementptr inbounds i8,i8*%ai,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177296,i32*%al,align 4
%am=getelementptr inbounds i8,i8*%ai,i64 4
%an=bitcast i8*%am to i32*
store i32 0,i32*%an,align 1
store i32%Y,i32*%aj,align 4
%ao=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ap=getelementptr inbounds i8,i8*%ai,i64 8
%aq=bitcast i8*%ap to i8**
store i8*%ao,i8**%aq,align 8
%ar=getelementptr inbounds i8,i8*%ai,i64 16
%as=bitcast i8*%ar to i32*
store i32 2,i32*%as,align 4
br label%at
at:
%au=phi i8*[%ao,%H],[null,%j]
%av=phi i32[%Y,%H],[0,%j]
store i8*%au,i8**%c,align 8
%aw=icmp ult i32%w,12
br i1%aw,label%aP,label%ax
ax:
store i8*null,i8**%d,align 8
call void@sml_matchcomp_bug()
%ay=load i8*,i8**@_SMLZ5Match,align 8
store i8*%ay,i8**%c,align 8
%az=call i8*@sml_alloc(i32 inreg 20)#0
%aA=getelementptr inbounds i8,i8*%az,i64 -4
%aB=bitcast i8*%aA to i32*
store i32 1342177296,i32*%aB,align 4
store i8*%az,i8**%d,align 8
%aC=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aD=bitcast i8*%az to i8**
store i8*%aC,i8**%aD,align 8
%aE=getelementptr inbounds i8,i8*%az,i64 8
%aF=bitcast i8*%aE to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[37x i8]}>,<{[4x i8],i32,[37x i8]}>*@a9,i64 0,i32 2,i64 0),i8**%aF,align 8
%aG=getelementptr inbounds i8,i8*%az,i64 16
%aH=bitcast i8*%aG to i32*
store i32 3,i32*%aH,align 4
%aI=call i8*@sml_alloc(i32 inreg 60)#0
%aJ=getelementptr inbounds i8,i8*%aI,i64 -4
%aK=bitcast i8*%aJ to i32*
store i32 1342177336,i32*%aK,align 4
%aL=getelementptr inbounds i8,i8*%aI,i64 56
%aM=bitcast i8*%aL to i32*
store i32 1,i32*%aM,align 4
%aN=load i8*,i8**%d,align 8
%aO=bitcast i8*%aI to i8**
store i8*%aN,i8**%aO,align 8
call void@sml_raise(i8*inreg%aI)#1
unreachable
aP:
%aQ=sext i32%w to i64
%aR=getelementptr inbounds[12x i32],[12x i32]*@bp,i64 0,i64%aQ
%aS=load i32,i32*%aR,align 4
%aT=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%C,i32%av)#0
%aU=extractvalue{i32,i1}%aT,1
br i1%aU,label%aV,label%bd
aV:
store i8*null,i8**%d,align 8
%aW=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aW,i8**%c,align 8
%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
store i8*%aX,i8**%d,align 8
%a0=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a1=bitcast i8*%aX to i8**
store i8*%a0,i8**%a1,align 8
%a2=getelementptr inbounds i8,i8*%aX,i64 8
%a3=bitcast i8*%a2 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aN,i64 0,i32 2,i64 0),i8**%a3,align 8
%a4=getelementptr inbounds i8,i8*%aX,i64 16
%a5=bitcast i8*%a4 to i32*
store i32 3,i32*%a5,align 4
%a6=call i8*@sml_alloc(i32 inreg 60)#0
%a7=getelementptr inbounds i8,i8*%a6,i64 -4
%a8=bitcast i8*%a7 to i32*
store i32 1342177336,i32*%a8,align 4
%a9=getelementptr inbounds i8,i8*%a6,i64 56
%ba=bitcast i8*%a9 to i32*
store i32 1,i32*%ba,align 4
%bb=load i8*,i8**%d,align 8
%bc=bitcast i8*%a6 to i8**
store i8*%bb,i8**%bc,align 8
call void@sml_raise(i8*inreg%a6)#1
unreachable
bd:
%be=add nsw i32%av,%C
%bf=call i8*@sml_alloc(i32 inreg 12)#0
%bg=bitcast i8*%bf to i32*
%bh=getelementptr inbounds i8,i8*%bf,i64 -4
%bi=bitcast i8*%bh to i32*
store i32 1342177288,i32*%bi,align 4
store i32%be,i32*%bg,align 4
%bj=getelementptr inbounds i8,i8*%bf,i64 4
%bk=bitcast i8*%bj to i32*
store i32 60,i32*%bk,align 4
%bl=getelementptr inbounds i8,i8*%bf,i64 8
%bm=bitcast i8*%bl to i32*
store i32 0,i32*%bm,align 4
%bn=call fastcc i8*@_SMLLL6divMod_355(i8*inreg%bf)
%bo=bitcast i8*%bn to i32*
%bp=load i32,i32*%bo,align 4
%bq=getelementptr inbounds i8,i8*%bn,i64 4
%br=bitcast i8*%bq to i32*
%bs=load i32,i32*%br,align 4
%bt=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%t,i32%bp)#0
%bu=extractvalue{i32,i1}%bt,1
br i1%bu,label%bv,label%bN
bv:
store i8*null,i8**%d,align 8
%bw=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%bw,i8**%c,align 8
%bx=call i8*@sml_alloc(i32 inreg 20)#0
%by=getelementptr inbounds i8,i8*%bx,i64 -4
%bz=bitcast i8*%by to i32*
store i32 1342177296,i32*%bz,align 4
store i8*%bx,i8**%d,align 8
%bA=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bB=bitcast i8*%bx to i8**
store i8*%bA,i8**%bB,align 8
%bC=getelementptr inbounds i8,i8*%bx,i64 8
%bD=bitcast i8*%bC to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aR,i64 0,i32 2,i64 0),i8**%bD,align 8
%bE=getelementptr inbounds i8,i8*%bx,i64 16
%bF=bitcast i8*%bE to i32*
store i32 3,i32*%bF,align 4
%bG=call i8*@sml_alloc(i32 inreg 60)#0
%bH=getelementptr inbounds i8,i8*%bG,i64 -4
%bI=bitcast i8*%bH to i32*
store i32 1342177336,i32*%bI,align 4
%bJ=getelementptr inbounds i8,i8*%bG,i64 56
%bK=bitcast i8*%bJ to i32*
store i32 1,i32*%bK,align 4
%bL=load i8*,i8**%d,align 8
%bM=bitcast i8*%bG to i8**
store i8*%bL,i8**%bM,align 8
call void@sml_raise(i8*inreg%bG)#1
unreachable
bN:
%bO=add nsw i32%bp,%t
%bP=call i8*@sml_alloc(i32 inreg 12)#0
%bQ=bitcast i8*%bP to i32*
%bR=getelementptr inbounds i8,i8*%bP,i64 -4
%bS=bitcast i8*%bR to i32*
store i32 1342177288,i32*%bS,align 4
store i32%bO,i32*%bQ,align 4
%bT=getelementptr inbounds i8,i8*%bP,i64 4
%bU=bitcast i8*%bT to i32*
store i32 60,i32*%bU,align 4
%bV=getelementptr inbounds i8,i8*%bP,i64 8
%bW=bitcast i8*%bV to i32*
store i32 0,i32*%bW,align 4
%bX=call fastcc i8*@_SMLLL6divMod_355(i8*inreg%bP)
%bY=bitcast i8*%bX to i32*
%bZ=load i32,i32*%bY,align 4
%b0=getelementptr inbounds i8,i8*%bX,i64 4
%b1=bitcast i8*%b0 to i32*
%b2=load i32,i32*%b1,align 4
%b3=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%q,i32%bZ)#0
%b4=extractvalue{i32,i1}%b3,1
br i1%b4,label%b5,label%cn
b5:
store i8*null,i8**%d,align 8
%b6=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%b6,i8**%c,align 8
%b7=call i8*@sml_alloc(i32 inreg 20)#0
%b8=getelementptr inbounds i8,i8*%b7,i64 -4
%b9=bitcast i8*%b8 to i32*
store i32 1342177296,i32*%b9,align 4
store i8*%b7,i8**%d,align 8
%ca=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cb=bitcast i8*%b7 to i8**
store i8*%ca,i8**%cb,align 8
%cc=getelementptr inbounds i8,i8*%b7,i64 8
%cd=bitcast i8*%cc to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aS,i64 0,i32 2,i64 0),i8**%cd,align 8
%ce=getelementptr inbounds i8,i8*%b7,i64 16
%cf=bitcast i8*%ce to i32*
store i32 3,i32*%cf,align 4
%cg=call i8*@sml_alloc(i32 inreg 60)#0
%ch=getelementptr inbounds i8,i8*%cg,i64 -4
%ci=bitcast i8*%ch to i32*
store i32 1342177336,i32*%ci,align 4
%cj=getelementptr inbounds i8,i8*%cg,i64 56
%ck=bitcast i8*%cj to i32*
store i32 1,i32*%ck,align 4
%cl=load i8*,i8**%d,align 8
%cm=bitcast i8*%cg to i8**
store i8*%cl,i8**%cm,align 8
call void@sml_raise(i8*inreg%cg)#1
unreachable
cn:
%co=add nsw i32%bZ,%q
%cp=call i8*@sml_alloc(i32 inreg 12)#0
%cq=bitcast i8*%cp to i32*
%cr=getelementptr inbounds i8,i8*%cp,i64 -4
%cs=bitcast i8*%cr to i32*
store i32 1342177288,i32*%cs,align 4
store i32%co,i32*%cq,align 4
%ct=getelementptr inbounds i8,i8*%cp,i64 4
%cu=bitcast i8*%ct to i32*
store i32 24,i32*%cu,align 4
%cv=getelementptr inbounds i8,i8*%cp,i64 8
%cw=bitcast i8*%cv to i32*
store i32 0,i32*%cw,align 4
%cx=call fastcc i8*@_SMLLL6divMod_355(i8*inreg%cp)
%cy=bitcast i8*%cx to i32*
%cz=load i32,i32*%cy,align 4
%cA=getelementptr inbounds i8,i8*%cx,i64 4
%cB=bitcast i8*%cA to i32*
%cC=load i32,i32*%cB,align 4
%cD=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%n,i32%cz)#0
%cE=extractvalue{i32,i1}%cD,1
br i1%cE,label%cF,label%cX
cF:
store i8*null,i8**%d,align 8
%cG=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%cG,i8**%c,align 8
%cH=call i8*@sml_alloc(i32 inreg 20)#0
%cI=getelementptr inbounds i8,i8*%cH,i64 -4
%cJ=bitcast i8*%cI to i32*
store i32 1342177296,i32*%cJ,align 4
store i8*%cH,i8**%d,align 8
%cK=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cL=bitcast i8*%cH to i8**
store i8*%cK,i8**%cL,align 8
%cM=getelementptr inbounds i8,i8*%cH,i64 8
%cN=bitcast i8*%cM to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aT,i64 0,i32 2,i64 0),i8**%cN,align 8
%cO=getelementptr inbounds i8,i8*%cH,i64 16
%cP=bitcast i8*%cO to i32*
store i32 3,i32*%cP,align 4
%cQ=call i8*@sml_alloc(i32 inreg 60)#0
%cR=getelementptr inbounds i8,i8*%cQ,i64 -4
%cS=bitcast i8*%cR to i32*
store i32 1342177336,i32*%cS,align 4
%cT=getelementptr inbounds i8,i8*%cQ,i64 56
%cU=bitcast i8*%cT to i32*
store i32 1,i32*%cU,align 4
%cV=load i8*,i8**%d,align 8
%cW=bitcast i8*%cQ to i8**
store i8*%cV,i8**%cW,align 8
call void@sml_raise(i8*inreg%cQ)#1
unreachable
cX:
%cY=load i8*,i8**%d,align 8
%cZ=getelementptr inbounds i8,i8*%cY,i64 32
%c0=bitcast i8*%cZ to i8**
%c1=load i8*,i8**%c0,align 8
store i8*%c1,i8**%e,align 8
%c2=add nsw i32%cz,%n
%c3=call i8*@sml_alloc(i32 inreg 20)#0
%c4=bitcast i8*%c3 to i32*
%c5=getelementptr inbounds i8,i8*%c3,i64 -4
%c6=bitcast i8*%c5 to i32*
store i32 1342177296,i32*%c6,align 4
%c7=getelementptr inbounds i8,i8*%c3,i64 12
%c8=bitcast i8*%c7 to i32*
store i32 0,i32*%c8,align 1
store i32%c2,i32*%c4,align 4
%c9=getelementptr inbounds i8,i8*%c3,i64 4
%da=bitcast i8*%c9 to i32*
store i32%aS,i32*%da,align 4
%db=getelementptr inbounds i8,i8*%c3,i64 8
%dc=bitcast i8*%db to i32*
store i32%F,i32*%dc,align 4
%dd=getelementptr inbounds i8,i8*%c3,i64 16
%de=bitcast i8*%dd to i32*
store i32 0,i32*%de,align 4
%df=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dg=call fastcc i32@_SMLLLN4Date13toAbsoluteDayE_346(i8*inreg%df,i8*inreg%c3)
%dh=icmp sgt i32%dg,0
br i1%dh,label%dp,label%di
di:
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
%dj=call i8*@sml_alloc(i32 inreg 60)#0
%dk=getelementptr inbounds i8,i8*%dj,i64 -4
%dl=bitcast i8*%dk to i32*
store i32 1342177336,i32*%dl,align 4
%dm=getelementptr inbounds i8,i8*%dj,i64 56
%dn=bitcast i8*%dm to i32*
store i32 1,i32*%dn,align 4
%do=bitcast i8*%dj to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@aV,i64 0,i32 2)to i8*),i8**%do,align 8
call void@sml_raise(i8*inreg%dj)#1
unreachable
dp:
%dq=udiv i32%dg,366
%dr=urem i32%dg,366
%ds=lshr i32%dg,31
%dt=icmp ne i32%dr,0
%du=zext i1%dt to i32
%dv=and i32%ds,%du
%dw=sub nsw i32%dq,%dv
br label%dx
dx:
%dy=phi i32[%dw,%dp],[%dY,%dX]
%dz=load i8*,i8**%d,align 8
%dA=getelementptr inbounds i8,i8*%dz,i64 32
%dB=bitcast i8*%dA to i8**
%dC=load i8*,i8**%dB,align 8
store i8*%dC,i8**%e,align 8
%dD=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%dy,i32 1)#0
%dE=extractvalue{i32,i1}%dD,1
br i1%dE,label%dF,label%dX
dF:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
%dG=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%dG,i8**%c,align 8
%dH=call i8*@sml_alloc(i32 inreg 20)#0
%dI=getelementptr inbounds i8,i8*%dH,i64 -4
%dJ=bitcast i8*%dI to i32*
store i32 1342177296,i32*%dJ,align 4
store i8*%dH,i8**%d,align 8
%dK=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dL=bitcast i8*%dH to i8**
store i8*%dK,i8**%dL,align 8
%dM=getelementptr inbounds i8,i8*%dH,i64 8
%dN=bitcast i8*%dM to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aW,i64 0,i32 2,i64 0),i8**%dN,align 8
%dO=getelementptr inbounds i8,i8*%dH,i64 16
%dP=bitcast i8*%dO to i32*
store i32 3,i32*%dP,align 4
%dQ=call i8*@sml_alloc(i32 inreg 60)#0
%dR=getelementptr inbounds i8,i8*%dQ,i64 -4
%dS=bitcast i8*%dR to i32*
store i32 1342177336,i32*%dS,align 4
%dT=getelementptr inbounds i8,i8*%dQ,i64 56
%dU=bitcast i8*%dT to i32*
store i32 1,i32*%dU,align 4
%dV=load i8*,i8**%d,align 8
%dW=bitcast i8*%dQ to i8**
store i8*%dV,i8**%dW,align 8
call void@sml_raise(i8*inreg%dQ)#1
unreachable
dX:
%dY=add nsw i32%dy,1
%dZ=call i8*@sml_alloc(i32 inreg 20)#0
%d0=bitcast i8*%dZ to i32*
%d1=getelementptr inbounds i8,i8*%dZ,i64 -4
%d2=bitcast i8*%d1 to i32*
store i32 1342177296,i32*%d2,align 4
%d3=getelementptr inbounds i8,i8*%dZ,i64 12
%d4=bitcast i8*%d3 to i32*
store i32 0,i32*%d4,align 1
store i32 1,i32*%d0,align 4
%d5=getelementptr inbounds i8,i8*%dZ,i64 4
%d6=bitcast i8*%d5 to i32*
store i32 1,i32*%d6,align 4
%d7=getelementptr inbounds i8,i8*%dZ,i64 8
%d8=bitcast i8*%d7 to i32*
store i32%dY,i32*%d8,align 4
%d9=getelementptr inbounds i8,i8*%dZ,i64 16
%ea=bitcast i8*%d9 to i32*
store i32 0,i32*%ea,align 4
%eb=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ec=call fastcc i32@_SMLLLN4Date13toAbsoluteDayE_346(i8*inreg%eb,i8*inreg%dZ)
%ed=icmp sgt i32%ec,%dg
br i1%ed,label%ee,label%dx
ee:
%ef=phi i32[%fD,%fC],[1,%dX]
%eg=icmp eq i32%ef,2
br i1%eg,label%eh,label%em
eh:
%ei=call fastcc i32@_SMLLLN4Date10isLeapYearE_329(i32 inreg%dy)
%ej=icmp eq i32%ei,0
br i1%ej,label%em,label%ek
ek:
%el=load i8*,i8**%d,align 8
br label%eW
em:
%en=load i8*,i8**%d,align 8
%eo=getelementptr inbounds i8,i8*%en,i64 16
%ep=bitcast i8*%eo to i32**
%eq=load i32*,i32**%ep,align 8
%er=getelementptr inbounds i32,i32*%eq,i64 -1
%es=load i32,i32*%er,align 4
%et=lshr i32%es,2
%eu=and i32%et,67108863
%ev=icmp ugt i32%ef,%eu
br i1%ev,label%eE,label%ew
ew:
%ex=bitcast i32*%eq to i8*
%ey=shl i32%ef,2
%ez=add i32%ey,-4
%eA=sext i32%ez to i64
%eB=getelementptr inbounds i8,i8*%ex,i64%eA
%eC=bitcast i8*%eB to i32*
%eD=load i32,i32*%eC,align 4
br label%eW
eE:
store i8*null,i8**%d,align 8
%eF=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%eF,i8**%c,align 8
%eG=call i8*@sml_alloc(i32 inreg 20)#0
%eH=getelementptr inbounds i8,i8*%eG,i64 -4
%eI=bitcast i8*%eH to i32*
store i32 1342177296,i32*%eI,align 4
store i8*%eG,i8**%d,align 8
%eJ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%eK=bitcast i8*%eG to i8**
store i8*%eJ,i8**%eK,align 8
%eL=getelementptr inbounds i8,i8*%eG,i64 8
%eM=bitcast i8*%eL to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@aX,i64 0,i32 2,i64 0),i8**%eM,align 8
%eN=getelementptr inbounds i8,i8*%eG,i64 16
%eO=bitcast i8*%eN to i32*
store i32 3,i32*%eO,align 4
%eP=call i8*@sml_alloc(i32 inreg 60)#0
%eQ=getelementptr inbounds i8,i8*%eP,i64 -4
%eR=bitcast i8*%eQ to i32*
store i32 1342177336,i32*%eR,align 4
%eS=getelementptr inbounds i8,i8*%eP,i64 56
%eT=bitcast i8*%eS to i32*
store i32 1,i32*%eT,align 4
%eU=load i8*,i8**%d,align 8
%eV=bitcast i8*%eP to i8**
store i8*%eU,i8**%eV,align 8
call void@sml_raise(i8*inreg%eP)#1
unreachable
eW:
%eX=phi i8*[%en,%ew],[%el,%ek]
%eY=phi i32[%eD,%ew],[29,%ek]
%eZ=getelementptr inbounds i8,i8*%eX,i64 32
%e0=bitcast i8*%eZ to i8**
%e1=load i8*,i8**%e0,align 8
store i8*%e1,i8**%e,align 8
%e2=call i8*@sml_alloc(i32 inreg 20)#0
%e3=bitcast i8*%e2 to i32*
%e4=getelementptr inbounds i8,i8*%e2,i64 -4
%e5=bitcast i8*%e4 to i32*
store i32 1342177296,i32*%e5,align 4
%e6=getelementptr inbounds i8,i8*%e2,i64 12
%e7=bitcast i8*%e6 to i32*
store i32 0,i32*%e7,align 1
store i32%eY,i32*%e3,align 4
%e8=getelementptr inbounds i8,i8*%e2,i64 4
%e9=bitcast i8*%e8 to i32*
store i32%ef,i32*%e9,align 4
%fa=getelementptr inbounds i8,i8*%e2,i64 8
%fb=bitcast i8*%fa to i32*
store i32%dy,i32*%fb,align 4
%fc=getelementptr inbounds i8,i8*%e2,i64 16
%fd=bitcast i8*%fc to i32*
store i32 0,i32*%fd,align 4
%fe=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ff=call fastcc i32@_SMLLLN4Date13toAbsoluteDayE_346(i8*inreg%fe,i8*inreg%e2)
%fg=icmp slt i32%ff,%dg
br i1%fg,label%fh,label%fE
fh:
%fi=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%ef,i32 1)#0
%fj=extractvalue{i32,i1}%fi,1
br i1%fj,label%fk,label%fC
fk:
store i8*null,i8**%d,align 8
%fl=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%fl,i8**%c,align 8
%fm=call i8*@sml_alloc(i32 inreg 20)#0
%fn=getelementptr inbounds i8,i8*%fm,i64 -4
%fo=bitcast i8*%fn to i32*
store i32 1342177296,i32*%fo,align 4
store i8*%fm,i8**%d,align 8
%fp=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%fq=bitcast i8*%fm to i8**
store i8*%fp,i8**%fq,align 8
%fr=getelementptr inbounds i8,i8*%fm,i64 8
%fs=bitcast i8*%fr to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aY,i64 0,i32 2,i64 0),i8**%fs,align 8
%ft=getelementptr inbounds i8,i8*%fm,i64 16
%fu=bitcast i8*%ft to i32*
store i32 3,i32*%fu,align 4
%fv=call i8*@sml_alloc(i32 inreg 60)#0
%fw=getelementptr inbounds i8,i8*%fv,i64 -4
%fx=bitcast i8*%fw to i32*
store i32 1342177336,i32*%fx,align 4
%fy=getelementptr inbounds i8,i8*%fv,i64 56
%fz=bitcast i8*%fy to i32*
store i32 1,i32*%fz,align 4
%fA=load i8*,i8**%d,align 8
%fB=bitcast i8*%fv to i8**
store i8*%fA,i8**%fB,align 8
call void@sml_raise(i8*inreg%fv)#1
unreachable
fC:
%fD=add nuw nsw i32%ef,1
br label%ee
fE:
%fF=load i8*,i8**%d,align 8
%fG=getelementptr inbounds i8,i8*%fF,i64 32
%fH=bitcast i8*%fG to i8**
%fI=load i8*,i8**%fH,align 8
store i8*%fI,i8**%e,align 8
%fJ=call i8*@sml_alloc(i32 inreg 20)#0
%fK=bitcast i8*%fJ to i32*
%fL=getelementptr inbounds i8,i8*%fJ,i64 -4
%fM=bitcast i8*%fL to i32*
store i32 1342177296,i32*%fM,align 4
%fN=getelementptr inbounds i8,i8*%fJ,i64 12
%fO=bitcast i8*%fN to i32*
store i32 0,i32*%fO,align 1
store i32 1,i32*%fK,align 4
%fP=getelementptr inbounds i8,i8*%fJ,i64 4
%fQ=bitcast i8*%fP to i32*
store i32%ef,i32*%fQ,align 4
%fR=getelementptr inbounds i8,i8*%fJ,i64 8
%fS=bitcast i8*%fR to i32*
store i32%dy,i32*%fS,align 4
%fT=getelementptr inbounds i8,i8*%fJ,i64 16
%fU=bitcast i8*%fT to i32*
store i32 0,i32*%fU,align 4
%fV=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%fW=call fastcc i32@_SMLLLN4Date13toAbsoluteDayE_346(i8*inreg%fV,i8*inreg%fJ)
%fX=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%dg,i32%fW)#0
%fY=extractvalue{i32,i1}%fX,1
br i1%fY,label%fZ,label%gh
fZ:
store i8*null,i8**%d,align 8
%f0=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%f0,i8**%c,align 8
%f1=call i8*@sml_alloc(i32 inreg 20)#0
%f2=getelementptr inbounds i8,i8*%f1,i64 -4
%f3=bitcast i8*%f2 to i32*
store i32 1342177296,i32*%f3,align 4
store i8*%f1,i8**%d,align 8
%f4=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%f5=bitcast i8*%f1 to i8**
store i8*%f4,i8**%f5,align 8
%f6=getelementptr inbounds i8,i8*%f1,i64 8
%f7=bitcast i8*%f6 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@aZ,i64 0,i32 2,i64 0),i8**%f7,align 8
%f8=getelementptr inbounds i8,i8*%f1,i64 16
%f9=bitcast i8*%f8 to i32*
store i32 3,i32*%f9,align 4
%ga=call i8*@sml_alloc(i32 inreg 60)#0
%gb=getelementptr inbounds i8,i8*%ga,i64 -4
%gc=bitcast i8*%gb to i32*
store i32 1342177336,i32*%gc,align 4
%gd=getelementptr inbounds i8,i8*%ga,i64 56
%ge=bitcast i8*%gd to i32*
store i32 1,i32*%ge,align 4
%gf=load i8*,i8**%d,align 8
%gg=bitcast i8*%ga to i8**
store i8*%gf,i8**%gg,align 8
call void@sml_raise(i8*inreg%ga)#1
unreachable
gh:
%gi=sub nsw i32%dg,%fW
%gj=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%gi,i32 1)#0
%gk=extractvalue{i32,i1}%gj,1
br i1%gk,label%gl,label%gD
gl:
store i8*null,i8**%d,align 8
%gm=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%gm,i8**%c,align 8
%gn=call i8*@sml_alloc(i32 inreg 20)#0
%go=getelementptr inbounds i8,i8*%gn,i64 -4
%gp=bitcast i8*%go to i32*
store i32 1342177296,i32*%gp,align 4
store i8*%gn,i8**%d,align 8
%gq=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%gr=bitcast i8*%gn to i8**
store i8*%gq,i8**%gr,align 8
%gs=getelementptr inbounds i8,i8*%gn,i64 8
%gt=bitcast i8*%gs to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@a0,i64 0,i32 2,i64 0),i8**%gt,align 8
%gu=getelementptr inbounds i8,i8*%gn,i64 16
%gv=bitcast i8*%gu to i32*
store i32 3,i32*%gv,align 4
%gw=call i8*@sml_alloc(i32 inreg 60)#0
%gx=getelementptr inbounds i8,i8*%gw,i64 -4
%gy=bitcast i8*%gx to i32*
store i32 1342177336,i32*%gy,align 4
%gz=getelementptr inbounds i8,i8*%gw,i64 56
%gA=bitcast i8*%gz to i32*
store i32 1,i32*%gA,align 4
%gB=load i8*,i8**%d,align 8
%gC=bitcast i8*%gw to i8**
store i8*%gB,i8**%gC,align 8
call void@sml_raise(i8*inreg%gw)#1
unreachable
gD:
%gE=add nsw i32%gi,1
%gF=add nsw i32%ef,-1
%gG=icmp sgt i32%dy,-1
br i1%gG,label%gO,label%gH
gH:
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
%gI=call i8*@sml_alloc(i32 inreg 60)#0
%gJ=getelementptr inbounds i8,i8*%gI,i64 -4
%gK=bitcast i8*%gJ to i32*
store i32 1342177336,i32*%gK,align 4
%gL=getelementptr inbounds i8,i8*%gI,i64 56
%gM=bitcast i8*%gL to i32*
store i32 1,i32*%gM,align 4
%gN=bitcast i8*%gI to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@a2,i64 0,i32 2)to i8*),i8**%gN,align 8
call void@sml_raise(i8*inreg%gI)#1
unreachable
gO:
%gP=load i8*,i8**%d,align 8
%gQ=getelementptr inbounds i8,i8*%gP,i64 8
%gR=bitcast i8*%gQ to i32**
%gS=load i32*,i32**%gR,align 8
%gT=getelementptr inbounds i32,i32*%gS,i64 -1
%gU=load i32,i32*%gT,align 4
%gV=lshr i32%gU,2
%gW=and i32%gV,67108863
%gX=icmp ugt i32%ef,%gW
br i1%gX,label%ha,label%gY
gY:
%gZ=bitcast i32*%gS to i8*
%g0=shl i32%gF,2
%g1=sext i32%g0 to i64
%g2=getelementptr inbounds i8,i8*%gZ,i64%g1
%g3=bitcast i8*%g2 to i32*
%g4=load i32,i32*%g3,align 4
%g5=getelementptr inbounds i8,i8*%gP,i64 24
%g6=bitcast i8*%g5 to i8**
%g7=load i8*,i8**%g6,align 8
store i8*%g7,i8**%e,align 8
%g8=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%gF,i32 1)#0
%g9=extractvalue{i32,i1}%g8,1
br i1%g9,label%hs,label%hK
ha:
store i8*null,i8**%d,align 8
%hb=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%hb,i8**%c,align 8
%hc=call i8*@sml_alloc(i32 inreg 20)#0
%hd=getelementptr inbounds i8,i8*%hc,i64 -4
%he=bitcast i8*%hd to i32*
store i32 1342177296,i32*%he,align 4
store i8*%hc,i8**%d,align 8
%hf=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%hg=bitcast i8*%hc to i8**
store i8*%hf,i8**%hg,align 8
%hh=getelementptr inbounds i8,i8*%hc,i64 8
%hi=bitcast i8*%hh to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@a3,i64 0,i32 2,i64 0),i8**%hi,align 8
%hj=getelementptr inbounds i8,i8*%hc,i64 16
%hk=bitcast i8*%hj to i32*
store i32 3,i32*%hk,align 4
%hl=call i8*@sml_alloc(i32 inreg 60)#0
%hm=getelementptr inbounds i8,i8*%hl,i64 -4
%hn=bitcast i8*%hm to i32*
store i32 1342177336,i32*%hn,align 4
%ho=getelementptr inbounds i8,i8*%hl,i64 56
%hp=bitcast i8*%ho to i32*
store i32 1,i32*%hp,align 4
%hq=load i8*,i8**%d,align 8
%hr=bitcast i8*%hl to i8**
store i8*%hq,i8**%hr,align 8
call void@sml_raise(i8*inreg%hl)#1
unreachable
hs:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
%ht=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%ht,i8**%c,align 8
%hu=call i8*@sml_alloc(i32 inreg 20)#0
%hv=getelementptr inbounds i8,i8*%hu,i64 -4
%hw=bitcast i8*%hv to i32*
store i32 1342177296,i32*%hw,align 4
store i8*%hu,i8**%d,align 8
%hx=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%hy=bitcast i8*%hu to i8**
store i8*%hx,i8**%hy,align 8
%hz=getelementptr inbounds i8,i8*%hu,i64 8
%hA=bitcast i8*%hz to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@a4,i64 0,i32 2,i64 0),i8**%hA,align 8
%hB=getelementptr inbounds i8,i8*%hu,i64 16
%hC=bitcast i8*%hB to i32*
store i32 3,i32*%hC,align 4
%hD=call i8*@sml_alloc(i32 inreg 60)#0
%hE=getelementptr inbounds i8,i8*%hD,i64 -4
%hF=bitcast i8*%hE to i32*
store i32 1342177336,i32*%hF,align 4
%hG=getelementptr inbounds i8,i8*%hD,i64 56
%hH=bitcast i8*%hG to i32*
store i32 1,i32*%hH,align 4
%hI=load i8*,i8**%d,align 8
%hJ=bitcast i8*%hD to i8**
store i8*%hI,i8**%hJ,align 8
call void@sml_raise(i8*inreg%hD)#1
unreachable
hK:
%hL=call i8*@sml_alloc(i32 inreg 20)#0
%hM=bitcast i8*%hL to i32*
%hN=getelementptr inbounds i8,i8*%hL,i64 -4
%hO=bitcast i8*%hN to i32*
store i32 1342177296,i32*%hO,align 4
%hP=getelementptr inbounds i8,i8*%hL,i64 12
%hQ=bitcast i8*%hP to i32*
store i32 0,i32*%hQ,align 1
store i32%gE,i32*%hM,align 4
%hR=getelementptr inbounds i8,i8*%hL,i64 4
%hS=bitcast i8*%hR to i32*
store i32%ef,i32*%hS,align 4
%hT=getelementptr inbounds i8,i8*%hL,i64 8
%hU=bitcast i8*%hT to i32*
store i32%dy,i32*%hU,align 4
%hV=getelementptr inbounds i8,i8*%hL,i64 16
%hW=bitcast i8*%hV to i32*
store i32 0,i32*%hW,align 4
%hX=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%hY=call fastcc i32@_SMLLLN4Date10daysInYearE_335(i8*inreg%hX,i8*inreg%hL)
%hZ=srem i32%dg,7
%h0=icmp ne i32%hZ,0
%h1=zext i1%h0 to i32
%h2=and i32%ds,%h1
%h3=sub nsw i32 0,%h2
%h4=and i32%h3,7
%h5=add nsw i32%h4,%hZ
%h6=icmp slt i32%h5,0
br i1%h6,label%iN,label%h7
h7:
%h8=bitcast i8**%d to i32***
%h9=load i32**,i32***%h8,align 8
%ia=load i32*,i32**%h9,align 8
%ib=getelementptr inbounds i32,i32*%ia,i64 -1
%ic=load i32,i32*%ib,align 4
%id=lshr i32%ic,2
%ie=and i32%id,67108863
%if=icmp slt i32%h5,%ie
br i1%if,label%ig,label%iN
ig:
%ih=bitcast i32**%h9 to i8**
store i8*null,i8**%d,align 8
%ii=load i8*,i8**%ih,align 8
%ij=shl nsw i32%h5,2
%ik=sext i32%ij to i64
%il=getelementptr inbounds i8,i8*%ii,i64%ik
%im=bitcast i8*%il to i32*
%in=load i32,i32*%im,align 4
%io=call i8*@sml_alloc(i32 inreg 52)#0
%ip=bitcast i8*%io to i32*
%iq=getelementptr inbounds i8,i8*%io,i64 -4
%ir=bitcast i8*%iq to i32*
store i32 1342177328,i32*%ir,align 4
store i32%gE,i32*%ip,align 4
%is=getelementptr inbounds i8,i8*%io,i64 4
%it=bitcast i8*%is to i32*
store i32%cC,i32*%it,align 4
%iu=getelementptr inbounds i8,i8*%io,i64 8
%iv=bitcast i8*%iu to i8**
store i8*null,i8**%iv,align 8
%iw=getelementptr inbounds i8,i8*%io,i64 16
%ix=bitcast i8*%iw to i32*
store i32%b2,i32*%ix,align 4
%iy=getelementptr inbounds i8,i8*%io,i64 20
%iz=bitcast i8*%iy to i32*
store i32%g4,i32*%iz,align 4
%iA=load i8*,i8**%c,align 8
%iB=getelementptr inbounds i8,i8*%io,i64 24
%iC=bitcast i8*%iB to i8**
store i8*%iA,i8**%iC,align 8
%iD=getelementptr inbounds i8,i8*%io,i64 32
%iE=bitcast i8*%iD to i32*
store i32%bs,i32*%iE,align 4
%iF=getelementptr inbounds i8,i8*%io,i64 36
%iG=bitcast i8*%iF to i32*
store i32%in,i32*%iG,align 4
%iH=getelementptr inbounds i8,i8*%io,i64 40
%iI=bitcast i8*%iH to i32*
store i32%hY,i32*%iI,align 4
%iJ=getelementptr inbounds i8,i8*%io,i64 44
%iK=bitcast i8*%iJ to i32*
store i32%dy,i32*%iK,align 4
%iL=getelementptr inbounds i8,i8*%io,i64 48
%iM=bitcast i8*%iL to i32*
store i32 10,i32*%iM,align 4
ret i8*%io
iN:
store i8*null,i8**%d,align 8
%iO=load i8*,i8**@_SMLZ9Subscript,align 8
store i8*%iO,i8**%c,align 8
%iP=call i8*@sml_alloc(i32 inreg 20)#0
%iQ=getelementptr inbounds i8,i8*%iP,i64 -4
%iR=bitcast i8*%iQ to i32*
store i32 1342177296,i32*%iR,align 4
store i8*%iP,i8**%d,align 8
%iS=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%iT=bitcast i8*%iP to i8**
store i8*%iS,i8**%iT,align 8
%iU=getelementptr inbounds i8,i8*%iP,i64 8
%iV=bitcast i8*%iU to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@a5,i64 0,i32 2,i64 0),i8**%iV,align 8
%iW=getelementptr inbounds i8,i8*%iP,i64 16
%iX=bitcast i8*%iW to i32*
store i32 3,i32*%iX,align 4
%iY=call i8*@sml_alloc(i32 inreg 60)#0
%iZ=getelementptr inbounds i8,i8*%iY,i64 -4
%i0=bitcast i8*%iZ to i32*
store i32 1342177336,i32*%i0,align 4
%i1=getelementptr inbounds i8,i8*%iY,i64 56
%i2=bitcast i8*%i1 to i32*
store i32 1,i32*%i2,align 4
%i3=load i8*,i8**%d,align 8
%i4=bitcast i8*%iY to i8**
store i8*%i3,i8**%i4,align 8
call void@sml_raise(i8*inreg%iY)#1
unreachable
}
define internal fastcc i8*@_SMLLLN4Date13fromTimeLocalE_379(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%e,align 8
store i8*%b,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%c,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%b,%m]
%n=call fastcc i8*@_SMLFN4Time9toSecondsE(i8*inreg%l)
%o=call fastcc i32@_SMLFN6IntInf5toIntE(i8*inreg%n)
%p=call fastcc i8*@_SMLLLN4Date7gmTime_GE_251(i32 inreg%o)
store i8*%p,i8**%d,align 8
%q=call fastcc i8*@_SMLLLN4Date10localTime_GE_239(i32 inreg%o)
%r=getelementptr inbounds i8,i8*%q,i64 32
%s=bitcast i8*%r to i32*
%t=load i32,i32*%s,align 4
%u=load i8*,i8**%d,align 8
%v=bitcast i8*%u to i32*
%w=load i32,i32*%v,align 4
%x=getelementptr inbounds i8,i8*%u,i64 4
%y=bitcast i8*%x to i32*
%z=load i32,i32*%y,align 4
%A=getelementptr inbounds i8,i8*%u,i64 8
%B=bitcast i8*%A to i32*
%C=load i32,i32*%B,align 4
%D=getelementptr inbounds i8,i8*%u,i64 12
%E=bitcast i8*%D to i32*
%F=load i32,i32*%E,align 4
%G=getelementptr inbounds i8,i8*%u,i64 16
%H=bitcast i8*%G to i32*
%I=load i32,i32*%H,align 4
%J=getelementptr inbounds i8,i8*%u,i64 20
%K=bitcast i8*%J to i32*
%L=load i32,i32*%K,align 4
%M=getelementptr inbounds i8,i8*%u,i64 24
%N=bitcast i8*%M to i32*
%O=load i32,i32*%N,align 4
store i8*null,i8**%d,align 8
%P=getelementptr inbounds i8,i8*%u,i64 28
%Q=bitcast i8*%P to i32*
%R=load i32,i32*%Q,align 4
%S=call i8*@sml_alloc(i32 inreg 44)#0
%T=bitcast i8*%S to i32*
%U=getelementptr inbounds i8,i8*%S,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177320,i32*%V,align 4
%W=getelementptr inbounds i8,i8*%S,i64 36
%X=bitcast i8*%W to i32*
store i32 0,i32*%X,align 1
store i32%w,i32*%T,align 4
%Y=getelementptr inbounds i8,i8*%S,i64 4
%Z=bitcast i8*%Y to i32*
store i32%z,i32*%Z,align 4
%aa=getelementptr inbounds i8,i8*%S,i64 8
%ab=bitcast i8*%aa to i32*
store i32%C,i32*%ab,align 4
%ac=getelementptr inbounds i8,i8*%S,i64 12
%ad=bitcast i8*%ac to i32*
store i32%F,i32*%ad,align 4
%ae=getelementptr inbounds i8,i8*%S,i64 16
%af=bitcast i8*%ae to i32*
store i32%I,i32*%af,align 4
%ag=getelementptr inbounds i8,i8*%S,i64 20
%ah=bitcast i8*%ag to i32*
store i32%L,i32*%ah,align 4
%ai=getelementptr inbounds i8,i8*%S,i64 24
%aj=bitcast i8*%ai to i32*
store i32%O,i32*%aj,align 4
%ak=getelementptr inbounds i8,i8*%S,i64 28
%al=bitcast i8*%ak to i32*
store i32%R,i32*%al,align 4
%am=getelementptr inbounds i8,i8*%S,i64 32
%an=bitcast i8*%am to i32*
store i32%t,i32*%an,align 4
%ao=getelementptr inbounds i8,i8*%S,i64 40
%ap=bitcast i8*%ao to i32*
store i32 0,i32*%ap,align 4
%aq=call i32@prim_Date_mkTime(i8*%S)
%ar=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%o,i32%aq)#0
%as=extractvalue{i32,i1}%ar,1
br i1%as,label%at,label%aL
at:
store i8*null,i8**%e,align 8
%au=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%au,i8**%c,align 8
%av=call i8*@sml_alloc(i32 inreg 20)#0
%aw=getelementptr inbounds i8,i8*%av,i64 -4
%ax=bitcast i8*%aw to i32*
store i32 1342177296,i32*%ax,align 4
store i8*%av,i8**%d,align 8
%ay=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%az=bitcast i8*%av to i8**
store i8*%ay,i8**%az,align 8
%aA=getelementptr inbounds i8,i8*%av,i64 8
%aB=bitcast i8*%aA to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@a6,i64 0,i32 2,i64 0),i8**%aB,align 8
%aC=getelementptr inbounds i8,i8*%av,i64 16
%aD=bitcast i8*%aC to i32*
store i32 3,i32*%aD,align 4
%aE=call i8*@sml_alloc(i32 inreg 60)#0
%aF=getelementptr inbounds i8,i8*%aE,i64 -4
%aG=bitcast i8*%aF to i32*
store i32 1342177336,i32*%aG,align 4
%aH=getelementptr inbounds i8,i8*%aE,i64 56
%aI=bitcast i8*%aH to i32*
store i32 1,i32*%aI,align 4
%aJ=load i8*,i8**%d,align 8
%aK=bitcast i8*%aE to i8**
store i8*%aJ,i8**%aK,align 8
call void@sml_raise(i8*inreg%aE)#1
unreachable
aL:
%aM=sub nsw i32%o,%aq
%aN=call fastcc i8*@_SMLFN6IntInf7fromIntE(i32 inreg%aM)
%aO=call fastcc i8*@_SMLFN4Time11fromSecondsE(i8*inreg%aN)
store i8*%aO,i8**%d,align 8
%aP=bitcast i8**%e to i8***
%aQ=load i8**,i8***%aP,align 8
%aR=load i8*,i8**%aQ,align 8
store i8*%aR,i8**%e,align 8
%aS=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aT=call fastcc i8*@_SMLFN4Time9toSecondsE(i8*inreg%aS)
%aU=call fastcc i32@_SMLFN6IntInf5toIntE(i8*inreg%aT)
%aV=call fastcc i8*@_SMLLLN4Date10localTime_GE_239(i32 inreg%aU)
store i8*%aV,i8**%c,align 8
%aW=call i8*@sml_alloc(i32 inreg 12)#0
%aX=getelementptr inbounds i8,i8*%aW,i64 -4
%aY=bitcast i8*%aX to i32*
store i32 1342177288,i32*%aY,align 4
store i8*%aW,i8**%f,align 8
%aZ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%a0=bitcast i8*%aW to i8**
store i8*%aZ,i8**%a0,align 8
%a1=getelementptr inbounds i8,i8*%aW,i64 8
%a2=bitcast i8*%a1 to i32*
store i32 1,i32*%a2,align 4
%a3=call i8*@sml_alloc(i32 inreg 20)#0
%a4=getelementptr inbounds i8,i8*%a3,i64 -4
%a5=bitcast i8*%a4 to i32*
store i32 1342177296,i32*%a5,align 4
%a6=load i8*,i8**%c,align 8
%a7=bitcast i8*%a3 to i8**
store i8*%a6,i8**%a7,align 8
%a8=load i8*,i8**%f,align 8
%a9=getelementptr inbounds i8,i8*%a3,i64 8
%ba=bitcast i8*%a9 to i8**
store i8*%a8,i8**%ba,align 8
%bb=getelementptr inbounds i8,i8*%a3,i64 16
%bc=bitcast i8*%bb to i32*
store i32 3,i32*%bc,align 4
%bd=load i8*,i8**%e,align 8
%be=tail call fastcc i8*@_SMLLLN4Date7tm2dateE_299(i8*inreg%bd,i8*inreg%a3)
ret i8*%be
}
define internal fastcc i8*@_SMLLLN4Date12fromTimeUnivE_380(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%i,label%k
i:
%j=bitcast i8*%a to i8**
br label%o
k:
call void@sml_check(i32 inreg%g)
%l=load i8*,i8**%d,align 8
%m=bitcast i8**%c to i8***
%n=load i8**,i8***%m,align 8
br label%o
o:
%p=phi i8**[%n,%k],[%j,%i]
%q=phi i8*[%l,%k],[%b,%i]
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%r=load i8*,i8**%p,align 8
store i8*%r,i8**%e,align 8
%s=call fastcc i8*@_SMLFN4Time9toSecondsE(i8*inreg%q)
%t=call fastcc i32@_SMLFN6IntInf5toIntE(i8*inreg%s)
%u=call fastcc i8*@_SMLLLN4Date7gmTime_GE_251(i32 inreg%t)
store i8*%u,i8**%c,align 8
%v=load i8*,i8**@_SMLZN4Time8zeroTimeE,align 8
store i8*%v,i8**%d,align 8
%w=call i8*@sml_alloc(i32 inreg 12)#0
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177288,i32*%y,align 4
store i8*%w,i8**%f,align 8
%z=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%A=bitcast i8*%w to i8**
store i8*%z,i8**%A,align 8
%B=getelementptr inbounds i8,i8*%w,i64 8
%C=bitcast i8*%B to i32*
store i32 1,i32*%C,align 4
%D=call i8*@sml_alloc(i32 inreg 20)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177296,i32*%F,align 4
%G=load i8*,i8**%c,align 8
%H=bitcast i8*%D to i8**
store i8*%G,i8**%H,align 8
%I=load i8*,i8**%f,align 8
%J=getelementptr inbounds i8,i8*%D,i64 8
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%D,i64 16
%M=bitcast i8*%L to i32*
store i32 3,i32*%M,align 4
%N=load i8*,i8**%e,align 8
%O=tail call fastcc i8*@_SMLLLN4Date7tm2dateE_299(i8*inreg%N,i8*inreg%D)
ret i8*%O
}
define fastcc i8*@_SMLFN4Date6toTimeE(i8*inreg%a)#2 gc"smlsharp"{
j:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%h,label%f
f:
call void@sml_check(i32 inreg%d)
%g=load i8*,i8**%b,align 8
br label%h
h:
%i=phi i8*[%g,%f],[%a,%j]
%k=getelementptr inbounds i8,i8*%i,i64 24
%l=bitcast i8*%k to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%b,align 8
%n=call fastcc i8*@_SMLLLN4Date7date2tmE_303(i8*inreg%i)
%o=call i32@prim_Date_mkTime(i8*%n)
%p=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%q=icmp eq i8*%p,null
br i1%q,label%r,label%u
r:
%s=call fastcc i8*@_SMLFN6IntInf7fromIntE(i32 inreg%o)
%t=tail call fastcc i8*@_SMLFN4Time11fromSecondsE(i8*inreg%s)
ret i8*%t
u:
%v=call fastcc i8*@_SMLLLN4Date7gmTime_GE_251(i32 inreg%o)
store i8*%v,i8**%b,align 8
%w=call fastcc i8*@_SMLLLN4Date10localTime_GE_239(i32 inreg%o)
%x=getelementptr inbounds i8,i8*%w,i64 32
%y=bitcast i8*%x to i32*
%z=load i32,i32*%y,align 4
%A=load i8*,i8**%b,align 8
%B=bitcast i8*%A to i32*
%C=load i32,i32*%B,align 4
%D=getelementptr inbounds i8,i8*%A,i64 4
%E=bitcast i8*%D to i32*
%F=load i32,i32*%E,align 4
%G=getelementptr inbounds i8,i8*%A,i64 8
%H=bitcast i8*%G to i32*
%I=load i32,i32*%H,align 4
%J=getelementptr inbounds i8,i8*%A,i64 12
%K=bitcast i8*%J to i32*
%L=load i32,i32*%K,align 4
%M=getelementptr inbounds i8,i8*%A,i64 16
%N=bitcast i8*%M to i32*
%O=load i32,i32*%N,align 4
%P=getelementptr inbounds i8,i8*%A,i64 20
%Q=bitcast i8*%P to i32*
%R=load i32,i32*%Q,align 4
%S=getelementptr inbounds i8,i8*%A,i64 24
%T=bitcast i8*%S to i32*
%U=load i32,i32*%T,align 4
store i8*null,i8**%b,align 8
%V=getelementptr inbounds i8,i8*%A,i64 28
%W=bitcast i8*%V to i32*
%X=load i32,i32*%W,align 4
%Y=call i8*@sml_alloc(i32 inreg 44)#0
%Z=bitcast i8*%Y to i32*
%aa=getelementptr inbounds i8,i8*%Y,i64 -4
%ab=bitcast i8*%aa to i32*
store i32 1342177320,i32*%ab,align 4
%ac=getelementptr inbounds i8,i8*%Y,i64 36
%ad=bitcast i8*%ac to i32*
store i32 0,i32*%ad,align 1
store i32%C,i32*%Z,align 4
%ae=getelementptr inbounds i8,i8*%Y,i64 4
%af=bitcast i8*%ae to i32*
store i32%F,i32*%af,align 4
%ag=getelementptr inbounds i8,i8*%Y,i64 8
%ah=bitcast i8*%ag to i32*
store i32%I,i32*%ah,align 4
%ai=getelementptr inbounds i8,i8*%Y,i64 12
%aj=bitcast i8*%ai to i32*
store i32%L,i32*%aj,align 4
%ak=getelementptr inbounds i8,i8*%Y,i64 16
%al=bitcast i8*%ak to i32*
store i32%O,i32*%al,align 4
%am=getelementptr inbounds i8,i8*%Y,i64 20
%an=bitcast i8*%am to i32*
store i32%R,i32*%an,align 4
%ao=getelementptr inbounds i8,i8*%Y,i64 24
%ap=bitcast i8*%ao to i32*
store i32%U,i32*%ap,align 4
%aq=getelementptr inbounds i8,i8*%Y,i64 28
%ar=bitcast i8*%aq to i32*
store i32%X,i32*%ar,align 4
%as=getelementptr inbounds i8,i8*%Y,i64 32
%at=bitcast i8*%as to i32*
store i32%z,i32*%at,align 4
%au=getelementptr inbounds i8,i8*%Y,i64 40
%av=bitcast i8*%au to i32*
store i32 0,i32*%av,align 4
%aw=call i32@prim_Date_mkTime(i8*%Y)
%ax=call{i32,i1}@llvm.ssub.with.overflow.i32(i32%o,i32%aw)#0
%ay=extractvalue{i32,i1}%ax,1
br i1%ay,label%az,label%aR
az:
%aA=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aA,i8**%b,align 8
%aB=call i8*@sml_alloc(i32 inreg 20)#0
%aC=getelementptr inbounds i8,i8*%aB,i64 -4
%aD=bitcast i8*%aC to i32*
store i32 1342177296,i32*%aD,align 4
store i8*%aB,i8**%c,align 8
%aE=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aF=bitcast i8*%aB to i8**
store i8*%aE,i8**%aF,align 8
%aG=getelementptr inbounds i8,i8*%aB,i64 8
%aH=bitcast i8*%aG to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@a6,i64 0,i32 2,i64 0),i8**%aH,align 8
%aI=getelementptr inbounds i8,i8*%aB,i64 16
%aJ=bitcast i8*%aI to i32*
store i32 3,i32*%aJ,align 4
%aK=call i8*@sml_alloc(i32 inreg 60)#0
%aL=getelementptr inbounds i8,i8*%aK,i64 -4
%aM=bitcast i8*%aL to i32*
store i32 1342177336,i32*%aM,align 4
%aN=getelementptr inbounds i8,i8*%aK,i64 56
%aO=bitcast i8*%aN to i32*
store i32 1,i32*%aO,align 4
%aP=load i8*,i8**%c,align 8
%aQ=bitcast i8*%aK to i8**
store i8*%aP,i8**%aQ,align 8
call void@sml_raise(i8*inreg%aK)#1
unreachable
aR:
%aS=sub nsw i32%o,%aw
%aT=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%o,i32%aS)#0
%aU=extractvalue{i32,i1}%aT,1
br i1%aU,label%aV,label%bd
aV:
%aW=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%aW,i8**%b,align 8
%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
store i8*%aX,i8**%c,align 8
%a0=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%a1=bitcast i8*%aX to i8**
store i8*%a0,i8**%a1,align 8
%a2=getelementptr inbounds i8,i8*%aX,i64 8
%a3=bitcast i8*%a2 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@a7,i64 0,i32 2,i64 0),i8**%a3,align 8
%a4=getelementptr inbounds i8,i8*%aX,i64 16
%a5=bitcast i8*%a4 to i32*
store i32 3,i32*%a5,align 4
%a6=call i8*@sml_alloc(i32 inreg 60)#0
%a7=getelementptr inbounds i8,i8*%a6,i64 -4
%a8=bitcast i8*%a7 to i32*
store i32 1342177336,i32*%a8,align 4
%a9=getelementptr inbounds i8,i8*%a6,i64 56
%ba=bitcast i8*%a9 to i32*
store i32 1,i32*%ba,align 4
%bb=load i8*,i8**%c,align 8
%bc=bitcast i8*%a6 to i8**
store i8*%bb,i8**%bc,align 8
call void@sml_raise(i8*inreg%a6)#1
unreachable
bd:
%be=add nsw i32%aS,%o
%bf=call fastcc i8*@_SMLFN6IntInf7fromIntE(i32 inreg%be)
%bg=tail call fastcc i8*@_SMLFN4Time11fromSecondsE(i8*inreg%bf)
ret i8*%bg
}
define internal fastcc i32@_SMLLLN4Date7compareE_400(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
j:
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%c,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**%c,align 8
br label%h
h:
%i=phi i8*[%g,%f],[%a,%j]
%k=bitcast i8*%i to i8**
%l=load i8*,i8**%k,align 8
%m=getelementptr inbounds i8,i8*%l,i64 32
%n=bitcast i8*%m to i32*
%o=load i32,i32*%n,align 4
store i8*null,i8**%c,align 8
%p=getelementptr inbounds i8,i8*%i,i64 8
%q=bitcast i8*%p to i8**
%r=load i8*,i8**%q,align 8
%s=getelementptr inbounds i8,i8*%r,i64 32
%t=bitcast i8*%s to i32*
%u=load i32,i32*%t,align 4
%v=call i8*@sml_alloc(i32 inreg 12)#0
%w=bitcast i8*%v to i32*
%x=getelementptr inbounds i8,i8*%v,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177288,i32*%y,align 4
store i32%o,i32*%w,align 4
%z=getelementptr inbounds i8,i8*%v,i64 4
%A=bitcast i8*%z to i32*
store i32%u,i32*%A,align 4
%B=getelementptr inbounds i8,i8*%v,i64 8
%C=bitcast i8*%B to i32*
store i32 0,i32*%C,align 4
%D=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%v)
ret i32%D
}
define internal fastcc i32@_SMLLLN4Date7compareE_401(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%i,label%k
i:
%j=bitcast i8*%a to i8**
br label%n
k:
call void@sml_check(i32 inreg%g)
%l=bitcast i8**%c to i8***
%m=load i8**,i8***%l,align 8
br label%n
n:
%o=phi i8**[%m,%k],[%j,%i]
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%d,align 8
%q=getelementptr inbounds i8*,i8**%o,i64 1
%r=load i8*,i8**%q,align 8
store i8*%r,i8**%e,align 8
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
store i8*%s,i8**%f,align 8
%v=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%y=getelementptr inbounds i8,i8*%s,i64 8
%z=bitcast i8*%y to i8**
store i8*%x,i8**%z,align 8
%A=getelementptr inbounds i8,i8*%s,i64 16
%B=bitcast i8*%A to i32*
store i32 3,i32*%B,align 4
%C=call i8*@sml_alloc(i32 inreg 28)#0
%D=getelementptr inbounds i8,i8*%C,i64 -4
%E=bitcast i8*%D to i32*
store i32 1342177304,i32*%E,align 4
%F=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%G=bitcast i8*%C to i8**
store i8*%F,i8**%G,align 8
%H=getelementptr inbounds i8,i8*%C,i64 8
%I=bitcast i8*%H to void(...)**
store void(...)*bitcast(i32(i8*,i32)*@_SMLLLN4Date7compareE_400 to void(...)*),void(...)**%I,align 8
%J=getelementptr inbounds i8,i8*%C,i64 16
%K=bitcast i8*%J to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7compareE_478 to void(...)*),void(...)**%K,align 8
%L=getelementptr inbounds i8,i8*%C,i64 24
%M=bitcast i8*%L to i32*
store i32 -2147483647,i32*%M,align 4
%N=load i8*,i8**%c,align 8
%O=bitcast i8*%N to i8**
%P=load i8*,i8**%O,align 8
%Q=getelementptr inbounds i8,i8*%P,i64 16
%R=bitcast i8*%Q to i32*
%S=load i32,i32*%R,align 4
%T=getelementptr inbounds i8,i8*%N,i64 8
%U=bitcast i8*%T to i8**
%V=load i8*,i8**%U,align 8
%W=getelementptr inbounds i8,i8*%V,i64 16
%X=bitcast i8*%W to i32*
%Y=load i32,i32*%X,align 4
%Z=call i8*@sml_alloc(i32 inreg 12)#0
%aa=bitcast i8*%Z to i32*
%ab=getelementptr inbounds i8,i8*%Z,i64 -4
%ac=bitcast i8*%ab to i32*
store i32 1342177288,i32*%ac,align 4
store i32%S,i32*%aa,align 4
%ad=getelementptr inbounds i8,i8*%Z,i64 4
%ae=bitcast i8*%ad to i32*
store i32%Y,i32*%ae,align 4
%af=getelementptr inbounds i8,i8*%Z,i64 8
%ag=bitcast i8*%af to i32*
store i32 0,i32*%ag,align 4
%ah=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%Z)
%ai=icmp eq i32%ah,0
br i1%ai,label%al,label%aj
aj:
%ak=phi i32[%ah,%n],[%aG,%al]
ret i32%ak
al:
%am=load i8*,i8**%c,align 8
%an=bitcast i8*%am to i8**
%ao=load i8*,i8**%an,align 8
%ap=getelementptr inbounds i8,i8*%ao,i64 32
%aq=bitcast i8*%ap to i32*
%ar=load i32,i32*%aq,align 4
store i8*null,i8**%c,align 8
%as=getelementptr inbounds i8,i8*%am,i64 8
%at=bitcast i8*%as to i8**
%au=load i8*,i8**%at,align 8
%av=getelementptr inbounds i8,i8*%au,i64 32
%aw=bitcast i8*%av to i32*
%ax=load i32,i32*%aw,align 4
%ay=call i8*@sml_alloc(i32 inreg 12)#0
%az=bitcast i8*%ay to i32*
%aA=getelementptr inbounds i8,i8*%ay,i64 -4
%aB=bitcast i8*%aA to i32*
store i32 1342177288,i32*%aB,align 4
store i32%ar,i32*%az,align 4
%aC=getelementptr inbounds i8,i8*%ay,i64 4
%aD=bitcast i8*%aC to i32*
store i32%ax,i32*%aD,align 4
%aE=getelementptr inbounds i8,i8*%ay,i64 8
%aF=bitcast i8*%aE to i32*
store i32 0,i32*%aF,align 4
%aG=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%ay)
br label%aj
}
define internal fastcc i32@_SMLLLN4Date7compareE_402(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%i,label%k
i:
%j=bitcast i8*%a to i8**
br label%n
k:
call void@sml_check(i32 inreg%g)
%l=bitcast i8**%c to i8***
%m=load i8**,i8***%l,align 8
br label%n
n:
%o=phi i8**[%m,%k],[%j,%i]
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%d,align 8
%q=getelementptr inbounds i8*,i8**%o,i64 1
%r=load i8*,i8**%q,align 8
store i8*%r,i8**%e,align 8
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
store i8*%s,i8**%f,align 8
%v=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%y=getelementptr inbounds i8,i8*%s,i64 8
%z=bitcast i8*%y to i8**
store i8*%x,i8**%z,align 8
%A=getelementptr inbounds i8,i8*%s,i64 16
%B=bitcast i8*%A to i32*
store i32 3,i32*%B,align 4
%C=call i8*@sml_alloc(i32 inreg 28)#0
%D=getelementptr inbounds i8,i8*%C,i64 -4
%E=bitcast i8*%D to i32*
store i32 1342177304,i32*%E,align 4
%F=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%G=bitcast i8*%C to i8**
store i8*%F,i8**%G,align 8
%H=getelementptr inbounds i8,i8*%C,i64 8
%I=bitcast i8*%H to void(...)**
store void(...)*bitcast(i32(i8*,i32)*@_SMLLLN4Date7compareE_401 to void(...)*),void(...)**%I,align 8
%J=getelementptr inbounds i8,i8*%C,i64 16
%K=bitcast i8*%J to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7compareE_479 to void(...)*),void(...)**%K,align 8
%L=getelementptr inbounds i8,i8*%C,i64 24
%M=bitcast i8*%L to i32*
store i32 -2147483647,i32*%M,align 4
%N=load i8*,i8**%c,align 8
%O=bitcast i8*%N to i8**
%P=load i8*,i8**%O,align 8
%Q=getelementptr inbounds i8,i8*%P,i64 4
%R=bitcast i8*%Q to i32*
%S=load i32,i32*%R,align 4
%T=getelementptr inbounds i8,i8*%N,i64 8
%U=bitcast i8*%T to i8**
%V=load i8*,i8**%U,align 8
%W=getelementptr inbounds i8,i8*%V,i64 4
%X=bitcast i8*%W to i32*
%Y=load i32,i32*%X,align 4
%Z=call i8*@sml_alloc(i32 inreg 12)#0
%aa=bitcast i8*%Z to i32*
%ab=getelementptr inbounds i8,i8*%Z,i64 -4
%ac=bitcast i8*%ab to i32*
store i32 1342177288,i32*%ac,align 4
store i32%S,i32*%aa,align 4
%ad=getelementptr inbounds i8,i8*%Z,i64 4
%ae=bitcast i8*%ad to i32*
store i32%Y,i32*%ae,align 4
%af=getelementptr inbounds i8,i8*%Z,i64 8
%ag=bitcast i8*%af to i32*
store i32 0,i32*%ag,align 4
%ah=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%Z)
%ai=icmp eq i32%ah,0
br i1%ai,label%al,label%aj
aj:
%ak=phi i32[%ah,%n],[%aG,%al],[%a3,%aI]
ret i32%ak
al:
%am=load i8*,i8**%c,align 8
%an=bitcast i8*%am to i8**
%ao=load i8*,i8**%an,align 8
%ap=getelementptr inbounds i8,i8*%ao,i64 16
%aq=bitcast i8*%ap to i32*
%ar=load i32,i32*%aq,align 4
%as=getelementptr inbounds i8,i8*%am,i64 8
%at=bitcast i8*%as to i8**
%au=load i8*,i8**%at,align 8
%av=getelementptr inbounds i8,i8*%au,i64 16
%aw=bitcast i8*%av to i32*
%ax=load i32,i32*%aw,align 4
%ay=call i8*@sml_alloc(i32 inreg 12)#0
%az=bitcast i8*%ay to i32*
%aA=getelementptr inbounds i8,i8*%ay,i64 -4
%aB=bitcast i8*%aA to i32*
store i32 1342177288,i32*%aB,align 4
store i32%ar,i32*%az,align 4
%aC=getelementptr inbounds i8,i8*%ay,i64 4
%aD=bitcast i8*%aC to i32*
store i32%ax,i32*%aD,align 4
%aE=getelementptr inbounds i8,i8*%ay,i64 8
%aF=bitcast i8*%aE to i32*
store i32 0,i32*%aF,align 4
%aG=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%ay)
%aH=icmp eq i32%aG,0
br i1%aH,label%aI,label%aj
aI:
%aJ=load i8*,i8**%c,align 8
%aK=bitcast i8*%aJ to i8**
%aL=load i8*,i8**%aK,align 8
%aM=getelementptr inbounds i8,i8*%aL,i64 32
%aN=bitcast i8*%aM to i32*
%aO=load i32,i32*%aN,align 4
store i8*null,i8**%c,align 8
%aP=getelementptr inbounds i8,i8*%aJ,i64 8
%aQ=bitcast i8*%aP to i8**
%aR=load i8*,i8**%aQ,align 8
%aS=getelementptr inbounds i8,i8*%aR,i64 32
%aT=bitcast i8*%aS to i32*
%aU=load i32,i32*%aT,align 4
%aV=call i8*@sml_alloc(i32 inreg 12)#0
%aW=bitcast i8*%aV to i32*
%aX=getelementptr inbounds i8,i8*%aV,i64 -4
%aY=bitcast i8*%aX to i32*
store i32 1342177288,i32*%aY,align 4
store i32%aO,i32*%aW,align 4
%aZ=getelementptr inbounds i8,i8*%aV,i64 4
%a0=bitcast i8*%aZ to i32*
store i32%aU,i32*%a0,align 4
%a1=getelementptr inbounds i8,i8*%aV,i64 8
%a2=bitcast i8*%a1 to i32*
store i32 0,i32*%a2,align 4
%a3=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%aV)
br label%aj
}
define internal fastcc i32@_SMLLLN4Date7compareE_403(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%i,label%k
i:
%j=bitcast i8*%a to i8**
br label%n
k:
call void@sml_check(i32 inreg%g)
%l=bitcast i8**%c to i8***
%m=load i8**,i8***%l,align 8
br label%n
n:
%o=phi i8**[%m,%k],[%j,%i]
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%d,align 8
%q=getelementptr inbounds i8*,i8**%o,i64 1
%r=load i8*,i8**%q,align 8
store i8*%r,i8**%e,align 8
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
store i8*%s,i8**%f,align 8
%v=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%y=getelementptr inbounds i8,i8*%s,i64 8
%z=bitcast i8*%y to i8**
store i8*%x,i8**%z,align 8
%A=getelementptr inbounds i8,i8*%s,i64 16
%B=bitcast i8*%A to i32*
store i32 3,i32*%B,align 4
%C=call i8*@sml_alloc(i32 inreg 28)#0
%D=getelementptr inbounds i8,i8*%C,i64 -4
%E=bitcast i8*%D to i32*
store i32 1342177304,i32*%E,align 4
%F=load i8*,i8**%f,align 8
%G=bitcast i8*%C to i8**
store i8*%F,i8**%G,align 8
%H=getelementptr inbounds i8,i8*%C,i64 8
%I=bitcast i8*%H to void(...)**
store void(...)*bitcast(i32(i8*,i32)*@_SMLLLN4Date7compareE_402 to void(...)*),void(...)**%I,align 8
%J=getelementptr inbounds i8,i8*%C,i64 16
%K=bitcast i8*%J to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7compareE_480 to void(...)*),void(...)**%K,align 8
%L=getelementptr inbounds i8,i8*%C,i64 24
%M=bitcast i8*%L to i32*
store i32 -2147483647,i32*%M,align 4
%N=load i8*,i8**%c,align 8
%O=bitcast i8*%N to i32**
%P=load i32*,i32**%O,align 8
%Q=load i32,i32*%P,align 4
store i8*null,i8**%c,align 8
%R=getelementptr inbounds i8,i8*%N,i64 8
%S=bitcast i8*%R to i32**
%T=load i32*,i32**%S,align 8
%U=load i32,i32*%T,align 4
%V=call i8*@sml_alloc(i32 inreg 12)#0
%W=bitcast i8*%V to i32*
%X=getelementptr inbounds i8,i8*%V,i64 -4
%Y=bitcast i8*%X to i32*
store i32 1342177288,i32*%Y,align 4
store i32%Q,i32*%W,align 4
%Z=getelementptr inbounds i8,i8*%V,i64 4
%aa=bitcast i8*%Z to i32*
store i32%U,i32*%aa,align 4
%ab=getelementptr inbounds i8,i8*%V,i64 8
%ac=bitcast i8*%ab to i32*
store i32 0,i32*%ac,align 4
%ad=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%V)
%ae=icmp eq i32%ad,0
br i1%ae,label%ag,label%af
af:
ret i32%ad
ag:
%ah=load i8*,i8**%f,align 8
%ai=tail call fastcc i32@_SMLLLN4Date7compareE_402(i8*inreg%ah,i32 inreg 0)
ret i32%ai
}
define internal fastcc i32@_SMLLLN4Date7compareE_406(i8*inreg%a,i32 inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%i,label%l
i:
%j=bitcast i8*%a to i8**
%k=bitcast i8**%c to i8***
br label%o
l:
call void@sml_check(i32 inreg%g)
%m=bitcast i8**%c to i8***
%n=load i8**,i8***%m,align 8
br label%o
o:
%p=phi i8***[%k,%i],[%m,%l]
%q=phi i8**[%j,%i],[%n,%l]
%r=load i8*,i8**%q,align 8
store i8*%r,i8**%d,align 8
%s=getelementptr inbounds i8*,i8**%q,i64 1
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%e,align 8
%u=call i8*@sml_alloc(i32 inreg 20)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177296,i32*%w,align 4
store i8*%u,i8**%f,align 8
%x=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%A=getelementptr inbounds i8,i8*%u,i64 8
%B=bitcast i8*%A to i8**
store i8*%z,i8**%B,align 8
%C=getelementptr inbounds i8,i8*%u,i64 16
%D=bitcast i8*%C to i32*
store i32 3,i32*%D,align 4
%E=call i8*@sml_alloc(i32 inreg 28)#0
%F=getelementptr inbounds i8,i8*%E,i64 -4
%G=bitcast i8*%F to i32*
store i32 1342177304,i32*%G,align 4
%H=load i8*,i8**%f,align 8
%I=bitcast i8*%E to i8**
store i8*%H,i8**%I,align 8
%J=getelementptr inbounds i8,i8*%E,i64 8
%K=bitcast i8*%J to void(...)**
store void(...)*bitcast(i32(i8*,i32)*@_SMLLLN4Date7compareE_403 to void(...)*),void(...)**%K,align 8
%L=getelementptr inbounds i8,i8*%E,i64 16
%M=bitcast i8*%L to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7compareE_481 to void(...)*),void(...)**%M,align 8
%N=getelementptr inbounds i8,i8*%E,i64 24
%O=bitcast i8*%N to i32*
store i32 -2147483647,i32*%O,align 4
%P=load i8**,i8***%p,align 8
%Q=load i8*,i8**%P,align 8
%R=getelementptr inbounds i8,i8*%Q,i64 20
%S=bitcast i8*%R to i32*
%T=load i32,i32*%S,align 4
%U=icmp ult i32%T,12
br i1%U,label%an,label%V
V:
store i8*null,i8**%f,align 8
call void@sml_matchcomp_bug()
%W=load i8*,i8**@_SMLZ5Match,align 8
store i8*%W,i8**%c,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**%d,align 8
%aa=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ab=bitcast i8*%X to i8**
store i8*%aa,i8**%ab,align 8
%ac=getelementptr inbounds i8,i8*%X,i64 8
%ad=bitcast i8*%ac to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[37x i8]}>,<{[4x i8],i32,[37x i8]}>*@a9,i64 0,i32 2,i64 0),i8**%ad,align 8
%ae=getelementptr inbounds i8,i8*%X,i64 16
%af=bitcast i8*%ae to i32*
store i32 3,i32*%af,align 4
%ag=call i8*@sml_alloc(i32 inreg 60)#0
%ah=getelementptr inbounds i8,i8*%ag,i64 -4
%ai=bitcast i8*%ah to i32*
store i32 1342177336,i32*%ai,align 4
%aj=getelementptr inbounds i8,i8*%ag,i64 56
%ak=bitcast i8*%aj to i32*
store i32 1,i32*%ak,align 4
%al=load i8*,i8**%d,align 8
%am=bitcast i8*%ag to i8**
store i8*%al,i8**%am,align 8
call void@sml_raise(i8*inreg%ag)#1
unreachable
an:
%ao=sext i32%T to i64
%ap=getelementptr inbounds[12x i32],[12x i32]*@bq,i64 0,i64%ao
%aq=load i32,i32*%ap,align 4
store i8*null,i8**%c,align 8
%ar=getelementptr inbounds i8*,i8**%P,i64 1
%as=load i8*,i8**%ar,align 8
%at=getelementptr inbounds i8,i8*%as,i64 20
%au=bitcast i8*%at to i32*
%av=load i32,i32*%au,align 4
%aw=icmp ult i32%av,12
br i1%aw,label%aP,label%ax
ax:
store i8*null,i8**%f,align 8
call void@sml_matchcomp_bug()
%ay=load i8*,i8**@_SMLZ5Match,align 8
store i8*%ay,i8**%c,align 8
%az=call i8*@sml_alloc(i32 inreg 20)#0
%aA=getelementptr inbounds i8,i8*%az,i64 -4
%aB=bitcast i8*%aA to i32*
store i32 1342177296,i32*%aB,align 4
store i8*%az,i8**%d,align 8
%aC=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aD=bitcast i8*%az to i8**
store i8*%aC,i8**%aD,align 8
%aE=getelementptr inbounds i8,i8*%az,i64 8
%aF=bitcast i8*%aE to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[37x i8]}>,<{[4x i8],i32,[37x i8]}>*@a9,i64 0,i32 2,i64 0),i8**%aF,align 8
%aG=getelementptr inbounds i8,i8*%az,i64 16
%aH=bitcast i8*%aG to i32*
store i32 3,i32*%aH,align 4
%aI=call i8*@sml_alloc(i32 inreg 60)#0
%aJ=getelementptr inbounds i8,i8*%aI,i64 -4
%aK=bitcast i8*%aJ to i32*
store i32 1342177336,i32*%aK,align 4
%aL=getelementptr inbounds i8,i8*%aI,i64 56
%aM=bitcast i8*%aL to i32*
store i32 1,i32*%aM,align 4
%aN=load i8*,i8**%d,align 8
%aO=bitcast i8*%aI to i8**
store i8*%aN,i8**%aO,align 8
call void@sml_raise(i8*inreg%aI)#1
unreachable
aP:
%aQ=sext i32%av to i64
%aR=getelementptr inbounds[12x i32],[12x i32]*@bq,i64 0,i64%aQ
%aS=load i32,i32*%aR,align 4
%aT=call i8*@sml_alloc(i32 inreg 12)#0
%aU=bitcast i8*%aT to i32*
%aV=getelementptr inbounds i8,i8*%aT,i64 -4
%aW=bitcast i8*%aV to i32*
store i32 1342177288,i32*%aW,align 4
store i32%aq,i32*%aU,align 4
%aX=getelementptr inbounds i8,i8*%aT,i64 4
%aY=bitcast i8*%aX to i32*
store i32%aS,i32*%aY,align 4
%aZ=getelementptr inbounds i8,i8*%aT,i64 8
%a0=bitcast i8*%aZ to i32*
store i32 0,i32*%a0,align 4
%a1=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%aT)
%a2=icmp eq i32%a1,0
br i1%a2,label%a4,label%a3
a3:
ret i32%a1
a4:
%a5=load i8*,i8**%f,align 8
%a6=tail call fastcc i32@_SMLLLN4Date7compareE_403(i8*inreg%a5,i32 inreg 0)
ret i32%a6
}
define fastcc i32@_SMLFN4Date7compareE(i8*inreg%a)#2 gc"smlsharp"{
k:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%b,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%b,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%a,%k]
%l=bitcast i8*%j to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%b,align 8
%n=getelementptr inbounds i8,i8*%j,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%c,align 8
%q=call i8*@sml_alloc(i32 inreg 20)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177296,i32*%s,align 4
store i8*%q,i8**%d,align 8
%t=load i8*,i8**%b,align 8
%u=bitcast i8*%q to i8**
store i8*%t,i8**%u,align 8
%v=load i8*,i8**%c,align 8
%w=getelementptr inbounds i8,i8*%q,i64 8
%x=bitcast i8*%w to i8**
store i8*%v,i8**%x,align 8
%y=getelementptr inbounds i8,i8*%q,i64 16
%z=bitcast i8*%y to i32*
store i32 3,i32*%z,align 4
%A=call i8*@sml_alloc(i32 inreg 28)#0
%B=getelementptr inbounds i8,i8*%A,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177304,i32*%C,align 4
%D=load i8*,i8**%d,align 8
%E=bitcast i8*%A to i8**
store i8*%D,i8**%E,align 8
%F=getelementptr inbounds i8,i8*%A,i64 8
%G=bitcast i8*%F to void(...)**
store void(...)*bitcast(i32(i8*,i32)*@_SMLLLN4Date7compareE_406 to void(...)*),void(...)**%G,align 8
%H=getelementptr inbounds i8,i8*%A,i64 16
%I=bitcast i8*%H to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date7compareE_482 to void(...)*),void(...)**%I,align 8
%J=getelementptr inbounds i8,i8*%A,i64 24
%K=bitcast i8*%J to i32*
store i32 -2147483647,i32*%K,align 4
%L=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%M=getelementptr inbounds i8,i8*%L,i64 44
%N=bitcast i8*%M to i32*
%O=load i32,i32*%N,align 4
%P=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%Q=getelementptr inbounds i8,i8*%P,i64 44
%R=bitcast i8*%Q to i32*
%S=load i32,i32*%R,align 4
%T=call i8*@sml_alloc(i32 inreg 12)#0
%U=bitcast i8*%T to i32*
%V=getelementptr inbounds i8,i8*%T,i64 -4
%W=bitcast i8*%V to i32*
store i32 1342177288,i32*%W,align 4
store i32%O,i32*%U,align 4
%X=getelementptr inbounds i8,i8*%T,i64 4
%Y=bitcast i8*%X to i32*
store i32%S,i32*%Y,align 4
%Z=getelementptr inbounds i8,i8*%T,i64 8
%aa=bitcast i8*%Z to i32*
store i32 0,i32*%aa,align 4
%ab=call fastcc i32@_SMLFN5Int327compareE(i8*inreg%T)
%ac=icmp eq i32%ab,0
br i1%ac,label%ae,label%ad
ad:
ret i32%ab
ae:
%af=load i8*,i8**%d,align 8
%ag=tail call fastcc i32@_SMLLLN4Date7compareE_406(i8*inreg%af,i32 inreg 0)
ret i32%ag
}
define internal fastcc i8*@_SMLLL7mkFmtFn_411(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%e,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%i,label%h
h:
call void@sml_check(i32 inreg%f)
br label%i
i:
%j=call fastcc i8*@_SMLFN9CharArray5arrayE(i8*inreg bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,i8,[3x i8],i32}>,<{[4x i8],i32,i32,i8,[3x i8],i32}>*@bb,i64 0,i32 2)to i8*))
store i8*%j,i8**%d,align 8
%k=bitcast i8**%e to i8***
%l=load i8**,i8***%k,align 8
store i8*null,i8**%e,align 8
%m=load i8*,i8**%l,align 8
%n=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%o=call i32@prim_Date_strfTime(i8*%j,i32 512,i8*%m,i8*%n)
%p=icmp eq i32%o,0
br i1%p,label%q,label%z
q:
store i8*null,i8**%d,align 8
%r=call fastcc i8*@_SMLFN16SMLSharp__Runtime9OS__SysErrE(i32 inreg 0)
store i8*%r,i8**%c,align 8
%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=icmp sgt i32%o,-1
br i1%A,label%T,label%B
B:
store i8*null,i8**%d,align 8
%C=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%C,i8**%c,align 8
%D=call i8*@sml_alloc(i32 inreg 20)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177296,i32*%F,align 4
store i8*%D,i8**%d,align 8
%G=load i8*,i8**%c,align 8
store i8*null,i8**%c,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[38x i8]}>,<{[4x i8],i32,[38x i8]}>*@bc,i64 0,i32 2,i64 0),i8**%J,align 8
%K=getelementptr inbounds i8,i8*%D,i64 16
%L=bitcast i8*%K to i32*
store i32 3,i32*%L,align 4
%M=call i8*@sml_alloc(i32 inreg 60)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177336,i32*%O,align 4
%P=getelementptr inbounds i8,i8*%M,i64 56
%Q=bitcast i8*%P to i32*
store i32 1,i32*%Q,align 4
%R=load i8*,i8**%d,align 8
%S=bitcast i8*%M to i8**
store i8*%R,i8**%S,align 8
call void@sml_raise(i8*inreg%M)#1
unreachable
T:
%U=call i8*@sml_alloc(i32 inreg 12)#0
%V=getelementptr inbounds i8,i8*%U,i64 -4
%W=bitcast i8*%V to i32*
store i32 1342177288,i32*%W,align 4
store i8*%U,i8**%c,align 8
%X=getelementptr inbounds i8,i8*%U,i64 4
%Y=bitcast i8*%X to i32*
store i32 0,i32*%Y,align 1
%Z=bitcast i8*%U to i32*
store i32%o,i32*%Z,align 4
%aa=getelementptr inbounds i8,i8*%U,i64 8
%ab=bitcast i8*%aa to i32*
store i32 0,i32*%ab,align 4
%ac=call i8*@sml_alloc(i32 inreg 28)#0
%ad=getelementptr inbounds i8,i8*%ac,i64 -4
%ae=bitcast i8*%ad to i32*
store i32 1342177304,i32*%ae,align 4
%af=getelementptr inbounds i8,i8*%ac,i64 12
%ag=bitcast i8*%af to i32*
store i32 0,i32*%ag,align 1
%ah=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ai=bitcast i8*%ac to i8**
store i8*%ah,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%ac,i64 8
%ak=bitcast i8*%aj to i32*
store i32 0,i32*%ak,align 4
%al=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%am=getelementptr inbounds i8,i8*%ac,i64 16
%an=bitcast i8*%am to i8**
store i8*%al,i8**%an,align 8
%ao=getelementptr inbounds i8,i8*%ac,i64 24
%ap=bitcast i8*%ao to i32*
store i32 5,i32*%ap,align 4
%aq=call fastcc i8*@_SMLFN14CharArraySlice5sliceE(i8*inreg%ac)
%ar=tail call fastcc i8*@_SMLFN14CharArraySlice6vectorE(i8*inreg%aq)
ret i8*%ar
}
define internal fastcc i8*@_SMLLL7mkFmtFn_412(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
k:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%b,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%b,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%a,%k]
%l=bitcast i8*%j to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%b,align 8
%n=getelementptr inbounds i8,i8*%j,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%c,align 8
%q=call fastcc i8*@_SMLFN4List4nullE(i32 inreg 1,i32 inreg 8)
%r=getelementptr inbounds i8,i8*%q,i64 16
%s=bitcast i8*%r to i8*(i8*,i8*)**
%t=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%s,align 8
%u=bitcast i8*%q to i8**
%v=load i8*,i8**%u,align 8
%w=load i8*,i8**%b,align 8
%x=call fastcc i8*%t(i8*inreg%v,i8*inreg%w)
%y=bitcast i8*%x to i32*
%z=load i32,i32*%y,align 4
%A=icmp eq i32%z,0
br i1%A,label%D,label%B
B:
%C=load i8*,i8**%c,align 8
ret i8*%C
D:
%E=call fastcc i8*@_SMLFN4List3revE(i32 inreg 1,i32 inreg 8)
%F=getelementptr inbounds i8,i8*%E,i64 16
%G=bitcast i8*%F to i8*(i8*,i8*)**
%H=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%G,align 8
%I=bitcast i8*%E to i8**
%J=load i8*,i8**%I,align 8
%K=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%L=call fastcc i8*%H(i8*inreg%J,i8*inreg%K)
%M=call fastcc i8*@_SMLFN9Substring6concatE(i8*inreg%L)
store i8*%M,i8**%b,align 8
%N=call i8*@sml_alloc(i32 inreg 12)#0
%O=getelementptr inbounds i8,i8*%N,i64 -4
%P=bitcast i8*%O to i32*
store i32 1342177288,i32*%P,align 4
store i8*%N,i8**%d,align 8
%Q=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%R=bitcast i8*%N to i8**
store i8*%Q,i8**%R,align 8
%S=getelementptr inbounds i8,i8*%N,i64 8
%T=bitcast i8*%S to i32*
store i32 1,i32*%T,align 4
%U=call i8*@sml_alloc(i32 inreg 28)#0
%V=getelementptr inbounds i8,i8*%U,i64 -4
%W=bitcast i8*%V to i32*
store i32 1342177304,i32*%W,align 4
store i8*%U,i8**%b,align 8
%X=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%Y=bitcast i8*%U to i8**
store i8*%X,i8**%Y,align 8
%Z=getelementptr inbounds i8,i8*%U,i64 8
%aa=bitcast i8*%Z to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL7mkFmtFn_411 to void(...)*),void(...)**%aa,align 8
%ab=getelementptr inbounds i8,i8*%U,i64 16
%ac=bitcast i8*%ab to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL7mkFmtFn_411 to void(...)*),void(...)**%ac,align 8
%ad=getelementptr inbounds i8,i8*%U,i64 24
%ae=bitcast i8*%ad to i32*
store i32 -2147483647,i32*%ae,align 4
%af=call i8*@sml_alloc(i32 inreg 20)#0
%ag=getelementptr inbounds i8,i8*%af,i64 -4
%ah=bitcast i8*%ag to i32*
store i32 1342177296,i32*%ah,align 4
%ai=load i8*,i8**%b,align 8
%aj=bitcast i8*%af to i8**
store i8*%ai,i8**%aj,align 8
%ak=load i8*,i8**%c,align 8
%al=getelementptr inbounds i8,i8*%af,i64 8
%am=bitcast i8*%al to i8**
store i8*%ak,i8**%am,align 8
%an=getelementptr inbounds i8,i8*%af,i64 16
%ao=bitcast i8*%an to i32*
store i32 3,i32*%ao,align 4
ret i8*%af
}
define internal fastcc i32@_SMLLL6notPct_414(i8 inreg%a)#4 gc"smlsharp"{
%b=icmp ne i8%a,37
%c=zext i1%b to i32
ret i32%c
}
define internal fastcc i8*@_SMLLL6fmtFns_418(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%a to i8**
%d=load i8*,i8**%c,align 8
ret i8*%d
}
define internal fastcc i8*@_SMLLLN4Date3fmtE_423(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%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%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%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**%n,align 8
%v=tail call fastcc i8*%r(i8*inreg%t,i8*inreg%u)
ret i8*%v
}
define internal fastcc i8*@_SMLLLN4Date3fmtE_424(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%c,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%b,%m]
store i8*null,i8**%c,align 8
%n=call fastcc i8*@_SMLLLN4Date7date2tmE_303(i8*inreg%l)
store i8*%n,i8**%c,align 8
%o=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%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
store i8*%t,i8**%e,align 8
%u=call i8*@sml_alloc(i32 inreg 12)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177288,i32*%w,align 4
store i8*%u,i8**%f,align 8
%x=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%u,i64 8
%A=bitcast i8*%z to i32*
store i32 1,i32*%A,align 4
%B=call i8*@sml_alloc(i32 inreg 28)#0
%C=getelementptr inbounds i8,i8*%B,i64 -4
%D=bitcast i8*%C to i32*
store i32 1342177304,i32*%D,align 4
%E=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%F=bitcast i8*%B to i8**
store i8*%E,i8**%F,align 8
%G=getelementptr inbounds i8,i8*%B,i64 8
%H=bitcast i8*%G to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date3fmtE_423 to void(...)*),void(...)**%H,align 8
%I=getelementptr inbounds i8,i8*%B,i64 16
%J=bitcast i8*%I to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date3fmtE_423 to void(...)*),void(...)**%J,align 8
%K=getelementptr inbounds i8,i8*%B,i64 24
%L=bitcast i8*%K to i32*
store i32 -2147483647,i32*%L,align 4
%M=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%N=call fastcc i8*%r(i8*inreg%M,i8*inreg%B)
%O=getelementptr inbounds i8,i8*%N,i64 16
%P=bitcast i8*%O to i8*(i8*,i8*)**
%Q=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%P,align 8
%R=bitcast i8*%N to i8**
%S=load i8*,i8**%R,align 8
%T=bitcast i8**%d to i8***
%U=load i8**,i8***%T,align 8
store i8*null,i8**%d,align 8
%V=load i8*,i8**%U,align 8
%W=call fastcc i8*%Q(i8*inreg%S,i8*inreg%V)
%X=tail call fastcc i8*@_SMLFN10CharVector6concatE(i8*inreg%W)
ret i8*%X
}
define fastcc i8*@_SMLFN4Date3fmtE(i8*inreg%a)#2 gc"smlsharp"{
w:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
%g=call fastcc i8*@_SMLFN9Substring4fullE(i8*inreg%a)
store i8*%g,i8**%b,align 8
%h=call i8*@sml_alloc(i32 inreg 36)#0
%i=getelementptr inbounds i8,i8*%h,i64 -4
%j=bitcast i8*%i to i32*
store i32 1342177312,i32*%j,align 4
%k=getelementptr inbounds i8,i8*%h,i64 12
%l=bitcast i8*%k to i32*
store i32 0,i32*%l,align 1
%m=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%n=bitcast i8*%h to i8**
store i8*%m,i8**%n,align 8
%o=getelementptr inbounds i8,i8*%h,i64 8
%p=bitcast i8*%o to i32*
store i32 0,i32*%p,align 4
%q=getelementptr inbounds i8,i8*%h,i64 16
%r=getelementptr inbounds i8,i8*%h,i64 32
%s=bitcast i8*%r to i32*
call void@llvm.memset.p0i8.i64(i8*%q,i8 0,i64 16,i1 false)
store i32 13,i32*%s,align 4
%t=bitcast i8**%b to i8***
br label%u
u:
%v=phi i8*[%hZ,%hY],[%h,%w]
store i8*%v,i8**%b,align 8
%x=load atomic i32,i32*@sml_check_flag unordered,align 4
%y=icmp eq i32%x,0
%z=bitcast i8*%v to i8**
br i1%y,label%D,label%A
A:
call void@sml_check(i32 inreg%x)
%B=load i8**,i8***%t,align 8
%C=bitcast i8**%B to i8*
br label%D
D:
%E=phi i8*[%C,%A],[%v,%u]
%F=phi i8**[%B,%A],[%z,%u]
%G=load i8*,i8**%F,align 8
store i8*%G,i8**%c,align 8
%H=getelementptr inbounds i8*,i8**%F,i64 1
%I=bitcast i8**%H to i32*
%J=load i32,i32*%I,align 4
%K=getelementptr inbounds i8*,i8**%F,i64 2
%L=load i8*,i8**%K,align 8
store i8*%L,i8**%d,align 8
%M=getelementptr inbounds i8,i8*%E,i64 24
%N=bitcast i8*%M to i8**
%O=load i8*,i8**%N,align 8
store i8*%O,i8**%b,align 8
%P=call fastcc i8*@_SMLFN9Substring6splitlE(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@bd,i64 0,i32 2)to i8*))
%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**%c,align 8
store i8*null,i8**%c,align 8
%W=call fastcc i8*%S(i8*inreg%U,i8*inreg%V)
%X=bitcast i8*%W to i8**
%Y=load i8*,i8**%X,align 8
store i8*%Y,i8**%c,align 8
%Z=getelementptr inbounds i8,i8*%W,i64 8
%aa=bitcast i8*%Z to i8**
%ab=load i8*,i8**%aa,align 8
store i8*%ab,i8**%e,align 8
%ac=call fastcc i32@_SMLFN9Substring4sizeE(i8*inreg%Y)
%ad=icmp eq i32%ac,0
br i1%ad,label%ae,label%ap
ae:
store i8*null,i8**%c,align 8
%af=call i8*@sml_alloc(i32 inreg 28)#0
%ag=bitcast i8*%af to i32*
%ah=getelementptr inbounds i8,i8*%af,i64 -4
%ai=bitcast i8*%ah to i32*
store i32 1342177304,i32*%ai,align 4
%aj=getelementptr inbounds i8,i8*%af,i64 4
%ak=bitcast i8*%aj to i32*
store i32 0,i32*%ak,align 1
store i32%J,i32*%ag,align 4
%al=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%am=getelementptr inbounds i8,i8*%af,i64 8
%an=bitcast i8*%am to i8**
store i8*%al,i8**%an,align 8
%ao=load i8*,i8**%b,align 8
br label%bP
ap:
%aq=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%J,i32%ac)#0
%ar=extractvalue{i32,i1}%aq,1
br i1%ar,label%as,label%aK
as:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
%at=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%at,i8**%b,align 8
%au=call i8*@sml_alloc(i32 inreg 20)#0
%av=getelementptr inbounds i8,i8*%au,i64 -4
%aw=bitcast i8*%av to i32*
store i32 1342177296,i32*%aw,align 4
store i8*%au,i8**%c,align 8
%ax=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ay=bitcast i8*%au to i8**
store i8*%ax,i8**%ay,align 8
%az=getelementptr inbounds i8,i8*%au,i64 8
%aA=bitcast i8*%az to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@be,i64 0,i32 2,i64 0),i8**%aA,align 8
%aB=getelementptr inbounds i8,i8*%au,i64 16
%aC=bitcast i8*%aB to i32*
store i32 3,i32*%aC,align 4
%aD=call i8*@sml_alloc(i32 inreg 60)#0
%aE=getelementptr inbounds i8,i8*%aD,i64 -4
%aF=bitcast i8*%aE to i32*
store i32 1342177336,i32*%aF,align 4
%aG=getelementptr inbounds i8,i8*%aD,i64 56
%aH=bitcast i8*%aG to i32*
store i32 1,i32*%aH,align 4
%aI=load i8*,i8**%c,align 8
%aJ=bitcast i8*%aD to i8**
store i8*%aI,i8**%aJ,align 8
call void@sml_raise(i8*inreg%aD)#1
unreachable
aK:
%aL=add nsw i32%ac,%J
%aM=icmp slt i32%aL,511
%aN=call i8*@sml_alloc(i32 inreg 20)#0
%aO=getelementptr inbounds i8,i8*%aN,i64 -4
%aP=bitcast i8*%aO to i32*
store i32 1342177296,i32*%aP,align 4
br i1%aM,label%bx,label%aQ
aQ:
%aR=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aS=bitcast i8*%aN to i8**
store i8*%aR,i8**%aS,align 8
%aT=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aU=getelementptr inbounds i8,i8*%aN,i64 8
%aV=bitcast i8*%aU to i8**
store i8*%aT,i8**%aV,align 8
%aW=getelementptr inbounds i8,i8*%aN,i64 16
%aX=bitcast i8*%aW to i32*
store i32 3,i32*%aX,align 4
%aY=call fastcc i8*@_SMLLL7mkFmtFn_412(i8*inreg%aN)
store i8*%aY,i8**%b,align 8
%aZ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a0=call fastcc i8*@_SMLFN9Substring6stringE(i8*inreg%aZ)
store i8*%a0,i8**%c,align 8
%a1=call i8*@sml_alloc(i32 inreg 12)#0
%a2=getelementptr inbounds i8,i8*%a1,i64 -4
%a3=bitcast i8*%a2 to i32*
store i32 1342177288,i32*%a3,align 4
store i8*%a1,i8**%d,align 8
%a4=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a5=bitcast i8*%a1 to i8**
store i8*%a4,i8**%a5,align 8
%a6=getelementptr inbounds i8,i8*%a1,i64 8
%a7=bitcast i8*%a6 to i32*
store i32 1,i32*%a7,align 4
%a8=call i8*@sml_alloc(i32 inreg 28)#0
%a9=getelementptr inbounds i8,i8*%a8,i64 -4
%ba=bitcast i8*%a9 to i32*
store i32 1342177304,i32*%ba,align 4
store i8*%a8,i8**%f,align 8
%bb=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bc=bitcast i8*%a8 to i8**
store i8*%bb,i8**%bc,align 8
%bd=getelementptr inbounds i8,i8*%a8,i64 8
%be=bitcast i8*%bd to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL6fmtFns_418 to void(...)*),void(...)**%be,align 8
%bf=getelementptr inbounds i8,i8*%a8,i64 16
%bg=bitcast i8*%bf to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL6fmtFns_418 to void(...)*),void(...)**%bg,align 8
%bh=getelementptr inbounds i8,i8*%a8,i64 24
%bi=bitcast i8*%bh to i32*
store i32 -2147483647,i32*%bi,align 4
%bj=call i8*@sml_alloc(i32 inreg 20)#0
%bk=getelementptr inbounds i8,i8*%bj,i64 -4
%bl=bitcast i8*%bk to i32*
store i32 1342177296,i32*%bl,align 4
store i8*%bj,i8**%c,align 8
%bm=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bn=bitcast i8*%bj to i8**
store i8*%bm,i8**%bn,align 8
%bo=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bp=getelementptr inbounds i8,i8*%bj,i64 8
%bq=bitcast i8*%bp to i8**
store i8*%bo,i8**%bq,align 8
%br=getelementptr inbounds i8,i8*%bj,i64 16
%bs=bitcast i8*%br to i32*
store i32 3,i32*%bs,align 4
%bt=call i8*@sml_alloc(i32 inreg 28)#0
%bu=getelementptr inbounds i8,i8*%bt,i64 -4
%bv=bitcast i8*%bu to i32*
store i32 1342177304,i32*%bv,align 4
call void@llvm.memset.p0i8.i64(i8*%bt,i8 0,i64 16,i1 false)
%bw=load i8*,i8**%c,align 8
br label%bP
bx:
store i8*%aN,i8**%f,align 8
%by=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bz=bitcast i8*%aN to i8**
store i8*%by,i8**%bz,align 8
%bA=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bB=getelementptr inbounds i8,i8*%aN,i64 8
%bC=bitcast i8*%bB to i8**
store i8*%bA,i8**%bC,align 8
%bD=getelementptr inbounds i8,i8*%aN,i64 16
%bE=bitcast i8*%bD to i32*
store i32 3,i32*%bE,align 4
%bF=call i8*@sml_alloc(i32 inreg 28)#0
%bG=bitcast i8*%bF to i32*
%bH=getelementptr inbounds i8,i8*%bF,i64 -4
%bI=bitcast i8*%bH to i32*
store i32 1342177304,i32*%bI,align 4
%bJ=getelementptr inbounds i8,i8*%bF,i64 4
%bK=bitcast i8*%bJ to i32*
store i32 0,i32*%bK,align 1
store i32%aL,i32*%bG,align 4
%bL=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bM=getelementptr inbounds i8,i8*%bF,i64 8
%bN=bitcast i8*%bM to i8**
store i8*%bL,i8**%bN,align 8
%bO=load i8*,i8**%b,align 8
br label%bP
bP:
%bQ=phi i8*[%bt,%aQ],[%bF,%bx],[%af,%ae]
%bR=phi i8*[%bw,%aQ],[%bO,%bx],[%ao,%ae]
%bS=phi i8*[null,%aQ],[%bL,%bx],[%al,%ae]
%bT=phi i32[0,%aQ],[%aL,%bx],[%J,%ae]
%bU=getelementptr inbounds i8,i8*%bQ,i64 16
%bV=bitcast i8*%bU to i8**
store i8*%bR,i8**%bV,align 8
%bW=getelementptr inbounds i8,i8*%bQ,i64 24
%bX=bitcast i8*%bW to i32*
store i32 6,i32*%bX,align 4
store i8*%bS,i8**%b,align 8
store i8*%bR,i8**%c,align 8
%bY=load i8*,i8**%e,align 8
%bZ=call fastcc i8*@_SMLFN9Substring4getcE(i8*inreg%bY)
%b0=icmp eq i8*%bZ,null
br i1%b0,label%iq,label%b1
b1:
%b2=bitcast i8*%bZ to i8**
%b3=load i8*,i8**%b2,align 8
%b4=getelementptr inbounds i8,i8*%b3,i64 8
%b5=bitcast i8*%b4 to i8**
%b6=load i8*,i8**%b5,align 8
store i8*%b6,i8**%d,align 8
%b7=call fastcc i8*@_SMLFN9Substring4getcE(i8*inreg%b6)
%b8=icmp eq i8*%b7,null
br i1%b8,label%b9,label%cl
b9:
store i8*null,i8**%e,align 8
%ca=call fastcc i8*@_SMLFN9Substring4fullE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@bg,i64 0,i32 2,i64 0))
store i8*%ca,i8**%e,align 8
%cb=call i8*@sml_alloc(i32 inreg 28)#0
%cc=bitcast i8*%cb to i32*
%cd=getelementptr inbounds i8,i8*%cb,i64 -4
%ce=bitcast i8*%cd to i32*
store i32 1342177304,i32*%ce,align 4
%cf=getelementptr inbounds i8,i8*%cb,i64 4
%cg=bitcast i8*%cf to i32*
store i32 0,i32*%cg,align 1
store i32 1,i32*%cc,align 4
%ch=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ci=getelementptr inbounds i8,i8*%cb,i64 8
%cj=bitcast i8*%ci to i8**
store i8*%ch,i8**%cj,align 8
%ck=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%gU
cl:
%cm=bitcast i8*%b7 to i8**
%cn=load i8*,i8**%cm,align 8
%co=load i8,i8*%cn,align 1
switch i8%co,label%cp[
i8 65,label%gd
i8 66,label%f2
i8 72,label%fR
i8 73,label%fG
i8 77,label%fv
i8 83,label%fk
i8 85,label%e9
i8 87,label%eY
i8 88,label%eN
i8 89,label%eC
i8 90,label%er
i8 97,label%eg
i8 98,label%d5
i8 99,label%dU
i8 100,label%dJ
i8 106,label%dy
i8 109,label%dn
i8 112,label%dc
i8 119,label%c1
i8 120,label%cQ
i8 121,label%cF
]
cp:
store i8*null,i8**%e,align 8
%cq=getelementptr inbounds i8,i8*%cn,i64 8
%cr=bitcast i8*%cq to i8**
%cs=load i8*,i8**%cr,align 8
store i8*%cs,i8**%d,align 8
%ct=call fastcc i8*@_SMLFN6String3strE(i8 inreg%co)
%cu=call fastcc i8*@_SMLFN9Substring4fullE(i8*inreg%ct)
store i8*%cu,i8**%e,align 8
%cv=call i8*@sml_alloc(i32 inreg 28)#0
%cw=bitcast i8*%cv to i32*
%cx=getelementptr inbounds i8,i8*%cv,i64 -4
%cy=bitcast i8*%cx to i32*
store i32 1342177304,i32*%cy,align 4
%cz=getelementptr inbounds i8,i8*%cv,i64 4
%cA=bitcast i8*%cz to i32*
store i32 0,i32*%cA,align 1
store i32 1,i32*%cw,align 4
%cB=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%cC=getelementptr inbounds i8,i8*%cv,i64 8
%cD=bitcast i8*%cC to i8**
store i8*%cB,i8**%cD,align 8
%cE=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%gU
cF:
%cG=getelementptr inbounds i8,i8*%cn,i64 8
%cH=bitcast i8*%cG to i8**
%cI=load i8*,i8**%cH,align 8
store i8*%cI,i8**%d,align 8
%cJ=call i8*@sml_alloc(i32 inreg 20)#0
%cK=bitcast i8*%cJ to i32*
%cL=getelementptr inbounds i8,i8*%cJ,i64 -4
%cM=bitcast i8*%cL to i32*
store i32 1342177296,i32*%cM,align 4
%cN=getelementptr inbounds i8,i8*%cJ,i64 4
%cO=bitcast i8*%cN to i32*
store i32 0,i32*%cO,align 1
store i32 2,i32*%cK,align 4
%cP=load i8*,i8**%d,align 8
br label%go
cQ:
%cR=getelementptr inbounds i8,i8*%cn,i64 8
%cS=bitcast i8*%cR to i8**
%cT=load i8*,i8**%cS,align 8
store i8*%cT,i8**%d,align 8
%cU=call i8*@sml_alloc(i32 inreg 20)#0
%cV=bitcast i8*%cU to i32*
%cW=getelementptr inbounds i8,i8*%cU,i64 -4
%cX=bitcast i8*%cW to i32*
store i32 1342177296,i32*%cX,align 4
%cY=getelementptr inbounds i8,i8*%cU,i64 4
%cZ=bitcast i8*%cY to i32*
store i32 0,i32*%cZ,align 1
store i32 24,i32*%cV,align 4
%c0=load i8*,i8**%d,align 8
br label%go
c1:
%c2=getelementptr inbounds i8,i8*%cn,i64 8
%c3=bitcast i8*%c2 to i8**
%c4=load i8*,i8**%c3,align 8
store i8*%c4,i8**%d,align 8
%c5=call i8*@sml_alloc(i32 inreg 20)#0
%c6=bitcast i8*%c5 to i32*
%c7=getelementptr inbounds i8,i8*%c5,i64 -4
%c8=bitcast i8*%c7 to i32*
store i32 1342177296,i32*%c8,align 4
%c9=getelementptr inbounds i8,i8*%c5,i64 4
%da=bitcast i8*%c9 to i32*
store i32 0,i32*%da,align 1
store i32 1,i32*%c6,align 4
%db=load i8*,i8**%d,align 8
br label%go
dc:
%dd=getelementptr inbounds i8,i8*%cn,i64 8
%de=bitcast i8*%dd to i8**
%df=load i8*,i8**%de,align 8
store i8*%df,i8**%d,align 8
%dg=call i8*@sml_alloc(i32 inreg 20)#0
%dh=bitcast i8*%dg to i32*
%di=getelementptr inbounds i8,i8*%dg,i64 -4
%dj=bitcast i8*%di to i32*
store i32 1342177296,i32*%dj,align 4
%dk=getelementptr inbounds i8,i8*%dg,i64 4
%dl=bitcast i8*%dk to i32*
store i32 0,i32*%dl,align 1
store i32 3,i32*%dh,align 4
%dm=load i8*,i8**%d,align 8
br label%go
dn:
%do=getelementptr inbounds i8,i8*%cn,i64 8
%dp=bitcast i8*%do to i8**
%dq=load i8*,i8**%dp,align 8
store i8*%dq,i8**%d,align 8
%dr=call i8*@sml_alloc(i32 inreg 20)#0
%ds=bitcast i8*%dr to i32*
%dt=getelementptr inbounds i8,i8*%dr,i64 -4
%du=bitcast i8*%dt to i32*
store i32 1342177296,i32*%du,align 4
%dv=getelementptr inbounds i8,i8*%dr,i64 4
%dw=bitcast i8*%dv to i32*
store i32 0,i32*%dw,align 1
store i32 2,i32*%ds,align 4
%dx=load i8*,i8**%d,align 8
br label%go
dy:
%dz=getelementptr inbounds i8,i8*%cn,i64 8
%dA=bitcast i8*%dz to i8**
%dB=load i8*,i8**%dA,align 8
store i8*%dB,i8**%d,align 8
%dC=call i8*@sml_alloc(i32 inreg 20)#0
%dD=bitcast i8*%dC to i32*
%dE=getelementptr inbounds i8,i8*%dC,i64 -4
%dF=bitcast i8*%dE to i32*
store i32 1342177296,i32*%dF,align 4
%dG=getelementptr inbounds i8,i8*%dC,i64 4
%dH=bitcast i8*%dG to i32*
store i32 0,i32*%dH,align 1
store i32 3,i32*%dD,align 4
%dI=load i8*,i8**%d,align 8
br label%go
dJ:
%dK=getelementptr inbounds i8,i8*%cn,i64 8
%dL=bitcast i8*%dK to i8**
%dM=load i8*,i8**%dL,align 8
store i8*%dM,i8**%d,align 8
%dN=call i8*@sml_alloc(i32 inreg 20)#0
%dO=bitcast i8*%dN to i32*
%dP=getelementptr inbounds i8,i8*%dN,i64 -4
%dQ=bitcast i8*%dP to i32*
store i32 1342177296,i32*%dQ,align 4
%dR=getelementptr inbounds i8,i8*%dN,i64 4
%dS=bitcast i8*%dR to i32*
store i32 0,i32*%dS,align 1
store i32 2,i32*%dO,align 4
%dT=load i8*,i8**%d,align 8
br label%go
dU:
%dV=getelementptr inbounds i8,i8*%cn,i64 8
%dW=bitcast i8*%dV to i8**
%dX=load i8*,i8**%dW,align 8
store i8*%dX,i8**%d,align 8
%dY=call i8*@sml_alloc(i32 inreg 20)#0
%dZ=bitcast i8*%dY to i32*
%d0=getelementptr inbounds i8,i8*%dY,i64 -4
%d1=bitcast i8*%d0 to i32*
store i32 1342177296,i32*%d1,align 4
%d2=getelementptr inbounds i8,i8*%dY,i64 4
%d3=bitcast i8*%d2 to i32*
store i32 0,i32*%d3,align 1
store i32 24,i32*%dZ,align 4
%d4=load i8*,i8**%d,align 8
br label%go
d5:
%d6=getelementptr inbounds i8,i8*%cn,i64 8
%d7=bitcast i8*%d6 to i8**
%d8=load i8*,i8**%d7,align 8
store i8*%d8,i8**%d,align 8
%d9=call i8*@sml_alloc(i32 inreg 20)#0
%ea=bitcast i8*%d9 to i32*
%eb=getelementptr inbounds i8,i8*%d9,i64 -4
%ec=bitcast i8*%eb to i32*
store i32 1342177296,i32*%ec,align 4
%ed=getelementptr inbounds i8,i8*%d9,i64 4
%ee=bitcast i8*%ed to i32*
store i32 0,i32*%ee,align 1
store i32 3,i32*%ea,align 4
%ef=load i8*,i8**%d,align 8
br label%go
eg:
%eh=getelementptr inbounds i8,i8*%cn,i64 8
%ei=bitcast i8*%eh to i8**
%ej=load i8*,i8**%ei,align 8
store i8*%ej,i8**%d,align 8
%ek=call i8*@sml_alloc(i32 inreg 20)#0
%el=bitcast i8*%ek to i32*
%em=getelementptr inbounds i8,i8*%ek,i64 -4
%en=bitcast i8*%em to i32*
store i32 1342177296,i32*%en,align 4
%eo=getelementptr inbounds i8,i8*%ek,i64 4
%ep=bitcast i8*%eo to i32*
store i32 0,i32*%ep,align 1
store i32 3,i32*%el,align 4
%eq=load i8*,i8**%d,align 8
br label%go
er:
%es=getelementptr inbounds i8,i8*%cn,i64 8
%et=bitcast i8*%es to i8**
%eu=load i8*,i8**%et,align 8
store i8*%eu,i8**%d,align 8
%ev=call i8*@sml_alloc(i32 inreg 20)#0
%ew=bitcast i8*%ev to i32*
%ex=getelementptr inbounds i8,i8*%ev,i64 -4
%ey=bitcast i8*%ex to i32*
store i32 1342177296,i32*%ey,align 4
%ez=getelementptr inbounds i8,i8*%ev,i64 4
%eA=bitcast i8*%ez to i32*
store i32 0,i32*%eA,align 1
store i32 3,i32*%ew,align 4
%eB=load i8*,i8**%d,align 8
br label%go
eC:
%eD=getelementptr inbounds i8,i8*%cn,i64 8
%eE=bitcast i8*%eD to i8**
%eF=load i8*,i8**%eE,align 8
store i8*%eF,i8**%d,align 8
%eG=call i8*@sml_alloc(i32 inreg 20)#0
%eH=bitcast i8*%eG to i32*
%eI=getelementptr inbounds i8,i8*%eG,i64 -4
%eJ=bitcast i8*%eI to i32*
store i32 1342177296,i32*%eJ,align 4
%eK=getelementptr inbounds i8,i8*%eG,i64 4
%eL=bitcast i8*%eK to i32*
store i32 0,i32*%eL,align 1
store i32 4,i32*%eH,align 4
%eM=load i8*,i8**%d,align 8
br label%go
eN:
%eO=getelementptr inbounds i8,i8*%cn,i64 8
%eP=bitcast i8*%eO to i8**
%eQ=load i8*,i8**%eP,align 8
store i8*%eQ,i8**%d,align 8
%eR=call i8*@sml_alloc(i32 inreg 20)#0
%eS=bitcast i8*%eR to i32*
%eT=getelementptr inbounds i8,i8*%eR,i64 -4
%eU=bitcast i8*%eT to i32*
store i32 1342177296,i32*%eU,align 4
%eV=getelementptr inbounds i8,i8*%eR,i64 4
%eW=bitcast i8*%eV to i32*
store i32 0,i32*%eW,align 1
store i32 24,i32*%eS,align 4
%eX=load i8*,i8**%d,align 8
br label%go
eY:
%eZ=getelementptr inbounds i8,i8*%cn,i64 8
%e0=bitcast i8*%eZ to i8**
%e1=load i8*,i8**%e0,align 8
store i8*%e1,i8**%d,align 8
%e2=call i8*@sml_alloc(i32 inreg 20)#0
%e3=bitcast i8*%e2 to i32*
%e4=getelementptr inbounds i8,i8*%e2,i64 -4
%e5=bitcast i8*%e4 to i32*
store i32 1342177296,i32*%e5,align 4
%e6=getelementptr inbounds i8,i8*%e2,i64 4
%e7=bitcast i8*%e6 to i32*
store i32 0,i32*%e7,align 1
store i32 2,i32*%e3,align 4
%e8=load i8*,i8**%d,align 8
br label%go
e9:
%fa=getelementptr inbounds i8,i8*%cn,i64 8
%fb=bitcast i8*%fa to i8**
%fc=load i8*,i8**%fb,align 8
store i8*%fc,i8**%d,align 8
%fd=call i8*@sml_alloc(i32 inreg 20)#0
%fe=bitcast i8*%fd to i32*
%ff=getelementptr inbounds i8,i8*%fd,i64 -4
%fg=bitcast i8*%ff to i32*
store i32 1342177296,i32*%fg,align 4
%fh=getelementptr inbounds i8,i8*%fd,i64 4
%fi=bitcast i8*%fh to i32*
store i32 0,i32*%fi,align 1
store i32 2,i32*%fe,align 4
%fj=load i8*,i8**%d,align 8
br label%go
fk:
%fl=getelementptr inbounds i8,i8*%cn,i64 8
%fm=bitcast i8*%fl to i8**
%fn=load i8*,i8**%fm,align 8
store i8*%fn,i8**%d,align 8
%fo=call i8*@sml_alloc(i32 inreg 20)#0
%fp=bitcast i8*%fo to i32*
%fq=getelementptr inbounds i8,i8*%fo,i64 -4
%fr=bitcast i8*%fq to i32*
store i32 1342177296,i32*%fr,align 4
%fs=getelementptr inbounds i8,i8*%fo,i64 4
%ft=bitcast i8*%fs to i32*
store i32 0,i32*%ft,align 1
store i32 2,i32*%fp,align 4
%fu=load i8*,i8**%d,align 8
br label%go
fv:
%fw=getelementptr inbounds i8,i8*%cn,i64 8
%fx=bitcast i8*%fw to i8**
%fy=load i8*,i8**%fx,align 8
store i8*%fy,i8**%d,align 8
%fz=call i8*@sml_alloc(i32 inreg 20)#0
%fA=bitcast i8*%fz to i32*
%fB=getelementptr inbounds i8,i8*%fz,i64 -4
%fC=bitcast i8*%fB to i32*
store i32 1342177296,i32*%fC,align 4
%fD=getelementptr inbounds i8,i8*%fz,i64 4
%fE=bitcast i8*%fD to i32*
store i32 0,i32*%fE,align 1
store i32 2,i32*%fA,align 4
%fF=load i8*,i8**%d,align 8
br label%go
fG:
%fH=getelementptr inbounds i8,i8*%cn,i64 8
%fI=bitcast i8*%fH to i8**
%fJ=load i8*,i8**%fI,align 8
store i8*%fJ,i8**%d,align 8
%fK=call i8*@sml_alloc(i32 inreg 20)#0
%fL=bitcast i8*%fK to i32*
%fM=getelementptr inbounds i8,i8*%fK,i64 -4
%fN=bitcast i8*%fM to i32*
store i32 1342177296,i32*%fN,align 4
%fO=getelementptr inbounds i8,i8*%fK,i64 4
%fP=bitcast i8*%fO to i32*
store i32 0,i32*%fP,align 1
store i32 2,i32*%fL,align 4
%fQ=load i8*,i8**%d,align 8
br label%go
fR:
%fS=getelementptr inbounds i8,i8*%cn,i64 8
%fT=bitcast i8*%fS to i8**
%fU=load i8*,i8**%fT,align 8
store i8*%fU,i8**%d,align 8
%fV=call i8*@sml_alloc(i32 inreg 20)#0
%fW=bitcast i8*%fV to i32*
%fX=getelementptr inbounds i8,i8*%fV,i64 -4
%fY=bitcast i8*%fX to i32*
store i32 1342177296,i32*%fY,align 4
%fZ=getelementptr inbounds i8,i8*%fV,i64 4
%f0=bitcast i8*%fZ to i32*
store i32 0,i32*%f0,align 1
store i32 2,i32*%fW,align 4
%f1=load i8*,i8**%d,align 8
br label%go
f2:
%f3=getelementptr inbounds i8,i8*%cn,i64 8
%f4=bitcast i8*%f3 to i8**
%f5=load i8*,i8**%f4,align 8
store i8*%f5,i8**%d,align 8
%f6=call i8*@sml_alloc(i32 inreg 20)#0
%f7=bitcast i8*%f6 to i32*
%f8=getelementptr inbounds i8,i8*%f6,i64 -4
%f9=bitcast i8*%f8 to i32*
store i32 1342177296,i32*%f9,align 4
%ga=getelementptr inbounds i8,i8*%f6,i64 4
%gb=bitcast i8*%ga to i32*
store i32 0,i32*%gb,align 1
store i32 20,i32*%f7,align 4
%gc=load i8*,i8**%d,align 8
br label%go
gd:
%ge=getelementptr inbounds i8,i8*%cn,i64 8
%gf=bitcast i8*%ge to i8**
%gg=load i8*,i8**%gf,align 8
store i8*%gg,i8**%d,align 8
%gh=call i8*@sml_alloc(i32 inreg 20)#0
%gi=bitcast i8*%gh to i32*
%gj=getelementptr inbounds i8,i8*%gh,i64 -4
%gk=bitcast i8*%gj to i32*
store i32 1342177296,i32*%gk,align 4
%gl=getelementptr inbounds i8,i8*%gh,i64 4
%gm=bitcast i8*%gl to i32*
store i32 0,i32*%gm,align 1
store i32 20,i32*%gi,align 4
%gn=load i8*,i8**%d,align 8
br label%go
go:
%gp=phi i8*[%gh,%gd],[%f6,%f2],[%fV,%fR],[%fK,%fG],[%fz,%fv],[%fo,%fk],[%fd,%e9],[%e2,%eY],[%eR,%eN],[%eG,%eC],[%ev,%er],[%ek,%eg],[%d9,%d5],[%dY,%dU],[%dN,%dJ],[%dC,%dy],[%dr,%dn],[%dg,%dc],[%c5,%c1],[%cU,%cQ],[%cJ,%cF]
%gq=phi i8*[%gn,%gd],[%gc,%f2],[%f1,%fR],[%fQ,%fG],[%fF,%fv],[%fu,%fk],[%fj,%e9],[%e8,%eY],[%eX,%eN],[%eM,%eC],[%eB,%er],[%eq,%eg],[%ef,%d5],[%d4,%dU],[%dT,%dJ],[%dI,%dy],[%dx,%dn],[%dm,%dc],[%db,%c1],[%c0,%cQ],[%cP,%cF]
%gr=phi i32[20,%gd],[20,%f2],[2,%fR],[2,%fG],[2,%fv],[2,%fk],[2,%e9],[2,%eY],[24,%eN],[4,%eC],[3,%er],[3,%eg],[3,%d5],[24,%dU],[2,%dJ],[3,%dy],[2,%dn],[3,%dc],[1,%c1],[24,%cQ],[2,%cF]
%gs=getelementptr inbounds i8,i8*%gp,i64 8
%gt=bitcast i8*%gs to i8**
store i8*%gq,i8**%gt,align 8
%gu=getelementptr inbounds i8,i8*%gp,i64 16
%gv=bitcast i8*%gu to i32*
store i32 2,i32*%gv,align 4
store i8*%gq,i8**%d,align 8
%gw=call i8*@sml_alloc(i32 inreg 28)#0
%gx=getelementptr inbounds i8,i8*%gw,i64 -4
%gy=bitcast i8*%gx to i32*
store i32 1342177304,i32*%gy,align 4
%gz=getelementptr inbounds i8,i8*%gw,i64 12
%gA=bitcast i8*%gz to i32*
store i32 0,i32*%gA,align 1
%gB=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%gC=bitcast i8*%gw to i8**
store i8*%gB,i8**%gC,align 8
%gD=getelementptr inbounds i8,i8*%gw,i64 8
%gE=bitcast i8*%gD to i32*
store i32 0,i32*%gE,align 4
%gF=getelementptr inbounds i8,i8*%gw,i64 16
%gG=bitcast i8*%gF to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@bf,i64 0,i32 2)to i8*),i8**%gG,align 8
%gH=getelementptr inbounds i8,i8*%gw,i64 24
%gI=bitcast i8*%gH to i32*
store i32 5,i32*%gI,align 4
%gJ=call fastcc i8*@_SMLFN9Substring5sliceE(i8*inreg%gw)
store i8*%gJ,i8**%e,align 8
%gK=call i8*@sml_alloc(i32 inreg 28)#0
%gL=bitcast i8*%gK to i32*
%gM=getelementptr inbounds i8,i8*%gK,i64 -4
%gN=bitcast i8*%gM to i32*
store i32 1342177304,i32*%gN,align 4
%gO=getelementptr inbounds i8,i8*%gK,i64 4
%gP=bitcast i8*%gO to i32*
store i32 0,i32*%gP,align 1
store i32%gr,i32*%gL,align 4
%gQ=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%gR=getelementptr inbounds i8,i8*%gK,i64 8
%gS=bitcast i8*%gR to i8**
store i8*%gQ,i8**%gS,align 8
%gT=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%gU
gU:
%gV=phi i8*[%gK,%go],[%cb,%b9],[%cv,%cp]
%gW=phi i8*[%gT,%go],[%ck,%b9],[%cE,%cp]
%gX=phi i8*[%gQ,%go],[%ch,%b9],[%cB,%cp]
%gY=phi i32[%gr,%go],[1,%b9],[1,%cp]
%gZ=getelementptr inbounds i8,i8*%gV,i64 16
%g0=bitcast i8*%gZ to i8**
store i8*%gW,i8**%g0,align 8
%g1=getelementptr inbounds i8,i8*%gV,i64 24
%g2=bitcast i8*%g1 to i32*
store i32 6,i32*%g2,align 4
store i8*%gX,i8**%d,align 8
store i8*%gW,i8**%e,align 8
%g3=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%bT,i32%gY)#0
%g4=extractvalue{i32,i1}%g3,1
br i1%g4,label%g5,label%hn
g5:
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
%g6=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%g6,i8**%b,align 8
%g7=call i8*@sml_alloc(i32 inreg 20)#0
%g8=getelementptr inbounds i8,i8*%g7,i64 -4
%g9=bitcast i8*%g8 to i32*
store i32 1342177296,i32*%g9,align 4
store i8*%g7,i8**%c,align 8
%ha=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%hb=bitcast i8*%g7 to i8**
store i8*%ha,i8**%hb,align 8
%hc=getelementptr inbounds i8,i8*%g7,i64 8
%hd=bitcast i8*%hc to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@bh,i64 0,i32 2,i64 0),i8**%hd,align 8
%he=getelementptr inbounds i8,i8*%g7,i64 16
%hf=bitcast i8*%he to i32*
store i32 3,i32*%hf,align 4
%hg=call i8*@sml_alloc(i32 inreg 60)#0
%hh=getelementptr inbounds i8,i8*%hg,i64 -4
%hi=bitcast i8*%hh to i32*
store i32 1342177336,i32*%hi,align 4
%hj=getelementptr inbounds i8,i8*%hg,i64 56
%hk=bitcast i8*%hj to i32*
store i32 1,i32*%hk,align 4
%hl=load i8*,i8**%c,align 8
%hm=bitcast i8*%hg to i8**
store i8*%hl,i8**%hm,align 8
call void@sml_raise(i8*inreg%hg)#1
unreachable
hn:
%ho=add nsw i32%gY,%bT
%hp=icmp slt i32%ho,511
%hq=call i8*@sml_alloc(i32 inreg 20)#0
%hr=getelementptr inbounds i8,i8*%hq,i64 -4
%hs=bitcast i8*%hr to i32*
store i32 1342177296,i32*%hs,align 4
br i1%hp,label%h5,label%ht
ht:
%hu=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%hv=bitcast i8*%hq to i8**
store i8*%hu,i8**%hv,align 8
%hw=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%hx=getelementptr inbounds i8,i8*%hq,i64 8
%hy=bitcast i8*%hx to i8**
store i8*%hw,i8**%hy,align 8
%hz=getelementptr inbounds i8,i8*%hq,i64 16
%hA=bitcast i8*%hz to i32*
store i32 3,i32*%hA,align 4
%hB=call fastcc i8*@_SMLLL7mkFmtFn_412(i8*inreg%hq)
store i8*%hB,i8**%b,align 8
%hC=call i8*@sml_alloc(i32 inreg 20)#0
%hD=getelementptr inbounds i8,i8*%hC,i64 -4
%hE=bitcast i8*%hD to i32*
store i32 1342177296,i32*%hE,align 4
store i8*%hC,i8**%c,align 8
%hF=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%hG=bitcast i8*%hC to i8**
store i8*%hF,i8**%hG,align 8
%hH=getelementptr inbounds i8,i8*%hC,i64 8
%hI=bitcast i8*%hH to i8**
store i8*null,i8**%hI,align 8
%hJ=getelementptr inbounds i8,i8*%hC,i64 16
%hK=bitcast i8*%hJ to i32*
store i32 3,i32*%hK,align 4
%hL=call i8*@sml_alloc(i32 inreg 36)#0
%hM=getelementptr inbounds i8,i8*%hL,i64 -4
%hN=bitcast i8*%hM to i32*
store i32 1342177312,i32*%hN,align 4
%hO=getelementptr inbounds i8,i8*%hL,i64 12
%hP=bitcast i8*%hO to i32*
store i32 0,i32*%hP,align 1
%hQ=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%hR=bitcast i8*%hL to i8**
store i8*%hQ,i8**%hR,align 8
%hS=getelementptr inbounds i8,i8*%hL,i64 8
%hT=bitcast i8*%hS to i32*
store i32%gY,i32*%hT,align 4
%hU=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%hV=getelementptr inbounds i8,i8*%hL,i64 16
%hW=bitcast i8*%hV to i8**
store i8*%hU,i8**%hW,align 8
%hX=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
br label%hY
hY:
%hZ=phi i8*[%hL,%ht],[%id,%h5]
%h0=phi i8*[%hX,%ht],[%ip,%h5]
%h1=getelementptr inbounds i8,i8*%hZ,i64 24
%h2=bitcast i8*%h1 to i8**
store i8*%h0,i8**%h2,align 8
%h3=getelementptr inbounds i8,i8*%hZ,i64 32
%h4=bitcast i8*%h3 to i32*
store i32 13,i32*%h4,align 4
br label%u
h5:
store i8*%hq,i8**%f,align 8
%h6=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%h7=bitcast i8*%hq to i8**
store i8*%h6,i8**%h7,align 8
%h8=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h9=getelementptr inbounds i8,i8*%hq,i64 8
%ia=bitcast i8*%h9 to i8**
store i8*%h8,i8**%ia,align 8
%ib=getelementptr inbounds i8,i8*%hq,i64 16
%ic=bitcast i8*%ib to i32*
store i32 3,i32*%ic,align 4
%id=call i8*@sml_alloc(i32 inreg 36)#0
%ie=getelementptr inbounds i8,i8*%id,i64 -4
%if=bitcast i8*%ie to i32*
store i32 1342177312,i32*%if,align 4
%ig=getelementptr inbounds i8,i8*%id,i64 12
%ih=bitcast i8*%ig to i32*
store i32 0,i32*%ih,align 1
%ii=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ij=bitcast i8*%id to i8**
store i8*%ii,i8**%ij,align 8
%ik=getelementptr inbounds i8,i8*%id,i64 8
%il=bitcast i8*%ik to i32*
store i32%ho,i32*%il,align 4
%im=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%in=getelementptr inbounds i8,i8*%id,i64 16
%io=bitcast i8*%in to i8**
store i8*%im,i8**%io,align 8
%ip=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
br label%hY
iq:
%ir=call i8*@sml_alloc(i32 inreg 28)#0
%is=getelementptr inbounds i8,i8*%ir,i64 -4
%it=bitcast i8*%is to i32*
store i32 1342177304,i32*%it,align 4
%iu=bitcast i8*%ir to i64*
store i64 0,i64*%iu,align 4
%iv=load i8*,i8**%e,align 8
%iw=getelementptr inbounds i8,i8*%ir,i64 8
%ix=bitcast i8*%iw to i8**
store i8*%iv,i8**%ix,align 8
store i8*null,i8**%e,align 8
%iy=getelementptr inbounds i8,i8*%ir,i64 16
%iz=bitcast i8*%iy to i8**
store i8*%iv,i8**%iz,align 8
%iA=getelementptr inbounds i8,i8*%ir,i64 24
%iB=bitcast i8*%iA to i32*
store i32 6,i32*%iB,align 4
%iC=call fastcc i8*@_SMLFN4List3revE(i32 inreg 1,i32 inreg 8)
%iD=getelementptr inbounds i8,i8*%iC,i64 16
%iE=bitcast i8*%iD to i8*(i8*,i8*)**
%iF=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%iE,align 8
%iG=bitcast i8*%iC to i8**
%iH=load i8*,i8**%iG,align 8
store i8*%iH,i8**%d,align 8
%iI=call i8*@sml_alloc(i32 inreg 20)#0
%iJ=getelementptr inbounds i8,i8*%iI,i64 -4
%iK=bitcast i8*%iJ to i32*
store i32 1342177296,i32*%iK,align 4
%iL=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%iM=bitcast i8*%iI to i8**
store i8*%iL,i8**%iM,align 8
%iN=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%iO=getelementptr inbounds i8,i8*%iI,i64 8
%iP=bitcast i8*%iO to i8**
store i8*%iN,i8**%iP,align 8
%iQ=getelementptr inbounds i8,i8*%iI,i64 16
%iR=bitcast i8*%iQ to i32*
store i32 3,i32*%iR,align 4
%iS=call fastcc i8*@_SMLLL7mkFmtFn_412(i8*inreg%iI)
%iT=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%iU=call fastcc i8*%iF(i8*inreg%iT,i8*inreg%iS)
store i8*%iU,i8**%b,align 8
%iV=call i8*@sml_alloc(i32 inreg 12)#0
%iW=getelementptr inbounds i8,i8*%iV,i64 -4
%iX=bitcast i8*%iW to i32*
store i32 1342177288,i32*%iX,align 4
store i8*%iV,i8**%c,align 8
%iY=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%iZ=bitcast i8*%iV to i8**
store i8*%iY,i8**%iZ,align 8
%i0=getelementptr inbounds i8,i8*%iV,i64 8
%i1=bitcast i8*%i0 to i32*
store i32 1,i32*%i1,align 4
%i2=call i8*@sml_alloc(i32 inreg 28)#0
%i3=getelementptr inbounds i8,i8*%i2,i64 -4
%i4=bitcast i8*%i3 to i32*
store i32 1342177304,i32*%i4,align 4
%i5=load i8*,i8**%c,align 8
%i6=bitcast i8*%i2 to i8**
store i8*%i5,i8**%i6,align 8
%i7=getelementptr inbounds i8,i8*%i2,i64 8
%i8=bitcast i8*%i7 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date3fmtE_424 to void(...)*),void(...)**%i8,align 8
%i9=getelementptr inbounds i8,i8*%i2,i64 16
%ja=bitcast i8*%i9 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date3fmtE_424 to void(...)*),void(...)**%ja,align 8
%jb=getelementptr inbounds i8,i8*%i2,i64 24
%jc=bitcast i8*%jb to i32*
store i32 -2147483647,i32*%jc,align 4
ret i8*%i2
}
define internal fastcc i8*@_SMLLL7get2dig_432(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%k,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%d,align 8
%j=load i8*,i8**%c,align 8
br label%k
k:
%l=phi i8*[%j,%h],[%b,%m]
%n=phi i8*[%i,%h],[%a,%m]
%o=getelementptr inbounds i8,i8*%n,i64 12
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
%r=sub i32 0,%q
%s=and i32%q,%r
%t=add i32%q,3
%u=and i32%t,%r
%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*%n,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=bitcast i8*%n to i8**
%F=load i8*,i8**%E,align 8
%G=getelementptr inbounds i8,i8*%F,i64 16
%H=bitcast i8*%G to i8*(i8*,i8*)**
%I=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%H,align 8
%J=bitcast i8*%F to i8**
%K=load i8*,i8**%J,align 8
store i8*null,i8**%c,align 8
%L=call fastcc i8*%I(i8*inreg%K,i8*inreg%l)
%M=icmp eq i8*%L,null
br i1%M,label%aX,label%N
N:
%O=bitcast i8*%L to i8**
%P=load i8*,i8**%O,align 8
store i8*%P,i8**%c,align 8
%Q=load i8,i8*%P,align 1
%R=load i8*,i8**%d,align 8
%S=getelementptr inbounds i8,i8*%R,i64 8
%T=bitcast i8*%S to i32*
%U=load i32,i32*%T,align 4
%V=icmp eq i32%U,0
br i1%V,label%ab,label%W
W:
store i8*null,i8**%c,align 8
%X=sext i32%s to i64
%Y=getelementptr inbounds i8,i8*%P,i64%X
%Z=bitcast i8*%Y to i8**
%aa=load i8*,i8**%Z,align 8
br label%al
ab:
%ac=getelementptr inbounds i8,i8*%R,i64 12
%ad=bitcast i8*%ac to i32*
%ae=load i32,i32*%ad,align 4
%af=call i8*@sml_alloc(i32 inreg%ae)#0
%ag=getelementptr inbounds i8,i8*%af,i64 -4
%ah=bitcast i8*%ag to i32*
store i32%ae,i32*%ah,align 4
%ai=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aj=sext i32%s to i64
%ak=getelementptr inbounds i8,i8*%ai,i64%aj
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%af,i8*%ak,i32%ae,i1 false)
br label%al
al:
%am=phi i8*[%af,%ab],[%aa,%W]
store i8*%am,i8**%c,align 8
%an=call fastcc i32@_SMLFN4Char7isDigitE(i8 inreg%Q)
%ao=icmp eq i32%an,0
br i1%ao,label%aX,label%ap
ap:
%aq=zext i8%Q to i32
%ar=add nsw i32%aq,-48
%as=load i8*,i8**%d,align 8
%at=getelementptr inbounds i8,i8*%as,i64 12
%au=bitcast i8*%at to i32*
%av=load i32,i32*%au,align 4
%aw=getelementptr inbounds i8,i8*%as,i64 8
%ax=bitcast i8*%aw to i32*
%ay=load i32,i32*%ax,align 4
%az=call i8*@sml_alloc(i32 inreg%D)#0
%aA=or i32%x,1342177280
%aB=getelementptr inbounds i8,i8*%az,i64 -4
%aC=bitcast i8*%aB to i32*
store i32%aA,i32*%aC,align 4
store i8*%az,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%az,i8 0,i32%D,i1 false)
%aD=bitcast i8*%az to i32*
store i32%ar,i32*%aD,align 4
%aE=icmp eq i32%ay,0
%aF=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aG=sext i32%u to i64
%aH=getelementptr inbounds i8,i8*%az,i64%aG
br i1%aE,label%aI,label%aJ
aI:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%aH,i8*%aF,i32%av,i1 false)
br label%aL
aJ:
%aK=bitcast i8*%aH to i8**
store i8*%aF,i8**%aK,align 8
br label%aL
aL:
%aM=sext i32%x to i64
%aN=getelementptr inbounds i8,i8*%az,i64%aM
%aO=bitcast i8*%aN to i32*
store i32%C,i32*%aO,align 4
%aP=call i8*@sml_alloc(i32 inreg 12)#0
%aQ=getelementptr inbounds i8,i8*%aP,i64 -4
%aR=bitcast i8*%aQ to i32*
store i32 1342177288,i32*%aR,align 4
%aS=load i8*,i8**%e,align 8
%aT=bitcast i8*%aP to i8**
store i8*%aS,i8**%aT,align 8
%aU=getelementptr inbounds i8,i8*%aP,i64 8
%aV=bitcast i8*%aU to i32*
store i32 1,i32*%aV,align 4
%aW=icmp eq i8*%aP,null
br i1%aW,label%aX,label%aY
aX:
ret i8*null
aY:
store i8*%aS,i8**%c,align 8
%aZ=bitcast i8*%aS to i32*
%a0=load i32,i32*%aZ,align 4
%a1=bitcast i8**%d to i8***
%a2=load i8**,i8***%a1,align 8
%a3=load i8*,i8**%a2,align 8
%a4=getelementptr inbounds i8,i8*%a3,i64 16
%a5=bitcast i8*%a4 to i8*(i8*,i8*)**
%a6=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%a5,align 8
%a7=bitcast i8*%a3 to i8**
%a8=load i8*,i8**%a7,align 8
store i8*%a8,i8**%e,align 8
%a9=getelementptr inbounds i8*,i8**%a2,i64 1
%ba=bitcast i8**%a9 to i32*
%bb=load i32,i32*%ba,align 4
%bc=icmp eq i32%bb,0
br i1%bc,label%bh,label%bd
bd:
store i8*null,i8**%c,align 8
%be=getelementptr inbounds i8,i8*%aS,i64%aG
%bf=bitcast i8*%be to i8**
%bg=load i8*,i8**%bf,align 8
br label%bs
bh:
%bi=bitcast i8**%a2 to i8*
%bj=getelementptr inbounds i8,i8*%bi,i64 12
%bk=bitcast i8*%bj to i32*
%bl=load i32,i32*%bk,align 4
%bm=call i8*@sml_alloc(i32 inreg%bl)#0
%bn=getelementptr inbounds i8,i8*%bm,i64 -4
%bo=bitcast i8*%bn to i32*
store i32%bl,i32*%bo,align 4
%bp=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bq=getelementptr inbounds i8,i8*%bp,i64%aG
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bm,i8*%bq,i32%bl,i1 false)
%br=load i8*,i8**%e,align 8
br label%bs
bs:
%bt=phi i8*[%a8,%bd],[%br,%bh]
%bu=phi i8*[%bg,%bd],[%bm,%bh]
store i8*null,i8**%e,align 8
%bv=call fastcc i8*%a6(i8*inreg%bt,i8*inreg%bu)
%bw=icmp eq i8*%bv,null
br i1%bw,label%aX,label%bx
bx:
%by=bitcast i8*%bv to i8**
%bz=load i8*,i8**%by,align 8
store i8*%bz,i8**%c,align 8
%bA=load i8,i8*%bz,align 1
%bB=load i8*,i8**%d,align 8
%bC=getelementptr inbounds i8,i8*%bB,i64 8
%bD=bitcast i8*%bC to i32*
%bE=load i32,i32*%bD,align 4
%bF=icmp eq i32%bE,0
br i1%bF,label%bL,label%bG
bG:
store i8*null,i8**%c,align 8
%bH=sext i32%s to i64
%bI=getelementptr inbounds i8,i8*%bz,i64%bH
%bJ=bitcast i8*%bI to i8**
%bK=load i8*,i8**%bJ,align 8
br label%bV
bL:
%bM=getelementptr inbounds i8,i8*%bB,i64 12
%bN=bitcast i8*%bM to i32*
%bO=load i32,i32*%bN,align 4
%bP=call i8*@sml_alloc(i32 inreg%bO)#0
%bQ=getelementptr inbounds i8,i8*%bP,i64 -4
%bR=bitcast i8*%bQ to i32*
store i32%bO,i32*%bR,align 4
%bS=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bT=sext i32%s to i64
%bU=getelementptr inbounds i8,i8*%bS,i64%bT
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bP,i8*%bU,i32%bO,i1 false)
br label%bV
bV:
%bW=phi i8*[%bP,%bL],[%bK,%bG]
store i8*%bW,i8**%c,align 8
%bX=call fastcc i32@_SMLFN4Char7isDigitE(i8 inreg%bA)
%bY=icmp eq i32%bX,0
br i1%bY,label%aX,label%bZ
bZ:
%b0=zext i8%bA to i32
%b1=add nsw i32%b0,-48
%b2=load i8*,i8**%d,align 8
%b3=getelementptr inbounds i8,i8*%b2,i64 12
%b4=bitcast i8*%b3 to i32*
%b5=load i32,i32*%b4,align 4
%b6=getelementptr inbounds i8,i8*%b2,i64 8
%b7=bitcast i8*%b6 to i32*
%b8=load i32,i32*%b7,align 4
%b9=call i8*@sml_alloc(i32 inreg%D)#0
%ca=getelementptr inbounds i8,i8*%b9,i64 -4
%cb=bitcast i8*%ca to i32*
store i32%aA,i32*%cb,align 4
store i8*%b9,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%b9,i8 0,i32%D,i1 false)
%cc=bitcast i8*%b9 to i32*
store i32%b1,i32*%cc,align 4
%cd=icmp eq i32%b8,0
%ce=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cf=getelementptr inbounds i8,i8*%b9,i64%aG
br i1%cd,label%cg,label%ch
cg:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cf,i8*%ce,i32%b5,i1 false)
br label%cj
ch:
%ci=bitcast i8*%cf to i8**
store i8*%ce,i8**%ci,align 8
br label%cj
cj:
%ck=getelementptr inbounds i8,i8*%b9,i64%aM
%cl=bitcast i8*%ck to i32*
store i32%C,i32*%cl,align 4
%cm=call i8*@sml_alloc(i32 inreg 12)#0
%cn=getelementptr inbounds i8,i8*%cm,i64 -4
%co=bitcast i8*%cn to i32*
store i32 1342177288,i32*%co,align 4
%cp=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%cq=bitcast i8*%cm to i8**
store i8*%cp,i8**%cq,align 8
%cr=getelementptr inbounds i8,i8*%cm,i64 8
%cs=bitcast i8*%cr to i32*
store i32 1,i32*%cs,align 4
%ct=icmp eq i8*%cm,null
br i1%ct,label%aX,label%cu
cu:
store i8*%cp,i8**%c,align 8
%cv=bitcast i8*%cp to i32*
%cw=load i32,i32*%cv,align 4
%cx=load i8*,i8**%d,align 8
%cy=getelementptr inbounds i8,i8*%cx,i64 8
%cz=bitcast i8*%cy to i32*
%cA=load i32,i32*%cz,align 4
%cB=icmp eq i32%cA,0
br i1%cB,label%cG,label%cC
cC:
store i8*null,i8**%c,align 8
%cD=getelementptr inbounds i8,i8*%cp,i64%aG
%cE=bitcast i8*%cD to i8**
%cF=load i8*,i8**%cE,align 8
br label%cP
cG:
%cH=getelementptr inbounds i8,i8*%cx,i64 12
%cI=bitcast i8*%cH to i32*
%cJ=load i32,i32*%cI,align 4
%cK=call i8*@sml_alloc(i32 inreg%cJ)#0
%cL=getelementptr inbounds i8,i8*%cK,i64 -4
%cM=bitcast i8*%cL to i32*
store i32%cJ,i32*%cM,align 4
%cN=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cO=getelementptr inbounds i8,i8*%cN,i64%aG
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cK,i8*%cO,i32%cJ,i1 false)
br label%cP
cP:
%cQ=phi i8*[%cK,%cG],[%cF,%cC]
store i8*%cQ,i8**%c,align 8
%cR=call{i32,i1}@llvm.smul.with.overflow.i32(i32%a0,i32 10)#0
%cS=extractvalue{i32,i1}%cR,1
br i1%cS,label%cT,label%db
cT:
store i8*null,i8**%d,align 8
%cU=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%cU,i8**%c,align 8
%cV=call i8*@sml_alloc(i32 inreg 20)#0
%cW=getelementptr inbounds i8,i8*%cV,i64 -4
%cX=bitcast i8*%cW to i32*
store i32 1342177296,i32*%cX,align 4
store i8*%cV,i8**%d,align 8
%cY=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cZ=bitcast i8*%cV to i8**
store i8*%cY,i8**%cZ,align 8
%c0=getelementptr inbounds i8,i8*%cV,i64 8
%c1=bitcast i8*%c0 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@bk,i64 0,i32 2,i64 0),i8**%c1,align 8
%c2=getelementptr inbounds i8,i8*%cV,i64 16
%c3=bitcast i8*%c2 to i32*
store i32 3,i32*%c3,align 4
%c4=call i8*@sml_alloc(i32 inreg 60)#0
%c5=getelementptr inbounds i8,i8*%c4,i64 -4
%c6=bitcast i8*%c5 to i32*
store i32 1342177336,i32*%c6,align 4
%c7=getelementptr inbounds i8,i8*%c4,i64 56
%c8=bitcast i8*%c7 to i32*
store i32 1,i32*%c8,align 4
%c9=load i8*,i8**%d,align 8
%da=bitcast i8*%c4 to i8**
store i8*%c9,i8**%da,align 8
call void@sml_raise(i8*inreg%c4)#1
unreachable
db:
%dc=mul nsw i32%a0,10
%dd=call{i32,i1}@llvm.sadd.with.overflow.i32(i32%dc,i32%cw)#0
%de=extractvalue{i32,i1}%dd,1
br i1%de,label%df,label%dx
df:
store i8*null,i8**%d,align 8
%dg=load i8*,i8**@_SMLZ8Overflow,align 8
store i8*%dg,i8**%c,align 8
%dh=call i8*@sml_alloc(i32 inreg 20)#0
%di=getelementptr inbounds i8,i8*%dh,i64 -4
%dj=bitcast i8*%di to i32*
store i32 1342177296,i32*%dj,align 4
store i8*%dh,i8**%d,align 8
%dk=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dl=bitcast i8*%dh to i8**
store i8*%dk,i8**%dl,align 8
%dm=getelementptr inbounds i8,i8*%dh,i64 8
%dn=bitcast i8*%dm to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[39x i8]}>,<{[4x i8],i32,[39x i8]}>*@bl,i64 0,i32 2,i64 0),i8**%dn,align 8
%do=getelementptr inbounds i8,i8*%dh,i64 16
%dp=bitcast i8*%do to i32*
store i32 3,i32*%dp,align 4
%dq=call i8*@sml_alloc(i32 inreg 60)#0
%dr=getelementptr inbounds i8,i8*%dq,i64 -4
%ds=bitcast i8*%dr to i32*
store i32 1342177336,i32*%ds,align 4
%dt=getelementptr inbounds i8,i8*%dq,i64 56
%du=bitcast i8*%dt to i32*
store i32 1,i32*%du,align 4
%dv=load i8*,i8**%d,align 8
%dw=bitcast i8*%dq to i8**
store i8*%dv,i8**%dw,align 8
call void@sml_raise(i8*inreg%dq)#1
unreachable
dx:
%dy=add nsw i32%cw,%dc
%dz=load i8*,i8**%d,align 8
%dA=getelementptr inbounds i8,i8*%dz,i64 12
%dB=bitcast i8*%dA to i32*
%dC=load i32,i32*%dB,align 4
store i8*null,i8**%d,align 8
%dD=getelementptr inbounds i8,i8*%dz,i64 8
%dE=bitcast i8*%dD to i32*
%dF=load i32,i32*%dE,align 4
%dG=call i8*@sml_alloc(i32 inreg%D)#0
%dH=getelementptr inbounds i8,i8*%dG,i64 -4
%dI=bitcast i8*%dH to i32*
store i32%aA,i32*%dI,align 4
store i8*%dG,i8**%d,align 8
call void@llvm.memset.p0i8.i32(i8*%dG,i8 0,i32%D,i1 false)
%dJ=bitcast i8*%dG to i32*
store i32%dy,i32*%dJ,align 4
%dK=icmp eq i32%dF,0
%dL=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dM=getelementptr inbounds i8,i8*%dG,i64%aG
br i1%dK,label%dN,label%dO
dN:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%dM,i8*%dL,i32%dC,i1 false)
br label%dQ
dO:
%dP=bitcast i8*%dM to i8**
store i8*%dL,i8**%dP,align 8
br label%dQ
dQ:
%dR=getelementptr inbounds i8,i8*%dG,i64%aM
%dS=bitcast i8*%dR to i32*
store i32%C,i32*%dS,align 4
%dT=call i8*@sml_alloc(i32 inreg 12)#0
%dU=getelementptr inbounds i8,i8*%dT,i64 -4
%dV=bitcast i8*%dU to i32*
store i32 1342177288,i32*%dV,align 4
%dW=load i8*,i8**%d,align 8
%dX=bitcast i8*%dT to i8**
store i8*%dW,i8**%dX,align 8
%dY=getelementptr inbounds i8,i8*%dT,i64 8
%dZ=bitcast i8*%dY to i32*
store i32 1,i32*%dZ,align 4
ret i8*%dT
}
define internal fastcc i8*@_SMLLL4mday_434(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"personality i32(...)*@sml_personality{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%k,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%d,align 8
%j=load i8*,i8**%c,align 8
br label%k
k:
%l=phi i8*[%j,%h],[%b,%m]
%n=phi i8*[%i,%h],[%a,%m]
%o=getelementptr inbounds i8,i8*%n,i64 28
%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=and i32%v,%s
%x=add i32%v,%w
%y=and i32%x,-8
%z=lshr i32%w,3
%A=getelementptr inbounds i8,i8*%n,i64 24
%B=bitcast i8*%A to i32*
%C=load i32,i32*%B,align 4
%D=shl i32%C,%z
%E=or i32%D,1
%F=or i32%y,4
%G=getelementptr inbounds i8,i8*%n,i64 16
%H=bitcast i8*%G to i8**
%I=load i8*,i8**%H,align 8
store i8*null,i8**%c,align 8
%J=call fastcc i8*@_SMLLL7get2dig_432(i8*inreg%I,i8*inreg%l)
%K=icmp eq i8*%J,null
br i1%K,label%L,label%N
L:
%M=phi i8*[null,%a1],[null,%av],[null,%k],[%c2,%cY],[null,%aY]
ret i8*%M
N:
%O=bitcast i8*%J to i8**
%P=load i8*,i8**%O,align 8
store i8*%P,i8**%c,align 8
%Q=bitcast i8*%P to i32*
%R=load i32,i32*%Q,align 4
%S=bitcast i8**%d to i8***
%T=load i8**,i8***%S,align 8
%U=load i8*,i8**%T,align 8
%V=getelementptr inbounds i8,i8*%U,i64 16
%W=bitcast i8*%V to i8*(i8*,i8*)**
%X=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%W,align 8
%Y=bitcast i8*%U to i8**
%Z=load i8*,i8**%Y,align 8
store i8*%Z,i8**%e,align 8
%aa=getelementptr inbounds i8*,i8**%T,i64 3
%ab=bitcast i8**%aa to i32*
%ac=load i32,i32*%ab,align 4
%ad=icmp eq i32%ac,0
br i1%ad,label%aj,label%ae
ae:
store i8*null,i8**%c,align 8
%af=sext i32%t to i64
%ag=getelementptr inbounds i8,i8*%P,i64%af
%ah=bitcast i8*%ag to i8**
%ai=load i8*,i8**%ah,align 8
br label%av
aj:
%ak=bitcast i8**%T to i8*
%al=getelementptr inbounds i8,i8*%ak,i64 28
%am=bitcast i8*%al to i32*
%an=load i32,i32*%am,align 4
%ao=call i8*@sml_alloc(i32 inreg%an)#0
%ap=getelementptr inbounds i8,i8*%ao,i64 -4
%aq=bitcast i8*%ap to i32*
store i32%an,i32*%aq,align 4
%ar=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%as=sext i32%t to i64
%at=getelementptr inbounds i8,i8*%ar,i64%as
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%ao,i8*%at,i32%an,i1 false)
%au=load i8*,i8**%e,align 8
br label%av
av:
%aw=phi i8*[%Z,%ae],[%au,%aj]
%ax=phi i8*[%ai,%ae],[%ao,%aj]
store i8*null,i8**%e,align 8
%ay=call fastcc i8*%X(i8*inreg%aw,i8*inreg%ax)
%az=icmp eq i8*%ay,null
br i1%az,label%L,label%aA
aA:
%aB=bitcast i8*%ay to i8**
%aC=load i8*,i8**%aB,align 8
store i8*%aC,i8**%c,align 8
%aD=load i8,i8*%aC,align 1
%aE=load i8*,i8**%d,align 8
%aF=getelementptr inbounds i8,i8*%aE,i64 24
%aG=bitcast i8*%aF to i32*
%aH=load i32,i32*%aG,align 4
%aI=icmp eq i32%aH,0
br i1%aI,label%aO,label%aJ
aJ:
store i8*null,i8**%c,align 8
%aK=sext i32%u to i64
%aL=getelementptr inbounds i8,i8*%aC,i64%aK
%aM=bitcast i8*%aL to i8**
%aN=load i8*,i8**%aM,align 8
br label%aY
aO:
%aP=getelementptr inbounds i8,i8*%aE,i64 28
%aQ=bitcast i8*%aP to i32*
%aR=load i32,i32*%aQ,align 4
%aS=call i8*@sml_alloc(i32 inreg%aR)#0
%aT=getelementptr inbounds i8,i8*%aS,i64 -4
%aU=bitcast i8*%aT to i32*
store i32%aR,i32*%aU,align 4
%aV=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aW=sext i32%u to i64
%aX=getelementptr inbounds i8,i8*%aV,i64%aW
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%aS,i8*%aX,i32%aR,i1 false)
br label%aY
aY:
%aZ=phi i8*[%aS,%aO],[%aN,%aJ]
store i8*%aZ,i8**%c,align 8
%a0=icmp eq i8%aD,32
br i1%a0,label%a1,label%L
a1:
%a2=load i8*,i8**%d,align 8
%a3=getelementptr inbounds i8,i8*%a2,i64 24
%a4=bitcast i8*%a3 to i32*
%a5=load i32,i32*%a4,align 4
%a6=getelementptr inbounds i8,i8*%a2,i64 28
%a7=bitcast i8*%a6 to i32*
%a8=load i32,i32*%a7,align 4
%a9=call fastcc i8*@_SMLFN5Int324scanE(i32 inreg%a5,i32 inreg%a8)
%ba=getelementptr inbounds i8,i8*%a9,i64 16
%bb=bitcast i8*%ba to i8*(i8*,i8*)**
%bc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bb,align 8
%bd=bitcast i8*%a9 to i8**
%be=load i8*,i8**%bd,align 8
store i8*%be,i8**%e,align 8
%bf=call i8*@sml_alloc(i32 inreg 4)#0
%bg=bitcast i8*%bf to i32*
%bh=getelementptr inbounds i8,i8*%bf,i64 -4
%bi=bitcast i8*%bh to i32*
store i32 4,i32*%bi,align 4
store i32 1,i32*%bg,align 4
%bj=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bk=call fastcc i8*%bc(i8*inreg%bj,i8*inreg%bf)
%bl=getelementptr inbounds i8,i8*%bk,i64 16
%bm=bitcast i8*%bl to i8*(i8*,i8*)**
%bn=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bm,align 8
%bo=bitcast i8*%bk to i8**
%bp=load i8*,i8**%bo,align 8
%bq=load i8**,i8***%S,align 8
%br=load i8*,i8**%bq,align 8
%bs=call fastcc i8*%bn(i8*inreg%bp,i8*inreg%br)
%bt=getelementptr inbounds i8,i8*%bs,i64 16
%bu=bitcast i8*%bt to i8*(i8*,i8*)**
%bv=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bu,align 8
%bw=bitcast i8*%bs to i8**
%bx=load i8*,i8**%bw,align 8
%by=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bz=call fastcc i8*%bv(i8*inreg%bx,i8*inreg%by)
%bA=icmp eq i8*%bz,null
br i1%bA,label%L,label%bB
bB:
%bC=bitcast i8*%bz to i8**
%bD=load i8*,i8**%bC,align 8
store i8*%bD,i8**%c,align 8
%bE=bitcast i8*%bD to i32*
%bF=load i32,i32*%bE,align 4
%bG=load i8*,i8**%d,align 8
%bH=getelementptr inbounds i8,i8*%bG,i64 24
%bI=bitcast i8*%bH to i32*
%bJ=load i32,i32*%bI,align 4
%bK=icmp eq i32%bJ,0
br i1%bK,label%bQ,label%bL
bL:
store i8*null,i8**%c,align 8
%bM=sext i32%t to i64
%bN=getelementptr inbounds i8,i8*%bD,i64%bM
%bO=bitcast i8*%bN to i8**
%bP=load i8*,i8**%bO,align 8
br label%b1
bQ:
%bR=getelementptr inbounds i8,i8*%bG,i64 28
%bS=bitcast i8*%bR to i32*
%bT=load i32,i32*%bS,align 4
%bU=call i8*@sml_alloc(i32 inreg%bT)#0
%bV=getelementptr inbounds i8,i8*%bU,i64 -4
%bW=bitcast i8*%bV to i32*
store i32%bT,i32*%bW,align 4
%bX=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bY=sext i32%t to i64
%bZ=getelementptr inbounds i8,i8*%bX,i64%bY
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bU,i8*%bZ,i32%bT,i1 false)
%b0=load i8*,i8**%d,align 8
br label%b1
b1:
%b2=phi i8*[%b0,%bQ],[%bG,%bL]
%b3=phi i8*[%bU,%bQ],[%bP,%bL]
store i8*%b3,i8**%c,align 8
%b4=getelementptr inbounds i8,i8*%b2,i64 8
%b5=bitcast i8*%b4 to i8**
%b6=load i8*,i8**%b5,align 8
store i8*%b6,i8**%e,align 8
%b7=getelementptr inbounds i8,i8*%b2,i64 36
%b8=bitcast i8*%b7 to i32*
%b9=load i32,i32*%b8,align 4
%ca=getelementptr inbounds i8,i8*%b2,i64 40
%cb=bitcast i8*%ca to i32*
%cc=load i32,i32*%cb,align 4
%cd=getelementptr inbounds i8,i8*%b2,i64 44
%ce=bitcast i8*%cd to i32*
%cf=load i32,i32*%ce,align 4
%cg=getelementptr inbounds i8,i8*%b2,i64 32
%ch=bitcast i8*%cg to i32*
%ci=load i32,i32*%ch,align 4
%cj=call i8*@sml_alloc(i32 inreg 36)#0
%ck=bitcast i8*%cj to i32*
%cl=getelementptr inbounds i8,i8*%cj,i64 -4
%cm=bitcast i8*%cl to i32*
store i32 1342177312,i32*%cm,align 4
store i32%b9,i32*%ck,align 4
%cn=getelementptr inbounds i8,i8*%cj,i64 4
%co=bitcast i8*%cn to i32*
store i32%cc,i32*%co,align 4
%cp=getelementptr inbounds i8,i8*%cj,i64 8
%cq=bitcast i8*%cp to i32*
store i32%cf,i32*%cq,align 4
%cr=getelementptr inbounds i8,i8*%cj,i64 12
%cs=bitcast i8*%cr to i32*
store i32%ci,i32*%cs,align 4
%ct=getelementptr inbounds i8,i8*%cj,i64 16
%cu=bitcast i8*%ct to i8**
store i8*null,i8**%cu,align 8
%cv=getelementptr inbounds i8,i8*%cj,i64 24
%cw=bitcast i8*%cv to i32*
store i32%R,i32*%cw,align 4
%cx=getelementptr inbounds i8,i8*%cj,i64 28
%cy=bitcast i8*%cx to i32*
store i32%bF,i32*%cy,align 4
%cz=getelementptr inbounds i8,i8*%cj,i64 32
%cA=bitcast i8*%cz to i32*
store i32 4,i32*%cA,align 4
%cB=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%cC=invoke fastcc i8*@_SMLLLN4Date4dateE_377(i8*inreg%cB,i8*inreg%cj)
to label%cD unwind label%c9
cD:
store i8*%cC,i8**%e,align 8
%cE=load i8*,i8**%d,align 8
%cF=getelementptr inbounds i8,i8*%cE,i64 28
%cG=bitcast i8*%cF to i32*
%cH=load i32,i32*%cG,align 4
store i8*null,i8**%d,align 8
%cI=getelementptr inbounds i8,i8*%cE,i64 24
%cJ=bitcast i8*%cI to i32*
%cK=load i32,i32*%cJ,align 4
%cL=call i8*@sml_alloc(i32 inreg%F)#0
%cM=or i32%y,1342177280
%cN=getelementptr inbounds i8,i8*%cL,i64 -4
%cO=bitcast i8*%cN to i32*
store i32%cM,i32*%cO,align 4
store i8*%cL,i8**%d,align 8
call void@llvm.memset.p0i8.i32(i8*%cL,i8 0,i32%F,i1 false)
%cP=load i8*,i8**%e,align 8
%cQ=bitcast i8*%cL to i8**
store i8*null,i8**%e,align 8
store i8*%cP,i8**%cQ,align 8
%cR=icmp eq i32%cK,0
%cS=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cT=sext i32%w to i64
%cU=getelementptr inbounds i8,i8*%cL,i64%cT
br i1%cR,label%cV,label%cW
cV:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cU,i8*%cS,i32%cH,i1 false)
br label%cY
cW:
%cX=bitcast i8*%cU to i8**
store i8*%cS,i8**%cX,align 8
br label%cY
cY:
%cZ=sext i32%y to i64
%c0=getelementptr inbounds i8,i8*%cL,i64%cZ
%c1=bitcast i8*%c0 to i32*
store i32%E,i32*%c1,align 4
%c2=call i8*@sml_alloc(i32 inreg 12)#0
%c3=getelementptr inbounds i8,i8*%c2,i64 -4
%c4=bitcast i8*%c3 to i32*
store i32 1342177288,i32*%c4,align 4
%c5=load i8*,i8**%d,align 8
%c6=bitcast i8*%c2 to i8**
store i8*%c5,i8**%c6,align 8
%c7=getelementptr inbounds i8,i8*%c2,i64 8
%c8=bitcast i8*%c7 to i32*
store i32 1,i32*%c8,align 4
br label%L
c9:
%da=landingpad{i8*,i8*}
catch i8*null
ret i8*null
}
define internal fastcc i8*@_SMLLL4mday_435(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
p:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
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
call void@llvm.gcroot(i8**%h,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%i=load atomic i32,i32*@sml_check_flag unordered,align 4
%j=icmp eq i32%i,0
br i1%j,label%n,label%k
k:
call void@sml_check(i32 inreg%i)
%l=load i8*,i8**%d,align 8
%m=load i8*,i8**%c,align 8
br label%n
n:
%o=phi i8*[%m,%k],[%b,%p]
%q=phi i8*[%l,%k],[%a,%p]
%r=getelementptr inbounds i8,i8*%q,i64 28
%s=bitcast i8*%r to i32*
%t=load i32,i32*%s,align 4
%u=add i32%t,3
%v=sub i32 0,%t
%w=and i32%u,%v
%x=and i32%t,%v
%y=getelementptr inbounds i8,i8*%q,i64 16
%z=bitcast i8*%y to i8**
%A=load i8*,i8**%z,align 8
store i8*null,i8**%c,align 8
%B=call fastcc i8*@_SMLLL7get2dig_432(i8*inreg%A,i8*inreg%o)
%C=icmp eq i8*%B,null
br i1%C,label%D,label%E
D:
ret i8*null
E:
%F=bitcast i8*%B to i8**
%G=load i8*,i8**%F,align 8
store i8*%G,i8**%c,align 8
%H=bitcast i8*%G to i32*
%I=load i32,i32*%H,align 4
%J=load i8*,i8**%d,align 8
%K=getelementptr inbounds i8,i8*%J,i64 24
%L=bitcast i8*%K to i32*
%M=load i32,i32*%L,align 4
%N=icmp eq i32%M,0
br i1%N,label%V,label%O
O:
%P=bitcast i8*%J to i8**
store i8*null,i8**%c,align 8
%Q=sext i32%w to i64
%R=getelementptr inbounds i8,i8*%G,i64%Q
%S=bitcast i8*%R to i8**
%T=load i8*,i8**%S,align 8
%U=bitcast i8**%d to i8***
br label%al
V:
%W=getelementptr inbounds i8,i8*%J,i64 28
%X=bitcast i8*%W to i32*
%Y=load i32,i32*%X,align 4
%Z=call i8*@sml_alloc(i32 inreg%Y)#0
%aa=getelementptr inbounds i8,i8*%Z,i64 -4
%ab=bitcast i8*%aa to i32*
store i32%Y,i32*%ab,align 4
%ac=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ad=sext i32%w to i64
%ae=getelementptr inbounds i8,i8*%ac,i64%ad
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%Z,i8*%ae,i32%Y,i1 false)
%af=bitcast i8**%d to i8***
%ag=load i8**,i8***%af,align 8
%ah=bitcast i8**%ag to i8*
%ai=getelementptr inbounds i8*,i8**%ag,i64 3
%aj=bitcast i8**%ai to i32*
%ak=load i32,i32*%aj,align 4
br label%al
al:
%am=phi i8***[%af,%V],[%U,%O]
%an=phi i32[%ak,%V],[%M,%O]
%ao=phi i8*[%ah,%V],[%J,%O]
%ap=phi i8**[%ag,%V],[%P,%O]
%aq=phi i8*[%Z,%V],[%T,%O]
store i8*%aq,i8**%c,align 8
%ar=load i8*,i8**%ap,align 8
store i8*%ar,i8**%e,align 8
%as=getelementptr inbounds i8*,i8**%ap,i64 1
%at=load i8*,i8**%as,align 8
store i8*%at,i8**%f,align 8
%au=getelementptr inbounds i8*,i8**%ap,i64 2
%av=load i8*,i8**%au,align 8
store i8*%av,i8**%g,align 8
%aw=getelementptr inbounds i8,i8*%ao,i64 28
%ax=bitcast i8*%aw to i32*
%ay=load i32,i32*%ax,align 4
%az=getelementptr inbounds i8,i8*%ao,i64 32
%aA=bitcast i8*%az to i32*
%aB=load i32,i32*%aA,align 4
%aC=getelementptr inbounds i8,i8*%ao,i64 36
%aD=bitcast i8*%aC to i32*
%aE=load i32,i32*%aD,align 4
%aF=getelementptr inbounds i8,i8*%ao,i64 40
%aG=bitcast i8*%aF to i32*
%aH=load i32,i32*%aG,align 4
%aI=call i8*@sml_alloc(i32 inreg 52)#0
%aJ=getelementptr inbounds i8,i8*%aI,i64 -4
%aK=bitcast i8*%aJ to i32*
store i32 1342177328,i32*%aK,align 4
store i8*%aI,i8**%h,align 8
%aL=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aM=bitcast i8*%aI to i8**
store i8*%aL,i8**%aM,align 8
%aN=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aO=getelementptr inbounds i8,i8*%aI,i64 8
%aP=bitcast i8*%aO to i8**
store i8*%aN,i8**%aP,align 8
%aQ=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%aR=getelementptr inbounds i8,i8*%aI,i64 16
%aS=bitcast i8*%aR to i8**
store i8*%aQ,i8**%aS,align 8
%aT=getelementptr inbounds i8,i8*%aI,i64 24
%aU=bitcast i8*%aT to i32*
store i32%an,i32*%aU,align 4
%aV=getelementptr inbounds i8,i8*%aI,i64 28
%aW=bitcast i8*%aV to i32*
store i32%ay,i32*%aW,align 4
%aX=getelementptr inbounds i8,i8*%aI,i64 32
%aY=bitcast i8*%aX to i32*
store i32%aB,i32*%aY,align 4
%aZ=getelementptr inbounds i8,i8*%aI,i64 36
%a0=bitcast i8*%aZ to i32*
store i32%aE,i32*%a0,align 4
%a1=getelementptr inbounds i8,i8*%aI,i64 40
%a2=bitcast i8*%a1 to i32*
store i32%aH,i32*%a2,align 4
%a3=getelementptr inbounds i8,i8*%aI,i64 44
%a4=bitcast i8*%a3 to i32*
store i32%I,i32*%a4,align 4
%a5=getelementptr inbounds i8,i8*%aI,i64 48
%a6=bitcast i8*%a5 to i32*
store i32 7,i32*%a6,align 4
%a7=call i8*@sml_alloc(i32 inreg 28)#0
%a8=getelementptr inbounds i8,i8*%a7,i64 -4
%a9=bitcast i8*%a8 to i32*
store i32 1342177304,i32*%a9,align 4
%ba=load i8*,i8**%h,align 8
%bb=bitcast i8*%a7 to i8**
store i8*%ba,i8**%bb,align 8
%bc=getelementptr inbounds i8,i8*%a7,i64 8
%bd=bitcast i8*%bc to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_434 to void(...)*),void(...)**%bd,align 8
%be=getelementptr inbounds i8,i8*%a7,i64 16
%bf=bitcast i8*%be to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_434 to void(...)*),void(...)**%bf,align 8
%bg=getelementptr inbounds i8,i8*%a7,i64 24
%bh=bitcast i8*%bg to i32*
store i32 1,i32*%bh,align 4
%bi=load i8**,i8***%am,align 8
%bj=load i8*,i8**%bi,align 8
%bk=getelementptr inbounds i8,i8*%bj,i64 16
%bl=bitcast i8*%bk to i8*(i8*,i8*)**
%bm=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bl,align 8
%bn=bitcast i8*%bj to i8**
%bo=load i8*,i8**%bn,align 8
%bp=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bq=call fastcc i8*%bm(i8*inreg%bo,i8*inreg%bp)
%br=icmp eq i8*%bq,null
br i1%br,label%D,label%bs
bs:
%bt=bitcast i8*%bq to i8**
%bu=load i8*,i8**%bt,align 8
store i8*%bu,i8**%c,align 8
%bv=load i8,i8*%bu,align 1
%bw=load i8*,i8**%d,align 8
%bx=getelementptr inbounds i8,i8*%bw,i64 24
%by=bitcast i8*%bx to i32*
%bz=load i32,i32*%by,align 4
%bA=icmp eq i32%bz,0
br i1%bA,label%bG,label%bB
bB:
%bC=sext i32%x to i64
%bD=getelementptr inbounds i8,i8*%bu,i64%bC
%bE=bitcast i8*%bD to i8**
%bF=load i8*,i8**%bE,align 8
br label%bQ
bG:
store i8*null,i8**%d,align 8
%bH=getelementptr inbounds i8,i8*%bw,i64 28
%bI=bitcast i8*%bH to i32*
%bJ=load i32,i32*%bI,align 4
%bK=call i8*@sml_alloc(i32 inreg%bJ)#0
%bL=getelementptr inbounds i8,i8*%bK,i64 -4
%bM=bitcast i8*%bL to i32*
store i32%bJ,i32*%bM,align 4
%bN=load i8*,i8**%c,align 8
%bO=sext i32%x to i64
%bP=getelementptr inbounds i8,i8*%bN,i64%bO
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bK,i8*%bP,i32%bJ,i1 false)
br label%bQ
bQ:
%bR=phi i8*[%bF,%bB],[%bK,%bG]
%bS=icmp eq i8%bv,58
br i1%bS,label%bT,label%D
bT:
%bU=load i8*,i8**%h,align 8
%bV=tail call fastcc i8*@_SMLLL4mday_434(i8*inreg%bU,i8*inreg%bR)
ret i8*%bV
}
define internal fastcc i8*@_SMLLL4mday_436(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
p:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
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
call void@llvm.gcroot(i8**%h,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%i=load atomic i32,i32*@sml_check_flag unordered,align 4
%j=icmp eq i32%i,0
br i1%j,label%n,label%k
k:
call void@sml_check(i32 inreg%i)
%l=load i8*,i8**%d,align 8
%m=load i8*,i8**%c,align 8
br label%n
n:
%o=phi i8*[%m,%k],[%b,%p]
%q=phi i8*[%l,%k],[%a,%p]
%r=getelementptr inbounds i8,i8*%q,i64 28
%s=bitcast i8*%r to i32*
%t=load i32,i32*%s,align 4
%u=add i32%t,3
%v=sub i32 0,%t
%w=and i32%u,%v
%x=and i32%t,%v
%y=getelementptr inbounds i8,i8*%q,i64 16
%z=bitcast i8*%y to i8**
%A=load i8*,i8**%z,align 8
store i8*null,i8**%c,align 8
%B=call fastcc i8*@_SMLLL7get2dig_432(i8*inreg%A,i8*inreg%o)
%C=icmp eq i8*%B,null
br i1%C,label%D,label%E
D:
ret i8*null
E:
%F=bitcast i8*%B to i8**
%G=load i8*,i8**%F,align 8
store i8*%G,i8**%c,align 8
%H=bitcast i8*%G to i32*
%I=load i32,i32*%H,align 4
%J=load i8*,i8**%d,align 8
%K=getelementptr inbounds i8,i8*%J,i64 24
%L=bitcast i8*%K to i32*
%M=load i32,i32*%L,align 4
%N=icmp eq i32%M,0
br i1%N,label%V,label%O
O:
%P=bitcast i8*%J to i8**
store i8*null,i8**%c,align 8
%Q=sext i32%w to i64
%R=getelementptr inbounds i8,i8*%G,i64%Q
%S=bitcast i8*%R to i8**
%T=load i8*,i8**%S,align 8
%U=bitcast i8**%d to i8***
br label%al
V:
%W=getelementptr inbounds i8,i8*%J,i64 28
%X=bitcast i8*%W to i32*
%Y=load i32,i32*%X,align 4
%Z=call i8*@sml_alloc(i32 inreg%Y)#0
%aa=getelementptr inbounds i8,i8*%Z,i64 -4
%ab=bitcast i8*%aa to i32*
store i32%Y,i32*%ab,align 4
%ac=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ad=sext i32%w to i64
%ae=getelementptr inbounds i8,i8*%ac,i64%ad
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%Z,i8*%ae,i32%Y,i1 false)
%af=bitcast i8**%d to i8***
%ag=load i8**,i8***%af,align 8
%ah=bitcast i8**%ag to i8*
%ai=getelementptr inbounds i8*,i8**%ag,i64 3
%aj=bitcast i8**%ai to i32*
%ak=load i32,i32*%aj,align 4
br label%al
al:
%am=phi i8***[%af,%V],[%U,%O]
%an=phi i32[%ak,%V],[%M,%O]
%ao=phi i8*[%ah,%V],[%J,%O]
%ap=phi i8**[%ag,%V],[%P,%O]
%aq=phi i8*[%Z,%V],[%T,%O]
store i8*%aq,i8**%c,align 8
%ar=load i8*,i8**%ap,align 8
store i8*%ar,i8**%e,align 8
%as=getelementptr inbounds i8*,i8**%ap,i64 1
%at=load i8*,i8**%as,align 8
store i8*%at,i8**%f,align 8
%au=getelementptr inbounds i8*,i8**%ap,i64 2
%av=load i8*,i8**%au,align 8
store i8*%av,i8**%g,align 8
%aw=getelementptr inbounds i8,i8*%ao,i64 28
%ax=bitcast i8*%aw to i32*
%ay=load i32,i32*%ax,align 4
%az=getelementptr inbounds i8,i8*%ao,i64 32
%aA=bitcast i8*%az to i32*
%aB=load i32,i32*%aA,align 4
%aC=getelementptr inbounds i8,i8*%ao,i64 36
%aD=bitcast i8*%aC to i32*
%aE=load i32,i32*%aD,align 4
%aF=call i8*@sml_alloc(i32 inreg 52)#0
%aG=getelementptr inbounds i8,i8*%aF,i64 -4
%aH=bitcast i8*%aG to i32*
store i32 1342177328,i32*%aH,align 4
store i8*%aF,i8**%h,align 8
%aI=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aJ=bitcast i8*%aF to i8**
store i8*%aI,i8**%aJ,align 8
%aK=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aL=getelementptr inbounds i8,i8*%aF,i64 8
%aM=bitcast i8*%aL to i8**
store i8*%aK,i8**%aM,align 8
%aN=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%aO=getelementptr inbounds i8,i8*%aF,i64 16
%aP=bitcast i8*%aO to i8**
store i8*%aN,i8**%aP,align 8
%aQ=getelementptr inbounds i8,i8*%aF,i64 24
%aR=bitcast i8*%aQ to i32*
store i32%an,i32*%aR,align 4
%aS=getelementptr inbounds i8,i8*%aF,i64 28
%aT=bitcast i8*%aS to i32*
store i32%ay,i32*%aT,align 4
%aU=getelementptr inbounds i8,i8*%aF,i64 32
%aV=bitcast i8*%aU to i32*
store i32%aB,i32*%aV,align 4
%aW=getelementptr inbounds i8,i8*%aF,i64 36
%aX=bitcast i8*%aW to i32*
store i32%aE,i32*%aX,align 4
%aY=getelementptr inbounds i8,i8*%aF,i64 40
%aZ=bitcast i8*%aY to i32*
store i32%I,i32*%aZ,align 4
%a0=getelementptr inbounds i8,i8*%aF,i64 48
%a1=bitcast i8*%a0 to i32*
store i32 7,i32*%a1,align 4
%a2=call i8*@sml_alloc(i32 inreg 28)#0
%a3=getelementptr inbounds i8,i8*%a2,i64 -4
%a4=bitcast i8*%a3 to i32*
store i32 1342177304,i32*%a4,align 4
%a5=load i8*,i8**%h,align 8
%a6=bitcast i8*%a2 to i8**
store i8*%a5,i8**%a6,align 8
%a7=getelementptr inbounds i8,i8*%a2,i64 8
%a8=bitcast i8*%a7 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_435 to void(...)*),void(...)**%a8,align 8
%a9=getelementptr inbounds i8,i8*%a2,i64 16
%ba=bitcast i8*%a9 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_435 to void(...)*),void(...)**%ba,align 8
%bb=getelementptr inbounds i8,i8*%a2,i64 24
%bc=bitcast i8*%bb to i32*
store i32 1,i32*%bc,align 4
%bd=load i8**,i8***%am,align 8
%be=load i8*,i8**%bd,align 8
%bf=getelementptr inbounds i8,i8*%be,i64 16
%bg=bitcast i8*%bf to i8*(i8*,i8*)**
%bh=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bg,align 8
%bi=bitcast i8*%be to i8**
%bj=load i8*,i8**%bi,align 8
%bk=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bl=call fastcc i8*%bh(i8*inreg%bj,i8*inreg%bk)
%bm=icmp eq i8*%bl,null
br i1%bm,label%D,label%bn
bn:
%bo=bitcast i8*%bl to i8**
%bp=load i8*,i8**%bo,align 8
store i8*%bp,i8**%c,align 8
%bq=load i8,i8*%bp,align 1
%br=load i8*,i8**%d,align 8
%bs=getelementptr inbounds i8,i8*%br,i64 24
%bt=bitcast i8*%bs to i32*
%bu=load i32,i32*%bt,align 4
%bv=icmp eq i32%bu,0
br i1%bv,label%bB,label%bw
bw:
%bx=sext i32%x to i64
%by=getelementptr inbounds i8,i8*%bp,i64%bx
%bz=bitcast i8*%by to i8**
%bA=load i8*,i8**%bz,align 8
br label%bL
bB:
store i8*null,i8**%d,align 8
%bC=getelementptr inbounds i8,i8*%br,i64 28
%bD=bitcast i8*%bC to i32*
%bE=load i32,i32*%bD,align 4
%bF=call i8*@sml_alloc(i32 inreg%bE)#0
%bG=getelementptr inbounds i8,i8*%bF,i64 -4
%bH=bitcast i8*%bG to i32*
store i32%bE,i32*%bH,align 4
%bI=load i8*,i8**%c,align 8
%bJ=sext i32%x to i64
%bK=getelementptr inbounds i8,i8*%bI,i64%bJ
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bF,i8*%bK,i32%bE,i1 false)
br label%bL
bL:
%bM=phi i8*[%bA,%bw],[%bF,%bB]
%bN=icmp eq i8%bq,58
br i1%bN,label%bO,label%D
bO:
%bP=load i8*,i8**%h,align 8
%bQ=tail call fastcc i8*@_SMLLL4mday_435(i8*inreg%bP,i8*inreg%bM)
ret i8*%bQ
}
define internal fastcc i8*@_SMLLL4mday_437(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
p:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
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
call void@llvm.gcroot(i8**%h,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%i=load atomic i32,i32*@sml_check_flag unordered,align 4
%j=icmp eq i32%i,0
br i1%j,label%n,label%k
k:
call void@sml_check(i32 inreg%i)
%l=load i8*,i8**%d,align 8
%m=load i8*,i8**%c,align 8
br label%n
n:
%o=phi i8*[%m,%k],[%b,%p]
%q=phi i8*[%l,%k],[%a,%p]
%r=getelementptr inbounds i8,i8*%q,i64 28
%s=bitcast i8*%r to i32*
%t=load i32,i32*%s,align 4
%u=sub i32 0,%t
%v=and i32%t,%u
%w=add i32%t,3
%x=and i32%w,%u
%y=add i32%t,7
%z=add i32%y,%x
%A=and i32%z,-8
%B=lshr i32%x,3
%C=getelementptr inbounds i8,i8*%q,i64 24
%D=bitcast i8*%C to i32*
%E=load i32,i32*%D,align 4
%F=shl i32%E,%B
%G=or i32%A,4
%H=getelementptr inbounds i8,i8*%q,i64 16
%I=bitcast i8*%H to i8**
%J=load i8*,i8**%I,align 8
%K=call fastcc i8*@_SMLLL7get2dig_432(i8*inreg%J,i8*inreg%o)
%L=icmp eq i8*%K,null
br i1%L,label%P,label%M
M:
%N=bitcast i8*%K to i8**
%O=load i8*,i8**%N,align 8
br label%bN
P:
%Q=bitcast i8**%d to i8***
%R=load i8**,i8***%Q,align 8
%S=load i8*,i8**%R,align 8
%T=getelementptr inbounds i8,i8*%S,i64 16
%U=bitcast i8*%T to i8*(i8*,i8*)**
%V=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%U,align 8
%W=bitcast i8*%S to i8**
%X=load i8*,i8**%W,align 8
%Y=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%Z=call fastcc i8*%V(i8*inreg%X,i8*inreg%Y)
%aa=icmp eq i8*%Z,null
br i1%aa,label%bM,label%ab
ab:
%ac=bitcast i8*%Z to i8**
%ad=load i8*,i8**%ac,align 8
store i8*%ad,i8**%c,align 8
%ae=load i8,i8*%ad,align 1
%af=load i8*,i8**%d,align 8
%ag=getelementptr inbounds i8,i8*%af,i64 24
%ah=bitcast i8*%ag to i32*
%ai=load i32,i32*%ah,align 4
%aj=icmp eq i32%ai,0
br i1%aj,label%ap,label%ak
ak:
store i8*null,i8**%c,align 8
%al=sext i32%v to i64
%am=getelementptr inbounds i8,i8*%ad,i64%al
%an=bitcast i8*%am to i8**
%ao=load i8*,i8**%an,align 8
br label%az
ap:
%aq=getelementptr inbounds i8,i8*%af,i64 28
%ar=bitcast i8*%aq to i32*
%as=load i32,i32*%ar,align 4
%at=call i8*@sml_alloc(i32 inreg%as)#0
%au=getelementptr inbounds i8,i8*%at,i64 -4
%av=bitcast i8*%au to i32*
store i32%as,i32*%av,align 4
%aw=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ax=sext i32%v to i64
%ay=getelementptr inbounds i8,i8*%aw,i64%ax
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%at,i8*%ay,i32%as,i1 false)
br label%az
az:
%aA=phi i8*[%ao,%ak],[%at,%ap]
%aB=icmp eq i8%ae,32
br i1%aB,label%aC,label%bM
aC:
%aD=load i8**,i8***%Q,align 8
%aE=load i8*,i8**%aD,align 8
%aF=getelementptr inbounds i8,i8*%aE,i64 16
%aG=bitcast i8*%aF to i8*(i8*,i8*)**
%aH=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aG,align 8
%aI=bitcast i8*%aE to i8**
%aJ=load i8*,i8**%aI,align 8
%aK=call fastcc i8*%aH(i8*inreg%aJ,i8*inreg%aA)
%aL=icmp eq i8*%aK,null
br i1%aL,label%bM,label%aM
aM:
%aN=bitcast i8*%aK to i8**
%aO=load i8*,i8**%aN,align 8
store i8*%aO,i8**%c,align 8
%aP=load i8,i8*%aO,align 1
%aQ=load i8*,i8**%d,align 8
%aR=getelementptr inbounds i8,i8*%aQ,i64 24
%aS=bitcast i8*%aR to i32*
%aT=load i32,i32*%aS,align 4
%aU=icmp eq i32%aT,0
br i1%aU,label%a0,label%aV
aV:
store i8*null,i8**%c,align 8
%aW=sext i32%v to i64
%aX=getelementptr inbounds i8,i8*%aO,i64%aW
%aY=bitcast i8*%aX to i8**
%aZ=load i8*,i8**%aY,align 8
br label%ba
a0:
%a1=getelementptr inbounds i8,i8*%aQ,i64 28
%a2=bitcast i8*%a1 to i32*
%a3=load i32,i32*%a2,align 4
%a4=call i8*@sml_alloc(i32 inreg%a3)#0
%a5=getelementptr inbounds i8,i8*%a4,i64 -4
%a6=bitcast i8*%a5 to i32*
store i32%a3,i32*%a6,align 4
%a7=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a8=sext i32%v to i64
%a9=getelementptr inbounds i8,i8*%a7,i64%a8
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%a4,i8*%a9,i32%a3,i1 false)
br label%ba
ba:
%bb=phi i8*[%a4,%a0],[%aZ,%aV]
store i8*%bb,i8**%c,align 8
%bc=call fastcc i32@_SMLFN4Char7isDigitE(i8 inreg%aP)
%bd=icmp eq i32%bc,0
br i1%bd,label%bM,label%be
be:
%bf=zext i8%aP to i32
%bg=add nsw i32%bf,-48
%bh=load i8*,i8**%d,align 8
%bi=getelementptr inbounds i8,i8*%bh,i64 28
%bj=bitcast i8*%bi to i32*
%bk=load i32,i32*%bj,align 4
%bl=getelementptr inbounds i8,i8*%bh,i64 24
%bm=bitcast i8*%bl to i32*
%bn=load i32,i32*%bm,align 4
%bo=call i8*@sml_alloc(i32 inreg%G)#0
%bp=or i32%A,1342177280
%bq=getelementptr inbounds i8,i8*%bo,i64 -4
%br=bitcast i8*%bq to i32*
store i32%bp,i32*%br,align 4
store i8*%bo,i8**%e,align 8
call void@llvm.memset.p0i8.i32(i8*%bo,i8 0,i32%G,i1 false)
%bs=bitcast i8*%bo to i32*
store i32%bg,i32*%bs,align 4
%bt=icmp eq i32%bn,0
%bu=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bv=sext i32%x to i64
%bw=getelementptr inbounds i8,i8*%bo,i64%bv
br i1%bt,label%bx,label%by
bx:
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bw,i8*%bu,i32%bk,i1 false)
br label%bA
by:
%bz=bitcast i8*%bw to i8**
store i8*%bu,i8**%bz,align 8
br label%bA
bA:
%bB=sext i32%A to i64
%bC=getelementptr inbounds i8,i8*%bo,i64%bB
%bD=bitcast i8*%bC to i32*
store i32%F,i32*%bD,align 4
%bE=call i8*@sml_alloc(i32 inreg 12)#0
%bF=getelementptr inbounds i8,i8*%bE,i64 -4
%bG=bitcast i8*%bF to i32*
store i32 1342177288,i32*%bG,align 4
%bH=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bI=bitcast i8*%bE to i8**
store i8*%bH,i8**%bI,align 8
%bJ=getelementptr inbounds i8,i8*%bE,i64 8
%bK=bitcast i8*%bJ to i32*
store i32 1,i32*%bK,align 4
%bL=icmp eq i8*%bE,null
br i1%bL,label%bM,label%bN
bM:
ret i8*null
bN:
%bO=phi i8*[%bH,%bA],[%O,%M]
store i8*%bO,i8**%c,align 8
%bP=bitcast i8*%bO to i32*
%bQ=load i32,i32*%bP,align 4
%bR=load i8*,i8**%d,align 8
%bS=getelementptr inbounds i8,i8*%bR,i64 24
%bT=bitcast i8*%bS to i32*
%bU=load i32,i32*%bT,align 4
%bV=icmp eq i32%bU,0
br i1%bV,label%b3,label%bW
bW:
%bX=bitcast i8*%bR to i8**
store i8*null,i8**%c,align 8
%bY=sext i32%x to i64
%bZ=getelementptr inbounds i8,i8*%bO,i64%bY
%b0=bitcast i8*%bZ to i8**
%b1=load i8*,i8**%b0,align 8
%b2=bitcast i8**%d to i8***
br label%cj
b3:
%b4=getelementptr inbounds i8,i8*%bR,i64 28
%b5=bitcast i8*%b4 to i32*
%b6=load i32,i32*%b5,align 4
%b7=call i8*@sml_alloc(i32 inreg%b6)#0
%b8=getelementptr inbounds i8,i8*%b7,i64 -4
%b9=bitcast i8*%b8 to i32*
store i32%b6,i32*%b9,align 4
%ca=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cb=sext i32%x to i64
%cc=getelementptr inbounds i8,i8*%ca,i64%cb
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%b7,i8*%cc,i32%b6,i1 false)
%cd=bitcast i8**%d to i8***
%ce=load i8**,i8***%cd,align 8
%cf=bitcast i8**%ce to i8*
%cg=getelementptr inbounds i8*,i8**%ce,i64 3
%ch=bitcast i8**%cg to i32*
%ci=load i32,i32*%ch,align 4
br label%cj
cj:
%ck=phi i8***[%cd,%b3],[%b2,%bW]
%cl=phi i32[%ci,%b3],[%bU,%bW]
%cm=phi i8*[%cf,%b3],[%bR,%bW]
%cn=phi i8**[%ce,%b3],[%bX,%bW]
%co=phi i8*[%b7,%b3],[%b1,%bW]
store i8*%co,i8**%c,align 8
%cp=load i8*,i8**%cn,align 8
store i8*%cp,i8**%e,align 8
%cq=getelementptr inbounds i8*,i8**%cn,i64 1
%cr=load i8*,i8**%cq,align 8
store i8*%cr,i8**%f,align 8
%cs=getelementptr inbounds i8*,i8**%cn,i64 2
%ct=load i8*,i8**%cs,align 8
store i8*%ct,i8**%g,align 8
%cu=getelementptr inbounds i8,i8*%cm,i64 28
%cv=bitcast i8*%cu to i32*
%cw=load i32,i32*%cv,align 4
%cx=getelementptr inbounds i8,i8*%cm,i64 32
%cy=bitcast i8*%cx to i32*
%cz=load i32,i32*%cy,align 4
%cA=call i8*@sml_alloc(i32 inreg 44)#0
%cB=getelementptr inbounds i8,i8*%cA,i64 -4
%cC=bitcast i8*%cB to i32*
store i32 1342177320,i32*%cC,align 4
store i8*%cA,i8**%h,align 8
%cD=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%cE=bitcast i8*%cA to i8**
store i8*%cD,i8**%cE,align 8
%cF=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cG=getelementptr inbounds i8,i8*%cA,i64 8
%cH=bitcast i8*%cG to i8**
store i8*%cF,i8**%cH,align 8
%cI=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cJ=getelementptr inbounds i8,i8*%cA,i64 16
%cK=bitcast i8*%cJ to i8**
store i8*%cI,i8**%cK,align 8
%cL=getelementptr inbounds i8,i8*%cA,i64 24
%cM=bitcast i8*%cL to i32*
store i32%cl,i32*%cM,align 4
%cN=getelementptr inbounds i8,i8*%cA,i64 28
%cO=bitcast i8*%cN to i32*
store i32%cw,i32*%cO,align 4
%cP=getelementptr inbounds i8,i8*%cA,i64 32
%cQ=bitcast i8*%cP to i32*
store i32%cz,i32*%cQ,align 4
%cR=getelementptr inbounds i8,i8*%cA,i64 36
%cS=bitcast i8*%cR to i32*
store i32%bQ,i32*%cS,align 4
%cT=getelementptr inbounds i8,i8*%cA,i64 40
%cU=bitcast i8*%cT to i32*
store i32 7,i32*%cU,align 4
%cV=call i8*@sml_alloc(i32 inreg 28)#0
%cW=getelementptr inbounds i8,i8*%cV,i64 -4
%cX=bitcast i8*%cW to i32*
store i32 1342177304,i32*%cX,align 4
%cY=load i8*,i8**%h,align 8
%cZ=bitcast i8*%cV to i8**
store i8*%cY,i8**%cZ,align 8
%c0=getelementptr inbounds i8,i8*%cV,i64 8
%c1=bitcast i8*%c0 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_436 to void(...)*),void(...)**%c1,align 8
%c2=getelementptr inbounds i8,i8*%cV,i64 16
%c3=bitcast i8*%c2 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_436 to void(...)*),void(...)**%c3,align 8
%c4=getelementptr inbounds i8,i8*%cV,i64 24
%c5=bitcast i8*%c4 to i32*
store i32 1,i32*%c5,align 4
%c6=load i8**,i8***%ck,align 8
%c7=load i8*,i8**%c6,align 8
%c8=getelementptr inbounds i8,i8*%c7,i64 16
%c9=bitcast i8*%c8 to i8*(i8*,i8*)**
%da=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%c9,align 8
%db=bitcast i8*%c7 to i8**
%dc=load i8*,i8**%db,align 8
%dd=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%de=call fastcc i8*%da(i8*inreg%dc,i8*inreg%dd)
%df=icmp eq i8*%de,null
br i1%df,label%bM,label%dg
dg:
%dh=bitcast i8*%de to i8**
%di=load i8*,i8**%dh,align 8
store i8*%di,i8**%c,align 8
%dj=load i8,i8*%di,align 1
%dk=load i8*,i8**%d,align 8
%dl=getelementptr inbounds i8,i8*%dk,i64 24
%dm=bitcast i8*%dl to i32*
%dn=load i32,i32*%dm,align 4
%do=icmp eq i32%dn,0
br i1%do,label%du,label%dp
dp:
%dq=sext i32%v to i64
%dr=getelementptr inbounds i8,i8*%di,i64%dq
%ds=bitcast i8*%dr to i8**
%dt=load i8*,i8**%ds,align 8
br label%dE
du:
store i8*null,i8**%d,align 8
%dv=getelementptr inbounds i8,i8*%dk,i64 28
%dw=bitcast i8*%dv to i32*
%dx=load i32,i32*%dw,align 4
%dy=call i8*@sml_alloc(i32 inreg%dx)#0
%dz=getelementptr inbounds i8,i8*%dy,i64 -4
%dA=bitcast i8*%dz to i32*
store i32%dx,i32*%dA,align 4
%dB=load i8*,i8**%c,align 8
%dC=sext i32%v to i64
%dD=getelementptr inbounds i8,i8*%dB,i64%dC
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%dy,i8*%dD,i32%dx,i1 false)
br label%dE
dE:
%dF=phi i8*[%dt,%dp],[%dy,%du]
%dG=icmp eq i8%dj,32
br i1%dG,label%dH,label%bM
dH:
%dI=load i8*,i8**%h,align 8
%dJ=tail call fastcc i8*@_SMLLL4mday_436(i8*inreg%dI,i8*inreg%dF)
ret i8*%dJ
}
define internal fastcc i8*@_SMLLL4mday_438(i8*inreg%a,i8*inreg%b,i8*inreg%c)#2 gc"smlsharp"{
q:
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
%i=alloca i8*,align 8
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
call void@llvm.gcroot(i8**%h,i8*null)#0
call void@llvm.gcroot(i8**%i,i8*null)#0
store i8*%a,i8**%e,align 8
store i8*%b,i8**%d,align 8
store i8*%c,i8**%f,align 8
%j=load atomic i32,i32*@sml_check_flag unordered,align 4
%k=icmp eq i32%j,0
br i1%k,label%o,label%l
l:
call void@sml_check(i32 inreg%j)
%m=load i8*,i8**%d,align 8
%n=load i8*,i8**%e,align 8
br label%o
o:
%p=phi i8*[%n,%l],[%a,%q]
%r=phi i8*[%m,%l],[%b,%q]
%s=getelementptr inbounds i8,i8*%p,i64 28
%t=bitcast i8*%s to i32*
%u=load i32,i32*%t,align 4
%v=sub i32 0,%u
%w=and i32%u,%v
%x=getelementptr inbounds i8,i8*%r,i64 4
%y=bitcast i8*%x to i32*
%z=load i32,i32*%y,align 4
%A=bitcast i8*%p to i8**
%B=load i8*,i8**%A,align 8
store i8*%B,i8**%d,align 8
%C=getelementptr inbounds i8,i8*%p,i64 8
%D=bitcast i8*%C to i8**
%E=load i8*,i8**%D,align 8
store i8*%E,i8**%g,align 8
%F=getelementptr inbounds i8,i8*%p,i64 16
%G=bitcast i8*%F to i8**
%H=load i8*,i8**%G,align 8
store i8*%H,i8**%h,align 8
%I=getelementptr inbounds i8,i8*%p,i64 24
%J=bitcast i8*%I to i32*
%K=load i32,i32*%J,align 4
%L=call i8*@sml_alloc(i32 inreg 44)#0
%M=getelementptr inbounds i8,i8*%L,i64 -4
%N=bitcast i8*%M to i32*
store i32 1342177320,i32*%N,align 4
store i8*%L,i8**%i,align 8
%O=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%P=bitcast i8*%L to i8**
store i8*%O,i8**%P,align 8
%Q=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%R=getelementptr inbounds i8,i8*%L,i64 8
%S=bitcast i8*%R to i8**
store i8*%Q,i8**%S,align 8
%T=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%U=getelementptr inbounds i8,i8*%L,i64 16
%V=bitcast i8*%U to i8**
store i8*%T,i8**%V,align 8
%W=getelementptr inbounds i8,i8*%L,i64 24
%X=bitcast i8*%W to i32*
store i32%K,i32*%X,align 4
%Y=getelementptr inbounds i8,i8*%L,i64 28
%Z=bitcast i8*%Y to i32*
store i32%u,i32*%Z,align 4
%aa=getelementptr inbounds i8,i8*%L,i64 32
%ab=bitcast i8*%aa to i32*
store i32%z,i32*%ab,align 4
%ac=getelementptr inbounds i8,i8*%L,i64 40
%ad=bitcast i8*%ac to i32*
store i32 7,i32*%ad,align 4
%ae=call i8*@sml_alloc(i32 inreg 28)#0
%af=getelementptr inbounds i8,i8*%ae,i64 -4
%ag=bitcast i8*%af to i32*
store i32 1342177304,i32*%ag,align 4
%ah=load i8*,i8**%i,align 8
%ai=bitcast i8*%ae to i8**
store i8*%ah,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%ae,i64 8
%ak=bitcast i8*%aj to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_437 to void(...)*),void(...)**%ak,align 8
%al=getelementptr inbounds i8,i8*%ae,i64 16
%am=bitcast i8*%al to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL4mday_437 to void(...)*),void(...)**%am,align 8
%an=getelementptr inbounds i8,i8*%ae,i64 24
%ao=bitcast i8*%an to i32*
store i32 1,i32*%ao,align 4
%ap=bitcast i8**%e to i8***
%aq=load i8**,i8***%ap,align 8
%ar=load i8*,i8**%aq,align 8
%as=getelementptr inbounds i8,i8*%ar,i64 16
%at=bitcast i8*%as to i8*(i8*,i8*)**
%au=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%at,align 8
%av=bitcast i8*%ar to i8**
%aw=load i8*,i8**%av,align 8
%ax=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%ay=call fastcc i8*%au(i8*inreg%aw,i8*inreg%ax)
%az=icmp eq i8*%ay,null
br i1%az,label%aA,label%aB
aA:
ret i8*null
aB:
%aC=bitcast i8*%ay to i8**
%aD=load i8*,i8**%aC,align 8
store i8*%aD,i8**%d,align 8
%aE=load i8,i8*%aD,align 1
%aF=load i8*,i8**%e,align 8
%aG=getelementptr inbounds i8,i8*%aF,i64 24
%aH=bitcast i8*%aG to i32*
%aI=load i32,i32*%aH,align 4
%aJ=icmp eq i32%aI,0
br i1%aJ,label%aP,label%aK
aK:
%aL=sext i32%w to i64
%aM=getelementptr inbounds i8,i8*%aD,i64%aL
%aN=bitcast i8*%aM to i8**
%aO=load i8*,i8**%aN,align 8
br label%aZ
aP:
store i8*null,i8**%e,align 8
%aQ=getelementptr inbounds i8,i8*%aF,i64 28
%aR=bitcast i8*%aQ to i32*
%aS=load i32,i32*%aR,align 4
%aT=call i8*@sml_alloc(i32 inreg%aS)#0
%aU=getelementptr inbounds i8,i8*%aT,i64 -4
%aV=bitcast i8*%aU to i32*
store i32%aS,i32*%aV,align 4
%aW=load i8*,i8**%d,align 8
%aX=sext i32%w to i64
%aY=getelementptr inbounds i8,i8*%aW,i64%aX
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%aT,i8*%aY,i32%aS,i1 false)
br label%aZ
aZ:
%a0=phi i8*[%aO,%aK],[%aT,%aP]
%a1=icmp eq i8%aE,32
br i1%a1,label%a2,label%aA
a2:
%a3=load i8*,i8**%i,align 8
%a4=tail call fastcc i8*@_SMLLL4mday_437(i8*inreg%a3,i8*inreg%a0)
ret i8*%a4
}
define internal fastcc i8*@_SMLLLN4Date4scanE_439(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%j,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%d,align 8
br label%j
j:
%k=phi i8*[%i,%h],[%a,%l]
%m=getelementptr inbounds i8,i8*%k,i64 20
%n=bitcast i8*%m to i32*
%o=load i32,i32*%n,align 4
%p=add i32%o,7
%q=sub i32 0,%o
%r=and i32%p,%q
%s=getelementptr inbounds i8,i8*%k,i64 16
%t=bitcast i8*%s to i32*
%u=load i32,i32*%t,align 4
%v=call fastcc i8*@_SMLFN9StringCvt6splitlE(i32 inreg%u,i32 inreg%o)
%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**
%A=load i8*,i8**%z,align 8
%B=load i8*,i8**@_SMLZN4Char7isAlphaE,align 8
%C=call fastcc i8*%y(i8*inreg%A,i8*inreg%B)
%D=getelementptr inbounds i8,i8*%C,i64 16
%E=bitcast i8*%D to i8*(i8*,i8*)**
%F=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%E,align 8
%G=bitcast i8*%C to i8**
%H=load i8*,i8**%G,align 8
%I=bitcast i8**%d to i8***
%J=load i8**,i8***%I,align 8
%K=load i8*,i8**%J,align 8
%L=call fastcc i8*%F(i8*inreg%H,i8*inreg%K)
%M=getelementptr inbounds i8,i8*%L,i64 16
%N=bitcast i8*%M to i8*(i8*,i8*)**
%O=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%N,align 8
%P=bitcast i8*%L to i8**
%Q=load i8*,i8**%P,align 8
%R=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%S=call fastcc i8*%O(i8*inreg%Q,i8*inreg%R)
store i8*%S,i8**%c,align 8
%T=bitcast i8*%S to i8**
%U=load i8*,i8**%T,align 8
%V=getelementptr inbounds i8,i8*%U,i64 -4
%W=bitcast i8*%V to i32*
%X=load i32,i32*%W,align 4
%Y=and i32%X,268435455
%Z=icmp eq i32%Y,4
br i1%Z,label%aa,label%jq
aa:
%ab=load i8,i8*%U,align 1
switch i8%ab,label%jq[
i8 65,label%hT
i8 68,label%g5
i8 70,label%gh
i8 74,label%d5
i8 77,label%cC
i8 78,label%bO
i8 79,label%a0
i8 83,label%ac
]
ac:
%ad=getelementptr inbounds i8,i8*%U,i64 1
%ae=load i8,i8*%ad,align 1
%af=icmp eq i8%ae,101
br i1%af,label%ag,label%jq
ag:
%ah=getelementptr inbounds i8,i8*%U,i64 2
%ai=load i8,i8*%ah,align 1
%aj=icmp eq i8%ai,112
br i1%aj,label%ak,label%jq
ak:
%al=load i8*,i8**%d,align 8
%am=getelementptr inbounds i8,i8*%al,i64 16
%an=bitcast i8*%am to i32*
%ao=load i32,i32*%an,align 4
%ap=icmp eq i32%ao,0
br i1%ap,label%av,label%aq
aq:
store i8*null,i8**%c,align 8
%ar=sext i32%r to i64
%as=getelementptr inbounds i8,i8*%S,i64%ar
%at=bitcast i8*%as to i8**
%au=load i8*,i8**%at,align 8
br label%aG
av:
%aw=getelementptr inbounds i8,i8*%al,i64 20
%ax=bitcast i8*%aw to i32*
%ay=load i32,i32*%ax,align 4
%az=call i8*@sml_alloc(i32 inreg%ay)#0
%aA=getelementptr inbounds i8,i8*%az,i64 -4
%aB=bitcast i8*%aA to i32*
store i32%ay,i32*%aB,align 4
%aC=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aD=sext i32%r to i64
%aE=getelementptr inbounds i8,i8*%aC,i64%aD
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%az,i8*%aE,i32%ay,i1 false)
%aF=load i8*,i8**%d,align 8
br label%aG
aG:
%aH=phi i8*[%aF,%av],[%al,%aq]
%aI=phi i8*[%az,%av],[%au,%aq]
store i8*%aI,i8**%c,align 8
%aJ=getelementptr inbounds i8,i8*%aH,i64 8
%aK=bitcast i8*%aJ to i8**
%aL=load i8*,i8**%aK,align 8
store i8*%aL,i8**%e,align 8
store i8*null,i8**%d,align 8
%aM=getelementptr inbounds i8,i8*%aH,i64 24
%aN=bitcast i8*%aM to i32*
%aO=load i32,i32*%aN,align 4
%aP=call i8*@sml_alloc(i32 inreg 12)#0
%aQ=bitcast i8*%aP to i32*
%aR=getelementptr inbounds i8,i8*%aP,i64 -4
%aS=bitcast i8*%aR to i32*
store i32 1342177288,i32*%aS,align 4
store i32%aO,i32*%aQ,align 4
%aT=getelementptr inbounds i8,i8*%aP,i64 4
%aU=bitcast i8*%aT to i32*
store i32 11,i32*%aU,align 4
%aV=getelementptr inbounds i8,i8*%aP,i64 8
%aW=bitcast i8*%aV to i32*
store i32 0,i32*%aW,align 4
%aX=load i8*,i8**%c,align 8
%aY=load i8*,i8**%e,align 8
%aZ=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%aY,i8*inreg%aP,i8*inreg%aX)
ret i8*%aZ
a0:
%a1=getelementptr inbounds i8,i8*%U,i64 1
%a2=load i8,i8*%a1,align 1
%a3=icmp eq i8%a2,99
br i1%a3,label%a4,label%jq
a4:
%a5=getelementptr inbounds i8,i8*%U,i64 2
%a6=load i8,i8*%a5,align 1
%a7=icmp eq i8%a6,116
br i1%a7,label%a8,label%jq
a8:
%a9=load i8*,i8**%d,align 8
%ba=getelementptr inbounds i8,i8*%a9,i64 16
%bb=bitcast i8*%ba to i32*
%bc=load i32,i32*%bb,align 4
%bd=icmp eq i32%bc,0
br i1%bd,label%bj,label%be
be:
store i8*null,i8**%c,align 8
%bf=sext i32%r to i64
%bg=getelementptr inbounds i8,i8*%S,i64%bf
%bh=bitcast i8*%bg to i8**
%bi=load i8*,i8**%bh,align 8
br label%bu
bj:
%bk=getelementptr inbounds i8,i8*%a9,i64 20
%bl=bitcast i8*%bk to i32*
%bm=load i32,i32*%bl,align 4
%bn=call i8*@sml_alloc(i32 inreg%bm)#0
%bo=getelementptr inbounds i8,i8*%bn,i64 -4
%bp=bitcast i8*%bo to i32*
store i32%bm,i32*%bp,align 4
%bq=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%br=sext i32%r to i64
%bs=getelementptr inbounds i8,i8*%bq,i64%br
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bn,i8*%bs,i32%bm,i1 false)
%bt=load i8*,i8**%d,align 8
br label%bu
bu:
%bv=phi i8*[%bt,%bj],[%a9,%be]
%bw=phi i8*[%bn,%bj],[%bi,%be]
store i8*%bw,i8**%c,align 8
%bx=getelementptr inbounds i8,i8*%bv,i64 8
%by=bitcast i8*%bx to i8**
%bz=load i8*,i8**%by,align 8
store i8*%bz,i8**%e,align 8
store i8*null,i8**%d,align 8
%bA=getelementptr inbounds i8,i8*%bv,i64 24
%bB=bitcast i8*%bA to i32*
%bC=load i32,i32*%bB,align 4
%bD=call i8*@sml_alloc(i32 inreg 12)#0
%bE=bitcast i8*%bD to i32*
%bF=getelementptr inbounds i8,i8*%bD,i64 -4
%bG=bitcast i8*%bF to i32*
store i32 1342177288,i32*%bG,align 4
store i32%bC,i32*%bE,align 4
%bH=getelementptr inbounds i8,i8*%bD,i64 4
%bI=bitcast i8*%bH to i32*
store i32 10,i32*%bI,align 4
%bJ=getelementptr inbounds i8,i8*%bD,i64 8
%bK=bitcast i8*%bJ to i32*
store i32 0,i32*%bK,align 4
%bL=load i8*,i8**%c,align 8
%bM=load i8*,i8**%e,align 8
%bN=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%bM,i8*inreg%bD,i8*inreg%bL)
ret i8*%bN
bO:
%bP=getelementptr inbounds i8,i8*%U,i64 1
%bQ=load i8,i8*%bP,align 1
%bR=icmp eq i8%bQ,111
br i1%bR,label%bS,label%jq
bS:
%bT=getelementptr inbounds i8,i8*%U,i64 2
%bU=load i8,i8*%bT,align 1
%bV=icmp eq i8%bU,118
br i1%bV,label%bW,label%jq
bW:
%bX=load i8*,i8**%d,align 8
%bY=getelementptr inbounds i8,i8*%bX,i64 16
%bZ=bitcast i8*%bY to i32*
%b0=load i32,i32*%bZ,align 4
%b1=icmp eq i32%b0,0
br i1%b1,label%b7,label%b2
b2:
store i8*null,i8**%c,align 8
%b3=sext i32%r to i64
%b4=getelementptr inbounds i8,i8*%S,i64%b3
%b5=bitcast i8*%b4 to i8**
%b6=load i8*,i8**%b5,align 8
br label%ci
b7:
%b8=getelementptr inbounds i8,i8*%bX,i64 20
%b9=bitcast i8*%b8 to i32*
%ca=load i32,i32*%b9,align 4
%cb=call i8*@sml_alloc(i32 inreg%ca)#0
%cc=getelementptr inbounds i8,i8*%cb,i64 -4
%cd=bitcast i8*%cc to i32*
store i32%ca,i32*%cd,align 4
%ce=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cf=sext i32%r to i64
%cg=getelementptr inbounds i8,i8*%ce,i64%cf
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cb,i8*%cg,i32%ca,i1 false)
%ch=load i8*,i8**%d,align 8
br label%ci
ci:
%cj=phi i8*[%ch,%b7],[%bX,%b2]
%ck=phi i8*[%cb,%b7],[%b6,%b2]
store i8*%ck,i8**%c,align 8
%cl=getelementptr inbounds i8,i8*%cj,i64 8
%cm=bitcast i8*%cl to i8**
%cn=load i8*,i8**%cm,align 8
store i8*%cn,i8**%e,align 8
store i8*null,i8**%d,align 8
%co=getelementptr inbounds i8,i8*%cj,i64 24
%cp=bitcast i8*%co to i32*
%cq=load i32,i32*%cp,align 4
%cr=call i8*@sml_alloc(i32 inreg 12)#0
%cs=bitcast i8*%cr to i32*
%ct=getelementptr inbounds i8,i8*%cr,i64 -4
%cu=bitcast i8*%ct to i32*
store i32 1342177288,i32*%cu,align 4
store i32%cq,i32*%cs,align 4
%cv=getelementptr inbounds i8,i8*%cr,i64 4
%cw=bitcast i8*%cv to i32*
store i32 9,i32*%cw,align 4
%cx=getelementptr inbounds i8,i8*%cr,i64 8
%cy=bitcast i8*%cx to i32*
store i32 0,i32*%cy,align 4
%cz=load i8*,i8**%c,align 8
%cA=load i8*,i8**%e,align 8
%cB=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%cA,i8*inreg%cr,i8*inreg%cz)
ret i8*%cB
cC:
%cD=getelementptr inbounds i8,i8*%U,i64 1
%cE=load i8,i8*%cD,align 1
%cF=icmp eq i8%cE,97
br i1%cF,label%cG,label%jq
cG:
%cH=getelementptr inbounds i8,i8*%U,i64 2
%cI=load i8,i8*%cH,align 1
switch i8%cI,label%jq[
i8 114,label%dp
i8 121,label%cJ
]
cJ:
%cK=load i8*,i8**%d,align 8
%cL=getelementptr inbounds i8,i8*%cK,i64 16
%cM=bitcast i8*%cL to i32*
%cN=load i32,i32*%cM,align 4
%cO=icmp eq i32%cN,0
br i1%cO,label%cU,label%cP
cP:
store i8*null,i8**%c,align 8
%cQ=sext i32%r to i64
%cR=getelementptr inbounds i8,i8*%S,i64%cQ
%cS=bitcast i8*%cR to i8**
%cT=load i8*,i8**%cS,align 8
br label%c5
cU:
%cV=getelementptr inbounds i8,i8*%cK,i64 20
%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**%c,align 8
store i8*null,i8**%c,align 8
%c2=sext i32%r to i64
%c3=getelementptr inbounds i8,i8*%c1,i64%c2
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cY,i8*%c3,i32%cX,i1 false)
%c4=load i8*,i8**%d,align 8
br label%c5
c5:
%c6=phi i8*[%c4,%cU],[%cK,%cP]
%c7=phi i8*[%cY,%cU],[%cT,%cP]
store i8*%c7,i8**%c,align 8
%c8=getelementptr inbounds i8,i8*%c6,i64 8
%c9=bitcast i8*%c8 to i8**
%da=load i8*,i8**%c9,align 8
store i8*%da,i8**%e,align 8
store i8*null,i8**%d,align 8
%db=getelementptr inbounds i8,i8*%c6,i64 24
%dc=bitcast i8*%db to i32*
%dd=load i32,i32*%dc,align 4
%de=call i8*@sml_alloc(i32 inreg 12)#0
%df=bitcast i8*%de to i32*
%dg=getelementptr inbounds i8,i8*%de,i64 -4
%dh=bitcast i8*%dg to i32*
store i32 1342177288,i32*%dh,align 4
store i32%dd,i32*%df,align 4
%di=getelementptr inbounds i8,i8*%de,i64 4
%dj=bitcast i8*%di to i32*
store i32 8,i32*%dj,align 4
%dk=getelementptr inbounds i8,i8*%de,i64 8
%dl=bitcast i8*%dk to i32*
store i32 0,i32*%dl,align 4
%dm=load i8*,i8**%c,align 8
%dn=load i8*,i8**%e,align 8
%do=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%dn,i8*inreg%de,i8*inreg%dm)
ret i8*%do
dp:
%dq=load i8*,i8**%d,align 8
%dr=getelementptr inbounds i8,i8*%dq,i64 16
%ds=bitcast i8*%dr to i32*
%dt=load i32,i32*%ds,align 4
%du=icmp eq i32%dt,0
br i1%du,label%dA,label%dv
dv:
store i8*null,i8**%c,align 8
%dw=sext i32%r to i64
%dx=getelementptr inbounds i8,i8*%S,i64%dw
%dy=bitcast i8*%dx to i8**
%dz=load i8*,i8**%dy,align 8
br label%dL
dA:
%dB=getelementptr inbounds i8,i8*%dq,i64 20
%dC=bitcast i8*%dB to i32*
%dD=load i32,i32*%dC,align 4
%dE=call i8*@sml_alloc(i32 inreg%dD)#0
%dF=getelementptr inbounds i8,i8*%dE,i64 -4
%dG=bitcast i8*%dF to i32*
store i32%dD,i32*%dG,align 4
%dH=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dI=sext i32%r to i64
%dJ=getelementptr inbounds i8,i8*%dH,i64%dI
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%dE,i8*%dJ,i32%dD,i1 false)
%dK=load i8*,i8**%d,align 8
br label%dL
dL:
%dM=phi i8*[%dK,%dA],[%dq,%dv]
%dN=phi i8*[%dE,%dA],[%dz,%dv]
store i8*%dN,i8**%c,align 8
%dO=getelementptr inbounds i8,i8*%dM,i64 8
%dP=bitcast i8*%dO to i8**
%dQ=load i8*,i8**%dP,align 8
store i8*%dQ,i8**%e,align 8
store i8*null,i8**%d,align 8
%dR=getelementptr inbounds i8,i8*%dM,i64 24
%dS=bitcast i8*%dR to i32*
%dT=load i32,i32*%dS,align 4
%dU=call i8*@sml_alloc(i32 inreg 12)#0
%dV=bitcast i8*%dU to i32*
%dW=getelementptr inbounds i8,i8*%dU,i64 -4
%dX=bitcast i8*%dW to i32*
store i32 1342177288,i32*%dX,align 4
store i32%dT,i32*%dV,align 4
%dY=getelementptr inbounds i8,i8*%dU,i64 4
%dZ=bitcast i8*%dY to i32*
store i32 7,i32*%dZ,align 4
%d0=getelementptr inbounds i8,i8*%dU,i64 8
%d1=bitcast i8*%d0 to i32*
store i32 0,i32*%d1,align 4
%d2=load i8*,i8**%c,align 8
%d3=load i8*,i8**%e,align 8
%d4=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%d3,i8*inreg%dU,i8*inreg%d2)
ret i8*%d4
d5:
%d6=getelementptr inbounds i8,i8*%U,i64 1
%d7=load i8,i8*%d6,align 1
switch i8%d7,label%jq[
i8 97,label%fx
i8 117,label%d8
]
d8:
%d9=getelementptr inbounds i8,i8*%U,i64 2
%ea=load i8,i8*%d9,align 1
switch i8%ea,label%jq[
i8 108,label%eR
i8 110,label%eb
]
eb:
%ec=load i8*,i8**%d,align 8
%ed=getelementptr inbounds i8,i8*%ec,i64 16
%ee=bitcast i8*%ed to i32*
%ef=load i32,i32*%ee,align 4
%eg=icmp eq i32%ef,0
br i1%eg,label%em,label%eh
eh:
store i8*null,i8**%c,align 8
%ei=sext i32%r to i64
%ej=getelementptr inbounds i8,i8*%S,i64%ei
%ek=bitcast i8*%ej to i8**
%el=load i8*,i8**%ek,align 8
br label%ex
em:
%en=getelementptr inbounds i8,i8*%ec,i64 20
%eo=bitcast i8*%en to i32*
%ep=load i32,i32*%eo,align 4
%eq=call i8*@sml_alloc(i32 inreg%ep)#0
%er=getelementptr inbounds i8,i8*%eq,i64 -4
%es=bitcast i8*%er to i32*
store i32%ep,i32*%es,align 4
%et=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%eu=sext i32%r to i64
%ev=getelementptr inbounds i8,i8*%et,i64%eu
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%eq,i8*%ev,i32%ep,i1 false)
%ew=load i8*,i8**%d,align 8
br label%ex
ex:
%ey=phi i8*[%ew,%em],[%ec,%eh]
%ez=phi i8*[%eq,%em],[%el,%eh]
store i8*%ez,i8**%c,align 8
%eA=getelementptr inbounds i8,i8*%ey,i64 8
%eB=bitcast i8*%eA to i8**
%eC=load i8*,i8**%eB,align 8
store i8*%eC,i8**%e,align 8
store i8*null,i8**%d,align 8
%eD=getelementptr inbounds i8,i8*%ey,i64 24
%eE=bitcast i8*%eD to i32*
%eF=load i32,i32*%eE,align 4
%eG=call i8*@sml_alloc(i32 inreg 12)#0
%eH=bitcast i8*%eG to i32*
%eI=getelementptr inbounds i8,i8*%eG,i64 -4
%eJ=bitcast i8*%eI to i32*
store i32 1342177288,i32*%eJ,align 4
store i32%eF,i32*%eH,align 4
%eK=getelementptr inbounds i8,i8*%eG,i64 4
%eL=bitcast i8*%eK to i32*
store i32 6,i32*%eL,align 4
%eM=getelementptr inbounds i8,i8*%eG,i64 8
%eN=bitcast i8*%eM to i32*
store i32 0,i32*%eN,align 4
%eO=load i8*,i8**%c,align 8
%eP=load i8*,i8**%e,align 8
%eQ=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%eP,i8*inreg%eG,i8*inreg%eO)
ret i8*%eQ
eR:
%eS=load i8*,i8**%d,align 8
%eT=getelementptr inbounds i8,i8*%eS,i64 16
%eU=bitcast i8*%eT to i32*
%eV=load i32,i32*%eU,align 4
%eW=icmp eq i32%eV,0
br i1%eW,label%e2,label%eX
eX:
store i8*null,i8**%c,align 8
%eY=sext i32%r to i64
%eZ=getelementptr inbounds i8,i8*%S,i64%eY
%e0=bitcast i8*%eZ to i8**
%e1=load i8*,i8**%e0,align 8
br label%fd
e2:
%e3=getelementptr inbounds i8,i8*%eS,i64 20
%e4=bitcast i8*%e3 to i32*
%e5=load i32,i32*%e4,align 4
%e6=call i8*@sml_alloc(i32 inreg%e5)#0
%e7=getelementptr inbounds i8,i8*%e6,i64 -4
%e8=bitcast i8*%e7 to i32*
store i32%e5,i32*%e8,align 4
%e9=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%fa=sext i32%r to i64
%fb=getelementptr inbounds i8,i8*%e9,i64%fa
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%e6,i8*%fb,i32%e5,i1 false)
%fc=load i8*,i8**%d,align 8
br label%fd
fd:
%fe=phi i8*[%fc,%e2],[%eS,%eX]
%ff=phi i8*[%e6,%e2],[%e1,%eX]
store i8*%ff,i8**%c,align 8
%fg=getelementptr inbounds i8,i8*%fe,i64 8
%fh=bitcast i8*%fg to i8**
%fi=load i8*,i8**%fh,align 8
store i8*%fi,i8**%e,align 8
store i8*null,i8**%d,align 8
%fj=getelementptr inbounds i8,i8*%fe,i64 24
%fk=bitcast i8*%fj to i32*
%fl=load i32,i32*%fk,align 4
%fm=call i8*@sml_alloc(i32 inreg 12)#0
%fn=bitcast i8*%fm to i32*
%fo=getelementptr inbounds i8,i8*%fm,i64 -4
%fp=bitcast i8*%fo to i32*
store i32 1342177288,i32*%fp,align 4
store i32%fl,i32*%fn,align 4
%fq=getelementptr inbounds i8,i8*%fm,i64 4
%fr=bitcast i8*%fq to i32*
store i32 5,i32*%fr,align 4
%fs=getelementptr inbounds i8,i8*%fm,i64 8
%ft=bitcast i8*%fs to i32*
store i32 0,i32*%ft,align 4
%fu=load i8*,i8**%c,align 8
%fv=load i8*,i8**%e,align 8
%fw=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%fv,i8*inreg%fm,i8*inreg%fu)
ret i8*%fw
fx:
%fy=getelementptr inbounds i8,i8*%U,i64 2
%fz=load i8,i8*%fy,align 1
%fA=icmp eq i8%fz,110
br i1%fA,label%fB,label%jq
fB:
%fC=load i8*,i8**%d,align 8
%fD=getelementptr inbounds i8,i8*%fC,i64 16
%fE=bitcast i8*%fD to i32*
%fF=load i32,i32*%fE,align 4
%fG=icmp eq i32%fF,0
br i1%fG,label%fM,label%fH
fH:
store i8*null,i8**%c,align 8
%fI=sext i32%r to i64
%fJ=getelementptr inbounds i8,i8*%S,i64%fI
%fK=bitcast i8*%fJ to i8**
%fL=load i8*,i8**%fK,align 8
br label%fX
fM:
%fN=getelementptr inbounds i8,i8*%fC,i64 20
%fO=bitcast i8*%fN to i32*
%fP=load i32,i32*%fO,align 4
%fQ=call i8*@sml_alloc(i32 inreg%fP)#0
%fR=getelementptr inbounds i8,i8*%fQ,i64 -4
%fS=bitcast i8*%fR to i32*
store i32%fP,i32*%fS,align 4
%fT=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%fU=sext i32%r to i64
%fV=getelementptr inbounds i8,i8*%fT,i64%fU
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%fQ,i8*%fV,i32%fP,i1 false)
%fW=load i8*,i8**%d,align 8
br label%fX
fX:
%fY=phi i8*[%fW,%fM],[%fC,%fH]
%fZ=phi i8*[%fQ,%fM],[%fL,%fH]
store i8*%fZ,i8**%c,align 8
%f0=getelementptr inbounds i8,i8*%fY,i64 8
%f1=bitcast i8*%f0 to i8**
%f2=load i8*,i8**%f1,align 8
store i8*%f2,i8**%e,align 8
store i8*null,i8**%d,align 8
%f3=getelementptr inbounds i8,i8*%fY,i64 24
%f4=bitcast i8*%f3 to i32*
%f5=load i32,i32*%f4,align 4
%f6=call i8*@sml_alloc(i32 inreg 12)#0
%f7=bitcast i8*%f6 to i32*
%f8=getelementptr inbounds i8,i8*%f6,i64 -4
%f9=bitcast i8*%f8 to i32*
store i32 1342177288,i32*%f9,align 4
store i32%f5,i32*%f7,align 4
%ga=getelementptr inbounds i8,i8*%f6,i64 4
%gb=bitcast i8*%ga to i32*
store i32 4,i32*%gb,align 4
%gc=getelementptr inbounds i8,i8*%f6,i64 8
%gd=bitcast i8*%gc to i32*
store i32 0,i32*%gd,align 4
%ge=load i8*,i8**%c,align 8
%gf=load i8*,i8**%e,align 8
%gg=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%gf,i8*inreg%f6,i8*inreg%ge)
ret i8*%gg
gh:
%gi=getelementptr inbounds i8,i8*%U,i64 1
%gj=load i8,i8*%gi,align 1
%gk=icmp eq i8%gj,101
br i1%gk,label%gl,label%jq
gl:
%gm=getelementptr inbounds i8,i8*%U,i64 2
%gn=load i8,i8*%gm,align 1
%go=icmp eq i8%gn,98
br i1%go,label%gp,label%jq
gp:
%gq=load i8*,i8**%d,align 8
%gr=getelementptr inbounds i8,i8*%gq,i64 16
%gs=bitcast i8*%gr to i32*
%gt=load i32,i32*%gs,align 4
%gu=icmp eq i32%gt,0
br i1%gu,label%gA,label%gv
gv:
store i8*null,i8**%c,align 8
%gw=sext i32%r to i64
%gx=getelementptr inbounds i8,i8*%S,i64%gw
%gy=bitcast i8*%gx to i8**
%gz=load i8*,i8**%gy,align 8
br label%gL
gA:
%gB=getelementptr inbounds i8,i8*%gq,i64 20
%gC=bitcast i8*%gB to i32*
%gD=load i32,i32*%gC,align 4
%gE=call i8*@sml_alloc(i32 inreg%gD)#0
%gF=getelementptr inbounds i8,i8*%gE,i64 -4
%gG=bitcast i8*%gF to i32*
store i32%gD,i32*%gG,align 4
%gH=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%gI=sext i32%r to i64
%gJ=getelementptr inbounds i8,i8*%gH,i64%gI
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%gE,i8*%gJ,i32%gD,i1 false)
%gK=load i8*,i8**%d,align 8
br label%gL
gL:
%gM=phi i8*[%gK,%gA],[%gq,%gv]
%gN=phi i8*[%gE,%gA],[%gz,%gv]
store i8*%gN,i8**%c,align 8
%gO=getelementptr inbounds i8,i8*%gM,i64 8
%gP=bitcast i8*%gO to i8**
%gQ=load i8*,i8**%gP,align 8
store i8*%gQ,i8**%e,align 8
store i8*null,i8**%d,align 8
%gR=getelementptr inbounds i8,i8*%gM,i64 24
%gS=bitcast i8*%gR to i32*
%gT=load i32,i32*%gS,align 4
%gU=call i8*@sml_alloc(i32 inreg 12)#0
%gV=bitcast i8*%gU to i32*
%gW=getelementptr inbounds i8,i8*%gU,i64 -4
%gX=bitcast i8*%gW to i32*
store i32 1342177288,i32*%gX,align 4
store i32%gT,i32*%gV,align 4
%gY=getelementptr inbounds i8,i8*%gU,i64 4
%gZ=bitcast i8*%gY to i32*
store i32 3,i32*%gZ,align 4
%g0=getelementptr inbounds i8,i8*%gU,i64 8
%g1=bitcast i8*%g0 to i32*
store i32 0,i32*%g1,align 4
%g2=load i8*,i8**%c,align 8
%g3=load i8*,i8**%e,align 8
%g4=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%g3,i8*inreg%gU,i8*inreg%g2)
ret i8*%g4
g5:
%g6=getelementptr inbounds i8,i8*%U,i64 1
%g7=load i8,i8*%g6,align 1
%g8=icmp eq i8%g7,101
br i1%g8,label%g9,label%jq
g9:
%ha=getelementptr inbounds i8,i8*%U,i64 2
%hb=load i8,i8*%ha,align 1
%hc=icmp eq i8%hb,99
br i1%hc,label%hd,label%jq
hd:
%he=load i8*,i8**%d,align 8
%hf=getelementptr inbounds i8,i8*%he,i64 16
%hg=bitcast i8*%hf to i32*
%hh=load i32,i32*%hg,align 4
%hi=icmp eq i32%hh,0
br i1%hi,label%ho,label%hj
hj:
store i8*null,i8**%c,align 8
%hk=sext i32%r to i64
%hl=getelementptr inbounds i8,i8*%S,i64%hk
%hm=bitcast i8*%hl to i8**
%hn=load i8*,i8**%hm,align 8
br label%hz
ho:
%hp=getelementptr inbounds i8,i8*%he,i64 20
%hq=bitcast i8*%hp to i32*
%hr=load i32,i32*%hq,align 4
%hs=call i8*@sml_alloc(i32 inreg%hr)#0
%ht=getelementptr inbounds i8,i8*%hs,i64 -4
%hu=bitcast i8*%ht to i32*
store i32%hr,i32*%hu,align 4
%hv=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%hw=sext i32%r to i64
%hx=getelementptr inbounds i8,i8*%hv,i64%hw
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%hs,i8*%hx,i32%hr,i1 false)
%hy=load i8*,i8**%d,align 8
br label%hz
hz:
%hA=phi i8*[%hy,%ho],[%he,%hj]
%hB=phi i8*[%hs,%ho],[%hn,%hj]
store i8*%hB,i8**%c,align 8
%hC=getelementptr inbounds i8,i8*%hA,i64 8
%hD=bitcast i8*%hC to i8**
%hE=load i8*,i8**%hD,align 8
store i8*%hE,i8**%e,align 8
store i8*null,i8**%d,align 8
%hF=getelementptr inbounds i8,i8*%hA,i64 24
%hG=bitcast i8*%hF to i32*
%hH=load i32,i32*%hG,align 4
%hI=call i8*@sml_alloc(i32 inreg 12)#0
%hJ=bitcast i8*%hI to i32*
%hK=getelementptr inbounds i8,i8*%hI,i64 -4
%hL=bitcast i8*%hK to i32*
store i32 1342177288,i32*%hL,align 4
store i32%hH,i32*%hJ,align 4
%hM=getelementptr inbounds i8,i8*%hI,i64 4
%hN=bitcast i8*%hM to i32*
store i32 2,i32*%hN,align 4
%hO=getelementptr inbounds i8,i8*%hI,i64 8
%hP=bitcast i8*%hO to i32*
store i32 0,i32*%hP,align 4
%hQ=load i8*,i8**%c,align 8
%hR=load i8*,i8**%e,align 8
%hS=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%hR,i8*inreg%hI,i8*inreg%hQ)
ret i8*%hS
hT:
%hU=getelementptr inbounds i8,i8*%U,i64 1
%hV=load i8,i8*%hU,align 1
switch i8%hV,label%jq[
i8 112,label%iG
i8 117,label%hW
]
hW:
%hX=getelementptr inbounds i8,i8*%U,i64 2
%hY=load i8,i8*%hX,align 1
%hZ=icmp eq i8%hY,103
br i1%hZ,label%h0,label%jq
h0:
%h1=load i8*,i8**%d,align 8
%h2=getelementptr inbounds i8,i8*%h1,i64 16
%h3=bitcast i8*%h2 to i32*
%h4=load i32,i32*%h3,align 4
%h5=icmp eq i32%h4,0
br i1%h5,label%ib,label%h6
h6:
store i8*null,i8**%c,align 8
%h7=sext i32%r to i64
%h8=getelementptr inbounds i8,i8*%S,i64%h7
%h9=bitcast i8*%h8 to i8**
%ia=load i8*,i8**%h9,align 8
br label%im
ib:
%ic=getelementptr inbounds i8,i8*%h1,i64 20
%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**%c,align 8
store i8*null,i8**%c,align 8
%ij=sext i32%r to i64
%ik=getelementptr inbounds i8,i8*%ii,i64%ij
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%if,i8*%ik,i32%ie,i1 false)
%il=load i8*,i8**%d,align 8
br label%im
im:
%in=phi i8*[%il,%ib],[%h1,%h6]
%io=phi i8*[%if,%ib],[%ia,%h6]
store i8*%io,i8**%c,align 8
%ip=getelementptr inbounds i8,i8*%in,i64 8
%iq=bitcast i8*%ip to i8**
%ir=load i8*,i8**%iq,align 8
store i8*%ir,i8**%e,align 8
store i8*null,i8**%d,align 8
%is=getelementptr inbounds i8,i8*%in,i64 24
%it=bitcast i8*%is to i32*
%iu=load i32,i32*%it,align 4
%iv=call i8*@sml_alloc(i32 inreg 12)#0
%iw=bitcast i8*%iv to i32*
%ix=getelementptr inbounds i8,i8*%iv,i64 -4
%iy=bitcast i8*%ix to i32*
store i32 1342177288,i32*%iy,align 4
store i32%iu,i32*%iw,align 4
%iz=getelementptr inbounds i8,i8*%iv,i64 4
%iA=bitcast i8*%iz to i32*
store i32 1,i32*%iA,align 4
%iB=getelementptr inbounds i8,i8*%iv,i64 8
%iC=bitcast i8*%iB to i32*
store i32 0,i32*%iC,align 4
%iD=load i8*,i8**%c,align 8
%iE=load i8*,i8**%e,align 8
%iF=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%iE,i8*inreg%iv,i8*inreg%iD)
ret i8*%iF
iG:
%iH=getelementptr inbounds i8,i8*%U,i64 2
%iI=load i8,i8*%iH,align 1
%iJ=icmp eq i8%iI,114
br i1%iJ,label%iK,label%jq
iK:
%iL=load i8*,i8**%d,align 8
%iM=getelementptr inbounds i8,i8*%iL,i64 16
%iN=bitcast i8*%iM to i32*
%iO=load i32,i32*%iN,align 4
%iP=icmp eq i32%iO,0
br i1%iP,label%iV,label%iQ
iQ:
store i8*null,i8**%c,align 8
%iR=sext i32%r to i64
%iS=getelementptr inbounds i8,i8*%S,i64%iR
%iT=bitcast i8*%iS to i8**
%iU=load i8*,i8**%iT,align 8
br label%i6
iV:
%iW=getelementptr inbounds i8,i8*%iL,i64 20
%iX=bitcast i8*%iW to i32*
%iY=load i32,i32*%iX,align 4
%iZ=call i8*@sml_alloc(i32 inreg%iY)#0
%i0=getelementptr inbounds i8,i8*%iZ,i64 -4
%i1=bitcast i8*%i0 to i32*
store i32%iY,i32*%i1,align 4
%i2=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%i3=sext i32%r to i64
%i4=getelementptr inbounds i8,i8*%i2,i64%i3
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%iZ,i8*%i4,i32%iY,i1 false)
%i5=load i8*,i8**%d,align 8
br label%i6
i6:
%i7=phi i8*[%i5,%iV],[%iL,%iQ]
%i8=phi i8*[%iZ,%iV],[%iU,%iQ]
store i8*%i8,i8**%c,align 8
%i9=getelementptr inbounds i8,i8*%i7,i64 8
%ja=bitcast i8*%i9 to i8**
%jb=load i8*,i8**%ja,align 8
store i8*%jb,i8**%e,align 8
store i8*null,i8**%d,align 8
%jc=getelementptr inbounds i8,i8*%i7,i64 24
%jd=bitcast i8*%jc to i32*
%je=load i32,i32*%jd,align 4
%jf=call i8*@sml_alloc(i32 inreg 12)#0
%jg=bitcast i8*%jf to i32*
%jh=getelementptr inbounds i8,i8*%jf,i64 -4
%ji=bitcast i8*%jh to i32*
store i32 1342177288,i32*%ji,align 4
store i32%je,i32*%jg,align 4
%jj=getelementptr inbounds i8,i8*%jf,i64 4
%jk=bitcast i8*%jj to i32*
store i32 0,i32*%jk,align 4
%jl=getelementptr inbounds i8,i8*%jf,i64 8
%jm=bitcast i8*%jl to i32*
store i32 0,i32*%jm,align 4
%jn=load i8*,i8**%c,align 8
%jo=load i8*,i8**%e,align 8
%jp=tail call fastcc i8*@_SMLLL4mday_438(i8*inreg%jo,i8*inreg%jf,i8*inreg%jn)
ret i8*%jp
jq:
ret i8*null
}
define internal fastcc i8*@_SMLLLN4Date4scanE_440(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
o:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
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
call void@llvm.gcroot(i8**%h,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%i=load atomic i32,i32*@sml_check_flag unordered,align 4
%j=icmp eq i32%i,0
br i1%j,label%m,label%k
k:
call void@sml_check(i32 inreg%i)
%l=load i8*,i8**%d,align 8
br label%m
m:
%n=phi i8*[%l,%k],[%a,%o]
%p=getelementptr inbounds i8,i8*%n,i64 20
%q=bitcast i8*%p to i32*
%r=load i32,i32*%q,align 4
%s=sub i32 0,%r
%t=and i32%r,%s
%u=add i32%r,7
%v=and i32%u,%s
%w=bitcast i8*%n to i8**
%x=load i8*,i8**%w,align 8
store i8*%x,i8**%e,align 8
%y=getelementptr inbounds i8,i8*%n,i64 16
%z=bitcast i8*%y to i32*
%A=load i32,i32*%z,align 4
%B=call i8*@sml_alloc(i32 inreg 20)#0
%C=getelementptr inbounds i8,i8*%B,i64 -4
%D=bitcast i8*%C to i32*
store i32 1342177296,i32*%D,align 4
store i8*%B,i8**%g,align 8
%E=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%F=bitcast i8*%B to i8**
store i8*%E,i8**%F,align 8
%G=getelementptr inbounds i8,i8*%B,i64 8
%H=bitcast i8*%G to i32*
store i32%A,i32*%H,align 4
%I=getelementptr inbounds i8,i8*%B,i64 12
%J=bitcast i8*%I to i32*
store i32%r,i32*%J,align 4
%K=getelementptr inbounds i8,i8*%B,i64 16
%L=bitcast i8*%K to i32*
store i32 1,i32*%L,align 4
%M=call i8*@sml_alloc(i32 inreg 28)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177304,i32*%O,align 4
%P=load i8*,i8**%g,align 8
%Q=bitcast i8*%M to i8**
store i8*%P,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%M,i64 8
%S=bitcast i8*%R to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL7get2dig_432 to void(...)*),void(...)**%S,align 8
%T=getelementptr inbounds i8,i8*%M,i64 16
%U=bitcast i8*%T to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLL7get2dig_432 to void(...)*),void(...)**%U,align 8
%V=getelementptr inbounds i8,i8*%M,i64 24
%W=bitcast i8*%V to i32*
store i32 1,i32*%W,align 4
%X=bitcast i8**%d to i8***
%Y=load i8**,i8***%X,align 8
%Z=load i8*,i8**%Y,align 8
store i8*%Z,i8**%e,align 8
%aa=getelementptr inbounds i8*,i8**%Y,i64 1
%ab=load i8*,i8**%aa,align 8
store i8*%ab,i8**%f,align 8
%ac=bitcast i8**%Y to i8*
%ad=getelementptr inbounds i8*,i8**%Y,i64 2
%ae=bitcast i8**%ad to i32*
%af=load i32,i32*%ae,align 4
%ag=getelementptr inbounds i8,i8*%ac,i64 20
%ah=bitcast i8*%ag to i32*
%ai=load i32,i32*%ah,align 4
%aj=call i8*@sml_alloc(i32 inreg 36)#0
%ak=getelementptr inbounds i8,i8*%aj,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177312,i32*%al,align 4
store i8*%aj,i8**%h,align 8
%am=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%an=bitcast i8*%aj to i8**
store i8*%am,i8**%an,align 8
%ao=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%ap=getelementptr inbounds i8,i8*%aj,i64 8
%aq=bitcast i8*%ap to i8**
store i8*%ao,i8**%aq,align 8
%ar=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%as=getelementptr inbounds i8,i8*%aj,i64 16
%at=bitcast i8*%as to i8**
store i8*%ar,i8**%at,align 8
%au=getelementptr inbounds i8,i8*%aj,i64 24
%av=bitcast i8*%au to i32*
store i32%af,i32*%av,align 4
%aw=getelementptr inbounds i8,i8*%aj,i64 28
%ax=bitcast i8*%aw to i32*
store i32%ai,i32*%ax,align 4
%ay=getelementptr inbounds i8,i8*%aj,i64 32
%az=bitcast i8*%ay to i32*
store i32 7,i32*%az,align 4
%aA=call i8*@sml_alloc(i32 inreg 28)#0
%aB=getelementptr inbounds i8,i8*%aA,i64 -4
%aC=bitcast i8*%aB to i32*
store i32 1342177304,i32*%aC,align 4
%aD=load i8*,i8**%h,align 8
%aE=bitcast i8*%aA to i8**
store i8*%aD,i8**%aE,align 8
%aF=getelementptr inbounds i8,i8*%aA,i64 8
%aG=bitcast i8*%aF to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLL4mday_438 to void(...)*),void(...)**%aG,align 8
%aH=getelementptr inbounds i8,i8*%aA,i64 16
%aI=bitcast i8*%aH to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLL4mday_438 to void(...)*),void(...)**%aI,align 8
%aJ=getelementptr inbounds i8,i8*%aA,i64 24
%aK=bitcast i8*%aJ to i32*
store i32 1,i32*%aK,align 4
%aL=load i8*,i8**%d,align 8
%aM=getelementptr inbounds i8,i8*%aL,i64 16
%aN=bitcast i8*%aM to i32*
%aO=load i32,i32*%aN,align 4
%aP=getelementptr inbounds i8,i8*%aL,i64 20
%aQ=bitcast i8*%aP to i32*
%aR=load i32,i32*%aQ,align 4
%aS=call fastcc i8*@_SMLFN9StringCvt6splitlE(i32 inreg%aO,i32 inreg%aR)
%aT=getelementptr inbounds i8,i8*%aS,i64 16
%aU=bitcast i8*%aT to i8*(i8*,i8*)**
%aV=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aU,align 8
%aW=bitcast i8*%aS to i8**
%aX=load i8*,i8**%aW,align 8
%aY=load i8*,i8**@_SMLZN4Char7isAlphaE,align 8
%aZ=call fastcc i8*%aV(i8*inreg%aX,i8*inreg%aY)
%a0=getelementptr inbounds i8,i8*%aZ,i64 16
%a1=bitcast i8*%a0 to i8*(i8*,i8*)**
%a2=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%a1,align 8
%a3=bitcast i8*%aZ to i8**
%a4=load i8*,i8**%a3,align 8
%a5=load i8**,i8***%X,align 8
%a6=load i8*,i8**%a5,align 8
%a7=call fastcc i8*%a2(i8*inreg%a4,i8*inreg%a6)
%a8=getelementptr inbounds i8,i8*%a7,i64 16
%a9=bitcast i8*%a8 to i8*(i8*,i8*)**
%ba=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%a9,align 8
%bb=bitcast i8*%a7 to i8**
%bc=load i8*,i8**%bb,align 8
%bd=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%be=call fastcc i8*%ba(i8*inreg%bc,i8*inreg%bd)
store i8*%be,i8**%c,align 8
%bf=bitcast i8*%be to i8**
%bg=load i8*,i8**%bf,align 8
%bh=getelementptr inbounds i8,i8*%bg,i64 -4
%bi=bitcast i8*%bh to i32*
%bj=load i32,i32*%bi,align 4
%bk=and i32%bj,268435455
%bl=icmp eq i32%bk,4
br i1%bl,label%bm,label%eJ
bm:
%bn=load i8,i8*%bg,align 1
switch i8%bn,label%eJ[
i8 70,label%ee
i8 77,label%dJ
i8 83,label%cO
i8 84,label%bT
i8 87,label%bo
]
bo:
%bp=getelementptr inbounds i8,i8*%bg,i64 1
%bq=load i8,i8*%bp,align 1
%br=icmp eq i8%bq,101
br i1%br,label%bs,label%eJ
bs:
%bt=getelementptr inbounds i8,i8*%bg,i64 2
%bu=load i8,i8*%bt,align 1
%bv=icmp eq i8%bu,100
br i1%bv,label%bw,label%eJ
bw:
%bx=load i8*,i8**%d,align 8
%by=getelementptr inbounds i8,i8*%bx,i64 16
%bz=bitcast i8*%by to i32*
%bA=load i32,i32*%bz,align 4
%bB=icmp eq i32%bA,0
br i1%bB,label%bH,label%bC
bC:
store i8*null,i8**%c,align 8
%bD=sext i32%v to i64
%bE=getelementptr inbounds i8,i8*%be,i64%bD
%bF=bitcast i8*%bE to i8**
%bG=load i8*,i8**%bF,align 8
br label%bR
bH:
%bI=getelementptr inbounds i8,i8*%bx,i64 20
%bJ=bitcast i8*%bI to i32*
%bK=load i32,i32*%bJ,align 4
%bL=call i8*@sml_alloc(i32 inreg%bK)#0
%bM=getelementptr inbounds i8,i8*%bL,i64 -4
%bN=bitcast i8*%bM to i32*
store i32%bK,i32*%bN,align 4
%bO=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bP=sext i32%v to i64
%bQ=getelementptr inbounds i8,i8*%bO,i64%bP
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%bL,i8*%bQ,i32%bK,i1 false)
br label%bR
bR:
%bS=phi i8*[%bG,%bC],[%bL,%bH]
store i8*%bS,i8**%c,align 8
br label%eK
bT:
%bU=getelementptr inbounds i8,i8*%bg,i64 1
%bV=load i8,i8*%bU,align 1
switch i8%bV,label%eJ[
i8 104,label%cn
i8 117,label%bW
]
bW:
%bX=getelementptr inbounds i8,i8*%bg,i64 2
%bY=load i8,i8*%bX,align 1
%bZ=icmp eq i8%bY,101
br i1%bZ,label%b0,label%eJ
b0:
%b1=load i8*,i8**%d,align 8
%b2=getelementptr inbounds i8,i8*%b1,i64 16
%b3=bitcast i8*%b2 to i32*
%b4=load i32,i32*%b3,align 4
%b5=icmp eq i32%b4,0
br i1%b5,label%cb,label%b6
b6:
store i8*null,i8**%c,align 8
%b7=sext i32%v to i64
%b8=getelementptr inbounds i8,i8*%be,i64%b7
%b9=bitcast i8*%b8 to i8**
%ca=load i8*,i8**%b9,align 8
br label%cl
cb:
%cc=getelementptr inbounds i8,i8*%b1,i64 20
%cd=bitcast i8*%cc to i32*
%ce=load i32,i32*%cd,align 4
%cf=call i8*@sml_alloc(i32 inreg%ce)#0
%cg=getelementptr inbounds i8,i8*%cf,i64 -4
%ch=bitcast i8*%cg to i32*
store i32%ce,i32*%ch,align 4
%ci=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cj=sext i32%v to i64
%ck=getelementptr inbounds i8,i8*%ci,i64%cj
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cf,i8*%ck,i32%ce,i1 false)
br label%cl
cl:
%cm=phi i8*[%ca,%b6],[%cf,%cb]
store i8*%cm,i8**%c,align 8
br label%eK
cn:
%co=getelementptr inbounds i8,i8*%bg,i64 2
%cp=load i8,i8*%co,align 1
%cq=icmp eq i8%cp,117
br i1%cq,label%cr,label%eJ
cr:
%cs=load i8*,i8**%d,align 8
%ct=getelementptr inbounds i8,i8*%cs,i64 16
%cu=bitcast i8*%ct to i32*
%cv=load i32,i32*%cu,align 4
%cw=icmp eq i32%cv,0
br i1%cw,label%cC,label%cx
cx:
store i8*null,i8**%c,align 8
%cy=sext i32%v to i64
%cz=getelementptr inbounds i8,i8*%be,i64%cy
%cA=bitcast i8*%cz to i8**
%cB=load i8*,i8**%cA,align 8
br label%cM
cC:
%cD=getelementptr inbounds i8,i8*%cs,i64 20
%cE=bitcast i8*%cD to i32*
%cF=load i32,i32*%cE,align 4
%cG=call i8*@sml_alloc(i32 inreg%cF)#0
%cH=getelementptr inbounds i8,i8*%cG,i64 -4
%cI=bitcast i8*%cH to i32*
store i32%cF,i32*%cI,align 4
%cJ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cK=sext i32%v to i64
%cL=getelementptr inbounds i8,i8*%cJ,i64%cK
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%cG,i8*%cL,i32%cF,i1 false)
br label%cM
cM:
%cN=phi i8*[%cB,%cx],[%cG,%cC]
store i8*%cN,i8**%c,align 8
br label%eK
cO:
%cP=getelementptr inbounds i8,i8*%bg,i64 1
%cQ=load i8,i8*%cP,align 1
switch i8%cQ,label%eJ[
i8 97,label%di
i8 117,label%cR
]
cR:
%cS=getelementptr inbounds i8,i8*%bg,i64 2
%cT=load i8,i8*%cS,align 1
%cU=icmp eq i8%cT,110
br i1%cU,label%cV,label%eJ
cV:
%cW=load i8*,i8**%d,align 8
%cX=getelementptr inbounds i8,i8*%cW,i64 16
%cY=bitcast i8*%cX to i32*
%cZ=load i32,i32*%cY,align 4
%c0=icmp eq i32%cZ,0
br i1%c0,label%c6,label%c1
c1:
store i8*null,i8**%c,align 8
%c2=sext i32%v to i64
%c3=getelementptr inbounds i8,i8*%be,i64%c2
%c4=bitcast i8*%c3 to i8**
%c5=load i8*,i8**%c4,align 8
br label%dg
c6:
%c7=getelementptr inbounds i8,i8*%cW,i64 20
%c8=bitcast i8*%c7 to i32*
%c9=load i32,i32*%c8,align 4
%da=call i8*@sml_alloc(i32 inreg%c9)#0
%db=getelementptr inbounds i8,i8*%da,i64 -4
%dc=bitcast i8*%db to i32*
store i32%c9,i32*%dc,align 4
%dd=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%de=sext i32%v to i64
%df=getelementptr inbounds i8,i8*%dd,i64%de
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%da,i8*%df,i32%c9,i1 false)
br label%dg
dg:
%dh=phi i8*[%c5,%c1],[%da,%c6]
store i8*%dh,i8**%c,align 8
br label%eK
di:
%dj=getelementptr inbounds i8,i8*%bg,i64 2
%dk=load i8,i8*%dj,align 1
%dl=icmp eq i8%dk,116
br i1%dl,label%dm,label%eJ
dm:
%dn=load i8*,i8**%d,align 8
%do=getelementptr inbounds i8,i8*%dn,i64 16
%dp=bitcast i8*%do to i32*
%dq=load i32,i32*%dp,align 4
%dr=icmp eq i32%dq,0
br i1%dr,label%dx,label%ds
ds:
store i8*null,i8**%c,align 8
%dt=sext i32%v to i64
%du=getelementptr inbounds i8,i8*%be,i64%dt
%dv=bitcast i8*%du to i8**
%dw=load i8*,i8**%dv,align 8
br label%dH
dx:
%dy=getelementptr inbounds i8,i8*%dn,i64 20
%dz=bitcast i8*%dy to i32*
%dA=load i32,i32*%dz,align 4
%dB=call i8*@sml_alloc(i32 inreg%dA)#0
%dC=getelementptr inbounds i8,i8*%dB,i64 -4
%dD=bitcast i8*%dC to i32*
store i32%dA,i32*%dD,align 4
%dE=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dF=sext i32%v to i64
%dG=getelementptr inbounds i8,i8*%dE,i64%dF
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%dB,i8*%dG,i32%dA,i1 false)
br label%dH
dH:
%dI=phi i8*[%dw,%ds],[%dB,%dx]
store i8*%dI,i8**%c,align 8
br label%eK
dJ:
%dK=getelementptr inbounds i8,i8*%bg,i64 1
%dL=load i8,i8*%dK,align 1
%dM=icmp eq i8%dL,111
br i1%dM,label%dN,label%eJ
dN:
%dO=getelementptr inbounds i8,i8*%bg,i64 2
%dP=load i8,i8*%dO,align 1
%dQ=icmp eq i8%dP,110
br i1%dQ,label%dR,label%eJ
dR:
%dS=load i8*,i8**%d,align 8
%dT=getelementptr inbounds i8,i8*%dS,i64 16
%dU=bitcast i8*%dT to i32*
%dV=load i32,i32*%dU,align 4
%dW=icmp eq i32%dV,0
br i1%dW,label%d2,label%dX
dX:
store i8*null,i8**%c,align 8
%dY=sext i32%v to i64
%dZ=getelementptr inbounds i8,i8*%be,i64%dY
%d0=bitcast i8*%dZ to i8**
%d1=load i8*,i8**%d0,align 8
br label%ec
d2:
%d3=getelementptr inbounds i8,i8*%dS,i64 20
%d4=bitcast i8*%d3 to i32*
%d5=load i32,i32*%d4,align 4
%d6=call i8*@sml_alloc(i32 inreg%d5)#0
%d7=getelementptr inbounds i8,i8*%d6,i64 -4
%d8=bitcast i8*%d7 to i32*
store i32%d5,i32*%d8,align 4
%d9=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ea=sext i32%v to i64
%eb=getelementptr inbounds i8,i8*%d9,i64%ea
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%d6,i8*%eb,i32%d5,i1 false)
br label%ec
ec:
%ed=phi i8*[%d1,%dX],[%d6,%d2]
store i8*%ed,i8**%c,align 8
br label%eK
ee:
%ef=getelementptr inbounds i8,i8*%bg,i64 1
%eg=load i8,i8*%ef,align 1
%eh=icmp eq i8%eg,114
br i1%eh,label%ei,label%eJ
ei:
%ej=getelementptr inbounds i8,i8*%bg,i64 2
%ek=load i8,i8*%ej,align 1
%el=icmp eq i8%ek,105
br i1%el,label%em,label%eJ
em:
%en=load i8*,i8**%d,align 8
%eo=getelementptr inbounds i8,i8*%en,i64 16
%ep=bitcast i8*%eo to i32*
%eq=load i32,i32*%ep,align 4
%er=icmp eq i32%eq,0
br i1%er,label%ex,label%es
es:
store i8*null,i8**%c,align 8
%et=sext i32%v to i64
%eu=getelementptr inbounds i8,i8*%be,i64%et
%ev=bitcast i8*%eu to i8**
%ew=load i8*,i8**%ev,align 8
br label%eH
ex:
%ey=getelementptr inbounds i8,i8*%en,i64 20
%ez=bitcast i8*%ey to i32*
%eA=load i32,i32*%ez,align 4
%eB=call i8*@sml_alloc(i32 inreg%eA)#0
%eC=getelementptr inbounds i8,i8*%eB,i64 -4
%eD=bitcast i8*%eC to i32*
store i32%eA,i32*%eD,align 4
%eE=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%eF=sext i32%v to i64
%eG=getelementptr inbounds i8,i8*%eE,i64%eF
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%eB,i8*%eG,i32%eA,i1 false)
br label%eH
eH:
%eI=phi i8*[%ew,%es],[%eB,%ex]
store i8*%eI,i8**%c,align 8
br label%eK
eJ:
ret i8*null
eK:
%eL=phi i32[6,%bR],[5,%cl],[4,%cM],[3,%dg],[2,%dH],[1,%ec],[0,%eH]
%eM=load i8**,i8***%X,align 8
%eN=load i8*,i8**%eM,align 8
store i8*%eN,i8**%e,align 8
%eO=bitcast i8**%eM to i8*
%eP=getelementptr inbounds i8*,i8**%eM,i64 2
%eQ=bitcast i8**%eP to i32*
%eR=load i32,i32*%eQ,align 4
%eS=getelementptr inbounds i8,i8*%eO,i64 20
%eT=bitcast i8*%eS to i32*
%eU=load i32,i32*%eT,align 4
%eV=call i8*@sml_alloc(i32 inreg 36)#0
%eW=getelementptr inbounds i8,i8*%eV,i64 -4
%eX=bitcast i8*%eW to i32*
store i32 1342177312,i32*%eX,align 4
store i8*%eV,i8**%f,align 8
%eY=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%eZ=bitcast i8*%eV to i8**
store i8*%eY,i8**%eZ,align 8
%e0=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%e1=getelementptr inbounds i8,i8*%eV,i64 8
%e2=bitcast i8*%e1 to i8**
store i8*%e0,i8**%e2,align 8
%e3=getelementptr inbounds i8,i8*%eV,i64 16
%e4=bitcast i8*%e3 to i32*
store i32%eR,i32*%e4,align 4
%e5=getelementptr inbounds i8,i8*%eV,i64 20
%e6=bitcast i8*%e5 to i32*
store i32%eU,i32*%e6,align 4
%e7=getelementptr inbounds i8,i8*%eV,i64 24
%e8=bitcast i8*%e7 to i32*
store i32%eL,i32*%e8,align 4
%e9=getelementptr inbounds i8,i8*%eV,i64 32
%fa=bitcast i8*%e9 to i32*
store i32 3,i32*%fa,align 4
%fb=call i8*@sml_alloc(i32 inreg 28)#0
%fc=getelementptr inbounds i8,i8*%fb,i64 -4
%fd=bitcast i8*%fc to i32*
store i32 1342177304,i32*%fd,align 4
%fe=load i8*,i8**%f,align 8
%ff=bitcast i8*%fb to i8**
store i8*%fe,i8**%ff,align 8
%fg=getelementptr inbounds i8,i8*%fb,i64 8
%fh=bitcast i8*%fg to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4scanE_439 to void(...)*),void(...)**%fh,align 8
%fi=getelementptr inbounds i8,i8*%fb,i64 16
%fj=bitcast i8*%fi to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4scanE_439 to void(...)*),void(...)**%fj,align 8
%fk=getelementptr inbounds i8,i8*%fb,i64 24
%fl=bitcast i8*%fk to i32*
store i32 1,i32*%fl,align 4
%fm=load i8**,i8***%X,align 8
%fn=load i8*,i8**%fm,align 8
%fo=getelementptr inbounds i8,i8*%fn,i64 16
%fp=bitcast i8*%fo to i8*(i8*,i8*)**
%fq=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%fp,align 8
%fr=bitcast i8*%fn to i8**
%fs=load i8*,i8**%fr,align 8
%ft=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%fu=call fastcc i8*%fq(i8*inreg%fs,i8*inreg%ft)
%fv=icmp eq i8*%fu,null
br i1%fv,label%eJ,label%fw
fw:
%fx=bitcast i8*%fu to i8**
%fy=load i8*,i8**%fx,align 8
store i8*%fy,i8**%c,align 8
%fz=load i8,i8*%fy,align 1
%fA=load i8*,i8**%d,align 8
%fB=getelementptr inbounds i8,i8*%fA,i64 16
%fC=bitcast i8*%fB to i32*
%fD=load i32,i32*%fC,align 4
%fE=icmp eq i32%fD,0
br i1%fE,label%fK,label%fF
fF:
%fG=sext i32%t to i64
%fH=getelementptr inbounds i8,i8*%fy,i64%fG
%fI=bitcast i8*%fH to i8**
%fJ=load i8*,i8**%fI,align 8
br label%fU
fK:
store i8*null,i8**%d,align 8
%fL=getelementptr inbounds i8,i8*%fA,i64 20
%fM=bitcast i8*%fL to i32*
%fN=load i32,i32*%fM,align 4
%fO=call i8*@sml_alloc(i32 inreg%fN)#0
%fP=getelementptr inbounds i8,i8*%fO,i64 -4
%fQ=bitcast i8*%fP to i32*
store i32%fN,i32*%fQ,align 4
%fR=load i8*,i8**%c,align 8
%fS=sext i32%t to i64
%fT=getelementptr inbounds i8,i8*%fR,i64%fS
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%fO,i8*%fT,i32%fN,i1 false)
br label%fU
fU:
%fV=phi i8*[%fJ,%fF],[%fO,%fK]
%fW=icmp eq i8%fz,32
br i1%fW,label%fX,label%eJ
fX:
%fY=load i8*,i8**%f,align 8
%fZ=tail call fastcc i8*@_SMLLLN4Date4scanE_439(i8*inreg%fY,i8*inreg%fV)
ret i8*%fZ
}
define internal fastcc i8*@_SMLLLN4Date4scanE_441(i8*inreg%a,i32 inreg%b,i32 inreg%c,i8*inreg%d)#4 gc"smlsharp"{
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
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*%d,i8**%e,align 8
%h=bitcast i8*%a to i8**
%i=load i8*,i8**%h,align 8
store i8*%i,i8**%f,align 8
%j=call i8*@sml_alloc(i32 inreg 28)#0
%k=getelementptr inbounds i8,i8*%j,i64 -4
%l=bitcast i8*%k to i32*
store i32 1342177304,i32*%l,align 4
store i8*%j,i8**%g,align 8
%m=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%n=bitcast i8*%j to i8**
store i8*%m,i8**%n,align 8
%o=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%p=getelementptr inbounds i8,i8*%j,i64 8
%q=bitcast i8*%p to i8**
store i8*%o,i8**%q,align 8
%r=getelementptr inbounds i8,i8*%j,i64 16
%s=bitcast i8*%r to i32*
store i32%b,i32*%s,align 4
%t=getelementptr inbounds i8,i8*%j,i64 20
%u=bitcast i8*%t to i32*
store i32%c,i32*%u,align 4
%v=getelementptr inbounds i8,i8*%j,i64 24
%w=bitcast i8*%v to i32*
store i32 3,i32*%w,align 4
%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
%A=load i8*,i8**%g,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 void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4scanE_440 to void(...)*),void(...)**%D,align 8
%E=getelementptr inbounds i8,i8*%x,i64 16
%F=bitcast i8*%E to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4scanE_440 to void(...)*),void(...)**%F,align 8
%G=getelementptr inbounds i8,i8*%x,i64 24
%H=bitcast i8*%G to i32*
store i32 1,i32*%H,align 4
ret i8*%x
}
define internal fastcc i8*@_SMLLLN4Date10fromStringE_442(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%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%g,label%i
g:
%h=bitcast i8*%a to i8**
br label%m
i:
call void@sml_check(i32 inreg%e)
%j=load i8*,i8**%d,align 8
%k=bitcast i8**%c to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%i],[%h,%g]
%o=phi i8*[%j,%i],[%b,%g]
%p=load i8*,i8**%n,align 8
%q=call fastcc i8*@_SMLLLN4Date4scanE_441(i8*inreg%p,i32 inreg 0,i32 inreg 4,i8*inreg%o)
ret i8*%q
}
define internal fastcc i8*@_SMLLLN4Date10fromStringE_443(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=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
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%j,label%i
i:
call void@sml_check(i32 inreg%g)
br label%j
j:
%k=call fastcc i8*@_SMLFN9StringCvt10scanStringE(i32 inreg 1,i32 inreg 8)
%l=getelementptr inbounds i8,i8*%k,i64 16
%m=bitcast i8*%l to i8*(i8*,i8*)**
%n=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%m,align 8
%o=bitcast i8*%k to i8**
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%e,align 8
%q=bitcast i8**%d to i8***
%r=load i8**,i8***%q,align 8
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%d,align 8
%t=call i8*@sml_alloc(i32 inreg 12)#0
%u=getelementptr inbounds i8,i8*%t,i64 -4
%v=bitcast i8*%u to i32*
store i32 1342177288,i32*%v,align 4
store i8*%t,i8**%f,align 8
%w=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%x=bitcast i8*%t to i8**
store i8*%w,i8**%x,align 8
%y=getelementptr inbounds i8,i8*%t,i64 8
%z=bitcast i8*%y to i32*
store i32 1,i32*%z,align 4
%A=call i8*@sml_alloc(i32 inreg 28)#0
%B=getelementptr inbounds i8,i8*%A,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177304,i32*%C,align 4
%D=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%E=bitcast i8*%A to i8**
store i8*%D,i8**%E,align 8
%F=getelementptr inbounds i8,i8*%A,i64 8
%G=bitcast i8*%F to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date10fromStringE_442 to void(...)*),void(...)**%G,align 8
%H=getelementptr inbounds i8,i8*%A,i64 16
%I=bitcast i8*%H to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date10fromStringE_442 to void(...)*),void(...)**%I,align 8
%J=getelementptr inbounds i8,i8*%A,i64 24
%K=bitcast i8*%J to i32*
store i32 -2147483647,i32*%K,align 4
%L=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%M=call fastcc i8*%n(i8*inreg%L,i8*inreg%A)
%N=getelementptr inbounds i8,i8*%M,i64 16
%O=bitcast i8*%N to i8*(i8*,i8*)**
%P=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%O,align 8
%Q=bitcast i8*%M to i8**
%R=load i8*,i8**%Q,align 8
%S=load i8*,i8**%c,align 8
%T=tail call fastcc i8*%P(i8*inreg%R,i8*inreg%S)
ret i8*%T
}
define internal fastcc i8*@_SMLLLN4Date4scanE_444(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 i8**
%o=load i8*,i8**%n,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to i32*
%r=load i32,i32*%q,align 4
%s=getelementptr inbounds i8,i8*%k,i64 12
%t=bitcast i8*%s to i32*
%u=load i32,i32*%t,align 4
%v=call fastcc i8*@_SMLLLN4Date4scanE_441(i8*inreg%o,i32 inreg%r,i32 inreg%u,i8*inreg%m)
ret i8*%v
}
define internal fastcc i8*@_SMLLLN4Date4scanE_445(i8*inreg%a,i32 inreg%b,i32 inreg%c)#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
%f=bitcast i8*%a to i8**
%g=load i8*,i8**%f,align 8
store i8*%g,i8**%d,align 8
%h=call i8*@sml_alloc(i32 inreg 20)#0
%i=getelementptr inbounds i8,i8*%h,i64 -4
%j=bitcast i8*%i to i32*
store i32 1342177296,i32*%j,align 4
store i8*%h,i8**%e,align 8
%k=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%l=bitcast i8*%h to i8**
store i8*%k,i8**%l,align 8
%m=getelementptr inbounds i8,i8*%h,i64 8
%n=bitcast i8*%m to i32*
store i32%b,i32*%n,align 4
%o=getelementptr inbounds i8,i8*%h,i64 12
%p=bitcast i8*%o to i32*
store i32%c,i32*%p,align 4
%q=getelementptr inbounds i8,i8*%h,i64 16
%r=bitcast i8*%q to i32*
store i32 1,i32*%r,align 4
%s=call i8*@sml_alloc(i32 inreg 28)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177304,i32*%u,align 4
%v=load i8*,i8**%e,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%s,i64 8
%y=bitcast i8*%x to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4scanE_444 to void(...)*),void(...)**%y,align 8
%z=getelementptr inbounds i8,i8*%s,i64 16
%A=bitcast i8*%z to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN4Date4scanE_444 to void(...)*),void(...)**%A,align 8
%B=getelementptr inbounds i8,i8*%s,i64 24
%C=bitcast i8*%B to i32*
store i32 -2147483647,i32*%C,align 4
ret i8*%s
}
define fastcc i8*@_SMLFN4Date4dateE(i8*inreg%a)local_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]
%j=load i8**,i8***bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 0)to i8***),align 8
%k=load i8*,i8**%j,align 8
%l=tail call fastcc i8*@_SMLLLN4Date4dateE_377(i8*inreg%k,i8*inreg%h)
ret i8*%l
}
define fastcc i8*@_SMLFN4Date13fromTimeLocalE(i8*inreg%a)local_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]
%j=load i8**,i8***bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 1)to i8***),align 8
%k=load i8*,i8**%j,align 8
%l=tail call fastcc i8*@_SMLLLN4Date13fromTimeLocalE_379(i8*inreg%k,i8*inreg%h)
ret i8*%l
}
define fastcc i8*@_SMLFN4Date12fromTimeUnivE(i8*inreg%a)local_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]
%j=load i8**,i8***bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 2)to i8***),align 8
%k=load i8*,i8**%j,align 8
%l=tail call fastcc i8*@_SMLLLN4Date12fromTimeUnivE_380(i8*inreg%k,i8*inreg%h)
ret i8*%l
}
define fastcc i8*@_SMLFN4Date8toStringE(i8*inreg%a)local_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]
%j=load i8*,i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 3),align 8
%k=getelementptr inbounds i8,i8*%j,i64 16
%l=bitcast i8*%k to i8*(i8*,i8*)**
%m=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%l,align 8
%n=bitcast i8*%j to i8**
%o=load i8*,i8**%n,align 8
%p=tail call fastcc i8*%m(i8*inreg%o,i8*inreg%h)
ret i8*%p
}
define fastcc i8*@_SMLFN4Date4scanE(i32 inreg%a,i32 inreg%b)local_unnamed_addr#2 gc"smlsharp"{
%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:
tail call void@sml_check(i32 inreg%c)
br label%f
f:
%g=load i8**,i8***bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 4)to i8***),align 8
%h=load i8*,i8**%g,align 8
%i=tail call fastcc i8*@_SMLLLN4Date4scanE_445(i8*inreg%h,i32 inreg%a,i32 inreg%b)
ret i8*%i
}
define fastcc i8*@_SMLFN4Date10fromStringE(i8*inreg%a)local_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]
%j=load i8**,i8***bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[6x i8*]}>,<{[4x i8],i32,[6x i8*]}>*@_SML_gvarf7f5b9a54382c7f7_date,i64 0,i32 2,i64 5)to i8***),align 8
%k=load i8*,i8**%j,align 8
%l=tail call fastcc i8*@_SMLLLN4Date10fromStringE_443(i8*inreg%k,i8*inreg%h)
ret i8*%l
}
define internal fastcc i8*@_SMLLLN4Date11localOffsetE_454(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN4Date11localOffsetE(i32 inreg undef)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN4Date4yearE_455(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 44
%d=bitcast i8*%c to i32*
%e=load i32,i32*%d,align 4
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date5monthE_456(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 20
%d=bitcast i8*%c to i32*
%e=load i32,i32*%d,align 4
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date3dayE_457(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%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*@_SMLLLN4Date4hourE_458(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 4
%d=bitcast i8*%c to i32*
%e=load i32,i32*%d,align 4
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date6minuteE_459(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 16
%d=bitcast i8*%c to i32*
%e=load i32,i32*%d,align 4
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date6secondE_460(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 32
%d=bitcast i8*%c to i32*
%e=load i32,i32*%d,align 4
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date7weekDayE_461(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 36
%d=bitcast i8*%c to i32*
%e=load i32,i32*%d,align 4
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date7yearDayE_462(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 40
%d=bitcast i8*%c to i32*
%e=load i32,i32*%d,align 4
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date5isDstE_463(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 8
%d=bitcast i8*%c to i8**
%e=load i8*,i8**%d,align 8
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Date6offsetE_464(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=getelementptr inbounds i8,i8*%b,i64 24
%d=bitcast i8*%c to i8**
%e=load i8*,i8**%d,align 8
ret i8*%e
}
define internal fastcc i8*@_SMLLLN4Date10daysInYearE_467(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLLLN4Date10daysInYearE_335(i8*inreg%a,i8*inreg%b)
%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*@_SMLLLN4Date13toAbsoluteDayE_468(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLLLN4Date13toAbsoluteDayE_346(i8*inreg%a,i8*inreg%b)
%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*@_SMLLLN4Date6toTimeE_470(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN4Date6toTimeE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN4Date7compareE_478(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLLLN4Date7compareE_400(i8*inreg%a,i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date7compareE_479(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLLLN4Date7compareE_401(i8*inreg%a,i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date7compareE_480(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLLLN4Date7compareE_402(i8*inreg%a,i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date7compareE_481(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLLLN4Date7compareE_403(i8*inreg%a,i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date7compareE_482(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=tail call fastcc i32@_SMLLLN4Date7compareE_406(i8*inreg%a,i32 inreg%d)
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date7compareE_483(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN4Date7compareE(i8*inreg%b)
%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*@_SMLLL6notPct_485(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=icmp ne i8%c,37
%e=zext i1%d to i32
%f=tail call i8*@sml_alloc(i32 inreg 4)#0
%g=bitcast i8*%f to i32*
%h=getelementptr inbounds i8,i8*%f,i64 -4
%i=bitcast i8*%h to i32*
store i32 4,i32*%i,align 4
store i32%e,i32*%g,align 4
ret i8*%f
}
define internal fastcc i8*@_SMLLLN4Date3fmtE_486(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN4Date3fmtE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLLN4Date4scanE_487(i8*inreg%a,i8*inreg%b,i8*inreg%c,i8*inreg%d)#4 gc"smlsharp"{
%e=bitcast i8*%b to i32*
%f=load i32,i32*%e,align 4
%g=bitcast i8*%c to i32*
%h=load i32,i32*%g,align 4
%i=tail call fastcc i8*@_SMLLLN4Date4scanE_441(i8*inreg%a,i32 inreg%f,i32 inreg%h,i8*inreg%d)
ret i8*%i
}
define internal fastcc i8*@_SMLLLN4Date4scanE_488(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*@_SMLLLN4Date4scanE_445(i8*inreg%a,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}
