@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN3Bug3BugE=external local_unnamed_addr global i8*
@_SMLZ5Match=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[32x i8]}><{[4x i8]zeroinitializer,i32 -2147483616,[32x i8]c"ReifiedTermToML.UnsupportedTerm\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,[32x i8]}>,<{[4x i8],i32,[32x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL190=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,[29x i8]}><{[4x i8]zeroinitializer,i32 -2147483619,[29x i8]c"ReifiedTermToML.Undetermined\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[29x i8]}>,<{[4x i8],i32,[29x i8]}>*@c,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL193=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@d,i32 0,i32 0,i32 0),i32 8)}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,[42x i8]}><{[4x i8]zeroinitializer,i32 -2147483606,[42x i8]c"ReifiedTermToML.AttemptToConvertNullValue\00"}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[42x i8]}>,<{[4x i8],i32,[42x i8]}>*@e,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL196=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@f,i32 0,i32 0,i32 0),i32 8)}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[42x i8]}><{[4x i8]zeroinitializer,i32 -2147483606,[42x i8]c"ReifiedTermToML.AttemptToConvertVoidValue\00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[42x i8]}>,<{[4x i8],i32,[42x i8]}>*@g,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL199=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@h,i32 0,i32 0,i32 0),i32 8)}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[72x i8]}><{[4x i8]zeroinitializer,i32 -2147483576,[72x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:51.51(1572)\00"}>,align 8
@j=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@i,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,[71x i8]}><{[4x i8]zeroinitializer,i32 -2147483577,[71x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:37.8(1044)\00"}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[72x i8]}><{[4x i8]zeroinitializer,i32 -2147483576,[72x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:61.31(2157)\00"}>,align 8
@m=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@l,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[72x i8]}><{[4x i8]zeroinitializer,i32 -2147483576,[72x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:59.56(2078)\00"}>,align 8
@o=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@n,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,[72x i8]}><{[4x i8]zeroinitializer,i32 -2147483576,[72x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:69.34(2430)\00"}>,align 8
@q=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@p,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,[72x i8]}><{[4x i8]zeroinitializer,i32 -2147483576,[72x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:75.47(2718)\00"}>,align 8
@s=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@r,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@t=private unnamed_addr constant<{[4x i8],i32,[72x i8]}><{[4x i8]zeroinitializer,i32 -2147483576,[72x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:86.31(3136)\00"}>,align 8
@u=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@t,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@v=private unnamed_addr constant<{[4x i8],i32,[71x i8]}><{[4x i8]zeroinitializer,i32 -2147483577,[71x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:46.8(1365)\00"}>,align 8
@w=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN15ReifiedTermToML8constTagE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN15ReifiedTermToML8constTagE_340 to void(...)*),i32 -2147483647}>,align 8
@x=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i64,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 26,[4x i8]zeroinitializer,i64 0,i32 0}>,align 8
@y=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 37,[4x i8]zeroinitializer,i32 0}>,align 8
@z=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i8*,i32}><{[4x i8]zeroinitializer,i32 -805306352,i32 27,[4x i8]zeroinitializer,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@y,i32 0,i32 0,i32 0),i32 8),i32 2}>,align 8
@A=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLL10fieldSizes_220 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLL10fieldSizes_341 to void(...)*),i32 -2147483647}>,align 8
@B=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:114.24(3992)\00"}>,align 8
@C=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@B,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@D=private unnamed_addr constant<{[4x i8],i32,[21x i8]}><{[4x i8]zeroinitializer,i32 -2147483627,[21x i8]c"computeRecordLayout\0A\00"}>,align 8
@E=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:128.69(4533)\00"}>,align 8
@F=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@E,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@G=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:101.48(3640)\00"}>,align 8
@H=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@G,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@I=private unnamed_addr constant<{[4x i8],i32,[72x i8]}><{[4x i8]zeroinitializer,i32 -2147483576,[72x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:100.4(3551)\00"}>,align 8
@J=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLL7bitmaps_253 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLL7bitmaps_343 to void(...)*),i32 -2147483647}>,align 8
@K=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:156.73(5820)\00"}>,align 8
@L=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*}>*@_SMLDL193,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@K,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@M=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:284.38(12387)\00"}>,align 8
@N=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*}>*@_SMLDL196,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@M,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@O=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:285.47(12460)\00"}>,align 8
@P=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*}>*@_SMLDL196,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@O,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@Q=private unnamed_addr constant<{[4x i8],i32,[13x i8]}><{[4x i8]zeroinitializer,i32 -2147483635,[13x i8]c"case others\0A\00"}>,align 8
@R=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:326.23(14820)\00"}>,align 8
@S=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:266.65(11196)\00"}>,align 8
@T=private unnamed_addr constant<{[4x i8],i32,[22x i8]}><{[4x i8]zeroinitializer,i32 -2147483626,[22x i8]c"R.ARRAY_PRINT to toML\00"}>,align 8
@U=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:268.57(11337)\00"}>,align 8
@V=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:308.40(14006)\00"}>,align 8
@W=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:270.59(11469)\00"}>,align 8
@X=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:276.46(11913)\00"}>,align 8
@Y=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:275.50(11846)\00"}>,align 8
@Z=private unnamed_addr constant<{[4x i8],i32,[13x i8]}><{[4x i8]zeroinitializer,i32 -2147483635,[13x i8]c"case of FUN\0A\00"}>,align 8
@aa=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:317.25(14422)\00"}>,align 8
@ab=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:280.54(12148)\00"}>,align 8
@ac=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:286.52(12538)\00"}>,align 8
@ad=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:299.38(13401)\00"}>,align 8
@ae=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*}>*@_SMLDL199,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@ad,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@af=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:300.47(13474)\00"}>,align 8
@ag=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*}>*@_SMLDL199,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@af,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@ah=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:319.44(14545)\00"}>,align 8
@ai=private unnamed_addr constant<{[4x i8],i32,[28x i8]}><{[4x i8]zeroinitializer,i32 -2147483620,[28x i8]c"R.VECTOR_PRINT to toMLValue\00"}>,align 8
@aj=private unnamed_addr constant<{[4x i8],i32,[36x i8]}><{[4x i8]zeroinitializer,i32 -2147483612,[36x i8]c"RTy.LAYOUT_TAGGED RTy.TAGGED_RECORD\00"}>,align 8
@ak=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,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@ax,i32 0,i32 0,i32 0),i32 8),i8*null,i32 3}>,align 8
@al=private unnamed_addr constant<{[4x i8],i32,[37x i8]}><{[4x i8]zeroinitializer,i32 -2147483611,[37x i8]c"RTy.LAYOUT_TAGGED RTy.TAGGED_OR_NULL\00"}>,align 8
@am=private unnamed_addr constant<{[4x i8],i32,[71x i8]}><{[4x i8]zeroinitializer,i32 -2147483577,[71x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:22.16(584)\00"}>,align 8
@an=private unnamed_addr constant<{[4x i8],i32,[34x i8]}><{[4x i8]zeroinitializer,i32 -2147483614,[34x i8]c"RTy.LAYOUT_TAGGED RTy.TAGGED_ONLY\00"}>,align 8
@ao=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:205.30(8272)\00"}>,align 8
@ap=private unnamed_addr constant<{[4x i8],i32,[36x i8]}><{[4x i8]zeroinitializer,i32 -2147483612,[36x i8]c"RTy.LAYOUT_ARG_OR_NULL {wrap=false}\00"}>,align 8
@aq=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:213.30(8668)\00"}>,align 8
@ar=private unnamed_addr constant<{[4x i8],i32,[35x i8]}><{[4x i8]zeroinitializer,i32 -2147483613,[35x i8]c"Rty.LAYOUT_ARG_OR_NULL {wrap=true}\00"}>,align 8
@as=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:219.30(8969)\00"}>,align 8
@at=private unnamed_addr constant<{[4x i8],i32,[35x i8]}><{[4x i8]zeroinitializer,i32 -2147483613,[35x i8]c"RTy.LAYOUT_SINGLE_ARG {wrap=false}\00"}>,align 8
@au=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:225.30(9274)\00"}>,align 8
@av=private unnamed_addr constant<{[4x i8],i32,[34x i8]}><{[4x i8]zeroinitializer,i32 -2147483614,[34x i8]c"RTy.LAYOUT_SINGLE_ARG {wrap=true}\00"}>,align 8
@aw=private unnamed_addr constant<{[4x i8],i32,i32,i32,i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 43,i32 0,i32 0}>,align 8
@ax=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 41,[4x i8]zeroinitializer,i32 0}>,align 8
@ay=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,i32,i32,i32}>,<{[4x i8],i32,i32,i32,i32}>*@aw,i32 0,i32 0,i32 0),i32 8),i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@ax,i32 0,i32 0,i32 0),i32 8),i32 3}>,align 8
@az=private unnamed_addr constant<{[4x i8],i32,[73x i8]}><{[4x i8]zeroinitializer,i32 -2147483575,[73x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:169.14(6386)\00"}>,align 8
@aA=private unnamed_addr constant<{[4x i8],i32,[13x i8]}><{[4x i8]zeroinitializer,i32 -2147483635,[13x i8]c"case option\0A\00"}>,align 8
@aB=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"\0A\00"}>,align 8
@aC=private unnamed_addr constant<{[4x i8],i32,[74x i8]}><{[4x i8]zeroinitializer,i32 -2147483574,[74x i8]c"src/compiler/extensions/reflection/main/ReifiedTermToML.sml:261.23(10894)\00"}>,align 8
@aD=private unnamed_addr constant<{[4x i8],i32,[49x i8]}><{[4x i8]zeroinitializer,i32 -2147483599,[49x i8]c"Type of term and designated type does not match.\00"}>,align 8
@aE=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,i32,[4x i8],i64,i32}>,<{[4x i8],i32,i32,[4x i8],i64,i32}>*@x,i32 0,i32 0,i32 0),i32 8),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 3}>,align 8
@aF=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32,i32,i8*)*@_SMLFN15ReifiedTermToML15reifiedTermToMLE to void(...)*),void(...)*bitcast(i8*(i8*,i8*,i8*,i8*)*@_SMLLN15ReifiedTermToML15reifiedTermToMLE_347 to void(...)*),i32 -2147483647}>,align 8
@aG=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i32,i32,i8*)*@_SMLFN15ReifiedTermToML21reifiedTermToMLWithTyE to void(...)*),void(...)*bitcast(i8*(i8*,i8*,i8*,i8*)*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_348 to void(...)*),i32 -2147483647}>,align 8
@aH=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i32)*@_SMLFN15ReifiedTermToML9tagToWordE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN15ReifiedTermToML9tagToWordE_349 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN15ReifiedTermToML9tagToWordE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@aH,i64 0,i32 2)to i8*)
@_SMLZN15ReifiedTermToML8constTagE=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*)
@_SMLZN15ReifiedTermToML21reifiedTermToMLWithTyE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@aG,i64 0,i32 2)to i8*)
@_SMLZN15ReifiedTermToML15reifiedTermToMLE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@aF,i64 0,i32 2)to i8*)
@aI=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN15ReifiedTermToML7isBoxedE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN15ReifiedTermToML7isBoxedE_350 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN15ReifiedTermToML7isBoxedE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@aI,i64 0,i32 2)to i8*)
@_SML_ftab21bbd237e50b9d15_ReifiedTermToML=external global i8
@aJ=private unnamed_addr global i8 0
declare void@llvm.gcroot(i8**,i8*)#0
declare i8*@sml_alloc(i32 inreg)local_unnamed_addr#0
declare void@sml_check(i32 inreg)local_unnamed_addr
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare void@sml_matchcomp_bug()local_unnamed_addr
declare i32@sml_obj_equal(i8*inreg,i8*inreg)local_unnamed_addr#0
declare i32@sml_personality(...)#0
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare void@sml_write(i8*inreg,i8**inreg,i8*inreg)local_unnamed_addr#0
declare i8*@_SMLFN11RecordLabel3Map9listItemsE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel3Map9singletonE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel7fromIntE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel8tupleMapE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11ReifiedTerm19reifiedTermToStringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN12RecordLayout12extractDeclsE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN12RecordLayout13computeRecordE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN12RecordLayout19newComputationAccumE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SMLFN12RuntimeTypes4initE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List3appE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List5foldrE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4SEnv4findE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SMLFN6TextIO5printE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN8ListPair5mapEqE(i32 inreg,i32 inreg,i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN8ListPair5zipEqE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN9ReifiedTy11reifiedTyEqE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9ReifiedTy14getConstructTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9ReifiedTy16TyRepToReifiedTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9ReifiedTy17reifiedTyToStringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9ReifiedTy26typIdConSetListToConSetEnvE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9ReifiedTy27MergeConSetEnvWithTyRepListE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9ReifiedTy5TyRepE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN9ReifiedTy6sizeOfE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main7aa263535439ee1c_ListPair()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main3446b7b079949ccf_text_io()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main60e750412e2bb4fe_RecordLabel()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maind12f270a309dc7dd_SEnv()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main226e91fe36086637_RecordLayout()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainc88dec21a8800496_RuntimeTypes_ppg()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maineaa0aca8fbe4101a_Bug()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maincb4f3f5d4a34fae3_ReifiedTy_ppg()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main1c9923f41166e488_ReifiedTerm_ppg()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load7aa263535439ee1c_ListPair(i8*)local_unnamed_addr
declare void@_SML_load3446b7b079949ccf_text_io(i8*)local_unnamed_addr
declare void@_SML_load60e750412e2bb4fe_RecordLabel(i8*)local_unnamed_addr
declare void@_SML_loadd12f270a309dc7dd_SEnv(i8*)local_unnamed_addr
declare void@_SML_load226e91fe36086637_RecordLayout(i8*)local_unnamed_addr
declare void@_SML_loadc88dec21a8800496_RuntimeTypes_ppg(i8*)local_unnamed_addr
declare void@_SML_loadeaa0aca8fbe4101a_Bug(i8*)local_unnamed_addr
declare void@_SML_loadcb4f3f5d4a34fae3_ReifiedTy_ppg(i8*)local_unnamed_addr
declare void@_SML_load1c9923f41166e488_ReifiedTerm_ppg(i8*)local_unnamed_addr
define private void@_SML_tabb21bbd237e50b9d15_ReifiedTermToML()#3{
unreachable
}
define void@_SML_load21bbd237e50b9d15_ReifiedTermToML(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@aJ,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@aJ,align 1
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load7aa263535439ee1c_ListPair(i8*%a)#0
tail call void@_SML_load3446b7b079949ccf_text_io(i8*%a)#0
tail call void@_SML_load60e750412e2bb4fe_RecordLabel(i8*%a)#0
tail call void@_SML_loadd12f270a309dc7dd_SEnv(i8*%a)#0
tail call void@_SML_load226e91fe36086637_RecordLayout(i8*%a)#0
tail call void@_SML_loadc88dec21a8800496_RuntimeTypes_ppg(i8*%a)#0
tail call void@_SML_loadeaa0aca8fbe4101a_Bug(i8*%a)#0
tail call void@_SML_loadcb4f3f5d4a34fae3_ReifiedTy_ppg(i8*%a)#0
tail call void@_SML_load1c9923f41166e488_ReifiedTerm_ppg(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabb21bbd237e50b9d15_ReifiedTermToML,i8*@_SML_ftab21bbd237e50b9d15_ReifiedTermToML,i8*null)#0
ret void
}
define void@_SML_main21bbd237e50b9d15_ReifiedTermToML()local_unnamed_addr#2 gc"smlsharp"{
%a=load i8,i8*@aJ,align 1
%b=and i8%a,2
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 3,i8*@aJ,align 1
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main7aa263535439ee1c_ListPair()#2
tail call void@_SML_main3446b7b079949ccf_text_io()#2
tail call void@_SML_main60e750412e2bb4fe_RecordLabel()#2
tail call void@_SML_maind12f270a309dc7dd_SEnv()#2
tail call void@_SML_main226e91fe36086637_RecordLayout()#2
tail call void@_SML_mainc88dec21a8800496_RuntimeTypes_ppg()#2
tail call void@_SML_maineaa0aca8fbe4101a_Bug()#2
tail call void@_SML_maincb4f3f5d4a34fae3_ReifiedTy_ppg()#2
tail call void@_SML_main1c9923f41166e488_ReifiedTerm_ppg()#2
br label%d
}
define fastcc i32@_SMLFN15ReifiedTermToML8constTagE(i8*inreg%a)#2 gc"smlsharp"{
j:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%h,label%f
f:
call void@sml_check(i32 inreg%d)
%g=load i8*,i8**%b,align 8
br label%h
h:
%i=phi i8*[%g,%f],[%a,%j]
%k=bitcast i8*%i to i32*
%l=load i32,i32*%k,align 4
switch i32%l,label%m[
i32 0,label%H
i32 1,label%E
i32 2,label%E
i32 3,label%b8
i32 4,label%b7
i32 5,label%E
i32 6,label%E
i32 7,label%bw
i32 8,label%aV
i32 9,label%aP
i32 10,label%H
i32 11,label%aI
i32 12,label%ar
i32 13,label%aq
i32 14,label%ap
i32 15,label%H
i32 16,label%H
i32 17,label%E
i32 18,label%E
i32 19,label%E
i32 20,label%E
i32 21,label%ai
i32 22,label%ah
i32 23,label%H
i32 24,label%Z
i32 25,label%H
i32 26,label%S
i32 27,label%H
i32 28,label%E
i32 29,label%E
i32 30,label%H
i32 31,label%R
i32 32,label%H
i32 33,label%H
i32 34,label%H
i32 35,label%Q
i32 36,label%J
i32 37,label%E
i32 38,label%H
i32 39,label%E
i32 40,label%E
i32 41,label%E
i32 42,label%E
i32 43,label%E
]
m:
call void@sml_matchcomp_bug()
%n=load i8*,i8**@_SMLZ5Match,align 8
store i8*%n,i8**%b,align 8
%o=call i8*@sml_alloc(i32 inreg 20)#0
%p=getelementptr inbounds i8,i8*%o,i64 -4
%q=bitcast i8*%p to i32*
store i32 1342177296,i32*%q,align 4
store i8*%o,i8**%c,align 8
%r=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%s=bitcast i8*%o to i8**
store i8*%r,i8**%s,align 8
%t=getelementptr inbounds i8,i8*%o,i64 8
%u=bitcast i8*%t to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[71x i8]}>,<{[4x i8],i32,[71x i8]}>*@v,i64 0,i32 2,i64 0),i8**%u,align 8
%v=getelementptr inbounds i8,i8*%o,i64 16
%w=bitcast i8*%v to i32*
store i32 3,i32*%w,align 4
%x=call i8*@sml_alloc(i32 inreg 60)#0
%y=getelementptr inbounds i8,i8*%x,i64 -4
%z=bitcast i8*%y to i32*
store i32 1342177336,i32*%z,align 4
%A=getelementptr inbounds i8,i8*%x,i64 56
%B=bitcast i8*%A to i32*
store i32 1,i32*%B,align 4
%C=load i8*,i8**%c,align 8
%D=bitcast i8*%x to i8**
store i8*%C,i8**%D,align 8
call void@sml_raise(i8*inreg%x)#1
unreachable
E:
%F=phi i1[true,%h],[true,%h],[true,%h],[true,%h],[true,%h],[true,%h],[false,%Q],[false,%R],[false,%ah],[false,%ap],[false,%aq],[false,%b7],[true,%h],[true,%h],[%ag,%Z],[true,%h],[true,%h],[true,%h],[true,%h],[%aH,%aE],[%aU,%aP],[true,%a3],[false,%bq],[true,%bE],[false,%b1],[true,%h],[true,%h],[true,%h],[true,%h],[true,%aV],[true,%bw]
%G=zext i1%F to i32
ret i32%G
H:
%I=phi i32[0,%h],[0,%h],[0,%h],[0,%h],[0,%h],[0,%h],[0,%h],[0,%h],[0,%h],[0,%h],[0,%h],[0,%bo],[0,%bp],[0,%bZ],[0,%b0],[%a5,%a3],[1,%bq],[%bG,%bE],[1,%b1],[0,%h]
ret i32%I
J:
%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=bitcast i8*%K to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@u,i64 0,i32 2)to i8*),i8**%P,align 8
call void@sml_raise(i8*inreg%K)#1
unreachable
Q:
br label%E
R:
br label%E
S:
%T=call i8*@sml_alloc(i32 inreg 60)#0
%U=getelementptr inbounds i8,i8*%T,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177336,i32*%V,align 4
%W=getelementptr inbounds i8,i8*%T,i64 56
%X=bitcast i8*%W to i32*
store i32 1,i32*%X,align 4
%Y=bitcast i8*%T to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@s,i64 0,i32 2)to i8*),i8**%Y,align 8
call void@sml_raise(i8*inreg%T)#1
unreachable
Z:
%aa=getelementptr inbounds i8,i8*%i,i64 8
%ab=bitcast i8*%aa to i8**
%ac=load i8*,i8**%ab,align 8
%ad=getelementptr inbounds i8,i8*%ac,i64 8
%ae=bitcast i8*%ad to i32*
%af=load i32,i32*%ae,align 4
%ag=icmp eq i32%af,0
br label%E
ah:
br label%E
ai:
%aj=call i8*@sml_alloc(i32 inreg 60)#0
%ak=getelementptr inbounds i8,i8*%aj,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177336,i32*%al,align 4
%am=getelementptr inbounds i8,i8*%aj,i64 56
%an=bitcast i8*%am to i32*
store i32 1,i32*%an,align 4
%ao=bitcast i8*%aj to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@q,i64 0,i32 2)to i8*),i8**%ao,align 8
call void@sml_raise(i8*inreg%aj)#1
unreachable
ap:
br label%E
aq:
br label%E
ar:
%as=getelementptr inbounds i8,i8*%i,i64 8
%at=bitcast i8*%as to i8***
%au=load i8**,i8***%at,align 8
%av=load i8*,i8**%au,align 8
%aw=icmp eq i8*%av,null
br i1%aw,label%ax,label%aE
ax:
%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=bitcast i8*%ay to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@o,i64 0,i32 2)to i8*),i8**%aD,align 8
call void@sml_raise(i8*inreg%ay)#1
unreachable
aE:
%aF=bitcast i8*%av to i32*
%aG=load i32,i32*%aF,align 4
%aH=icmp eq i32%aG,0
br label%E
aI:
%aJ=call i8*@sml_alloc(i32 inreg 60)#0
%aK=getelementptr inbounds i8,i8*%aJ,i64 -4
%aL=bitcast i8*%aK to i32*
store i32 1342177336,i32*%aL,align 4
%aM=getelementptr inbounds i8,i8*%aJ,i64 56
%aN=bitcast i8*%aM to i32*
store i32 1,i32*%aN,align 4
%aO=bitcast i8*%aJ to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@m,i64 0,i32 2)to i8*),i8**%aO,align 8
call void@sml_raise(i8*inreg%aJ)#1
unreachable
aP:
%aQ=getelementptr inbounds i8,i8*%i,i64 8
%aR=bitcast i8*%aQ to i32**
%aS=load i32*,i32**%aR,align 8
%aT=load i32,i32*%aS,align 4
%aU=icmp eq i32%aT,0
br label%E
aV:
%aW=getelementptr inbounds i8,i8*%i,i64 8
%aX=bitcast i8*%aW to i8**
%aY=load i8*,i8**%aX,align 8
%aZ=getelementptr inbounds i8,i8*%aY,i64 16
%a0=bitcast i8*%aZ to i8**
%a1=load i8*,i8**%a0,align 8
%a2=icmp eq i8*%a1,null
br i1%a2,label%E,label%a3
a3:
%a4=bitcast i8*%a1 to i32*
%a5=load i32,i32*%a4,align 4
switch i32%a5,label%a6[
i32 4,label%bq
i32 0,label%bp
i32 3,label%bo
i32 1,label%H
i32 2,label%E
]
a6:
call void@sml_matchcomp_bug()
%a7=load i8*,i8**@_SMLZ5Match,align 8
store i8*%a7,i8**%b,align 8
%a8=call i8*@sml_alloc(i32 inreg 20)#0
%a9=getelementptr inbounds i8,i8*%a8,i64 -4
%ba=bitcast i8*%a9 to i32*
store i32 1342177296,i32*%ba,align 4
store i8*%a8,i8**%c,align 8
%bb=load i8*,i8**%b,align 8
store i8*null,i8**%b,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[71x i8]}>,<{[4x i8],i32,[71x i8]}>*@k,i64 0,i32 2,i64 0),i8**%be,align 8
%bf=getelementptr inbounds i8,i8*%a8,i64 16
%bg=bitcast i8*%bf to i32*
store i32 3,i32*%bg,align 4
%bh=call i8*@sml_alloc(i32 inreg 60)#0
%bi=getelementptr inbounds i8,i8*%bh,i64 -4
%bj=bitcast i8*%bi to i32*
store i32 1342177336,i32*%bj,align 4
%bk=getelementptr inbounds i8,i8*%bh,i64 56
%bl=bitcast i8*%bk to i32*
store i32 1,i32*%bl,align 4
%bm=load i8*,i8**%c,align 8
%bn=bitcast i8*%bh to i8**
store i8*%bm,i8**%bn,align 8
call void@sml_raise(i8*inreg%bh)#1
unreachable
bo:
br label%H
bp:
br label%H
bq:
%br=getelementptr inbounds i8,i8*%a1,i64 8
%bs=bitcast i8*%br to i32**
%bt=load i32*,i32**%bs,align 8
%bu=load i32,i32*%bt,align 4
%bv=icmp eq i32%bu,2
br i1%bv,label%H,label%E
bw:
%bx=getelementptr inbounds i8,i8*%i,i64 8
%by=bitcast i8*%bx to i8**
%bz=load i8*,i8**%by,align 8
%bA=getelementptr inbounds i8,i8*%bz,i64 24
%bB=bitcast i8*%bA to i8**
%bC=load i8*,i8**%bB,align 8
%bD=icmp eq i8*%bC,null
br i1%bD,label%E,label%bE
bE:
%bF=bitcast i8*%bC to i32*
%bG=load i32,i32*%bF,align 4
switch i32%bG,label%bH[
i32 4,label%b1
i32 0,label%b0
i32 3,label%bZ
i32 1,label%H
i32 2,label%E
]
bH:
call void@sml_matchcomp_bug()
%bI=load i8*,i8**@_SMLZ5Match,align 8
store i8*%bI,i8**%b,align 8
%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**%b,align 8
store i8*null,i8**%b,align 8
%bN=bitcast i8*%bJ to i8**
store i8*%bM,i8**%bN,align 8
%bO=getelementptr inbounds i8,i8*%bJ,i64 8
%bP=bitcast i8*%bO to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[71x i8]}>,<{[4x i8],i32,[71x i8]}>*@k,i64 0,i32 2,i64 0),i8**%bP,align 8
%bQ=getelementptr inbounds i8,i8*%bJ,i64 16
%bR=bitcast i8*%bQ to i32*
store i32 3,i32*%bR,align 4
%bS=call i8*@sml_alloc(i32 inreg 60)#0
%bT=getelementptr inbounds i8,i8*%bS,i64 -4
%bU=bitcast i8*%bT to i32*
store i32 1342177336,i32*%bU,align 4
%bV=getelementptr inbounds i8,i8*%bS,i64 56
%bW=bitcast i8*%bV to i32*
store i32 1,i32*%bW,align 4
%bX=load i8*,i8**%c,align 8
%bY=bitcast i8*%bS to i8**
store i8*%bX,i8**%bY,align 8
call void@sml_raise(i8*inreg%bS)#1
unreachable
bZ:
br label%H
b0:
br label%H
b1:
%b2=getelementptr inbounds i8,i8*%bC,i64 8
%b3=bitcast i8*%b2 to i32**
%b4=load i32*,i32**%b3,align 8
%b5=load i32,i32*%b4,align 4
%b6=icmp eq i32%b5,2
br i1%b6,label%H,label%E
b7:
br label%E
b8:
%b9=call i8*@sml_alloc(i32 inreg 60)#0
%ca=getelementptr inbounds i8,i8*%b9,i64 -4
%cb=bitcast i8*%ca to i32*
store i32 1342177336,i32*%cb,align 4
%cc=getelementptr inbounds i8,i8*%b9,i64 56
%cd=bitcast i8*%cc to i32*
store i32 1,i32*%cd,align 4
%ce=bitcast i8*%b9 to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@j,i64 0,i32 2)to i8*),i8**%ce,align 8
call void@sml_raise(i8*inreg%b9)#1
unreachable
}
define internal fastcc i8*@_SMLL10fieldSizes_220(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=call fastcc i32@_SMLFN15ReifiedTermToML8constTagE(i8*inreg%i)
%l=icmp eq i32%k,0
%m=zext i1%l to i32
%n=call i8*@sml_alloc(i32 inreg 12)#0
%o=bitcast i8*%n to i32*
%p=getelementptr inbounds i8,i8*%n,i64 -4
%q=bitcast i8*%p to i32*
store i32 1342177288,i32*%q,align 4
store i8*%n,i8**%c,align 8
store i32 1,i32*%o,align 4
%r=getelementptr inbounds i8,i8*%n,i64 4
%s=bitcast i8*%r to i32*
store i32%m,i32*%s,align 4
%t=getelementptr inbounds i8,i8*%n,i64 8
%u=bitcast i8*%t to i32*
store i32 0,i32*%u,align 4
%v=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%w=call fastcc i32@_SMLFN9ReifiedTy6sizeOfE(i8*inreg%v)
%x=call i8*@sml_alloc(i32 inreg 12)#0
%y=bitcast i8*%x to i32*
%z=getelementptr inbounds i8,i8*%x,i64 -4
%A=bitcast i8*%z to i32*
store i32 1342177288,i32*%A,align 4
store i8*%x,i8**%b,align 8
store i32 1,i32*%y,align 4
%B=getelementptr inbounds i8,i8*%x,i64 4
%C=bitcast i8*%B to i32*
store i32%w,i32*%C,align 4
%D=getelementptr inbounds i8,i8*%x,i64 8
%E=bitcast i8*%D to i32*
store i32 0,i32*%E,align 4
%F=call i8*@sml_alloc(i32 inreg 20)#0
%G=getelementptr inbounds i8,i8*%F,i64 -4
%H=bitcast i8*%G to i32*
store i32 1342177296,i32*%H,align 4
%I=load i8*,i8**%b,align 8
%J=bitcast i8*%F to i8**
store i8*%I,i8**%J,align 8
%K=load i8*,i8**%c,align 8
%L=getelementptr inbounds i8,i8*%F,i64 8
%M=bitcast i8*%L to i8**
store i8*%K,i8**%M,align 8
%N=getelementptr inbounds i8,i8*%F,i64 16
%O=bitcast i8*%N to i32*
store i32 3,i32*%O,align 4
ret i8*%F
}
define internal fastcc i8*@_SMLL6fields_246(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**%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%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]
%m=getelementptr inbounds i8,i8*%k,i64 8
%n=bitcast i8*%m to i8***
%o=load i8**,i8***%n,align 8
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%c,align 8
%q=getelementptr inbounds i8*,i8**%o,i64 1
%r=load i8*,i8**%q,align 8
store i8*%r,i8**%d,align 8
%s=bitcast i8*%k to i8**
%t=load i8*,i8**%s,align 8
%u=bitcast i8*%t to i8**
%v=load i8*,i8**%u,align 8
%w=getelementptr inbounds i8,i8*%v,i64 8
%x=bitcast i8*%w to i8**
%y=load i8*,i8**%x,align 8
%z=bitcast i8*%y to i32*
%A=load i32,i32*%z,align 4
switch i32%A,label%B[
i32 0,label%ab
i32 1,label%T
]
B:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
call void@sml_matchcomp_bug()
%C=load i8*,i8**@_SMLZ5Match,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,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@I,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=getelementptr inbounds i8,i8*%y,i64 4
%V=bitcast i8*%U to i32*
%W=load i32,i32*%V,align 4
%X=bitcast i8*%v to i8**
%Y=load i8*,i8**%X,align 8
%Z=bitcast i8*%Y to i32*
%aa=load i32,i32*%Z,align 4
switch i32%aa,label%ai[
i32 0,label%aG
i32 1,label%aA
]
ab:
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
%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=bitcast i8*%ac to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@H,i64 0,i32 2)to i8*),i8**%ah,align 8
call void@sml_raise(i8*inreg%ac)#1
unreachable
ai:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
call void@sml_matchcomp_bug()
%aj=load i8*,i8**@_SMLZ5Match,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,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@I,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=getelementptr inbounds i8,i8*%t,i64 8
%aC=bitcast i8*%aB to i8**
%aD=load i8*,i8**%aC,align 8
%aE=bitcast i8*%aD to i32*
%aF=load i32,i32*%aE,align 4
switch i32%aF,label%aN[
i32 0,label%bG
i32 1,label%a5
]
aG:
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
%aH=call i8*@sml_alloc(i32 inreg 60)#0
%aI=getelementptr inbounds i8,i8*%aH,i64 -4
%aJ=bitcast i8*%aI to i32*
store i32 1342177336,i32*%aJ,align 4
%aK=getelementptr inbounds i8,i8*%aH,i64 56
%aL=bitcast i8*%aK to i32*
store i32 1,i32*%aL,align 4
%aM=bitcast i8*%aH to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@H,i64 0,i32 2)to i8*),i8**%aM,align 8
call void@sml_raise(i8*inreg%aH)#1
unreachable
aN:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
call void@sml_matchcomp_bug()
%aO=load i8*,i8**@_SMLZ5Match,align 8
store i8*%aO,i8**%c,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**%d,align 8
%aS=load i8*,i8**%c,align 8
store i8*null,i8**%c,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,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@I,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
%a0=bitcast i8*%aZ to i32*
store i32 1342177336,i32*%a0,align 4
%a1=getelementptr inbounds i8,i8*%aY,i64 56
%a2=bitcast i8*%a1 to i32*
store i32 1,i32*%a2,align 4
%a3=load i8*,i8**%d,align 8
%a4=bitcast i8*%aY to i8**
store i8*%a3,i8**%a4,align 8
call void@sml_raise(i8*inreg%aY)#1
unreachable
a5:
%a6=getelementptr inbounds i8,i8*%Y,i64 4
%a7=bitcast i8*%a6 to i32*
%a8=load i32,i32*%a7,align 4
%a9=getelementptr inbounds i8,i8*%aD,i64 4
%ba=bitcast i8*%a9 to i32*
%bb=load i32,i32*%ba,align 4
%bc=bitcast i8**%e to i8***
%bd=load i8**,i8***%bc,align 8
%be=load i8*,i8**%bd,align 8
store i8*%be,i8**%e,align 8
%bf=call i8*@sml_alloc(i32 inreg 20)#0
%bg=getelementptr inbounds i8,i8*%bf,i64 -4
%bh=bitcast i8*%bg to i32*
store i32 1342177296,i32*%bh,align 4
%bi=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bj=bitcast i8*%bf to i8**
store i8*%bi,i8**%bj,align 8
%bk=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bl=getelementptr inbounds i8,i8*%bf,i64 8
%bm=bitcast i8*%bl to i8**
store i8*%bk,i8**%bm,align 8
%bn=getelementptr inbounds i8,i8*%bf,i64 16
%bo=bitcast i8*%bn to i32*
store i32 3,i32*%bo,align 4
%bp=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bq=call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%bp,i8*inreg%bf)
store i8*%bq,i8**%c,align 8
%br=call i8*@sml_alloc(i32 inreg 28)#0
%bs=bitcast i8*%br to i32*
%bt=getelementptr inbounds i8,i8*%br,i64 -4
%bu=bitcast i8*%bt to i32*
store i32 1342177304,i32*%bu,align 4
store i32%bb,i32*%bs,align 4
%bv=getelementptr inbounds i8,i8*%br,i64 4
%bw=bitcast i8*%bv to i32*
store i32%a8,i32*%bw,align 4
%bx=load i8*,i8**%c,align 8
%by=getelementptr inbounds i8,i8*%br,i64 8
%bz=bitcast i8*%by to i8**
store i8*%bx,i8**%bz,align 8
%bA=getelementptr inbounds i8,i8*%br,i64 16
%bB=bitcast i8*%bA to i32*
store i32 0,i32*%bB,align 4
%bC=getelementptr inbounds i8,i8*%br,i64 20
%bD=bitcast i8*%bC to i32*
store i32%W,i32*%bD,align 4
%bE=getelementptr inbounds i8,i8*%br,i64 24
%bF=bitcast i8*%bE to i32*
store i32 2,i32*%bF,align 4
ret i8*%br
bG:
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
%bH=call i8*@sml_alloc(i32 inreg 60)#0
%bI=getelementptr inbounds i8,i8*%bH,i64 -4
%bJ=bitcast i8*%bI to i32*
store i32 1342177336,i32*%bJ,align 4
%bK=getelementptr inbounds i8,i8*%bH,i64 56
%bL=bitcast i8*%bK to i32*
store i32 1,i32*%bL,align 4
%bM=bitcast i8*%bH to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@H,i64 0,i32 2)to i8*),i8**%bM,align 8
call void@sml_raise(i8*inreg%bH)#1
unreachable
}
define internal fastcc i8*@_SMLL7bitmaps_253(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 8
%l=bitcast i8*%k to i8**
%m=load i8*,i8**%l,align 8
%n=bitcast i8*%m to i32*
%o=load i32,i32*%n,align 4
switch i32%o,label%p[
i32 0,label%M
i32 1,label%H
]
p:
call void@sml_matchcomp_bug()
%q=load i8*,i8**@_SMLZ5Match,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,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@I,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
%A=call i8*@sml_alloc(i32 inreg 60)#0
%B=getelementptr inbounds i8,i8*%A,i64 -4
%C=bitcast i8*%B to i32*
store i32 1342177336,i32*%C,align 4
%D=getelementptr inbounds i8,i8*%A,i64 56
%E=bitcast i8*%D to i32*
store i32 1,i32*%E,align 4
%F=load i8*,i8**%c,align 8
%G=bitcast i8*%A to i8**
store i8*%F,i8**%G,align 8
call void@sml_raise(i8*inreg%A)#1
unreachable
H:
%I=bitcast i8*%i to i8**
%J=load i8*,i8**%I,align 8
%K=bitcast i8*%J to i32*
%L=load i32,i32*%K,align 4
switch i32%L,label%T[
i32 0,label%aA
i32 1,label%al
]
M:
%N=call i8*@sml_alloc(i32 inreg 60)#0
%O=getelementptr inbounds i8,i8*%N,i64 -4
%P=bitcast i8*%O to i32*
store i32 1342177336,i32*%P,align 4
%Q=getelementptr inbounds i8,i8*%N,i64 56
%R=bitcast i8*%Q to i32*
store i32 1,i32*%R,align 4
%S=bitcast i8*%N to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@H,i64 0,i32 2)to i8*),i8**%S,align 8
call void@sml_raise(i8*inreg%N)#1
unreachable
T:
call void@sml_matchcomp_bug()
%U=load i8*,i8**@_SMLZ5Match,align 8
store i8*%U,i8**%b,align 8
%V=call i8*@sml_alloc(i32 inreg 20)#0
%W=getelementptr inbounds i8,i8*%V,i64 -4
%X=bitcast i8*%W to i32*
store i32 1342177296,i32*%X,align 4
store i8*%V,i8**%c,align 8
%Y=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%Z=bitcast i8*%V to i8**
store i8*%Y,i8**%Z,align 8
%aa=getelementptr inbounds i8,i8*%V,i64 8
%ab=bitcast i8*%aa to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@I,i64 0,i32 2,i64 0),i8**%ab,align 8
%ac=getelementptr inbounds i8,i8*%V,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**%c,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=getelementptr inbounds i8,i8*%m,i64 4
%an=bitcast i8*%am to i32*
%ao=load i32,i32*%an,align 4
%ap=getelementptr inbounds i8,i8*%J,i64 4
%aq=bitcast i8*%ap to i32*
%ar=load i32,i32*%aq,align 4
%as=call i8*@sml_alloc(i32 inreg 12)#0
%at=bitcast i8*%as to i32*
%au=getelementptr inbounds i8,i8*%as,i64 -4
%av=bitcast i8*%au to i32*
store i32 1342177288,i32*%av,align 4
store i32%ar,i32*%at,align 4
%aw=getelementptr inbounds i8,i8*%as,i64 4
%ax=bitcast i8*%aw to i32*
store i32%ao,i32*%ax,align 4
%ay=getelementptr inbounds i8,i8*%as,i64 8
%az=bitcast i8*%ay to i32*
store i32 0,i32*%az,align 4
ret i8*%as
aA:
%aB=call i8*@sml_alloc(i32 inreg 60)#0
%aC=getelementptr inbounds i8,i8*%aB,i64 -4
%aD=bitcast i8*%aC to i32*
store i32 1342177336,i32*%aD,align 4
%aE=getelementptr inbounds i8,i8*%aB,i64 56
%aF=bitcast i8*%aE to i32*
store i32 1,i32*%aF,align 4
%aG=bitcast i8*%aB to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@H,i64 0,i32 2)to i8*),i8**%aG,align 8
call void@sml_raise(i8*inreg%aB)#1
unreachable
}
define internal fastcc void@_SMLL10makeRecord_257(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=getelementptr inbounds i8,i8*%b,i64 4
%f=bitcast i8*%e to i32*
%g=load i32,i32*%f,align 4
%h=bitcast i8*%a to i8**
%i=load i8*,i8**%h,align 8
%j=sext i32%g to i64
%k=getelementptr inbounds i8,i8*%i,i64%j
%l=bitcast i8*%k to i32*
store i32%d,i32*%l,align 4
ret void
}
define internal fastcc void@_SMLL10makeRecord_258(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=getelementptr inbounds i8,i8*%b,i64 8
%f=bitcast i8*%e to i8**
%g=load i8*,i8**%f,align 8
%h=getelementptr inbounds i8,i8*%b,i64 16
%i=bitcast i8*%h to i32*
%j=load i32,i32*%i,align 4
%k=getelementptr inbounds i8,i8*%b,i64 20
%l=bitcast i8*%k to i32*
%m=load i32,i32*%l,align 4
%n=bitcast i8*%a to i8**
%o=load i8*,i8**%n,align 8
%p=icmp eq i32%m,0
br i1%p,label%y,label%q
q:
%r=sext i32%j to i64
%s=getelementptr inbounds i8,i8*%g,i64%r
%t=bitcast i8*%s to i8**
%u=load i8*,i8**%t,align 8
%v=sext i32%d to i64
%w=getelementptr inbounds i8,i8*%o,i64%v
%x=bitcast i8*%w to i8**
tail call void@sml_write(i8*inreg%o,i8**inreg%x,i8*inreg%u)#0
br label%G
y:
%z=getelementptr inbounds i8,i8*%b,i64 4
%A=bitcast i8*%z to i32*
%B=load i32,i32*%A,align 4
%C=sext i32%d to i64
%D=getelementptr inbounds i8,i8*%o,i64%C
%E=sext i32%j to i64
%F=getelementptr inbounds i8,i8*%g,i64%E
tail call void@llvm.memcpy.p0i8.p0i8.i32(i8*%D,i8*%F,i32%B,i1 false)
br label%G
G:
ret void
}
define internal fastcc i8*@_SMLL8toMLList_317(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**%f,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**%c,align 8
br label%m
m:
%n=phi i8*[%l,%k],[%b,%o]
%p=bitcast i8*%n to i8**
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%c,align 8
%r=getelementptr inbounds i8,i8*%n,i64 8
%s=bitcast i8*%r to i8***
%t=load i8**,i8***%s,align 8
%u=load i8*,i8**%t,align 8
store i8*%u,i8**%d,align 8
%v=getelementptr inbounds i8*,i8**%t,i64 1
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%e,align 8
%x=call fastcc i8*@_SMLFN11RecordLabel8tupleMapE(i32 inreg 1,i32 inreg 8)
%y=getelementptr inbounds i8,i8*%x,i64 16
%z=bitcast i8*%y to i8*(i8*,i8*)**
%A=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%z,align 8
%B=bitcast i8*%x to i8**
%C=load i8*,i8**%B,align 8
store i8*%C,i8**%g,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**%h,align 8
%G=load i8*,i8**%d,align 8
store i8*null,i8**%d,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*null,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 20)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177296,i32*%O,align 4
%P=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%Q=bitcast i8*%M to i8**
store i8*%P,i8**%Q,align 8
%R=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%S=getelementptr inbounds i8,i8*%M,i64 8
%T=bitcast i8*%S to i8**
store i8*%R,i8**%T,align 8
%U=getelementptr inbounds i8,i8*%M,i64 16
%V=bitcast i8*%U to i32*
store i32 3,i32*%V,align 4
%W=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%X=call fastcc i8*%A(i8*inreg%W,i8*inreg%M)
store i8*%X,i8**%c,align 8
%Y=call i8*@sml_alloc(i32 inreg 20)#0
%Z=getelementptr inbounds i8,i8*%Y,i64 -4
%aa=bitcast i8*%Z to i32*
store i32 1342177296,i32*%aa,align 4
store i8*%Y,i8**%g,align 8
%ab=getelementptr inbounds i8,i8*%Y,i64 4
%ac=bitcast i8*%ab to i32*
store i32 0,i32*%ac,align 1
%ad=bitcast i8*%Y to i32*
store i32 29,i32*%ad,align 4
%ae=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%af=getelementptr inbounds i8,i8*%Y,i64 8
%ag=bitcast i8*%af to i8**
store i8*%ae,i8**%ag,align 8
%ah=getelementptr inbounds i8,i8*%Y,i64 16
%ai=bitcast i8*%ah to i32*
store i32 2,i32*%ai,align 4
%aj=call fastcc i8*@_SMLFN11RecordLabel8tupleMapE(i32 inreg 1,i32 inreg 8)
%ak=getelementptr inbounds i8,i8*%aj,i64 16
%al=bitcast i8*%ak to i8*(i8*,i8*)**
%am=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%al,align 8
%an=bitcast i8*%aj to i8**
%ao=load i8*,i8**%an,align 8
store i8*%ao,i8**%d,align 8
%ap=bitcast i8**%f to i8***
%aq=load i8**,i8***%ap,align 8
store i8*null,i8**%f,align 8
%ar=load i8*,i8**%aq,align 8
store i8*%ar,i8**%c,align 8
%as=call i8*@sml_alloc(i32 inreg 20)#0
%at=getelementptr inbounds i8,i8*%as,i64 -4
%au=bitcast i8*%at to i32*
store i32 1342177296,i32*%au,align 4
store i8*%as,i8**%f,align 8
%av=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aw=bitcast i8*%as to i8**
store i8*%av,i8**%aw,align 8
%ax=getelementptr inbounds i8,i8*%as,i64 8
%ay=bitcast i8*%ax to i8**
store i8*null,i8**%ay,align 8
%az=getelementptr inbounds i8,i8*%as,i64 16
%aA=bitcast i8*%az to i32*
store i32 3,i32*%aA,align 4
%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
%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=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aH=getelementptr inbounds i8,i8*%aB,i64 8
%aI=bitcast i8*%aH to i8**
store i8*%aG,i8**%aI,align 8
%aJ=getelementptr inbounds i8,i8*%aB,i64 16
%aK=bitcast i8*%aJ to i32*
store i32 3,i32*%aK,align 4
%aL=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aM=call fastcc i8*%am(i8*inreg%aL,i8*inreg%aB)
store i8*%aM,i8**%c,align 8
%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
store i8*%aN,i8**%d,align 8
%aQ=getelementptr inbounds i8,i8*%aN,i64 4
%aR=bitcast i8*%aQ to i32*
store i32 0,i32*%aR,align 1
%aS=bitcast i8*%aN to i32*
store i32 32,i32*%aS,align 4
%aT=load i8*,i8**%c,align 8
store i8*null,i8**%c,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 2,i32*%aX,align 4
%aY=call i8*@sml_alloc(i32 inreg 20)#0
%aZ=getelementptr inbounds i8,i8*%aY,i64 -4
%a0=bitcast i8*%aZ to i32*
store i32 1342177296,i32*%a0,align 4
%a1=load i8*,i8**%g,align 8
%a2=bitcast i8*%aY to i8**
store i8*%a1,i8**%a2,align 8
%a3=load i8*,i8**%d,align 8
%a4=getelementptr inbounds i8,i8*%aY,i64 8
%a5=bitcast i8*%a4 to i8**
store i8*%a3,i8**%a5,align 8
%a6=getelementptr inbounds i8,i8*%aY,i64 16
%a7=bitcast i8*%a6 to i32*
store i32 3,i32*%a7,align 4
ret i8*%aY
}
define internal fastcc i8*@_SMLL10makeRecord_229(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"personality i32(...)*@sml_personality{
t:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
%i=alloca i8*,align 8
%j=alloca i8*,align 8
%k=alloca i8*,align 8
%l=alloca i8*,align 8
%m=alloca i8*,align 8
call void@llvm.gcroot(i8**%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
call void@llvm.gcroot(i8**%j,i8*null)#0
call void@llvm.gcroot(i8**%k,i8*null)#0
call void@llvm.gcroot(i8**%l,i8*null)#0
call void@llvm.gcroot(i8**%m,i8*null)#0
store i8*%a,i8**%k,align 8
store i8*%b,i8**%f,align 8
%n=load atomic i32,i32*@sml_check_flag unordered,align 4
%o=icmp eq i32%n,0
br i1%o,label%r,label%p
p:
call void@sml_check(i32 inreg%n)
%q=load i8*,i8**%f,align 8
br label%r
r:
%s=phi i8*[%q,%p],[%b,%t]
store i8*null,i8**%f,align 8
%u=bitcast i8*%s to i8**
%v=load i8*,i8**%u,align 8
store i8*%v,i8**%i,align 8
%w=icmp eq i8*%v,null
br i1%w,label%x,label%D
x:
store i8*null,i8**%i,align 8
store i8*null,i8**%k,align 8
%y=call i8*@sml_alloc(i32 inreg 8)#0
%z=getelementptr inbounds i8,i8*%y,i64 -4
%A=bitcast i8*%z to i32*
store i32 805306376,i32*%A,align 4
%B=bitcast i8*%y to i64*
store i64 0,i64*%B,align 1
%C=bitcast i8*%y to i8**
call void@sml_write(i8*inreg%y,i8**inreg%C,i8*inreg null)#0
ret i8*%y
D:
%E=getelementptr inbounds i8,i8*%s,i64 8
%F=bitcast i8*%E to i8**
%G=load i8*,i8**%F,align 8
store i8*%G,i8**%j,align 8
%H=bitcast i8**%c to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%H)
%I=bitcast i8**%d to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%I)
%J=bitcast i8**%e to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%J)
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*%G,i8**%c,align 8
%K=load atomic i32,i32*@sml_check_flag unordered,align 4
%L=icmp eq i32%K,0
br i1%L,label%N,label%M
M:
call void@sml_check(i32 inreg%K)
br label%N
N:
%O=invoke fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
to label%P unwind label%aw
P:
%Q=getelementptr inbounds i8,i8*%O,i64 16
%R=bitcast i8*%Q to i8*(i8*,i8*)**
%S=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%R,align 8
%T=bitcast i8*%O to i8**
%U=load i8*,i8**%T,align 8
%V=invoke fastcc i8*%S(i8*inreg%U,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@A,i64 0,i32 2)to i8*))
to label%W unwind label%aw
W:
%X=getelementptr inbounds i8,i8*%V,i64 16
%Y=bitcast i8*%X to i8*(i8*,i8*)**
%Z=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Y,align 8
%aa=bitcast i8*%V to i8**
%ab=load i8*,i8**%aa,align 8
%ac=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ad=invoke fastcc i8*%Z(i8*inreg%ab,i8*inreg%ac)
to label%ae unwind label%aw
ae:
store i8*%ad,i8**%c,align 8
%af=invoke fastcc i8*@_SMLFN12RecordLayout19newComputationAccumE(i32 inreg 0)
to label%ag unwind label%aw
ag:
store i8*%af,i8**%d,align 8
%ah=invoke fastcc i8*@_SMLFN12RecordLayout13computeRecordE(i8*inreg%af)
to label%ai unwind label%aw
ai:
%aj=getelementptr inbounds i8,i8*%ah,i64 16
%ak=bitcast i8*%aj to i8*(i8*,i8*)**
%al=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ak,align 8
%am=bitcast i8*%ah to i8**
%an=load i8*,i8**%am,align 8
%ao=load i8*,i8**%c,align 8
%ap=invoke fastcc i8*%al(i8*inreg%an,i8*inreg%ao)
to label%aq unwind label%aw
aq:
store i8*%ap,i8**%e,align 8
%ar=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%as=invoke fastcc i8*@_SMLFN12RecordLayout12extractDeclsE(i8*inreg%ar)
to label%at unwind label%aw
at:
%au=icmp eq i8*%as,null
br i1%au,label%aV,label%av
av:
store i8*null,i8**%c,align 8
br label%aB
aw:
%ax=landingpad{i8*,i8*}
catch i8*null
%ay=extractvalue{i8*,i8*}%ax,1
%az=bitcast i8*%ay to i8***
%aA=load i8**,i8***%az,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
br label%aB
aB:
%aC=phi i8**[getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@C,i64 0,i32 2),%av],[%aA,%aw]
store i8*null,i8**%e,align 8
%aD=bitcast i8**%c to i8***
store i8**%aC,i8***%aD,align 8
%aE=load i8*,i8**%aC,align 8
%aF=icmp eq i8*%aE,bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL193,i64 0,i32 2)to i8*)
br i1%aF,label%aG,label%aN
aG:
store i8*null,i8**%c,align 8
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[21x i8]}>,<{[4x i8],i32,[21x i8]}>*@D,i64 0,i32 2,i64 0))
%aH=call i8*@sml_alloc(i32 inreg 60)#0
%aI=getelementptr inbounds i8,i8*%aH,i64 -4
%aJ=bitcast i8*%aI to i32*
store i32 1342177336,i32*%aJ,align 4
%aK=getelementptr inbounds i8,i8*%aH,i64 56
%aL=bitcast i8*%aK to i32*
store i32 1,i32*%aL,align 4
%aM=bitcast i8*%aH to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@F,i64 0,i32 2)to i8*),i8**%aM,align 8
call void@sml_raise(i8*inreg%aH)#1
unreachable
aN:
%aO=call i8*@sml_alloc(i32 inreg 60)#0
%aP=getelementptr inbounds i8,i8*%aO,i64 -4
%aQ=bitcast i8*%aP to i32*
store i32 1342177336,i32*%aQ,align 4
%aR=getelementptr inbounds i8,i8*%aO,i64 56
%aS=bitcast i8*%aR to i32*
store i32 1,i32*%aS,align 4
%aT=load i8*,i8**%c,align 8
%aU=bitcast i8*%aO to i8**
store i8*%aT,i8**%aU,align 8
call void@sml_raise(i8*inreg%aO)#1
unreachable
aV:
%aW=call i8*@sml_alloc(i32 inreg 20)#0
%aX=getelementptr inbounds i8,i8*%aW,i64 -4
%aY=bitcast i8*%aX to i32*
store i32 1342177296,i32*%aY,align 4
%aZ=load i8*,i8**%c,align 8
%a0=bitcast i8*%aW to i8**
store i8*%aZ,i8**%a0,align 8
%a1=load i8*,i8**%e,align 8
%a2=getelementptr inbounds i8,i8*%aW,i64 8
%a3=bitcast i8*%a2 to i8**
store i8*%a1,i8**%a3,align 8
%a4=getelementptr inbounds i8,i8*%aW,i64 16
%a5=bitcast i8*%a4 to i32*
store i32 3,i32*%a5,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%H)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%I)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%J)
store i8*%aW,i8**%h,align 8
store i8*%aZ,i8**%f,align 8
%a6=getelementptr inbounds i8,i8*%a1,i64 16
%a7=bitcast i8*%a6 to i8**
%a8=load i8*,i8**%a7,align 8
store i8*%a8,i8**%g,align 8
%a9=bitcast i8*%a1 to i8**
%ba=load i8*,i8**%a9,align 8
%bb=bitcast i8*%ba to i32*
%bc=load i32,i32*%bb,align 4
switch i32%bc,label%bd[
i32 0,label%db
i32 1,label%bv
]
bd:
store i8*null,i8**%g,align 8
store i8*null,i8**%h,align 8
store i8*null,i8**%i,align 8
store i8*null,i8**%j,align 8
store i8*null,i8**%k,align 8
call void@sml_matchcomp_bug()
%be=load i8*,i8**@_SMLZ5Match,align 8
store i8*%be,i8**%f,align 8
%bf=call i8*@sml_alloc(i32 inreg 20)#0
%bg=getelementptr inbounds i8,i8*%bf,i64 -4
%bh=bitcast i8*%bg to i32*
store i32 1342177296,i32*%bh,align 4
store i8*%bf,i8**%g,align 8
%bi=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bj=bitcast i8*%bf to i8**
store i8*%bi,i8**%bj,align 8
%bk=getelementptr inbounds i8,i8*%bf,i64 8
%bl=bitcast i8*%bk to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[72x i8]}>,<{[4x i8],i32,[72x i8]}>*@I,i64 0,i32 2,i64 0),i8**%bl,align 8
%bm=getelementptr inbounds i8,i8*%bf,i64 16
%bn=bitcast i8*%bm to i32*
store i32 3,i32*%bn,align 4
%bo=call i8*@sml_alloc(i32 inreg 60)#0
%bp=getelementptr inbounds i8,i8*%bo,i64 -4
%bq=bitcast i8*%bp to i32*
store i32 1342177336,i32*%bq,align 4
%br=getelementptr inbounds i8,i8*%bo,i64 56
%bs=bitcast i8*%br to i32*
store i32 1,i32*%bs,align 4
%bt=load i8*,i8**%g,align 8
%bu=bitcast i8*%bo to i8**
store i8*%bt,i8**%bu,align 8
call void@sml_raise(i8*inreg%bo)#1
unreachable
bv:
%bw=getelementptr inbounds i8,i8*%ba,i64 4
%bx=bitcast i8*%bw to i32*
%by=load i32,i32*%bx,align 4
%bz=call fastcc i8*@_SMLFN8ListPair5mapEqE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%bA=getelementptr inbounds i8,i8*%bz,i64 16
%bB=bitcast i8*%bA to i8*(i8*,i8*)**
%bC=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bB,align 8
%bD=bitcast i8*%bz to i8**
%bE=load i8*,i8**%bD,align 8
store i8*%bE,i8**%l,align 8
%bF=call i8*@sml_alloc(i32 inreg 12)#0
%bG=getelementptr inbounds i8,i8*%bF,i64 -4
%bH=bitcast i8*%bG to i32*
store i32 1342177288,i32*%bH,align 4
store i8*%bF,i8**%m,align 8
%bI=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%bJ=bitcast i8*%bF to i8**
store i8*%bI,i8**%bJ,align 8
%bK=getelementptr inbounds i8,i8*%bF,i64 8
%bL=bitcast i8*%bK to i32*
store i32 1,i32*%bL,align 4
%bM=call i8*@sml_alloc(i32 inreg 28)#0
%bN=getelementptr inbounds i8,i8*%bM,i64 -4
%bO=bitcast i8*%bN to i32*
store i32 1342177304,i32*%bO,align 4
%bP=load i8*,i8**%m,align 8
store i8*null,i8**%m,align 8
%bQ=bitcast i8*%bM to i8**
store i8*%bP,i8**%bQ,align 8
%bR=getelementptr inbounds i8,i8*%bM,i64 8
%bS=bitcast i8*%bR to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL6fields_246 to void(...)*),void(...)**%bS,align 8
%bT=getelementptr inbounds i8,i8*%bM,i64 16
%bU=bitcast i8*%bT to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL6fields_246 to void(...)*),void(...)**%bU,align 8
%bV=getelementptr inbounds i8,i8*%bM,i64 24
%bW=bitcast i8*%bV to i32*
store i32 -2147483647,i32*%bW,align 4
%bX=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%bY=call fastcc i8*%bC(i8*inreg%bX,i8*inreg%bM)
%bZ=getelementptr inbounds i8,i8*%bY,i64 16
%b0=bitcast i8*%bZ to i8*(i8*,i8*)**
%b1=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%b0,align 8
%b2=bitcast i8*%bY to i8**
%b3=load i8*,i8**%b2,align 8
store i8*%b3,i8**%l,align 8
%b4=call fastcc i8*@_SMLFN8ListPair5zipEqE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%b5=getelementptr inbounds i8,i8*%b4,i64 16
%b6=bitcast i8*%b5 to i8*(i8*,i8*)**
%b7=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%b6,align 8
%b8=bitcast i8*%b4 to i8**
%b9=load i8*,i8**%b8,align 8
store i8*%b9,i8**%k,align 8
%ca=call i8*@sml_alloc(i32 inreg 20)#0
%cb=getelementptr inbounds i8,i8*%ca,i64 -4
%cc=bitcast i8*%cb to i32*
store i32 1342177296,i32*%cc,align 4
%cd=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%ce=bitcast i8*%ca to i8**
store i8*%cd,i8**%ce,align 8
%cf=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cg=getelementptr inbounds i8,i8*%ca,i64 8
%ch=bitcast i8*%cg to i8**
store i8*%cf,i8**%ch,align 8
%ci=getelementptr inbounds i8,i8*%ca,i64 16
%cj=bitcast i8*%ci to i32*
store i32 3,i32*%cj,align 4
%ck=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%cl=call fastcc i8*%b7(i8*inreg%ck,i8*inreg%ca)
store i8*%cl,i8**%f,align 8
%cm=call fastcc i8*@_SMLFN8ListPair5zipEqE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%cn=getelementptr inbounds i8,i8*%cm,i64 16
%co=bitcast i8*%cn to i8*(i8*,i8*)**
%cp=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%co,align 8
%cq=bitcast i8*%cm to i8**
%cr=load i8*,i8**%cq,align 8
store i8*%cr,i8**%g,align 8
%cs=call i8*@sml_alloc(i32 inreg 20)#0
%ct=getelementptr inbounds i8,i8*%cs,i64 -4
%cu=bitcast i8*%ct to i32*
store i32 1342177296,i32*%cu,align 4
%cv=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%cw=bitcast i8*%cs to i8**
store i8*%cv,i8**%cw,align 8
%cx=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%cy=getelementptr inbounds i8,i8*%cs,i64 8
%cz=bitcast i8*%cy to i8**
store i8*%cx,i8**%cz,align 8
%cA=getelementptr inbounds i8,i8*%cs,i64 16
%cB=bitcast i8*%cA to i32*
store i32 3,i32*%cB,align 4
%cC=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cD=call fastcc i8*%cp(i8*inreg%cC,i8*inreg%cs)
store i8*%cD,i8**%g,align 8
%cE=call i8*@sml_alloc(i32 inreg 20)#0
%cF=getelementptr inbounds i8,i8*%cE,i64 -4
%cG=bitcast i8*%cF to i32*
store i32 1342177296,i32*%cG,align 4
%cH=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cI=bitcast i8*%cE to i8**
store i8*%cH,i8**%cI,align 8
%cJ=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cK=getelementptr inbounds i8,i8*%cE,i64 8
%cL=bitcast i8*%cK to i8**
store i8*%cJ,i8**%cL,align 8
%cM=getelementptr inbounds i8,i8*%cE,i64 16
%cN=bitcast i8*%cM to i32*
store i32 3,i32*%cN,align 4
%cO=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%cP=call fastcc i8*%b1(i8*inreg%cO,i8*inreg%cE)
store i8*%cP,i8**%f,align 8
%cQ=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%cR=getelementptr inbounds i8,i8*%cQ,i64 16
%cS=bitcast i8*%cR to i8*(i8*,i8*)**
%cT=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cS,align 8
%cU=bitcast i8*%cQ to i8**
%cV=load i8*,i8**%cU,align 8
%cW=call fastcc i8*%cT(i8*inreg%cV,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@J,i64 0,i32 2)to i8*))
%cX=getelementptr inbounds i8,i8*%cW,i64 16
%cY=bitcast i8*%cX to i8*(i8*,i8*)**
%cZ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cY,align 8
%c0=bitcast i8*%cW to i8**
%c1=load i8*,i8**%c0,align 8
%c2=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%c3=getelementptr inbounds i8,i8*%c2,i64 8
%c4=bitcast i8*%c3 to i8**
%c5=load i8*,i8**%c4,align 8
%c6=getelementptr inbounds i8,i8*%c5,i64 8
%c7=bitcast i8*%c6 to i8**
%c8=load i8*,i8**%c7,align 8
%c9=call fastcc i8*%cZ(i8*inreg%c1,i8*inreg%c8)
store i8*%c9,i8**%g,align 8
%da=icmp eq i8*%c9,null
br i1%da,label%di,label%dp
db:
store i8*null,i8**%f,align 8
store i8*null,i8**%g,align 8
store i8*null,i8**%h,align 8
store i8*null,i8**%i,align 8
store i8*null,i8**%j,align 8
store i8*null,i8**%k,align 8
%dc=call i8*@sml_alloc(i32 inreg 60)#0
%dd=getelementptr inbounds i8,i8*%dc,i64 -4
%de=bitcast i8*%dd to i32*
store i32 1342177336,i32*%de,align 4
%df=getelementptr inbounds i8,i8*%dc,i64 56
%dg=bitcast i8*%df to i32*
store i32 1,i32*%dg,align 4
%dh=bitcast i8*%dc to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@H,i64 0,i32 2)to i8*),i8**%dh,align 8
call void@sml_raise(i8*inreg%dc)#1
unreachable
di:
store i8*null,i8**%f,align 8
store i8*null,i8**%g,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}>*@L,i64 0,i32 2)to i8*),i8**%do,align 8
call void@sml_raise(i8*inreg%dj)#1
unreachable
dp:
%dq=bitcast i8*%c9 to i8**
%dr=load i8*,i8**%dq,align 8
%ds=getelementptr inbounds i8,i8*%dr,i64 4
%dt=bitcast i8*%ds to i32*
%du=load i32,i32*%dt,align 4
%dv=call i8*@sml_alloc(i32 inreg%by)#0
%dw=or i32%du,1342177280
%dx=getelementptr inbounds i8,i8*%dv,i64 -4
%dy=bitcast i8*%dx to i32*
store i32%dw,i32*%dy,align 4
store i8*%dv,i8**%h,align 8
call void@llvm.memset.p0i8.i32(i8*%dv,i8 0,i32%by,i1 false)
%dz=call fastcc i8*@_SMLFN4List3appE(i32 inreg 1,i32 inreg 8)
%dA=getelementptr inbounds i8,i8*%dz,i64 16
%dB=bitcast i8*%dA to i8*(i8*,i8*)**
%dC=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dB,align 8
%dD=bitcast i8*%dz to i8**
%dE=load i8*,i8**%dD,align 8
store i8*%dE,i8**%i,align 8
%dF=call i8*@sml_alloc(i32 inreg 12)#0
%dG=getelementptr inbounds i8,i8*%dF,i64 -4
%dH=bitcast i8*%dG to i32*
store i32 1342177288,i32*%dH,align 4
store i8*%dF,i8**%j,align 8
%dI=load i8*,i8**%h,align 8
%dJ=bitcast i8*%dF to i8**
store i8*%dI,i8**%dJ,align 8
%dK=getelementptr inbounds i8,i8*%dF,i64 8
%dL=bitcast i8*%dK to i32*
store i32 1,i32*%dL,align 4
%dM=call i8*@sml_alloc(i32 inreg 28)#0
%dN=getelementptr inbounds i8,i8*%dM,i64 -4
%dO=bitcast i8*%dN to i32*
store i32 1342177304,i32*%dO,align 4
%dP=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%dQ=bitcast i8*%dM to i8**
store i8*%dP,i8**%dQ,align 8
%dR=getelementptr inbounds i8,i8*%dM,i64 8
%dS=bitcast i8*%dR to void(...)**
store void(...)*bitcast(void(i8*,i8*)*@_SMLL10makeRecord_257 to void(...)*),void(...)**%dS,align 8
%dT=getelementptr inbounds i8,i8*%dM,i64 16
%dU=bitcast i8*%dT to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL10makeRecord_344 to void(...)*),void(...)**%dU,align 8
%dV=getelementptr inbounds i8,i8*%dM,i64 24
%dW=bitcast i8*%dV to i32*
store i32 -2147483647,i32*%dW,align 4
%dX=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%dY=call fastcc i8*%dC(i8*inreg%dX,i8*inreg%dM)
%dZ=getelementptr inbounds i8,i8*%dY,i64 16
%d0=bitcast i8*%dZ to i8*(i8*,i8*)**
%d1=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%d0,align 8
%d2=bitcast i8*%dY to i8**
%d3=load i8*,i8**%d2,align 8
%d4=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%d5=call fastcc i8*%d1(i8*inreg%d3,i8*inreg%d4)
%d6=call fastcc i8*@_SMLFN4List3appE(i32 inreg 1,i32 inreg 8)
%d7=getelementptr inbounds i8,i8*%d6,i64 16
%d8=bitcast i8*%d7 to i8*(i8*,i8*)**
%d9=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%d8,align 8
%ea=bitcast i8*%d6 to i8**
%eb=load i8*,i8**%ea,align 8
store i8*%eb,i8**%g,align 8
%ec=call i8*@sml_alloc(i32 inreg 12)#0
%ed=getelementptr inbounds i8,i8*%ec,i64 -4
%ee=bitcast i8*%ed to i32*
store i32 1342177288,i32*%ee,align 4
store i8*%ec,i8**%i,align 8
%ef=load i8*,i8**%h,align 8
%eg=bitcast i8*%ec to i8**
store i8*%ef,i8**%eg,align 8
%eh=getelementptr inbounds i8,i8*%ec,i64 8
%ei=bitcast i8*%eh to i32*
store i32 1,i32*%ei,align 4
%ej=call i8*@sml_alloc(i32 inreg 28)#0
%ek=getelementptr inbounds i8,i8*%ej,i64 -4
%el=bitcast i8*%ek to i32*
store i32 1342177304,i32*%el,align 4
%em=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%en=bitcast i8*%ej to i8**
store i8*%em,i8**%en,align 8
%eo=getelementptr inbounds i8,i8*%ej,i64 8
%ep=bitcast i8*%eo to void(...)**
store void(...)*bitcast(void(i8*,i8*)*@_SMLL10makeRecord_258 to void(...)*),void(...)**%ep,align 8
%eq=getelementptr inbounds i8,i8*%ej,i64 16
%er=bitcast i8*%eq to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL10makeRecord_345 to void(...)*),void(...)**%er,align 8
%es=getelementptr inbounds i8,i8*%ej,i64 24
%et=bitcast i8*%es to i32*
store i32 -2147483647,i32*%et,align 4
%eu=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%ev=call fastcc i8*%d9(i8*inreg%eu,i8*inreg%ej)
%ew=getelementptr inbounds i8,i8*%ev,i64 16
%ex=bitcast i8*%ew to i8*(i8*,i8*)**
%ey=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ex,align 8
%ez=bitcast i8*%ev to i8**
%eA=load i8*,i8**%ez,align 8
%eB=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%eC=call fastcc i8*%ey(i8*inreg%eA,i8*inreg%eB)
%eD=call i8*@sml_alloc(i32 inreg 8)#0
%eE=getelementptr inbounds i8,i8*%eD,i64 -4
%eF=bitcast i8*%eE to i32*
store i32 805306376,i32*%eF,align 4
%eG=bitcast i8*%eD to i64*
store i64 0,i64*%eG,align 1
%eH=load i8*,i8**%h,align 8
%eI=bitcast i8*%eD to i8**
call void@sml_write(i8*inreg%eD,i8**inreg%eI,i8*inreg%eH)#0
ret i8*%eD
}
define internal fastcc i8*@_SMLL9toMLValue_230(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
k:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%a,i8**%g,align 8
%h=bitcast i8**%g to i8***
br label%i
i:
%j=phi i8*[%kd,%jW],[%b,%k]
store i8*%j,i8**%c,align 8
%l=load atomic i32,i32*@sml_check_flag unordered,align 4
%m=icmp eq i32%l,0
br i1%m,label%p,label%n
n:
call void@sml_check(i32 inreg%l)
%o=load i8*,i8**%c,align 8
br label%p
p:
%q=phi i8*[%o,%n],[%j,%i]
%r=bitcast i8*%q to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%d,align 8
%t=getelementptr inbounds i8,i8*%q,i64 8
%u=bitcast i8*%t to i8**
%v=load i8*,i8**%u,align 8
store i8*%v,i8**%c,align 8
%w=bitcast i8*%s to i32*
%x=load i32,i32*%w,align 4
switch i32%x,label%y[
i32 0,label%mA
i32 1,label%mb
i32 2,label%lY
i32 3,label%lA
i32 5,label%lc
i32 6,label%k1
i32 7,label%kD
i32 8,label%jN
i32 9,label%jv
i32 11,label%i7
i32 12,label%iJ
i32 13,label%hN
i32 16,label%hA
i32 15,label%hn
i32 17,label%ha
i32 18,label%gZ
i32 19,label%gB
i32 20,label%gl
i32 21,label%fW
i32 22,label%fR
i32 23,label%fM
i32 24,label%fo
i32 25,label%eR
i32 26,label%eE
i32 28,label%er
i32 27,label%ee
i32 30,label%dY
i32 29,label%dj
i32 32,label%c0
i32 33,label%cv
i32 35,label%cf
i32 40,label%b3
i32 41,label%bR
i32 36,label%bH
i32 37,label%bj
i32 38,label%a0
i32 39,label%aB
i32 43,label%ao
i32 42,label%ab
i32 44,label%O
i32 45,label%D
]
y:
%z=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%A=load i32,i32*%z,align 4
switch i32%A,label%mT[
i32 10,label%C
i32 39,label%B
]
B:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
C:
store i8*null,i8**%c,align 8
br label%nA
D:
%E=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%F=load i32,i32*%E,align 4
switch i32%F,label%mT[
i32 10,label%N
i32 39,label%M
i32 43,label%G
]
G:
%H=getelementptr inbounds i8,i8*%s,i64 4
%I=load i8,i8*%H,align 1
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%J=call i8*@sml_alloc(i32 inreg 1)#0
%K=getelementptr inbounds i8,i8*%J,i64 -4
%L=bitcast i8*%K to i32*
store i32 536870913,i32*%L,align 4
store i8%I,i8*%J,align 1
ret i8*%J
M:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
N:
store i8*null,i8**%c,align 8
br label%nA
O:
%P=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%Q=load i32,i32*%P,align 4
switch i32%Q,label%mT[
i32 10,label%aa
i32 39,label%Z
i32 42,label%R
]
R:
%S=getelementptr inbounds i8,i8*%s,i64 8
%T=bitcast i8*%S to i64*
%U=load i64,i64*%T,align 4
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%V=call i8*@sml_alloc(i32 inreg 8)#0
%W=getelementptr inbounds i8,i8*%V,i64 -4
%X=bitcast i8*%W to i32*
store i32 536870920,i32*%X,align 4
%Y=bitcast i8*%V to i64*
store i64%U,i64*%Y,align 4
ret i8*%V
Z:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
aa:
store i8*null,i8**%c,align 8
br label%nA
ab:
%ac=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%ad=load i32,i32*%ac,align 4
switch i32%ad,label%mT[
i32 10,label%an
i32 39,label%am
i32 40,label%ae
]
ae:
%af=getelementptr inbounds i8,i8*%s,i64 4
%ag=bitcast i8*%af to i16*
%ah=load i16,i16*%ag,align 2
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%ai=call i8*@sml_alloc(i32 inreg 2)#0
%aj=getelementptr inbounds i8,i8*%ai,i64 -4
%ak=bitcast i8*%aj to i32*
store i32 536870914,i32*%ak,align 4
%al=bitcast i8*%ai to i16*
store i16%ah,i16*%al,align 2
ret i8*%ai
am:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
an:
store i8*null,i8**%c,align 8
br label%nA
ao:
%ap=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%aq=load i32,i32*%ap,align 4
switch i32%aq,label%mT[
i32 10,label%aA
i32 39,label%az
i32 41,label%ar
]
ar:
%as=getelementptr inbounds i8,i8*%s,i64 4
%at=bitcast i8*%as to i32*
%au=load i32,i32*%at,align 4
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%av=call i8*@sml_alloc(i32 inreg 4)#0
%aw=bitcast i8*%av to i32*
%ax=getelementptr inbounds i8,i8*%av,i64 -4
%ay=bitcast i8*%ax to i32*
store i32 536870916,i32*%ay,align 4
store i32%au,i32*%aw,align 4
ret i8*%av
az:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
aA:
store i8*null,i8**%c,align 8
br label%nA
aB:
%aC=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%aD=load i32,i32*%aC,align 4
switch i32%aD,label%mT[
i32 10,label%aZ
i32 38,label%aF
i32 39,label%aE
]
aE:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
aF:
store i8*null,i8**%d,align 8
%aG=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%aG,i8**%c,align 8
%aH=call i8*@sml_alloc(i32 inreg 28)#0
%aI=getelementptr inbounds i8,i8*%aH,i64 -4
%aJ=bitcast i8*%aI to i32*
store i32 1342177304,i32*%aJ,align 4
store i8*%aH,i8**%d,align 8
%aK=load i8*,i8**%c,align 8
store i8*null,i8**%c,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,[71x i8]}>,<{[4x i8],i32,[71x i8]}>*@am,i64 0,i32 2,i64 0),i8**%aN,align 8
%aO=getelementptr inbounds i8,i8*%aH,i64 16
%aP=bitcast i8*%aO to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[28x i8]}>,<{[4x i8],i32,[28x i8]}>*@ai,i64 0,i32 2,i64 0),i8**%aP,align 8
%aQ=getelementptr inbounds i8,i8*%aH,i64 24
%aR=bitcast i8*%aQ to i32*
store i32 7,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**%d,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:
store i8*null,i8**%c,align 8
br label%nA
a0:
%a1=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%a2=getelementptr inbounds i8,i8*%s,i64 8
%a3=bitcast i8*%a2 to i8**
%a4=load i8*,i8**%a3,align 8
store i8*%a4,i8**%e,align 8
%a5=load i32,i32*%a1,align 4
switch i32%a5,label%a6[
i32 10,label%bi
i32 38,label%a8
i32 39,label%a7
]
a6:
store i8*null,i8**%e,align 8
br label%mT
a7:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
br label%nh
a8:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%a9=call i8*@sml_alloc(i32 inreg 8)#0
%ba=getelementptr inbounds i8,i8*%a9,i64 -4
%bb=bitcast i8*%ba to i32*
store i32 805306376,i32*%bb,align 4
%bc=bitcast i8*%a9 to i64*
store i64 0,i64*%bc,align 1
%bd=load i8*,i8**%e,align 8
%be=getelementptr inbounds i8,i8*%bd,i64 8
%bf=bitcast i8*%be to i8**
%bg=load i8*,i8**%bf,align 8
%bh=bitcast i8*%a9 to i8**
call void@sml_write(i8*inreg%a9,i8**inreg%bh,i8*inreg%bg)#0
ret i8*%a9
bi:
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
br label%nA
bj:
%bk=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%bl=load i32,i32*%bk,align 4
switch i32%bl,label%bm[
i32 10,label%bG
i32 39,label%bF
]
bm:
store i8*null,i8**%c,align 8
%bn=call i8*@sml_alloc(i32 inreg 28)#0
%bo=getelementptr inbounds i8,i8*%bn,i64 -4
%bp=bitcast i8*%bo to i32*
store i32 1342177304,i32*%bp,align 4
store i8*%bn,i8**%c,align 8
%bq=bitcast i8*%bn to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%bq,align 8
%br=getelementptr inbounds i8,i8*%bn,i64 8
%bs=bitcast i8*%br to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@ah,i64 0,i32 2,i64 0),i8**%bs,align 8
%bt=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bu=getelementptr inbounds i8,i8*%bn,i64 16
%bv=bitcast i8*%bu to i8**
store i8*%bt,i8**%bv,align 8
%bw=getelementptr inbounds i8,i8*%bn,i64 24
%bx=bitcast i8*%bw to i32*
store i32 7,i32*%bx,align 4
%by=call i8*@sml_alloc(i32 inreg 60)#0
%bz=getelementptr inbounds i8,i8*%by,i64 -4
%bA=bitcast i8*%bz to i32*
store i32 1342177336,i32*%bA,align 4
%bB=getelementptr inbounds i8,i8*%by,i64 56
%bC=bitcast i8*%bB to i32*
store i32 1,i32*%bC,align 4
%bD=load i8*,i8**%c,align 8
%bE=bitcast i8*%by to i8**
store i8*%bD,i8**%bE,align 8
call void@sml_raise(i8*inreg%by)#1
unreachable
bF:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
bG:
store i8*null,i8**%c,align 8
br label%nA
bH:
%bI=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%bJ=load i32,i32*%bI,align 4
switch i32%bJ,label%mT[
i32 10,label%bQ
i32 37,label%bL
i32 39,label%bK
]
bK:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
bL:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%bM=call i8*@sml_alloc(i32 inreg 4)#0
%bN=bitcast i8*%bM to i32*
%bO=getelementptr inbounds i8,i8*%bM,i64 -4
%bP=bitcast i8*%bO to i32*
store i32 536870916,i32*%bP,align 4
store i32 0,i32*%bN,align 4
ret i8*%bM
bQ:
store i8*null,i8**%c,align 8
br label%nA
bR:
%bS=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%bT=load i32,i32*%bS,align 4
switch i32%bT,label%bU[
i32 10,label%b2
i32 39,label%b1
]
bU:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%bV=call i8*@sml_alloc(i32 inreg 60)#0
%bW=getelementptr inbounds i8,i8*%bV,i64 -4
%bX=bitcast i8*%bW to i32*
store i32 1342177336,i32*%bX,align 4
%bY=getelementptr inbounds i8,i8*%bV,i64 56
%bZ=bitcast i8*%bY to i32*
store i32 1,i32*%bZ,align 4
%b0=bitcast i8*%bV to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@ag,i64 0,i32 2)to i8*),i8**%b0,align 8
call void@sml_raise(i8*inreg%bV)#1
unreachable
b1:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
b2:
store i8*null,i8**%c,align 8
br label%nA
b3:
%b4=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%b5=load i32,i32*%b4,align 4
switch i32%b5,label%b6[
i32 10,label%ce
i32 39,label%cd
]
b6:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%b7=call i8*@sml_alloc(i32 inreg 60)#0
%b8=getelementptr inbounds i8,i8*%b7,i64 -4
%b9=bitcast i8*%b8 to i32*
store i32 1342177336,i32*%b9,align 4
%ca=getelementptr inbounds i8,i8*%b7,i64 56
%cb=bitcast i8*%ca to i32*
store i32 1,i32*%cb,align 4
%cc=bitcast i8*%b7 to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@ae,i64 0,i32 2)to i8*),i8**%cc,align 8
call void@sml_raise(i8*inreg%b7)#1
unreachable
cd:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
ce:
store i8*null,i8**%c,align 8
br label%nA
cf:
%cg=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%ch=getelementptr inbounds i8,i8*%s,i64 8
%ci=bitcast i8*%ch to i8**
%cj=load i8*,i8**%ci,align 8
store i8*%cj,i8**%e,align 8
%ck=load i32,i32*%cg,align 4
switch i32%ck,label%cl[
i32 10,label%cu
i32 35,label%cn
i32 39,label%cm
]
cl:
store i8*null,i8**%e,align 8
br label%mT
cm:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
br label%nh
cn:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%co=call i8*@sml_alloc(i32 inreg 8)#0
%cp=getelementptr inbounds i8,i8*%co,i64 -4
%cq=bitcast i8*%cp to i32*
store i32 805306376,i32*%cq,align 4
%cr=bitcast i8*%co to i64*
store i64 0,i64*%cr,align 1
%cs=load i8*,i8**%e,align 8
%ct=bitcast i8*%co to i8**
call void@sml_write(i8*inreg%co,i8**inreg%ct,i8*inreg%cs)#0
ret i8*%co
cu:
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
br label%nA
cv:
%cw=bitcast i8*%v to i32*
%cx=getelementptr inbounds i8,i8*%s,i64 8
%cy=bitcast i8*%cx to i8**
%cz=load i8*,i8**%cy,align 8
store i8*%cz,i8**%e,align 8
%cA=load i32,i32*%cw,align 4
switch i32%cA,label%cB[
i32 10,label%cZ
i32 33,label%cD
i32 39,label%cC
]
cB:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%mT
cC:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%nh
cD:
store i8*null,i8**%d,align 8
%cE=getelementptr inbounds i8,i8*%v,i64 8
%cF=bitcast i8*%cE to i8**
%cG=load i8*,i8**%cF,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
%cK=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%cL=bitcast i8*%cH to i8**
store i8*%cK,i8**%cL,align 8
%cM=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cN=getelementptr inbounds i8,i8*%cH,i64 8
%cO=bitcast i8*%cN to i8**
store i8*%cM,i8**%cO,align 8
%cP=getelementptr inbounds i8,i8*%cH,i64 16
%cQ=bitcast i8*%cP to i32*
store i32 3,i32*%cQ,align 4
%cR=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cS=call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%cR,i8*inreg%cH)
store i8*%cS,i8**%c,align 8
%cT=call i8*@sml_alloc(i32 inreg 8)#0
%cU=getelementptr inbounds i8,i8*%cT,i64 -4
%cV=bitcast i8*%cU to i32*
store i32 805306376,i32*%cV,align 4
%cW=bitcast i8*%cT to i64*
store i64 0,i64*%cW,align 1
%cX=load i8*,i8**%c,align 8
%cY=bitcast i8*%cT to i8**
call void@sml_write(i8*inreg%cT,i8**inreg%cY,i8*inreg%cX)#0
ret i8*%cT
cZ:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
store i8*null,i8**%c,align 8
br label%nA
c0:
%c1=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%c2=getelementptr inbounds i8,i8*%s,i64 8
%c3=bitcast i8*%c2 to i8**
%c4=load i8*,i8**%c3,align 8
store i8*%c4,i8**%e,align 8
%c5=load i32,i32*%c1,align 4
switch i32%c5,label%c6[
i32 10,label%di
i32 33,label%c8
i32 39,label%c7
]
c6:
store i8*null,i8**%e,align 8
br label%mT
c7:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
br label%nh
c8:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%c9=call i8*@sml_alloc(i32 inreg 8)#0
%da=getelementptr inbounds i8,i8*%c9,i64 -4
%db=bitcast i8*%da to i32*
store i32 805306376,i32*%db,align 4
%dc=bitcast i8*%c9 to i64*
store i64 0,i64*%dc,align 1
%dd=load i8*,i8**%e,align 8
%de=getelementptr inbounds i8,i8*%dd,i64 8
%df=bitcast i8*%de to i8**
%dg=load i8*,i8**%df,align 8
%dh=bitcast i8*%c9 to i8**
call void@sml_write(i8*inreg%c9,i8**inreg%dh,i8*inreg%dg)#0
ret i8*%c9
di:
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
br label%nA
dj:
%dk=bitcast i8*%v to i32*
%dl=getelementptr inbounds i8,i8*%s,i64 8
%dm=bitcast i8*%dl to i8**
%dn=load i8*,i8**%dm,align 8
store i8*%dn,i8**%e,align 8
%do=load i32,i32*%dk,align 4
switch i32%do,label%dp[
i32 10,label%dX
i32 32,label%dr
i32 39,label%dq
]
dp:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%mT
dq:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%nh
dr:
store i8*null,i8**%c,align 8
%ds=getelementptr inbounds i8,i8*%v,i64 8
%dt=bitcast i8*%ds to i8**
%du=load i8*,i8**%dt,align 8
store i8*%du,i8**%d,align 8
%dv=call fastcc i8*@_SMLFN11RecordLabel3Map9listItemsE(i32 inreg 1,i32 inreg 8)
%dw=getelementptr inbounds i8,i8*%dv,i64 16
%dx=bitcast i8*%dw to i8*(i8*,i8*)**
%dy=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dx,align 8
%dz=bitcast i8*%dv to i8**
%dA=load i8*,i8**%dz,align 8
%dB=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dC=call fastcc i8*%dy(i8*inreg%dA,i8*inreg%dB)
store i8*%dC,i8**%c,align 8
%dD=call fastcc i8*@_SMLFN11RecordLabel3Map9listItemsE(i32 inreg 1,i32 inreg 8)
%dE=getelementptr inbounds i8,i8*%dD,i64 16
%dF=bitcast i8*%dE to i8*(i8*,i8*)**
%dG=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dF,align 8
%dH=bitcast i8*%dD to i8**
%dI=load i8*,i8**%dH,align 8
%dJ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%dK=call fastcc i8*%dG(i8*inreg%dI,i8*inreg%dJ)
store i8*%dK,i8**%d,align 8
%dL=call i8*@sml_alloc(i32 inreg 20)#0
%dM=getelementptr inbounds i8,i8*%dL,i64 -4
%dN=bitcast i8*%dM to i32*
store i32 1342177296,i32*%dN,align 4
%dO=load i8*,i8**%c,align 8
%dP=bitcast i8*%dL to i8**
store i8*%dO,i8**%dP,align 8
%dQ=load i8*,i8**%d,align 8
%dR=getelementptr inbounds i8,i8*%dL,i64 8
%dS=bitcast i8*%dR to i8**
store i8*%dQ,i8**%dS,align 8
%dT=getelementptr inbounds i8,i8*%dL,i64 16
%dU=bitcast i8*%dT to i32*
store i32 3,i32*%dU,align 4
%dV=load i8*,i8**%g,align 8
%dW=tail call fastcc i8*@_SMLL10makeRecord_229(i8*inreg%dV,i8*inreg%dL)
ret i8*%dW
dX:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
store i8*null,i8**%c,align 8
br label%nA
dY:
%dZ=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%d0=getelementptr inbounds i8,i8*%s,i64 8
%d1=bitcast i8*%d0 to i8**
%d2=load i8*,i8**%d1,align 8
store i8*%d2,i8**%e,align 8
%d3=load i32,i32*%dZ,align 4
switch i32%d3,label%d4[
i32 10,label%ed
i32 31,label%d6
i32 39,label%d5
]
d4:
store i8*null,i8**%e,align 8
br label%mT
d5:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
br label%nh
d6:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%d7=call i8*@sml_alloc(i32 inreg 8)#0
%d8=getelementptr inbounds i8,i8*%d7,i64 -4
%d9=bitcast i8*%d8 to i32*
store i32 805306376,i32*%d9,align 4
%ea=bitcast i8*%d7 to i64*
store i64 0,i64*%ea,align 1
%eb=load i8*,i8**%e,align 8
%ec=bitcast i8*%d7 to i8**
call void@sml_write(i8*inreg%d7,i8**inreg%ec,i8*inreg%eb)#0
ret i8*%d7
ed:
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
br label%nA
ee:
%ef=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%eg=load i32,i32*%ef,align 4
switch i32%eg,label%mT[
i32 10,label%eq
i32 28,label%ei
i32 39,label%eh
]
eh:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
ei:
%ej=getelementptr inbounds i8,i8*%s,i64 4
%ek=bitcast i8*%ej to float*
%el=load float,float*%ek,align 4
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%em=call i8*@sml_alloc(i32 inreg 4)#0
%en=getelementptr inbounds i8,i8*%em,i64 -4
%eo=bitcast i8*%en to i32*
store i32 536870916,i32*%eo,align 4
%ep=bitcast i8*%em to float*
store float%el,float*%ep,align 4
ret i8*%em
eq:
store i8*null,i8**%c,align 8
br label%nA
er:
%es=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%et=load i32,i32*%es,align 4
switch i32%et,label%mT[
i32 10,label%eD
i32 29,label%ev
i32 39,label%eu
]
eu:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
ev:
%ew=getelementptr inbounds i8,i8*%s,i64 8
%ex=bitcast i8*%ew to double*
%ey=load double,double*%ex,align 8
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%ez=call i8*@sml_alloc(i32 inreg 8)#0
%eA=getelementptr inbounds i8,i8*%ez,i64 -4
%eB=bitcast i8*%eA to i32*
store i32 536870920,i32*%eB,align 4
%eC=bitcast i8*%ez to double*
store double%ey,double*%eC,align 8
ret i8*%ez
eD:
store i8*null,i8**%c,align 8
br label%nA
eE:
%eF=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%eG=load i32,i32*%eF,align 4
switch i32%eG,label%mT[
i32 10,label%eQ
i32 27,label%eI
i32 39,label%eH
]
eH:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
eI:
%eJ=getelementptr inbounds i8,i8*%s,i64 8
%eK=bitcast i8*%eJ to i64*
%eL=load i64,i64*%eK,align 4
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%eM=call i8*@sml_alloc(i32 inreg 8)#0
%eN=getelementptr inbounds i8,i8*%eM,i64 -4
%eO=bitcast i8*%eN to i32*
store i32 536870920,i32*%eO,align 4
%eP=bitcast i8*%eM to i64*
store i64%eL,i64*%eP,align 4
ret i8*%eM
eQ:
store i8*null,i8**%c,align 8
br label%nA
eR:
%eS=bitcast i8*%v to i32*
%eT=getelementptr inbounds i8,i8*%s,i64 8
%eU=bitcast i8*%eT to i8**
%eV=load i8*,i8**%eU,align 8
%eW=bitcast i8*%eV to i8**
%eX=load i8*,i8**%eW,align 8
store i8*%eX,i8**%e,align 8
%eY=getelementptr inbounds i8,i8*%eV,i64 8
%eZ=bitcast i8*%eY to i8**
%e0=load i8*,i8**%eZ,align 8
store i8*%e0,i8**%f,align 8
%e1=load i32,i32*%eS,align 4
switch i32%e1,label%e2[
i32 10,label%fn
i32 25,label%e4
i32 39,label%e3
]
e2:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%g,align 8
br label%mT
e3:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%g,align 8
br label%nh
e4:
store i8*null,i8**%d,align 8
%e5=getelementptr inbounds i8,i8*%v,i64 8
%e6=bitcast i8*%e5 to i8**
%e7=load i8*,i8**%e6,align 8
store i8*%e7,i8**%c,align 8
%e8=call i8*@sml_alloc(i32 inreg 28)#0
%e9=getelementptr inbounds i8,i8*%e8,i64 -4
%fa=bitcast i8*%e9 to i32*
store i32 1342177304,i32*%fa,align 4
%fb=load i8*,i8**%e,align 8
%fc=bitcast i8*%e8 to i8**
store i8*%fb,i8**%fc,align 8
%fd=load i8*,i8**%f,align 8
%fe=getelementptr inbounds i8,i8*%e8,i64 8
%ff=bitcast i8*%fe to i8**
store i8*%fd,i8**%ff,align 8
%fg=load i8*,i8**%c,align 8
%fh=getelementptr inbounds i8,i8*%e8,i64 16
%fi=bitcast i8*%fh to i8**
store i8*%fg,i8**%fi,align 8
%fj=getelementptr inbounds i8,i8*%e8,i64 24
%fk=bitcast i8*%fj to i32*
store i32 7,i32*%fk,align 4
%fl=load i8*,i8**%g,align 8
%fm=tail call fastcc i8*@_SMLL10toMLOption_233(i8*inreg%fl,i8*inreg%e8)
ret i8*%fm
fn:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%g,align 8
store i8*null,i8**%c,align 8
br label%nA
fo:
%fp=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%fq=load i32,i32*%fp,align 4
switch i32%fq,label%mT[
i32 10,label%fL
i32 24,label%fs
i32 39,label%fr
]
fr:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
fs:
store i8*null,i8**%c,align 8
%ft=call i8*@sml_alloc(i32 inreg 28)#0
%fu=getelementptr inbounds i8,i8*%ft,i64 -4
%fv=bitcast i8*%fu to i32*
store i32 1342177304,i32*%fv,align 4
store i8*%ft,i8**%c,align 8
%fw=bitcast i8*%ft to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%fw,align 8
%fx=getelementptr inbounds i8,i8*%ft,i64 8
%fy=bitcast i8*%fx to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@ac,i64 0,i32 2,i64 0),i8**%fy,align 8
%fz=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%fA=getelementptr inbounds i8,i8*%ft,i64 16
%fB=bitcast i8*%fA to i8**
store i8*%fz,i8**%fB,align 8
%fC=getelementptr inbounds i8,i8*%ft,i64 24
%fD=bitcast i8*%fC to i32*
store i32 7,i32*%fD,align 4
%fE=call i8*@sml_alloc(i32 inreg 60)#0
%fF=getelementptr inbounds i8,i8*%fE,i64 -4
%fG=bitcast i8*%fF to i32*
store i32 1342177336,i32*%fG,align 4
%fH=getelementptr inbounds i8,i8*%fE,i64 56
%fI=bitcast i8*%fH to i32*
store i32 1,i32*%fI,align 4
%fJ=load i8*,i8**%c,align 8
%fK=bitcast i8*%fE to i8**
store i8*%fJ,i8**%fK,align 8
call void@sml_raise(i8*inreg%fE)#1
unreachable
fL:
store i8*null,i8**%c,align 8
br label%nA
fM:
%fN=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%fO=load i32,i32*%fN,align 4
%fP=icmp eq i32%fO,10
br i1%fP,label%fQ,label%nm
fQ:
store i8*null,i8**%c,align 8
br label%nA
fR:
%fS=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%fT=load i32,i32*%fS,align 4
%fU=icmp eq i32%fT,10
br i1%fU,label%fV,label%nt
fV:
store i8*null,i8**%c,align 8
br label%nA
fW:
%fX=bitcast i8*%v to i32*
%fY=getelementptr inbounds i8,i8*%s,i64 8
%fZ=bitcast i8*%fY to i8**
%f0=load i8*,i8**%fZ,align 8
store i8*%f0,i8**%e,align 8
%f1=load i32,i32*%fX,align 4
switch i32%f1,label%f2[
i32 10,label%gk
i32 23,label%f4
i32 39,label%f3
]
f2:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%mT
f3:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%nh
f4:
store i8*null,i8**%d,align 8
%f5=getelementptr inbounds i8,i8*%v,i64 8
%f6=bitcast i8*%f5 to i8**
%f7=load i8*,i8**%f6,align 8
store i8*%f7,i8**%c,align 8
%f8=call i8*@sml_alloc(i32 inreg 20)#0
%f9=getelementptr inbounds i8,i8*%f8,i64 -4
%ga=bitcast i8*%f9 to i32*
store i32 1342177296,i32*%ga,align 4
%gb=load i8*,i8**%e,align 8
%gc=bitcast i8*%f8 to i8**
store i8*%gb,i8**%gc,align 8
%gd=load i8*,i8**%c,align 8
%ge=getelementptr inbounds i8,i8*%f8,i64 8
%gf=bitcast i8*%ge to i8**
store i8*%gd,i8**%gf,align 8
%gg=getelementptr inbounds i8,i8*%f8,i64 16
%gh=bitcast i8*%gg to i32*
store i32 3,i32*%gh,align 4
%gi=load i8*,i8**%g,align 8
%gj=tail call fastcc i8*@_SMLL8toMLList_232(i8*inreg%gi,i8*inreg%f8)
ret i8*%gj
gk:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
store i8*null,i8**%c,align 8
br label%nA
gl:
%gm=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%gn=getelementptr inbounds i8,i8*%s,i64 8
%go=bitcast i8*%gn to i8**
%gp=load i8*,i8**%go,align 8
store i8*%gp,i8**%e,align 8
%gq=load i32,i32*%gm,align 4
switch i32%gq,label%gr[
i32 10,label%gA
i32 22,label%gt
i32 39,label%gs
]
gr:
store i8*null,i8**%e,align 8
br label%mT
gs:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
br label%nh
gt:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%gu=call i8*@sml_alloc(i32 inreg 8)#0
%gv=getelementptr inbounds i8,i8*%gu,i64 -4
%gw=bitcast i8*%gv to i32*
store i32 805306376,i32*%gw,align 4
%gx=bitcast i8*%gu to i64*
store i64 0,i64*%gx,align 1
%gy=load i8*,i8**%e,align 8
%gz=bitcast i8*%gu to i8**
call void@sml_write(i8*inreg%gu,i8**inreg%gz,i8*inreg%gy)#0
ret i8*%gu
gA:
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
br label%nA
gB:
%gC=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%gD=load i32,i32*%gC,align 4
switch i32%gD,label%mT[
i32 10,label%gY
i32 21,label%gF
i32 39,label%gE
]
gE:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
gF:
store i8*null,i8**%c,align 8
%gG=call i8*@sml_alloc(i32 inreg 28)#0
%gH=getelementptr inbounds i8,i8*%gG,i64 -4
%gI=bitcast i8*%gH to i32*
store i32 1342177304,i32*%gI,align 4
store i8*%gG,i8**%c,align 8
%gJ=bitcast i8*%gG to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%gJ,align 8
%gK=getelementptr inbounds i8,i8*%gG,i64 8
%gL=bitcast i8*%gK to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@ab,i64 0,i32 2,i64 0),i8**%gL,align 8
%gM=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%gN=getelementptr inbounds i8,i8*%gG,i64 16
%gO=bitcast i8*%gN to i8**
store i8*%gM,i8**%gO,align 8
%gP=getelementptr inbounds i8,i8*%gG,i64 24
%gQ=bitcast i8*%gP to i32*
store i32 7,i32*%gQ,align 4
%gR=call i8*@sml_alloc(i32 inreg 60)#0
%gS=getelementptr inbounds i8,i8*%gR,i64 -4
%gT=bitcast i8*%gS to i32*
store i32 1342177336,i32*%gT,align 4
%gU=getelementptr inbounds i8,i8*%gR,i64 56
%gV=bitcast i8*%gU to i32*
store i32 1,i32*%gV,align 4
%gW=load i8*,i8**%c,align 8
%gX=bitcast i8*%gR to i8**
store i8*%gW,i8**%gX,align 8
call void@sml_raise(i8*inreg%gR)#1
unreachable
gY:
store i8*null,i8**%c,align 8
br label%nA
gZ:
%g0=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%g1=load i32,i32*%g0,align 4
switch i32%g1,label%mT[
i32 10,label%g9
i32 20,label%g3
i32 39,label%g2
]
g2:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
g3:
%g4=getelementptr inbounds i8,i8*%s,i64 4
%g5=load i8,i8*%g4,align 1
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%g6=call i8*@sml_alloc(i32 inreg 1)#0
%g7=getelementptr inbounds i8,i8*%g6,i64 -4
%g8=bitcast i8*%g7 to i32*
store i32 536870913,i32*%g8,align 4
store i8%g5,i8*%g6,align 1
ret i8*%g6
g9:
store i8*null,i8**%c,align 8
br label%nA
ha:
%hb=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%hc=load i32,i32*%hb,align 4
switch i32%hc,label%mT[
i32 10,label%hm
i32 19,label%he
i32 39,label%hd
]
hd:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
he:
%hf=getelementptr inbounds i8,i8*%s,i64 8
%hg=bitcast i8*%hf to i64*
%hh=load i64,i64*%hg,align 4
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%hi=call i8*@sml_alloc(i32 inreg 8)#0
%hj=getelementptr inbounds i8,i8*%hi,i64 -4
%hk=bitcast i8*%hj to i32*
store i32 536870920,i32*%hk,align 4
%hl=bitcast i8*%hi to i64*
store i64%hh,i64*%hl,align 4
ret i8*%hi
hm:
store i8*null,i8**%c,align 8
br label%nA
hn:
%ho=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%hp=load i32,i32*%ho,align 4
switch i32%hp,label%mT[
i32 10,label%hz
i32 17,label%hr
i32 39,label%hq
]
hq:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
hr:
%hs=getelementptr inbounds i8,i8*%s,i64 4
%ht=bitcast i8*%hs to i16*
%hu=load i16,i16*%ht,align 2
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%hv=call i8*@sml_alloc(i32 inreg 2)#0
%hw=getelementptr inbounds i8,i8*%hv,i64 -4
%hx=bitcast i8*%hw to i32*
store i32 536870914,i32*%hx,align 4
%hy=bitcast i8*%hv to i16*
store i16%hu,i16*%hy,align 2
ret i8*%hv
hz:
store i8*null,i8**%c,align 8
br label%nA
hA:
%hB=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%hC=load i32,i32*%hB,align 4
switch i32%hC,label%mT[
i32 10,label%hM
i32 18,label%hE
i32 39,label%hD
]
hD:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
hE:
%hF=getelementptr inbounds i8,i8*%s,i64 4
%hG=bitcast i8*%hF to i32*
%hH=load i32,i32*%hG,align 4
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%hI=call i8*@sml_alloc(i32 inreg 4)#0
%hJ=bitcast i8*%hI to i32*
%hK=getelementptr inbounds i8,i8*%hI,i64 -4
%hL=bitcast i8*%hK to i32*
store i32 536870916,i32*%hL,align 4
store i32%hH,i32*%hJ,align 4
ret i8*%hI
hM:
store i8*null,i8**%c,align 8
br label%nA
hN:
%hO=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%hP=getelementptr inbounds i8,i8*%s,i64 8
%hQ=bitcast i8*%hP to i8**
%hR=load i8*,i8**%hQ,align 8
store i8*%hR,i8**%e,align 8
%hS=getelementptr inbounds i8,i8*%hR,i64 8
%hT=bitcast i8*%hS to i8**
%hU=load i8*,i8**%hT,align 8
store i8*%hU,i8**%f,align 8
%hV=load i32,i32*%hO,align 4
switch i32%hV,label%hW[
i32 10,label%iI
i32 15,label%hY
i32 39,label%hX
]
hW:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
br label%mT
hX:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
br label%nh
hY:
store i8*null,i8**%d,align 8
%hZ=call i8*@sml_alloc(i32 inreg 20)#0
%h0=getelementptr inbounds i8,i8*%hZ,i64 -4
%h1=bitcast i8*%h0 to i32*
store i32 1342177296,i32*%h1,align 4
%h2=load i8*,i8**%f,align 8
%h3=bitcast i8*%hZ to i8**
store i8*%h2,i8**%h3,align 8
%h4=load i8*,i8**%c,align 8
%h5=getelementptr inbounds i8,i8*%hZ,i64 8
%h6=bitcast i8*%h5 to i8**
store i8*%h4,i8**%h6,align 8
%h7=getelementptr inbounds i8,i8*%hZ,i64 16
%h8=bitcast i8*%h7 to i32*
store i32 3,i32*%h8,align 4
%h9=call fastcc i32@_SMLFN9ReifiedTy11reifiedTyEqE(i8*inreg%hZ)
%ia=icmp eq i32%h9,0
br i1%ia,label%ik,label%ib
ib:
store i8*null,i8**%c,align 8
store i8*null,i8**%f,align 8
%ic=call i8*@sml_alloc(i32 inreg 8)#0
%id=getelementptr inbounds i8,i8*%ic,i64 -4
%ie=bitcast i8*%id to i32*
store i32 805306376,i32*%ie,align 4
%if=bitcast i8*%ic to i64*
store i64 0,i64*%if,align 1
%ig=bitcast i8**%e to i8***
%ih=load i8**,i8***%ig,align 8
%ii=load i8*,i8**%ih,align 8
%ij=bitcast i8*%ic to i8**
call void@sml_write(i8*inreg%ic,i8**inreg%ij,i8*inreg%ii)#0
ret i8*%ic
ik:
store i8*null,i8**%e,align 8
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[13x i8]}>,<{[4x i8],i32,[13x i8]}>*@Z,i64 0,i32 2,i64 0))
%il=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%im=call fastcc i8*@_SMLFN9ReifiedTy17reifiedTyToStringE(i8*inreg%il)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg%im)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@aB,i64 0,i32 2,i64 0))
%in=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%io=call fastcc i8*@_SMLFN9ReifiedTy17reifiedTyToStringE(i8*inreg%in)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg%io)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@aB,i64 0,i32 2,i64 0))
%ip=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%ip,i8**%c,align 8
%iq=call i8*@sml_alloc(i32 inreg 28)#0
%ir=getelementptr inbounds i8,i8*%iq,i64 -4
%is=bitcast i8*%ir to i32*
store i32 1342177304,i32*%is,align 4
store i8*%iq,i8**%d,align 8
%it=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%iu=bitcast i8*%iq to i8**
store i8*%it,i8**%iu,align 8
%iv=getelementptr inbounds i8,i8*%iq,i64 8
%iw=bitcast i8*%iv to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@aa,i64 0,i32 2,i64 0),i8**%iw,align 8
%ix=getelementptr inbounds i8,i8*%iq,i64 16
%iy=bitcast i8*%ix to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[49x i8]}>,<{[4x i8],i32,[49x i8]}>*@aD,i64 0,i32 2,i64 0),i8**%iy,align 8
%iz=getelementptr inbounds i8,i8*%iq,i64 24
%iA=bitcast i8*%iz to i32*
store i32 7,i32*%iA,align 4
%iB=call i8*@sml_alloc(i32 inreg 60)#0
%iC=getelementptr inbounds i8,i8*%iB,i64 -4
%iD=bitcast i8*%iC to i32*
store i32 1342177336,i32*%iD,align 4
%iE=getelementptr inbounds i8,i8*%iB,i64 56
%iF=bitcast i8*%iE to i32*
store i32 1,i32*%iF,align 4
%iG=load i8*,i8**%d,align 8
%iH=bitcast i8*%iB to i8**
store i8*%iG,i8**%iH,align 8
call void@sml_raise(i8*inreg%iB)#1
unreachable
iI:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%c,align 8
br label%nA
iJ:
%iK=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%iL=load i32,i32*%iK,align 4
switch i32%iL,label%mT[
i32 10,label%i6
i32 13,label%iN
i32 39,label%iM
]
iM:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
iN:
store i8*null,i8**%c,align 8
%iO=call i8*@sml_alloc(i32 inreg 28)#0
%iP=getelementptr inbounds i8,i8*%iO,i64 -4
%iQ=bitcast i8*%iP to i32*
store i32 1342177304,i32*%iQ,align 4
store i8*%iO,i8**%c,align 8
%iR=bitcast i8*%iO to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%iR,align 8
%iS=getelementptr inbounds i8,i8*%iO,i64 8
%iT=bitcast i8*%iS to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@Y,i64 0,i32 2,i64 0),i8**%iT,align 8
%iU=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%iV=getelementptr inbounds i8,i8*%iO,i64 16
%iW=bitcast i8*%iV to i8**
store i8*%iU,i8**%iW,align 8
%iX=getelementptr inbounds i8,i8*%iO,i64 24
%iY=bitcast i8*%iX to i32*
store i32 7,i32*%iY,align 4
%iZ=call i8*@sml_alloc(i32 inreg 60)#0
%i0=getelementptr inbounds i8,i8*%iZ,i64 -4
%i1=bitcast i8*%i0 to i32*
store i32 1342177336,i32*%i1,align 4
%i2=getelementptr inbounds i8,i8*%iZ,i64 56
%i3=bitcast i8*%i2 to i32*
store i32 1,i32*%i3,align 4
%i4=load i8*,i8**%c,align 8
%i5=bitcast i8*%iZ to i8**
store i8*%i4,i8**%i5,align 8
call void@sml_raise(i8*inreg%iZ)#1
unreachable
i6:
store i8*null,i8**%c,align 8
br label%nA
i7:
%i8=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%i9=load i32,i32*%i8,align 4
switch i32%i9,label%mT[
i32 10,label%ju
i32 14,label%jb
i32 39,label%ja
]
ja:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
jb:
store i8*null,i8**%c,align 8
%jc=call i8*@sml_alloc(i32 inreg 28)#0
%jd=getelementptr inbounds i8,i8*%jc,i64 -4
%je=bitcast i8*%jd to i32*
store i32 1342177304,i32*%je,align 4
store i8*%jc,i8**%c,align 8
%jf=bitcast i8*%jc to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%jf,align 8
%jg=getelementptr inbounds i8,i8*%jc,i64 8
%jh=bitcast i8*%jg to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@X,i64 0,i32 2,i64 0),i8**%jh,align 8
%ji=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%jj=getelementptr inbounds i8,i8*%jc,i64 16
%jk=bitcast i8*%jj to i8**
store i8*%ji,i8**%jk,align 8
%jl=getelementptr inbounds i8,i8*%jc,i64 24
%jm=bitcast i8*%jl to i32*
store i32 7,i32*%jm,align 4
%jn=call i8*@sml_alloc(i32 inreg 60)#0
%jo=getelementptr inbounds i8,i8*%jn,i64 -4
%jp=bitcast i8*%jo to i32*
store i32 1342177336,i32*%jp,align 4
%jq=getelementptr inbounds i8,i8*%jn,i64 56
%jr=bitcast i8*%jq to i32*
store i32 1,i32*%jr,align 4
%js=load i8*,i8**%c,align 8
%jt=bitcast i8*%jn to i8**
store i8*%js,i8**%jt,align 8
call void@sml_raise(i8*inreg%jn)#1
unreachable
ju:
store i8*null,i8**%c,align 8
br label%nA
jv:
%jw=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%jx=getelementptr inbounds i8,i8*%s,i64 8
%jy=bitcast i8*%jx to i8**
%jz=load i8*,i8**%jy,align 8
store i8*%jz,i8**%e,align 8
%jA=load i32,i32*%jw,align 4
switch i32%jA,label%jB[
i32 10,label%jD
i32 39,label%jC
]
jB:
store i8*null,i8**%e,align 8
br label%mT
jC:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
br label%nh
jD:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%jE=call i8*@sml_alloc(i32 inreg 8)#0
%jF=getelementptr inbounds i8,i8*%jE,i64 -4
%jG=bitcast i8*%jF to i32*
store i32 805306376,i32*%jG,align 4
%jH=bitcast i8*%jE to i64*
store i64 0,i64*%jH,align 1
%jI=load i8*,i8**%e,align 8
%jJ=getelementptr inbounds i8,i8*%jI,i64 8
%jK=bitcast i8*%jJ to i8**
%jL=load i8*,i8**%jK,align 8
%jM=bitcast i8*%jE to i8**
call void@sml_write(i8*inreg%jE,i8**inreg%jM,i8*inreg%jL)#0
ret i8*%jE
jN:
%jO=bitcast i8*%v to i32*
%jP=getelementptr inbounds i8,i8*%s,i64 8
%jQ=bitcast i8*%jP to i8**
%jR=load i8*,i8**%jQ,align 8
store i8*%jR,i8**%e,align 8
%jS=load i32,i32*%jO,align 4
switch i32%jS,label%jT[
i32 7,label%kn
i32 8,label%jW
i32 10,label%jV
i32 39,label%jU
]
jT:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%mT
jU:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
br label%nh
jV:
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
store i8*null,i8**%c,align 8
br label%nA
jW:
%jX=load i8**,i8***%h,align 8
%jY=load i8*,i8**%jX,align 8
store i8*%jY,i8**%e,align 8
%jZ=call i8*@sml_alloc(i32 inreg 20)#0
%j0=getelementptr inbounds i8,i8*%jZ,i64 -4
%j1=bitcast i8*%j0 to i32*
store i32 1342177296,i32*%j1,align 4
%j2=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%j3=bitcast i8*%jZ to i8**
store i8*%j2,i8**%j3,align 8
%j4=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%j5=getelementptr inbounds i8,i8*%jZ,i64 8
%j6=bitcast i8*%j5 to i8**
store i8*%j4,i8**%j6,align 8
%j7=getelementptr inbounds i8,i8*%jZ,i64 16
%j8=bitcast i8*%j7 to i32*
store i32 3,i32*%j8,align 4
%j9=call fastcc i8*@_SMLFN9ReifiedTy14getConstructTyE(i8*inreg%jZ)
%ka=getelementptr inbounds i8,i8*%j9,i64 8
%kb=bitcast i8*%ka to i8**
%kc=load i8*,i8**%kb,align 8
store i8*%kc,i8**%c,align 8
%kd=call i8*@sml_alloc(i32 inreg 20)#0
%ke=getelementptr inbounds i8,i8*%kd,i64 -4
%kf=bitcast i8*%ke to i32*
store i32 1342177296,i32*%kf,align 4
%kg=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%kh=bitcast i8*%kd to i8**
store i8*%kg,i8**%kh,align 8
%ki=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%kj=getelementptr inbounds i8,i8*%kd,i64 8
%kk=bitcast i8*%kj to i8**
store i8*%ki,i8**%kk,align 8
%kl=getelementptr inbounds i8,i8*%kd,i64 16
%km=bitcast i8*%kl to i32*
store i32 3,i32*%km,align 4
br label%i
kn:
store i8*null,i8**%d,align 8
%ko=getelementptr inbounds i8,i8*%v,i64 8
%kp=bitcast i8*%ko to i8**
%kq=load i8*,i8**%kp,align 8
store i8*%kq,i8**%c,align 8
%kr=call i8*@sml_alloc(i32 inreg 20)#0
%ks=getelementptr inbounds i8,i8*%kr,i64 -4
%kt=bitcast i8*%ks to i32*
store i32 1342177296,i32*%kt,align 4
%ku=load i8*,i8**%e,align 8
%kv=bitcast i8*%kr to i8**
store i8*%ku,i8**%kv,align 8
%kw=load i8*,i8**%c,align 8
%kx=getelementptr inbounds i8,i8*%kr,i64 8
%ky=bitcast i8*%kx to i8**
store i8*%kw,i8**%ky,align 8
%kz=getelementptr inbounds i8,i8*%kr,i64 16
%kA=bitcast i8*%kz to i32*
store i32 3,i32*%kA,align 4
%kB=load i8*,i8**%g,align 8
%kC=tail call fastcc i8*@_SMLL12toMLDatatype_231(i8*inreg%kB,i8*inreg%kr)
ret i8*%kC
kD:
%kE=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%kF=load i32,i32*%kE,align 4
switch i32%kF,label%mT[
i32 6,label%kI
i32 10,label%kH
i32 39,label%kG
]
kG:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
kH:
store i8*null,i8**%c,align 8
br label%nA
kI:
store i8*null,i8**%c,align 8
%kJ=call i8*@sml_alloc(i32 inreg 28)#0
%kK=getelementptr inbounds i8,i8*%kJ,i64 -4
%kL=bitcast i8*%kK to i32*
store i32 1342177304,i32*%kL,align 4
store i8*%kJ,i8**%c,align 8
%kM=bitcast i8*%kJ to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%kM,align 8
%kN=getelementptr inbounds i8,i8*%kJ,i64 8
%kO=bitcast i8*%kN to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@W,i64 0,i32 2,i64 0),i8**%kO,align 8
%kP=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%kQ=getelementptr inbounds i8,i8*%kJ,i64 16
%kR=bitcast i8*%kQ to i8**
store i8*%kP,i8**%kR,align 8
%kS=getelementptr inbounds i8,i8*%kJ,i64 24
%kT=bitcast i8*%kS to i32*
store i32 7,i32*%kT,align 4
%kU=call i8*@sml_alloc(i32 inreg 60)#0
%kV=getelementptr inbounds i8,i8*%kU,i64 -4
%kW=bitcast i8*%kV to i32*
store i32 1342177336,i32*%kW,align 4
%kX=getelementptr inbounds i8,i8*%kU,i64 56
%kY=bitcast i8*%kX to i32*
store i32 1,i32*%kY,align 4
%kZ=load i8*,i8**%c,align 8
%k0=bitcast i8*%kU to i8**
store i8*%kZ,i8**%k0,align 8
call void@sml_raise(i8*inreg%kU)#1
unreachable
k1:
%k2=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%k3=load i32,i32*%k2,align 4
switch i32%k3,label%mT[
i32 5,label%k6
i32 10,label%k5
i32 39,label%k4
]
k4:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
k5:
store i8*null,i8**%c,align 8
br label%nA
k6:
%k7=getelementptr inbounds i8,i8*%s,i64 4
%k8=load i8,i8*%k7,align 1
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%k9=call i8*@sml_alloc(i32 inreg 1)#0
%la=getelementptr inbounds i8,i8*%k9,i64 -4
%lb=bitcast i8*%la to i32*
store i32 536870913,i32*%lb,align 4
store i8%k8,i8*%k9,align 1
ret i8*%k9
lc:
%ld=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%le=load i32,i32*%ld,align 4
switch i32%le,label%lf[
i32 10,label%lz
i32 39,label%ly
]
lf:
store i8*null,i8**%c,align 8
%lg=call i8*@sml_alloc(i32 inreg 28)#0
%lh=getelementptr inbounds i8,i8*%lg,i64 -4
%li=bitcast i8*%lh to i32*
store i32 1342177304,i32*%li,align 4
store i8*%lg,i8**%c,align 8
%lj=bitcast i8*%lg to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%lj,align 8
%lk=getelementptr inbounds i8,i8*%lg,i64 8
%ll=bitcast i8*%lk to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@V,i64 0,i32 2,i64 0),i8**%ll,align 8
%lm=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ln=getelementptr inbounds i8,i8*%lg,i64 16
%lo=bitcast i8*%ln to i8**
store i8*%lm,i8**%lo,align 8
%lp=getelementptr inbounds i8,i8*%lg,i64 24
%lq=bitcast i8*%lp to i32*
store i32 7,i32*%lq,align 4
%lr=call i8*@sml_alloc(i32 inreg 60)#0
%ls=getelementptr inbounds i8,i8*%lr,i64 -4
%lt=bitcast i8*%ls to i32*
store i32 1342177336,i32*%lt,align 4
%lu=getelementptr inbounds i8,i8*%lr,i64 56
%lv=bitcast i8*%lu to i32*
store i32 1,i32*%lv,align 4
%lw=load i8*,i8**%c,align 8
%lx=bitcast i8*%lr to i8**
store i8*%lw,i8**%lx,align 8
call void@sml_raise(i8*inreg%lr)#1
unreachable
ly:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
lz:
store i8*null,i8**%c,align 8
br label%nA
lA:
%lB=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%lC=load i32,i32*%lB,align 4
switch i32%lC,label%mT[
i32 3,label%lF
i32 10,label%lE
i32 39,label%lD
]
lD:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
lE:
store i8*null,i8**%c,align 8
br label%nA
lF:
store i8*null,i8**%c,align 8
%lG=call i8*@sml_alloc(i32 inreg 28)#0
%lH=getelementptr inbounds i8,i8*%lG,i64 -4
%lI=bitcast i8*%lH to i32*
store i32 1342177304,i32*%lI,align 4
store i8*%lG,i8**%c,align 8
%lJ=bitcast i8*%lG to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL190,i64 0,i32 2)to i8*),i8**%lJ,align 8
%lK=getelementptr inbounds i8,i8*%lG,i64 8
%lL=bitcast i8*%lK to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@U,i64 0,i32 2,i64 0),i8**%lL,align 8
%lM=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%lN=getelementptr inbounds i8,i8*%lG,i64 16
%lO=bitcast i8*%lN to i8**
store i8*%lM,i8**%lO,align 8
%lP=getelementptr inbounds i8,i8*%lG,i64 24
%lQ=bitcast i8*%lP to i32*
store i32 7,i32*%lQ,align 4
%lR=call i8*@sml_alloc(i32 inreg 60)#0
%lS=getelementptr inbounds i8,i8*%lR,i64 -4
%lT=bitcast i8*%lS to i32*
store i32 1342177336,i32*%lT,align 4
%lU=getelementptr inbounds i8,i8*%lR,i64 56
%lV=bitcast i8*%lU to i32*
store i32 1,i32*%lV,align 4
%lW=load i8*,i8**%c,align 8
%lX=bitcast i8*%lR to i8**
store i8*%lW,i8**%lX,align 8
call void@sml_raise(i8*inreg%lR)#1
unreachable
lY:
%lZ=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%l0=load i32,i32*%lZ,align 4
switch i32%l0,label%mT[
i32 1,label%l3
i32 10,label%l2
i32 39,label%l1
]
l1:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
l2:
store i8*null,i8**%c,align 8
br label%nA
l3:
%l4=getelementptr inbounds i8,i8*%s,i64 4
%l5=bitcast i8*%l4 to i32*
%l6=load i32,i32*%l5,align 4
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%l7=call i8*@sml_alloc(i32 inreg 4)#0
%l8=bitcast i8*%l7 to i32*
%l9=getelementptr inbounds i8,i8*%l7,i64 -4
%ma=bitcast i8*%l9 to i32*
store i32 536870916,i32*%ma,align 4
store i32%l6,i32*%l8,align 4
ret i8*%l7
mb:
%mc=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%md=load i32,i32*%mc,align 4
switch i32%md,label%mT[
i32 0,label%mg
i32 10,label%mf
i32 39,label%me
]
me:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
br label%nh
mf:
store i8*null,i8**%c,align 8
br label%nA
mg:
store i8*null,i8**%d,align 8
%mh=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%mh,i8**%c,align 8
%mi=call i8*@sml_alloc(i32 inreg 28)#0
%mj=getelementptr inbounds i8,i8*%mi,i64 -4
%mk=bitcast i8*%mj to i32*
store i32 1342177304,i32*%mk,align 4
store i8*%mi,i8**%d,align 8
%ml=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%mm=bitcast i8*%mi to i8**
store i8*%ml,i8**%mm,align 8
%mn=getelementptr inbounds i8,i8*%mi,i64 8
%mo=bitcast i8*%mn to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@S,i64 0,i32 2,i64 0),i8**%mo,align 8
%mp=getelementptr inbounds i8,i8*%mi,i64 16
%mq=bitcast i8*%mp to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[22x i8]}>,<{[4x i8],i32,[22x i8]}>*@T,i64 0,i32 2,i64 0),i8**%mq,align 8
%mr=getelementptr inbounds i8,i8*%mi,i64 24
%ms=bitcast i8*%mr to i32*
store i32 7,i32*%ms,align 4
%mt=call i8*@sml_alloc(i32 inreg 60)#0
%mu=getelementptr inbounds i8,i8*%mt,i64 -4
%mv=bitcast i8*%mu to i32*
store i32 1342177336,i32*%mv,align 4
%mw=getelementptr inbounds i8,i8*%mt,i64 56
%mx=bitcast i8*%mw to i32*
store i32 1,i32*%mx,align 4
%my=load i8*,i8**%d,align 8
%mz=bitcast i8*%mt to i8**
store i8*%my,i8**%mz,align 8
call void@sml_raise(i8*inreg%mt)#1
unreachable
mA:
%mB=bitcast i8*%v to i32*
store i8*null,i8**%g,align 8
%mC=getelementptr inbounds i8,i8*%s,i64 8
%mD=bitcast i8*%mC to i8**
%mE=load i8*,i8**%mD,align 8
store i8*%mE,i8**%e,align 8
%mF=load i32,i32*%mB,align 4
switch i32%mF,label%mG[
i32 0,label%mJ
i32 10,label%mI
i32 39,label%mH
]
mG:
store i8*null,i8**%e,align 8
br label%mT
mH:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
store i8*null,i8**%e,align 8
br label%nh
mI:
store i8*null,i8**%e,align 8
store i8*null,i8**%c,align 8
br label%nA
mJ:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%mK=call i8*@sml_alloc(i32 inreg 8)#0
%mL=getelementptr inbounds i8,i8*%mK,i64 -4
%mM=bitcast i8*%mL to i32*
store i32 805306376,i32*%mM,align 4
%mN=bitcast i8*%mK to i64*
store i64 0,i64*%mN,align 1
%mO=load i8*,i8**%e,align 8
%mP=getelementptr inbounds i8,i8*%mO,i64 8
%mQ=bitcast i8*%mP to i8**
%mR=load i8*,i8**%mQ,align 8
%mS=bitcast i8*%mK to i8**
call void@sml_write(i8*inreg%mK,i8**inreg%mS,i8*inreg%mR)#0
ret i8*%mK
mT:
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[13x i8]}>,<{[4x i8],i32,[13x i8]}>*@Q,i64 0,i32 2,i64 0))
%mU=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%mV=call fastcc i8*@_SMLFN9ReifiedTy17reifiedTyToStringE(i8*inreg%mU)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg%mV)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@aB,i64 0,i32 2,i64 0))
%mW=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%mX=call fastcc i8*@_SMLFN11ReifiedTerm19reifiedTermToStringE(i8*inreg%mW)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg%mX)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@aB,i64 0,i32 2,i64 0))
%mY=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%mY,i8**%c,align 8
%mZ=call i8*@sml_alloc(i32 inreg 28)#0
%m0=getelementptr inbounds i8,i8*%mZ,i64 -4
%m1=bitcast i8*%m0 to i32*
store i32 1342177304,i32*%m1,align 4
store i8*%mZ,i8**%d,align 8
%m2=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%m3=bitcast i8*%mZ to i8**
store i8*%m2,i8**%m3,align 8
%m4=getelementptr inbounds i8,i8*%mZ,i64 8
%m5=bitcast i8*%m4 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@R,i64 0,i32 2,i64 0),i8**%m5,align 8
%m6=getelementptr inbounds i8,i8*%mZ,i64 16
%m7=bitcast i8*%m6 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[49x i8]}>,<{[4x i8],i32,[49x i8]}>*@aD,i64 0,i32 2,i64 0),i8**%m7,align 8
%m8=getelementptr inbounds i8,i8*%mZ,i64 24
%m9=bitcast i8*%m8 to i32*
store i32 7,i32*%m9,align 4
%na=call i8*@sml_alloc(i32 inreg 60)#0
%nb=getelementptr inbounds i8,i8*%na,i64 -4
%nc=bitcast i8*%nb to i32*
store i32 1342177336,i32*%nc,align 4
%nd=getelementptr inbounds i8,i8*%na,i64 56
%ne=bitcast i8*%nd to i32*
store i32 1,i32*%ne,align 4
%nf=load i8*,i8**%d,align 8
%ng=bitcast i8*%na to i8**
store i8*%nf,i8**%ng,align 8
call void@sml_raise(i8*inreg%na)#1
unreachable
nh:
%ni=call i8*@sml_alloc(i32 inreg 4)#0
%nj=bitcast i8*%ni to i32*
%nk=getelementptr inbounds i8,i8*%ni,i64 -4
%nl=bitcast i8*%nk to i32*
store i32 536870916,i32*%nl,align 4
store i32 0,i32*%nj,align 4
ret i8*%ni
nm:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%nn=call i8*@sml_alloc(i32 inreg 60)#0
%no=getelementptr inbounds i8,i8*%nn,i64 -4
%np=bitcast i8*%no to i32*
store i32 1342177336,i32*%np,align 4
%nq=getelementptr inbounds i8,i8*%nn,i64 56
%nr=bitcast i8*%nq to i32*
store i32 1,i32*%nr,align 4
%ns=bitcast i8*%nn to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@P,i64 0,i32 2)to i8*),i8**%ns,align 8
call void@sml_raise(i8*inreg%nn)#1
unreachable
nt:
store i8*null,i8**%d,align 8
store i8*null,i8**%c,align 8
%nu=call i8*@sml_alloc(i32 inreg 60)#0
%nv=getelementptr inbounds i8,i8*%nu,i64 -4
%nw=bitcast i8*%nv to i32*
store i32 1342177336,i32*%nw,align 4
%nx=getelementptr inbounds i8,i8*%nu,i64 56
%ny=bitcast i8*%nx to i32*
store i32 1,i32*%ny,align 4
%nz=bitcast i8*%nu to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@N,i64 0,i32 2)to i8*),i8**%nz,align 8
call void@sml_raise(i8*inreg%nu)#1
unreachable
nA:
%nB=call i8*@sml_alloc(i32 inreg 8)#0
%nC=getelementptr inbounds i8,i8*%nB,i64 -4
%nD=bitcast i8*%nC to i32*
store i32 805306376,i32*%nD,align 4
%nE=bitcast i8*%nB to i64*
store i64 0,i64*%nE,align 1
%nF=load i8*,i8**%d,align 8
%nG=bitcast i8*%nB to i8**
call void@sml_write(i8*inreg%nB,i8**inreg%nG,i8*inreg%nF)#0
ret i8*%nB
}
define internal fastcc i8*@_SMLL12toMLDatatype_231(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*%b,i8**%c,align 8
store i8*%a,i8**%h,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**%c,align 8
br label%m
m:
%n=phi i8*[%l,%k],[%b,%o]
%p=bitcast i8*%n to i8**
%q=bitcast i8*%n to i8***
%r=load i8**,i8***%q,align 8
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%d,align 8
%t=load i8*,i8**%p,align 8
%u=getelementptr inbounds i8,i8*%t,i64 8
%v=bitcast i8*%u to i8**
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%e,align 8
%x=getelementptr inbounds i8,i8*%n,i64 8
%y=bitcast i8*%x to i8**
%z=load i8*,i8**%y,align 8
%A=getelementptr inbounds i8,i8*%z,i64 8
%B=bitcast i8*%A to i8**
%C=load i8*,i8**%B,align 8
store i8*%C,i8**%f,align 8
%D=getelementptr inbounds i8,i8*%z,i64 24
%E=bitcast i8*%D to i8**
%F=load i8*,i8**%E,align 8
%G=icmp eq i8*%F,null
br i1%G,label%ac,label%H
H:
%I=bitcast i8*%F to i32*
%J=load i32,i32*%I,align 4
switch i32%J,label%K[
i32 4,label%fK
i32 0,label%c3
i32 3,label%aG
i32 1,label%af
i32 2,label%ac
]
K:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%h,align 8
call void@sml_matchcomp_bug()
%L=load i8*,i8**@_SMLZ5Match,align 8
store i8*%L,i8**%c,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**%d,align 8
%P=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%Q=bitcast i8*%M to i8**
store i8*%P,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%M,i64 8
%S=bitcast i8*%R to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@az,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**%d,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=load i8*,i8**%h,align 8
%ae=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%ad,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@ay,i64 0,i32 2)to i8*))
ret i8*%ae
af:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
%ag=getelementptr inbounds i8,i8*%F,i64 8
%ah=bitcast i8*%ag to i8***
%ai=load i8**,i8***%ah,align 8
%aj=load i8*,i8**%ai,align 8
store i8*null,i8**%d,align 8
%ak=call i32@sml_obj_equal(i8*inreg%s,i8*inreg%aj)#0
%al=icmp eq i32%ak,0
%am=zext i1%al to i32
%an=call i8*@sml_alloc(i32 inreg 12)#0
%ao=bitcast i8*%an to i32*
%ap=getelementptr inbounds i8,i8*%an,i64 -4
%aq=bitcast i8*%ap to i32*
store i32 1342177288,i32*%aq,align 4
store i8*%an,i8**%c,align 8
store i32 43,i32*%ao,align 4
%ar=getelementptr inbounds i8,i8*%an,i64 4
%as=bitcast i8*%ar to i32*
store i32%am,i32*%as,align 4
%at=getelementptr inbounds i8,i8*%an,i64 8
%au=bitcast i8*%at to i32*
store i32 0,i32*%au,align 4
%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
%ay=load i8*,i8**%c,align 8
%az=bitcast i8*%av to i8**
store i8*%ay,i8**%az,align 8
%aA=getelementptr inbounds i8,i8*%av,i64 8
%aB=bitcast i8*%aA to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@ax,i64 0,i32 2)to i8*),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=load i8*,i8**%h,align 8
%aF=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%aE,i8*inreg%av)
ret i8*%aF
aG:
%aH=getelementptr inbounds i8,i8*%F,i64 8
%aI=bitcast i8*%aH to i32**
%aJ=load i32*,i32**%aI,align 8
%aK=load i32,i32*%aJ,align 4
%aL=icmp eq i32%aK,0
%aM=call fastcc i8*@_SMLFN4SEnv4findE(i32 inreg 1,i32 inreg 8)
%aN=getelementptr inbounds i8,i8*%aM,i64 16
%aO=bitcast i8*%aN to i8*(i8*,i8*)**
%aP=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aO,align 8
%aQ=bitcast i8*%aM to i8**
%aR=load i8*,i8**%aQ,align 8
store i8*%aR,i8**%c,align 8
%aS=call i8*@sml_alloc(i32 inreg 20)#0
%aT=getelementptr inbounds i8,i8*%aS,i64 -4
%aU=bitcast i8*%aT to i32*
store i32 1342177296,i32*%aU,align 4
%aV=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aW=bitcast i8*%aS to i8**
store i8*%aV,i8**%aW,align 8
%aX=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aY=getelementptr inbounds i8,i8*%aS,i64 8
%aZ=bitcast i8*%aY to i8**
store i8*%aX,i8**%aZ,align 8
%a0=getelementptr inbounds i8,i8*%aS,i64 16
%a1=bitcast i8*%a0 to i32*
store i32 3,i32*%a1,align 4
%a2=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a3=call fastcc i8*%aP(i8*inreg%a2,i8*inreg%aS)
store i8*%a3,i8**%c,align 8
%a4=call i8*@sml_alloc(i32 inreg 20)#0
%a5=getelementptr inbounds i8,i8*%a4,i64 -4
%a6=bitcast i8*%a5 to i32*
store i32 1342177296,i32*%a6,align 4
%a7=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%a8=bitcast i8*%a4 to i8**
store i8*%a7,i8**%a8,align 8
%a9=load i8*,i8**%c,align 8
%ba=getelementptr inbounds i8,i8*%a4,i64 8
%bb=bitcast i8*%ba to i8**
store i8*%a9,i8**%bb,align 8
%bc=getelementptr inbounds i8,i8*%a4,i64 16
%bd=bitcast i8*%bc to i32*
store i32 3,i32*%bd,align 4
%be=icmp ne i8*%a7,null
br i1%aL,label%ci,label%bf
bf:
br i1%be,label%bh,label%bg
bg:
store i8*null,i8**%h,align 8
br label%bY
bh:
%bi=bitcast i8*%a7 to i8**
%bj=load i8*,i8**%bi,align 8
store i8*%bj,i8**%c,align 8
%bk=icmp eq i8*%a9,null
br i1%bk,label%bl,label%bm
bl:
store i8*null,i8**%h,align 8
br label%bY
bm:
%bn=bitcast i8*%a9 to i8**
%bo=load i8*,i8**%bn,align 8
%bp=icmp eq i8*%bo,null
br i1%bp,label%bq,label%br
bq:
store i8*null,i8**%h,align 8
br label%bY
br:
%bs=bitcast i8*%bo to i8**
%bt=load i8*,i8**%bs,align 8
store i8*%bt,i8**%d,align 8
%bu=call i8*@sml_alloc(i32 inreg 20)#0
%bv=getelementptr inbounds i8,i8*%bu,i64 -4
%bw=bitcast i8*%bv to i32*
store i32 1342177296,i32*%bw,align 4
store i8*%bu,i8**%e,align 8
%bx=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%by=bitcast i8*%bu to i8**
store i8*%bx,i8**%by,align 8
%bz=getelementptr inbounds i8,i8*%bu,i64 8
%bA=bitcast i8*%bz to i8**
store i8*null,i8**%bA,align 8
%bB=getelementptr inbounds i8,i8*%bu,i64 16
%bC=bitcast i8*%bB to i32*
store i32 3,i32*%bC,align 4
%bD=call i8*@sml_alloc(i32 inreg 20)#0
%bE=getelementptr inbounds i8,i8*%bD,i64 -4
%bF=bitcast i8*%bE to i32*
store i32 1342177296,i32*%bF,align 4
store i8*%bD,i8**%c,align 8
%bG=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bH=bitcast i8*%bD to i8**
store i8*%bG,i8**%bH,align 8
%bI=getelementptr inbounds i8,i8*%bD,i64 8
%bJ=bitcast i8*%bI to i8**
store i8*null,i8**%bJ,align 8
%bK=getelementptr inbounds i8,i8*%bD,i64 16
%bL=bitcast i8*%bK to i32*
store i32 3,i32*%bL,align 4
%bM=call i8*@sml_alloc(i32 inreg 20)#0
%bN=getelementptr inbounds i8,i8*%bM,i64 -4
%bO=bitcast i8*%bN to i32*
store i32 1342177296,i32*%bO,align 4
%bP=load i8*,i8**%e,align 8
%bQ=bitcast i8*%bM to i8**
store i8*%bP,i8**%bQ,align 8
%bR=load i8*,i8**%c,align 8
%bS=getelementptr inbounds i8,i8*%bM,i64 8
%bT=bitcast i8*%bS to i8**
store i8*%bR,i8**%bT,align 8
%bU=getelementptr inbounds i8,i8*%bM,i64 16
%bV=bitcast i8*%bU to i32*
store i32 3,i32*%bV,align 4
%bW=load i8*,i8**%h,align 8
%bX=tail call fastcc i8*@_SMLL10makeRecord_229(i8*inreg%bW,i8*inreg%bM)
ret i8*%bX
bY:
%bZ=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%bZ,i8**%c,align 8
%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**%d,align 8
%b3=load i8*,i8**%c,align 8
store i8*null,i8**%c,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@au,i64 0,i32 2,i64 0),i8**%b6,align 8
%b7=getelementptr inbounds i8,i8*%b0,i64 16
%b8=bitcast i8*%b7 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[34x i8]}>,<{[4x i8],i32,[34x i8]}>*@av,i64 0,i32 2,i64 0),i8**%b8,align 8
%b9=getelementptr inbounds i8,i8*%b0,i64 24
%ca=bitcast i8*%b9 to i32*
store i32 7,i32*%ca,align 4
%cb=call i8*@sml_alloc(i32 inreg 60)#0
%cc=getelementptr inbounds i8,i8*%cb,i64 -4
%cd=bitcast i8*%cc to i32*
store i32 1342177336,i32*%cd,align 4
%ce=getelementptr inbounds i8,i8*%cb,i64 56
%cf=bitcast i8*%ce to i32*
store i32 1,i32*%cf,align 4
%cg=load i8*,i8**%d,align 8
%ch=bitcast i8*%cb to i8**
store i8*%cg,i8**%ch,align 8
call void@sml_raise(i8*inreg%cb)#1
unreachable
ci:
br i1%be,label%ck,label%cj
cj:
store i8*null,i8**%h,align 8
br label%cJ
ck:
%cl=bitcast i8*%a7 to i8**
%cm=load i8*,i8**%cl,align 8
store i8*%cm,i8**%c,align 8
%cn=icmp eq i8*%a9,null
br i1%cn,label%co,label%cp
co:
store i8*null,i8**%h,align 8
br label%cJ
cp:
%cq=bitcast i8*%a9 to i8**
%cr=load i8*,i8**%cq,align 8
%cs=icmp eq i8*%cr,null
br i1%cs,label%ct,label%cu
ct:
store i8*null,i8**%h,align 8
br label%cJ
cu:
%cv=bitcast i8*%cr to i8**
%cw=load i8*,i8**%cv,align 8
store i8*%cw,i8**%d,align 8
%cx=call i8*@sml_alloc(i32 inreg 20)#0
%cy=getelementptr inbounds i8,i8*%cx,i64 -4
%cz=bitcast i8*%cy to i32*
store i32 1342177296,i32*%cz,align 4
%cA=load i8*,i8**%c,align 8
%cB=bitcast i8*%cx to i8**
store i8*%cA,i8**%cB,align 8
%cC=load i8*,i8**%d,align 8
%cD=getelementptr inbounds i8,i8*%cx,i64 8
%cE=bitcast i8*%cD to i8**
store i8*%cC,i8**%cE,align 8
%cF=getelementptr inbounds i8,i8*%cx,i64 16
%cG=bitcast i8*%cF to i32*
store i32 3,i32*%cG,align 4
%cH=load i8*,i8**%h,align 8
%cI=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%cH,i8*inreg%cx)
ret i8*%cI
cJ:
%cK=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%cK,i8**%c,align 8
%cL=call i8*@sml_alloc(i32 inreg 28)#0
%cM=getelementptr inbounds i8,i8*%cL,i64 -4
%cN=bitcast i8*%cM to i32*
store i32 1342177304,i32*%cN,align 4
store i8*%cL,i8**%d,align 8
%cO=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cP=bitcast i8*%cL to i8**
store i8*%cO,i8**%cP,align 8
%cQ=getelementptr inbounds i8,i8*%cL,i64 8
%cR=bitcast i8*%cQ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@as,i64 0,i32 2,i64 0),i8**%cR,align 8
%cS=getelementptr inbounds i8,i8*%cL,i64 16
%cT=bitcast i8*%cS to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[35x i8]}>,<{[4x i8],i32,[35x i8]}>*@at,i64 0,i32 2,i64 0),i8**%cT,align 8
%cU=getelementptr inbounds i8,i8*%cL,i64 24
%cV=bitcast i8*%cU to i32*
store i32 7,i32*%cV,align 4
%cW=call i8*@sml_alloc(i32 inreg 60)#0
%cX=getelementptr inbounds i8,i8*%cW,i64 -4
%cY=bitcast i8*%cX to i32*
store i32 1342177336,i32*%cY,align 4
%cZ=getelementptr inbounds i8,i8*%cW,i64 56
%c0=bitcast i8*%cZ to i32*
store i32 1,i32*%c0,align 4
%c1=load i8*,i8**%d,align 8
%c2=bitcast i8*%cW to i8**
store i8*%c1,i8**%c2,align 8
call void@sml_raise(i8*inreg%cW)#1
unreachable
c3:
%c4=getelementptr inbounds i8,i8*%F,i64 8
%c5=bitcast i8*%c4 to i32**
%c6=load i32*,i32**%c5,align 8
%c7=load i32,i32*%c6,align 4
%c8=icmp eq i32%c7,0
%c9=call fastcc i8*@_SMLFN4SEnv4findE(i32 inreg 1,i32 inreg 8)
%da=getelementptr inbounds i8,i8*%c9,i64 16
%db=bitcast i8*%da to i8*(i8*,i8*)**
%dc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%db,align 8
%dd=bitcast i8*%c9 to i8**
%de=load i8*,i8**%dd,align 8
store i8*%de,i8**%c,align 8
%df=call i8*@sml_alloc(i32 inreg 20)#0
%dg=getelementptr inbounds i8,i8*%df,i64 -4
%dh=bitcast i8*%dg to i32*
store i32 1342177296,i32*%dh,align 4
%di=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%dj=bitcast i8*%df to i8**
store i8*%di,i8**%dj,align 8
%dk=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%dl=getelementptr inbounds i8,i8*%df,i64 8
%dm=bitcast i8*%dl to i8**
store i8*%dk,i8**%dm,align 8
%dn=getelementptr inbounds i8,i8*%df,i64 16
%do=bitcast i8*%dn to i32*
store i32 3,i32*%do,align 4
%dp=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%dq=call fastcc i8*%dc(i8*inreg%dp,i8*inreg%df)
store i8*%dq,i8**%c,align 8
%dr=call i8*@sml_alloc(i32 inreg 20)#0
%ds=getelementptr inbounds i8,i8*%dr,i64 -4
%dt=bitcast i8*%ds to i32*
store i32 1342177296,i32*%dt,align 4
%du=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dv=bitcast i8*%dr to i8**
store i8*%du,i8**%dv,align 8
%dw=load i8*,i8**%c,align 8
%dx=getelementptr inbounds i8,i8*%dr,i64 8
%dy=bitcast i8*%dx to i8**
store i8*%dw,i8**%dy,align 8
%dz=getelementptr inbounds i8,i8*%dr,i64 16
%dA=bitcast i8*%dz to i32*
store i32 3,i32*%dA,align 4
%dB=icmp ne i8*%du,null
br i1%c8,label%eP,label%dC
dC:
br i1%dB,label%dO,label%dD
dD:
%dE=icmp eq i8*%dw,null
br i1%dE,label%dF,label%dG
dF:
store i8*null,i8**%h,align 8
br label%ev
dG:
%dH=bitcast i8*%dw to i8**
%dI=load i8*,i8**%dH,align 8
%dJ=icmp eq i8*%dI,null
br i1%dJ,label%dK,label%dN
dK:
%dL=load i8*,i8**%h,align 8
%dM=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%dL,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@aE,i64 0,i32 2)to i8*))
ret i8*%dM
dN:
store i8*null,i8**%h,align 8
br label%ev
dO:
%dP=bitcast i8*%du to i8**
%dQ=load i8*,i8**%dP,align 8
store i8*%dQ,i8**%c,align 8
%dR=icmp eq i8*%dw,null
br i1%dR,label%dS,label%dT
dS:
store i8*null,i8**%h,align 8
br label%ev
dT:
%dU=bitcast i8*%dw to i8**
%dV=load i8*,i8**%dU,align 8
%dW=icmp eq i8*%dV,null
br i1%dW,label%dX,label%dY
dX:
store i8*null,i8**%h,align 8
br label%ev
dY:
%dZ=bitcast i8*%dV to i8**
%d0=load i8*,i8**%dZ,align 8
store i8*%d0,i8**%d,align 8
%d1=call i8*@sml_alloc(i32 inreg 20)#0
%d2=getelementptr inbounds i8,i8*%d1,i64 -4
%d3=bitcast i8*%d2 to i32*
store i32 1342177296,i32*%d3,align 4
store i8*%d1,i8**%e,align 8
%d4=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%d5=bitcast i8*%d1 to i8**
store i8*%d4,i8**%d5,align 8
%d6=getelementptr inbounds i8,i8*%d1,i64 8
%d7=bitcast i8*%d6 to i8**
store i8*null,i8**%d7,align 8
%d8=getelementptr inbounds i8,i8*%d1,i64 16
%d9=bitcast i8*%d8 to i32*
store i32 3,i32*%d9,align 4
%ea=call i8*@sml_alloc(i32 inreg 20)#0
%eb=getelementptr inbounds i8,i8*%ea,i64 -4
%ec=bitcast i8*%eb to i32*
store i32 1342177296,i32*%ec,align 4
store i8*%ea,i8**%c,align 8
%ed=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ee=bitcast i8*%ea to i8**
store i8*%ed,i8**%ee,align 8
%ef=getelementptr inbounds i8,i8*%ea,i64 8
%eg=bitcast i8*%ef to i8**
store i8*null,i8**%eg,align 8
%eh=getelementptr inbounds i8,i8*%ea,i64 16
%ei=bitcast i8*%eh to i32*
store i32 3,i32*%ei,align 4
%ej=call i8*@sml_alloc(i32 inreg 20)#0
%ek=getelementptr inbounds i8,i8*%ej,i64 -4
%el=bitcast i8*%ek to i32*
store i32 1342177296,i32*%el,align 4
%em=load i8*,i8**%e,align 8
%en=bitcast i8*%ej to i8**
store i8*%em,i8**%en,align 8
%eo=load i8*,i8**%c,align 8
%ep=getelementptr inbounds i8,i8*%ej,i64 8
%eq=bitcast i8*%ep to i8**
store i8*%eo,i8**%eq,align 8
%er=getelementptr inbounds i8,i8*%ej,i64 16
%es=bitcast i8*%er to i32*
store i32 3,i32*%es,align 4
%et=load i8*,i8**%h,align 8
%eu=tail call fastcc i8*@_SMLL10makeRecord_229(i8*inreg%et,i8*inreg%ej)
ret i8*%eu
ev:
%ew=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%ew,i8**%c,align 8
%ex=call i8*@sml_alloc(i32 inreg 28)#0
%ey=getelementptr inbounds i8,i8*%ex,i64 -4
%ez=bitcast i8*%ey to i32*
store i32 1342177304,i32*%ez,align 4
store i8*%ex,i8**%d,align 8
%eA=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%eB=bitcast i8*%ex to i8**
store i8*%eA,i8**%eB,align 8
%eC=getelementptr inbounds i8,i8*%ex,i64 8
%eD=bitcast i8*%eC to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@aq,i64 0,i32 2,i64 0),i8**%eD,align 8
%eE=getelementptr inbounds i8,i8*%ex,i64 16
%eF=bitcast i8*%eE to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[35x i8]}>,<{[4x i8],i32,[35x i8]}>*@ar,i64 0,i32 2,i64 0),i8**%eF,align 8
%eG=getelementptr inbounds i8,i8*%ex,i64 24
%eH=bitcast i8*%eG to i32*
store i32 7,i32*%eH,align 4
%eI=call i8*@sml_alloc(i32 inreg 60)#0
%eJ=getelementptr inbounds i8,i8*%eI,i64 -4
%eK=bitcast i8*%eJ to i32*
store i32 1342177336,i32*%eK,align 4
%eL=getelementptr inbounds i8,i8*%eI,i64 56
%eM=bitcast i8*%eL to i32*
store i32 1,i32*%eM,align 4
%eN=load i8*,i8**%d,align 8
%eO=bitcast i8*%eI to i8**
store i8*%eN,i8**%eO,align 8
call void@sml_raise(i8*inreg%eI)#1
unreachable
eP:
br i1%dB,label%e1,label%eQ
eQ:
%eR=icmp eq i8*%dw,null
br i1%eR,label%eS,label%eT
eS:
store i8*null,i8**%h,align 8
br label%fq
eT:
%eU=bitcast i8*%dw to i8**
%eV=load i8*,i8**%eU,align 8
%eW=icmp eq i8*%eV,null
br i1%eW,label%eX,label%e0
eX:
%eY=load i8*,i8**%h,align 8
%eZ=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%eY,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@aE,i64 0,i32 2)to i8*))
ret i8*%eZ
e0:
store i8*null,i8**%h,align 8
br label%fq
e1:
%e2=bitcast i8*%du to i8**
%e3=load i8*,i8**%e2,align 8
store i8*%e3,i8**%c,align 8
%e4=icmp eq i8*%dw,null
br i1%e4,label%e5,label%e6
e5:
store i8*null,i8**%h,align 8
br label%fq
e6:
%e7=bitcast i8*%dw to i8**
%e8=load i8*,i8**%e7,align 8
%e9=icmp eq i8*%e8,null
br i1%e9,label%fa,label%fb
fa:
store i8*null,i8**%h,align 8
br label%fq
fb:
%fc=bitcast i8*%e8 to i8**
%fd=load i8*,i8**%fc,align 8
store i8*%fd,i8**%d,align 8
%fe=call i8*@sml_alloc(i32 inreg 20)#0
%ff=getelementptr inbounds i8,i8*%fe,i64 -4
%fg=bitcast i8*%ff to i32*
store i32 1342177296,i32*%fg,align 4
%fh=load i8*,i8**%c,align 8
%fi=bitcast i8*%fe to i8**
store i8*%fh,i8**%fi,align 8
%fj=load i8*,i8**%d,align 8
%fk=getelementptr inbounds i8,i8*%fe,i64 8
%fl=bitcast i8*%fk to i8**
store i8*%fj,i8**%fl,align 8
%fm=getelementptr inbounds i8,i8*%fe,i64 16
%fn=bitcast i8*%fm to i32*
store i32 3,i32*%fn,align 4
%fo=load i8*,i8**%h,align 8
%fp=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%fo,i8*inreg%fe)
ret i8*%fp
fq:
%fr=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%fr,i8**%c,align 8
%fs=call i8*@sml_alloc(i32 inreg 28)#0
%ft=getelementptr inbounds i8,i8*%fs,i64 -4
%fu=bitcast i8*%ft to i32*
store i32 1342177304,i32*%fu,align 4
store i8*%fs,i8**%d,align 8
%fv=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%fw=bitcast i8*%fs to i8**
store i8*%fv,i8**%fw,align 8
%fx=getelementptr inbounds i8,i8*%fs,i64 8
%fy=bitcast i8*%fx to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@ao,i64 0,i32 2,i64 0),i8**%fy,align 8
%fz=getelementptr inbounds i8,i8*%fs,i64 16
%fA=bitcast i8*%fz to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[36x i8]}>,<{[4x i8],i32,[36x i8]}>*@ap,i64 0,i32 2,i64 0),i8**%fA,align 8
%fB=getelementptr inbounds i8,i8*%fs,i64 24
%fC=bitcast i8*%fB to i32*
store i32 7,i32*%fC,align 4
%fD=call i8*@sml_alloc(i32 inreg 60)#0
%fE=getelementptr inbounds i8,i8*%fD,i64 -4
%fF=bitcast i8*%fE to i32*
store i32 1342177336,i32*%fF,align 4
%fG=getelementptr inbounds i8,i8*%fD,i64 56
%fH=bitcast i8*%fG to i32*
store i32 1,i32*%fH,align 4
%fI=load i8*,i8**%d,align 8
%fJ=bitcast i8*%fD to i8**
store i8*%fI,i8**%fJ,align 8
call void@sml_raise(i8*inreg%fD)#1
unreachable
fK:
%fL=getelementptr inbounds i8,i8*%F,i64 8
%fM=bitcast i8*%fL to i8**
%fN=load i8*,i8**%fM,align 8
%fO=bitcast i8*%fN to i32*
%fP=load i32,i32*%fO,align 4
switch i32%fP,label%fQ[
i32 1,label%jC
i32 0,label%hc
i32 2,label%f8
]
fQ:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%h,align 8
call void@sml_matchcomp_bug()
%fR=load i8*,i8**@_SMLZ5Match,align 8
store i8*%fR,i8**%c,align 8
%fS=call i8*@sml_alloc(i32 inreg 20)#0
%fT=getelementptr inbounds i8,i8*%fS,i64 -4
%fU=bitcast i8*%fT to i32*
store i32 1342177296,i32*%fU,align 4
store i8*%fS,i8**%d,align 8
%fV=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%fW=bitcast i8*%fS to i8**
store i8*%fV,i8**%fW,align 8
%fX=getelementptr inbounds i8,i8*%fS,i64 8
%fY=bitcast i8*%fX to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[73x i8]}>,<{[4x i8],i32,[73x i8]}>*@az,i64 0,i32 2,i64 0),i8**%fY,align 8
%fZ=getelementptr inbounds i8,i8*%fS,i64 16
%f0=bitcast i8*%fZ to i32*
store i32 3,i32*%f0,align 4
%f1=call i8*@sml_alloc(i32 inreg 60)#0
%f2=getelementptr inbounds i8,i8*%f1,i64 -4
%f3=bitcast i8*%f2 to i32*
store i32 1342177336,i32*%f3,align 4
%f4=getelementptr inbounds i8,i8*%f1,i64 56
%f5=bitcast i8*%f4 to i32*
store i32 1,i32*%f5,align 4
%f6=load i8*,i8**%d,align 8
%f7=bitcast i8*%f1 to i8**
store i8*%f6,i8**%f7,align 8
call void@sml_raise(i8*inreg%f1)#1
unreachable
f8:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
%f9=getelementptr inbounds i8,i8*%fN,i64 8
%ga=bitcast i8*%f9 to i8***
%gb=load i8**,i8***%ga,align 8
%gc=load i8*,i8**%gb,align 8
store i8*%gc,i8**%c,align 8
%gd=call fastcc i8*@_SMLFN4SEnv4findE(i32 inreg 0,i32 inreg 4)
%ge=getelementptr inbounds i8,i8*%gd,i64 16
%gf=bitcast i8*%ge to i8*(i8*,i8*)**
%gg=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%gf,align 8
%gh=bitcast i8*%gd to i8**
%gi=load i8*,i8**%gh,align 8
store i8*%gi,i8**%e,align 8
%gj=call i8*@sml_alloc(i32 inreg 20)#0
%gk=getelementptr inbounds i8,i8*%gj,i64 -4
%gl=bitcast i8*%gk to i32*
store i32 1342177296,i32*%gl,align 4
%gm=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%gn=bitcast i8*%gj to i8**
store i8*%gm,i8**%gn,align 8
%go=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%gp=getelementptr inbounds i8,i8*%gj,i64 8
%gq=bitcast i8*%gp to i8**
store i8*%go,i8**%gq,align 8
%gr=getelementptr inbounds i8,i8*%gj,i64 16
%gs=bitcast i8*%gr to i32*
store i32 3,i32*%gs,align 4
%gt=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%gu=call fastcc i8*%gg(i8*inreg%gt,i8*inreg%gj)
%gv=icmp eq i8*%gu,null
br i1%gv,label%gw,label%gQ
gw:
store i8*null,i8**%h,align 8
%gx=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%gx,i8**%c,align 8
%gy=call i8*@sml_alloc(i32 inreg 28)#0
%gz=getelementptr inbounds i8,i8*%gy,i64 -4
%gA=bitcast i8*%gz to i32*
store i32 1342177304,i32*%gA,align 4
store i8*%gy,i8**%d,align 8
%gB=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%gC=bitcast i8*%gy to i8**
store i8*%gB,i8**%gC,align 8
%gD=getelementptr inbounds i8,i8*%gy,i64 8
%gE=bitcast i8*%gD to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[71x i8]}>,<{[4x i8],i32,[71x i8]}>*@am,i64 0,i32 2,i64 0),i8**%gE,align 8
%gF=getelementptr inbounds i8,i8*%gy,i64 16
%gG=bitcast i8*%gF to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[34x i8]}>,<{[4x i8],i32,[34x i8]}>*@an,i64 0,i32 2,i64 0),i8**%gG,align 8
%gH=getelementptr inbounds i8,i8*%gy,i64 24
%gI=bitcast i8*%gH to i32*
store i32 7,i32*%gI,align 4
%gJ=call i8*@sml_alloc(i32 inreg 60)#0
%gK=getelementptr inbounds i8,i8*%gJ,i64 -4
%gL=bitcast i8*%gK to i32*
store i32 1342177336,i32*%gL,align 4
%gM=getelementptr inbounds i8,i8*%gJ,i64 56
%gN=bitcast i8*%gM to i32*
store i32 1,i32*%gN,align 4
%gO=load i8*,i8**%d,align 8
%gP=bitcast i8*%gJ to i8**
store i8*%gO,i8**%gP,align 8
call void@sml_raise(i8*inreg%gJ)#1
unreachable
gQ:
%gR=bitcast i8*%gu to i32*
%gS=load i32,i32*%gR,align 4
%gT=call i8*@sml_alloc(i32 inreg 12)#0
%gU=bitcast i8*%gT to i32*
%gV=getelementptr inbounds i8,i8*%gT,i64 -4
%gW=bitcast i8*%gV to i32*
store i32 1342177288,i32*%gW,align 4
store i8*%gT,i8**%c,align 8
store i32 43,i32*%gU,align 4
%gX=getelementptr inbounds i8,i8*%gT,i64 4
%gY=bitcast i8*%gX to i32*
store i32%gS,i32*%gY,align 4
%gZ=getelementptr inbounds i8,i8*%gT,i64 8
%g0=bitcast i8*%gZ to i32*
store i32 0,i32*%g0,align 4
%g1=call i8*@sml_alloc(i32 inreg 20)#0
%g2=getelementptr inbounds i8,i8*%g1,i64 -4
%g3=bitcast i8*%g2 to i32*
store i32 1342177296,i32*%g3,align 4
%g4=load i8*,i8**%c,align 8
%g5=bitcast i8*%g1 to i8**
store i8*%g4,i8**%g5,align 8
%g6=getelementptr inbounds i8,i8*%g1,i64 8
%g7=bitcast i8*%g6 to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@ax,i64 0,i32 2)to i8*),i8**%g7,align 8
%g8=getelementptr inbounds i8,i8*%g1,i64 16
%g9=bitcast i8*%g8 to i32*
store i32 3,i32*%g9,align 4
%ha=load i8*,i8**%h,align 8
%hb=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%ha,i8*inreg%g1)
ret i8*%hb
hc:
%hd=getelementptr inbounds i8,i8*%fN,i64 8
%he=bitcast i8*%hd to i8**
%hf=load i8*,i8**%he,align 8
%hg=bitcast i8*%hf to i8**
%hh=load i8*,i8**%hg,align 8
%hi=getelementptr inbounds i8,i8*%hf,i64 8
%hj=bitcast i8*%hi to i8**
%hk=load i8*,i8**%hj,align 8
store i8*%hk,i8**%c,align 8
%hl=call i32@sml_obj_equal(i8*inreg%s,i8*inreg%hh)#0
%hm=icmp eq i32%hl,0
br i1%hm,label%hq,label%hn
hn:
%ho=load i8*,i8**%h,align 8
%hp=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%ho,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@aE,i64 0,i32 2)to i8*))
ret i8*%hp
hq:
%hr=call fastcc i8*@_SMLFN4SEnv4findE(i32 inreg 0,i32 inreg 4)
%hs=getelementptr inbounds i8,i8*%hr,i64 16
%ht=bitcast i8*%hs to i8*(i8*,i8*)**
%hu=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ht,align 8
%hv=bitcast i8*%hr to i8**
%hw=load i8*,i8**%hv,align 8
store i8*%hw,i8**%g,align 8
%hx=call i8*@sml_alloc(i32 inreg 20)#0
%hy=getelementptr inbounds i8,i8*%hx,i64 -4
%hz=bitcast i8*%hy to i32*
store i32 1342177296,i32*%hz,align 4
%hA=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%hB=bitcast i8*%hx to i8**
store i8*%hA,i8**%hB,align 8
%hC=load i8*,i8**%d,align 8
%hD=getelementptr inbounds i8,i8*%hx,i64 8
%hE=bitcast i8*%hD to i8**
store i8*%hC,i8**%hE,align 8
%hF=getelementptr inbounds i8,i8*%hx,i64 16
%hG=bitcast i8*%hF to i32*
store i32 3,i32*%hG,align 4
%hH=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%hI=call fastcc i8*%hu(i8*inreg%hH,i8*inreg%hx)
store i8*%hI,i8**%c,align 8
%hJ=call fastcc i8*@_SMLFN4SEnv4findE(i32 inreg 1,i32 inreg 8)
%hK=getelementptr inbounds i8,i8*%hJ,i64 16
%hL=bitcast i8*%hK to i8*(i8*,i8*)**
%hM=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%hL,align 8
%hN=bitcast i8*%hJ to i8**
%hO=load i8*,i8**%hN,align 8
store i8*%hO,i8**%g,align 8
%hP=call i8*@sml_alloc(i32 inreg 20)#0
%hQ=getelementptr inbounds i8,i8*%hP,i64 -4
%hR=bitcast i8*%hQ to i32*
store i32 1342177296,i32*%hR,align 4
%hS=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%hT=bitcast i8*%hP to i8**
store i8*%hS,i8**%hT,align 8
%hU=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%hV=getelementptr inbounds i8,i8*%hP,i64 8
%hW=bitcast i8*%hV to i8**
store i8*%hU,i8**%hW,align 8
%hX=getelementptr inbounds i8,i8*%hP,i64 16
%hY=bitcast i8*%hX to i32*
store i32 3,i32*%hY,align 4
%hZ=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%h0=call fastcc i8*%hM(i8*inreg%hZ,i8*inreg%hP)
%h1=load i8*,i8**%e,align 8
%h2=icmp eq i8*%h1,null
store i8*null,i8**%e,align 8
br i1%h2,label%h3,label%h4
h3:
store i8*null,i8**%h,align 8
br label%ji
h4:
%h5=bitcast i8*%h1 to i8**
%h6=load i8*,i8**%h5,align 8
store i8*%h6,i8**%d,align 8
%h7=load i8*,i8**%c,align 8
%h8=icmp eq i8*%h7,null
br i1%h8,label%h9,label%ia
h9:
store i8*null,i8**%d,align 8
store i8*null,i8**%h,align 8
br label%ji
ia:
%ib=bitcast i8*%h7 to i32*
%ic=load i32,i32*%ib,align 4
%id=icmp eq i8*%h0,null
br i1%id,label%ie,label%if
ie:
store i8*null,i8**%d,align 8
store i8*null,i8**%h,align 8
br label%ji
if:
%ig=bitcast i8*%h0 to i8**
%ih=load i8*,i8**%ig,align 8
%ii=icmp eq i8*%ih,null
br i1%ii,label%ij,label%ik
ij:
store i8*null,i8**%d,align 8
store i8*null,i8**%h,align 8
br label%ji
ik:
%il=bitcast i8*%ih to i8**
%im=load i8*,i8**%il,align 8
store i8*%im,i8**%c,align 8
%in=call i8*@sml_alloc(i32 inreg 12)#0
%io=bitcast i8*%in to i32*
%ip=getelementptr inbounds i8,i8*%in,i64 -4
%iq=bitcast i8*%ip to i32*
store i32 1342177288,i32*%iq,align 4
store i8*%in,i8**%e,align 8
store i32 43,i32*%io,align 4
%ir=getelementptr inbounds i8,i8*%in,i64 4
%is=bitcast i8*%ir to i32*
store i32%ic,i32*%is,align 4
%it=getelementptr inbounds i8,i8*%in,i64 8
%iu=bitcast i8*%it to i32*
store i32 0,i32*%iu,align 4
%iv=call i8*@sml_alloc(i32 inreg 20)#0
%iw=getelementptr inbounds i8,i8*%iv,i64 -4
%ix=bitcast i8*%iw to i32*
store i32 1342177296,i32*%ix,align 4
store i8*%iv,i8**%f,align 8
%iy=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%iz=bitcast i8*%iv to i8**
store i8*%iy,i8**%iz,align 8
%iA=getelementptr inbounds i8,i8*%iv,i64 8
%iB=bitcast i8*%iA to i8**
store i8*null,i8**%iB,align 8
%iC=getelementptr inbounds i8,i8*%iv,i64 16
%iD=bitcast i8*%iC to i32*
store i32 3,i32*%iD,align 4
%iE=call i8*@sml_alloc(i32 inreg 20)#0
%iF=getelementptr inbounds i8,i8*%iE,i64 -4
%iG=bitcast i8*%iF to i32*
store i32 1342177296,i32*%iG,align 4
store i8*%iE,i8**%d,align 8
%iH=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%iI=bitcast i8*%iE to i8**
store i8*%iH,i8**%iI,align 8
%iJ=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%iK=getelementptr inbounds i8,i8*%iE,i64 8
%iL=bitcast i8*%iK to i8**
store i8*%iJ,i8**%iL,align 8
%iM=getelementptr inbounds i8,i8*%iE,i64 16
%iN=bitcast i8*%iM to i32*
store i32 3,i32*%iN,align 4
%iO=call i8*@sml_alloc(i32 inreg 20)#0
%iP=getelementptr inbounds i8,i8*%iO,i64 -4
%iQ=bitcast i8*%iP to i32*
store i32 1342177296,i32*%iQ,align 4
store i8*%iO,i8**%e,align 8
%iR=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%iS=bitcast i8*%iO to i8**
store i8*%iR,i8**%iS,align 8
%iT=getelementptr inbounds i8,i8*%iO,i64 8
%iU=bitcast i8*%iT to i8**
store i8*null,i8**%iU,align 8
%iV=getelementptr inbounds i8,i8*%iO,i64 16
%iW=bitcast i8*%iV to i32*
store i32 3,i32*%iW,align 4
%iX=call i8*@sml_alloc(i32 inreg 20)#0
%iY=getelementptr inbounds i8,i8*%iX,i64 -4
%iZ=bitcast i8*%iY to i32*
store i32 1342177296,i32*%iZ,align 4
store i8*%iX,i8**%c,align 8
%i0=bitcast i8*%iX to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@ax,i64 0,i32 2)to i8*),i8**%i0,align 8
%i1=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%i2=getelementptr inbounds i8,i8*%iX,i64 8
%i3=bitcast i8*%i2 to i8**
store i8*%i1,i8**%i3,align 8
%i4=getelementptr inbounds i8,i8*%iX,i64 16
%i5=bitcast i8*%i4 to i32*
store i32 3,i32*%i5,align 4
%i6=call i8*@sml_alloc(i32 inreg 20)#0
%i7=getelementptr inbounds i8,i8*%i6,i64 -4
%i8=bitcast i8*%i7 to i32*
store i32 1342177296,i32*%i8,align 4
%i9=load i8*,i8**%d,align 8
%ja=bitcast i8*%i6 to i8**
store i8*%i9,i8**%ja,align 8
%jb=load i8*,i8**%c,align 8
%jc=getelementptr inbounds i8,i8*%i6,i64 8
%jd=bitcast i8*%jc to i8**
store i8*%jb,i8**%jd,align 8
%je=getelementptr inbounds i8,i8*%i6,i64 16
%jf=bitcast i8*%je to i32*
store i32 3,i32*%jf,align 4
%jg=load i8*,i8**%h,align 8
%jh=tail call fastcc i8*@_SMLL10makeRecord_229(i8*inreg%jg,i8*inreg%i6)
ret i8*%jh
ji:
%jj=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%jj,i8**%c,align 8
%jk=call i8*@sml_alloc(i32 inreg 28)#0
%jl=getelementptr inbounds i8,i8*%jk,i64 -4
%jm=bitcast i8*%jl to i32*
store i32 1342177304,i32*%jm,align 4
store i8*%jk,i8**%d,align 8
%jn=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%jo=bitcast i8*%jk to i8**
store i8*%jn,i8**%jo,align 8
%jp=getelementptr inbounds i8,i8*%jk,i64 8
%jq=bitcast i8*%jp to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[71x i8]}>,<{[4x i8],i32,[71x i8]}>*@am,i64 0,i32 2,i64 0),i8**%jq,align 8
%jr=getelementptr inbounds i8,i8*%jk,i64 16
%js=bitcast i8*%jr to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[37x i8]}>,<{[4x i8],i32,[37x i8]}>*@al,i64 0,i32 2,i64 0),i8**%js,align 8
%jt=getelementptr inbounds i8,i8*%jk,i64 24
%ju=bitcast i8*%jt to i32*
store i32 7,i32*%ju,align 4
%jv=call i8*@sml_alloc(i32 inreg 60)#0
%jw=getelementptr inbounds i8,i8*%jv,i64 -4
%jx=bitcast i8*%jw to i32*
store i32 1342177336,i32*%jx,align 4
%jy=getelementptr inbounds i8,i8*%jv,i64 56
%jz=bitcast i8*%jy to i32*
store i32 1,i32*%jz,align 4
%jA=load i8*,i8**%d,align 8
%jB=bitcast i8*%jv to i8**
store i8*%jA,i8**%jB,align 8
call void@sml_raise(i8*inreg%jv)#1
unreachable
jC:
%jD=getelementptr inbounds i8,i8*%fN,i64 8
%jE=bitcast i8*%jD to i8***
%jF=load i8**,i8***%jE,align 8
%jG=load i8*,i8**%jF,align 8
store i8*%jG,i8**%c,align 8
%jH=call fastcc i8*@_SMLFN4SEnv4findE(i32 inreg 0,i32 inreg 4)
%jI=getelementptr inbounds i8,i8*%jH,i64 16
%jJ=bitcast i8*%jI to i8*(i8*,i8*)**
%jK=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%jJ,align 8
%jL=bitcast i8*%jH to i8**
%jM=load i8*,i8**%jL,align 8
store i8*%jM,i8**%g,align 8
%jN=call i8*@sml_alloc(i32 inreg 20)#0
%jO=getelementptr inbounds i8,i8*%jN,i64 -4
%jP=bitcast i8*%jO to i32*
store i32 1342177296,i32*%jP,align 4
%jQ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%jR=bitcast i8*%jN to i8**
store i8*%jQ,i8**%jR,align 8
%jS=load i8*,i8**%d,align 8
%jT=getelementptr inbounds i8,i8*%jN,i64 8
%jU=bitcast i8*%jT to i8**
store i8*%jS,i8**%jU,align 8
%jV=getelementptr inbounds i8,i8*%jN,i64 16
%jW=bitcast i8*%jV to i32*
store i32 3,i32*%jW,align 4
%jX=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%jY=call fastcc i8*%jK(i8*inreg%jX,i8*inreg%jN)
store i8*%jY,i8**%c,align 8
%jZ=call fastcc i8*@_SMLFN4SEnv4findE(i32 inreg 1,i32 inreg 8)
%j0=getelementptr inbounds i8,i8*%jZ,i64 16
%j1=bitcast i8*%j0 to i8*(i8*,i8*)**
%j2=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j1,align 8
%j3=bitcast i8*%jZ to i8**
%j4=load i8*,i8**%j3,align 8
store i8*%j4,i8**%g,align 8
%j5=call i8*@sml_alloc(i32 inreg 20)#0
%j6=getelementptr inbounds i8,i8*%j5,i64 -4
%j7=bitcast i8*%j6 to i32*
store i32 1342177296,i32*%j7,align 4
%j8=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%j9=bitcast i8*%j5 to i8**
store i8*%j8,i8**%j9,align 8
%ka=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%kb=getelementptr inbounds i8,i8*%j5,i64 8
%kc=bitcast i8*%kb to i8**
store i8*%ka,i8**%kc,align 8
%kd=getelementptr inbounds i8,i8*%j5,i64 16
%ke=bitcast i8*%kd to i32*
store i32 3,i32*%ke,align 4
%kf=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%kg=call fastcc i8*%j2(i8*inreg%kf,i8*inreg%j5)
%kh=load i8*,i8**%e,align 8
%ki=icmp eq i8*%kh,null
store i8*null,i8**%e,align 8
br i1%ki,label%kj,label%la
kj:
%kk=load i8*,i8**%c,align 8
%kl=icmp eq i8*%kk,null
br i1%kl,label%km,label%kn
km:
store i8*null,i8**%h,align 8
br label%mo
kn:
%ko=bitcast i8*%kk to i32*
%kp=load i32,i32*%ko,align 4
%kq=icmp eq i8*%kg,null
br i1%kq,label%kr,label%ks
kr:
store i8*null,i8**%h,align 8
br label%mo
ks:
%kt=bitcast i8*%kg to i8**
%ku=load i8*,i8**%kt,align 8
%kv=icmp eq i8*%ku,null
br i1%kv,label%kw,label%k9
kw:
%kx=call i8*@sml_alloc(i32 inreg 12)#0
%ky=bitcast i8*%kx to i32*
%kz=getelementptr inbounds i8,i8*%kx,i64 -4
%kA=bitcast i8*%kz to i32*
store i32 1342177288,i32*%kA,align 4
store i8*%kx,i8**%c,align 8
store i32 43,i32*%ky,align 4
%kB=getelementptr inbounds i8,i8*%kx,i64 4
%kC=bitcast i8*%kB to i32*
store i32%kp,i32*%kC,align 4
%kD=getelementptr inbounds i8,i8*%kx,i64 8
%kE=bitcast i8*%kD to i32*
store i32 0,i32*%kE,align 4
%kF=call i8*@sml_alloc(i32 inreg 20)#0
%kG=getelementptr inbounds i8,i8*%kF,i64 -4
%kH=bitcast i8*%kG to i32*
store i32 1342177296,i32*%kH,align 4
%kI=load i8*,i8**%c,align 8
%kJ=bitcast i8*%kF to i8**
store i8*%kI,i8**%kJ,align 8
%kK=getelementptr inbounds i8,i8*%kF,i64 8
%kL=bitcast i8*%kK to i8**
store i8*null,i8**%kL,align 8
%kM=getelementptr inbounds i8,i8*%kF,i64 16
%kN=bitcast i8*%kM to i32*
store i32 3,i32*%kN,align 4
store i8*null,i8**%d,align 8
%kO=call i8*@sml_alloc(i32 inreg 20)#0
%kP=getelementptr inbounds i8,i8*%kO,i64 -4
%kQ=bitcast i8*%kP to i32*
store i32 1342177296,i32*%kQ,align 4
store i8*%kO,i8**%e,align 8
%kR=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%kS=bitcast i8*%kO to i8**
store i8*%kR,i8**%kS,align 8
%kT=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%kU=getelementptr inbounds i8,i8*%kO,i64 8
%kV=bitcast i8*%kU to i8**
store i8*%kT,i8**%kV,align 8
%kW=getelementptr inbounds i8,i8*%kO,i64 16
%kX=bitcast i8*%kW to i32*
store i32 3,i32*%kX,align 4
%kY=call i8*@sml_alloc(i32 inreg 20)#0
%kZ=getelementptr inbounds i8,i8*%kY,i64 -4
%k0=bitcast i8*%kZ to i32*
store i32 1342177296,i32*%k0,align 4
%k1=load i8*,i8**%e,align 8
%k2=bitcast i8*%kY to i8**
store i8*%k1,i8**%k2,align 8
%k3=getelementptr inbounds i8,i8*%kY,i64 8
%k4=bitcast i8*%k3 to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@ak,i64 0,i32 2)to i8*),i8**%k4,align 8
%k5=getelementptr inbounds i8,i8*%kY,i64 16
%k6=bitcast i8*%k5 to i32*
store i32 3,i32*%k6,align 4
%k7=load i8*,i8**%h,align 8
%k8=tail call fastcc i8*@_SMLL10makeRecord_229(i8*inreg%k7,i8*inreg%kY)
ret i8*%k8
k9:
store i8*null,i8**%h,align 8
br label%mo
la:
%lb=bitcast i8*%kh to i8**
%lc=load i8*,i8**%lb,align 8
store i8*%lc,i8**%d,align 8
%ld=load i8*,i8**%c,align 8
%le=icmp eq i8*%ld,null
br i1%le,label%lf,label%lg
lf:
store i8*null,i8**%d,align 8
store i8*null,i8**%h,align 8
br label%mo
lg:
%lh=bitcast i8*%ld to i32*
%li=load i32,i32*%lh,align 4
%lj=icmp eq i8*%kg,null
br i1%lj,label%lk,label%ll
lk:
store i8*null,i8**%d,align 8
store i8*null,i8**%h,align 8
br label%mo
ll:
%lm=bitcast i8*%kg to i8**
%ln=load i8*,i8**%lm,align 8
%lo=icmp eq i8*%ln,null
br i1%lo,label%lp,label%lq
lp:
store i8*null,i8**%d,align 8
store i8*null,i8**%h,align 8
br label%mo
lq:
%lr=bitcast i8*%ln to i8**
%ls=load i8*,i8**%lr,align 8
store i8*%ls,i8**%c,align 8
%lt=call i8*@sml_alloc(i32 inreg 12)#0
%lu=bitcast i8*%lt to i32*
%lv=getelementptr inbounds i8,i8*%lt,i64 -4
%lw=bitcast i8*%lv to i32*
store i32 1342177288,i32*%lw,align 4
store i8*%lt,i8**%e,align 8
store i32 43,i32*%lu,align 4
%lx=getelementptr inbounds i8,i8*%lt,i64 4
%ly=bitcast i8*%lx to i32*
store i32%li,i32*%ly,align 4
%lz=getelementptr inbounds i8,i8*%lt,i64 8
%lA=bitcast i8*%lz to i32*
store i32 0,i32*%lA,align 4
%lB=call i8*@sml_alloc(i32 inreg 20)#0
%lC=getelementptr inbounds i8,i8*%lB,i64 -4
%lD=bitcast i8*%lC to i32*
store i32 1342177296,i32*%lD,align 4
store i8*%lB,i8**%f,align 8
%lE=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%lF=bitcast i8*%lB to i8**
store i8*%lE,i8**%lF,align 8
%lG=getelementptr inbounds i8,i8*%lB,i64 8
%lH=bitcast i8*%lG to i8**
store i8*null,i8**%lH,align 8
%lI=getelementptr inbounds i8,i8*%lB,i64 16
%lJ=bitcast i8*%lI to i32*
store i32 3,i32*%lJ,align 4
%lK=call i8*@sml_alloc(i32 inreg 20)#0
%lL=getelementptr inbounds i8,i8*%lK,i64 -4
%lM=bitcast i8*%lL to i32*
store i32 1342177296,i32*%lM,align 4
store i8*%lK,i8**%d,align 8
%lN=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%lO=bitcast i8*%lK to i8**
store i8*%lN,i8**%lO,align 8
%lP=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%lQ=getelementptr inbounds i8,i8*%lK,i64 8
%lR=bitcast i8*%lQ to i8**
store i8*%lP,i8**%lR,align 8
%lS=getelementptr inbounds i8,i8*%lK,i64 16
%lT=bitcast i8*%lS to i32*
store i32 3,i32*%lT,align 4
%lU=call i8*@sml_alloc(i32 inreg 20)#0
%lV=getelementptr inbounds i8,i8*%lU,i64 -4
%lW=bitcast i8*%lV to i32*
store i32 1342177296,i32*%lW,align 4
store i8*%lU,i8**%e,align 8
%lX=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%lY=bitcast i8*%lU to i8**
store i8*%lX,i8**%lY,align 8
%lZ=getelementptr inbounds i8,i8*%lU,i64 8
%l0=bitcast i8*%lZ to i8**
store i8*null,i8**%l0,align 8
%l1=getelementptr inbounds i8,i8*%lU,i64 16
%l2=bitcast i8*%l1 to i32*
store i32 3,i32*%l2,align 4
%l3=call i8*@sml_alloc(i32 inreg 20)#0
%l4=getelementptr inbounds i8,i8*%l3,i64 -4
%l5=bitcast i8*%l4 to i32*
store i32 1342177296,i32*%l5,align 4
store i8*%l3,i8**%c,align 8
%l6=bitcast i8*%l3 to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@ax,i64 0,i32 2)to i8*),i8**%l6,align 8
%l7=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%l8=getelementptr inbounds i8,i8*%l3,i64 8
%l9=bitcast i8*%l8 to i8**
store i8*%l7,i8**%l9,align 8
%ma=getelementptr inbounds i8,i8*%l3,i64 16
%mb=bitcast i8*%ma to i32*
store i32 3,i32*%mb,align 4
%mc=call i8*@sml_alloc(i32 inreg 20)#0
%md=getelementptr inbounds i8,i8*%mc,i64 -4
%me=bitcast i8*%md to i32*
store i32 1342177296,i32*%me,align 4
%mf=load i8*,i8**%d,align 8
%mg=bitcast i8*%mc to i8**
store i8*%mf,i8**%mg,align 8
%mh=load i8*,i8**%c,align 8
%mi=getelementptr inbounds i8,i8*%mc,i64 8
%mj=bitcast i8*%mi to i8**
store i8*%mh,i8**%mj,align 8
%mk=getelementptr inbounds i8,i8*%mc,i64 16
%ml=bitcast i8*%mk to i32*
store i32 3,i32*%ml,align 4
%mm=load i8*,i8**%h,align 8
%mn=tail call fastcc i8*@_SMLL10makeRecord_229(i8*inreg%mm,i8*inreg%mc)
ret i8*%mn
mo:
%mp=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%mp,i8**%c,align 8
%mq=call i8*@sml_alloc(i32 inreg 28)#0
%mr=getelementptr inbounds i8,i8*%mq,i64 -4
%ms=bitcast i8*%mr to i32*
store i32 1342177304,i32*%ms,align 4
store i8*%mq,i8**%d,align 8
%mt=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%mu=bitcast i8*%mq to i8**
store i8*%mt,i8**%mu,align 8
%mv=getelementptr inbounds i8,i8*%mq,i64 8
%mw=bitcast i8*%mv to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[71x i8]}>,<{[4x i8],i32,[71x i8]}>*@am,i64 0,i32 2,i64 0),i8**%mw,align 8
%mx=getelementptr inbounds i8,i8*%mq,i64 16
%my=bitcast i8*%mx to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[36x i8]}>,<{[4x i8],i32,[36x i8]}>*@aj,i64 0,i32 2,i64 0),i8**%my,align 8
%mz=getelementptr inbounds i8,i8*%mq,i64 24
%mA=bitcast i8*%mz to i32*
store i32 7,i32*%mA,align 4
%mB=call i8*@sml_alloc(i32 inreg 60)#0
%mC=getelementptr inbounds i8,i8*%mB,i64 -4
%mD=bitcast i8*%mC to i32*
store i32 1342177336,i32*%mD,align 4
%mE=getelementptr inbounds i8,i8*%mB,i64 56
%mF=bitcast i8*%mE to i32*
store i32 1,i32*%mF,align 4
%mG=load i8*,i8**%d,align 8
%mH=bitcast i8*%mB to i8**
store i8*%mG,i8**%mH,align 8
call void@sml_raise(i8*inreg%mB)#1
unreachable
}
define internal fastcc i8*@_SMLL8toMLList_232(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
n:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%b,i8**%c,align 8
store i8*%a,i8**%f,align 8
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%l,label%j
j:
call void@sml_check(i32 inreg%h)
%k=load i8*,i8**%c,align 8
br label%l
l:
%m=phi i8*[%k,%j],[%b,%n]
%o=getelementptr inbounds i8,i8*%m,i64 8
%p=bitcast i8*%o to i8**
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%d,align 8
%r=call fastcc i8*@_SMLFN4List5foldrE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%s=getelementptr inbounds i8,i8*%r,i64 16
%t=bitcast i8*%s to i8*(i8*,i8*)**
%u=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%t,align 8
%v=bitcast i8*%r to i8**
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%e,align 8
%x=call i8*@sml_alloc(i32 inreg 12)#0
%y=getelementptr inbounds i8,i8*%x,i64 -4
%z=bitcast i8*%y to i32*
store i32 1342177288,i32*%z,align 4
store i8*%x,i8**%g,align 8
%A=load i8*,i8**%d,align 8
store i8*null,i8**%d,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 i32*
store i32 1,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**%g,align 8
store i8*null,i8**%g,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(i8*(i8*,i8*)*@_SMLL8toMLList_317 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*)*@_SMLL8toMLList_317 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**%e,align 8
store i8*null,i8**%e,align 8
%Q=call fastcc i8*%u(i8*inreg%P,i8*inreg%E)
%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=call fastcc i8*%T(i8*inreg%V,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@aE,i64 0,i32 2)to i8*))
%X=getelementptr inbounds i8,i8*%W,i64 16
%Y=bitcast i8*%X to i8*(i8*,i8*)**
%Z=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Y,align 8
%aa=bitcast i8*%W to i8**
%ab=load i8*,i8**%aa,align 8
%ac=bitcast i8**%c to i8***
%ad=load i8**,i8***%ac,align 8
store i8*null,i8**%c,align 8
%ae=load i8*,i8**%ad,align 8
%af=call fastcc i8*%Z(i8*inreg%ab,i8*inreg%ae)
%ag=bitcast i8*%af to i8**
%ah=load i8*,i8**%ag,align 8
store i8*%ah,i8**%c,align 8
%ai=getelementptr inbounds i8,i8*%af,i64 8
%aj=bitcast i8*%ai to i8**
%ak=load i8*,i8**%aj,align 8
store i8*%ak,i8**%d,align 8
%al=call i8*@sml_alloc(i32 inreg 20)#0
%am=getelementptr inbounds i8,i8*%al,i64 -4
%an=bitcast i8*%am to i32*
store i32 1342177296,i32*%an,align 4
%ao=load i8*,i8**%c,align 8
%ap=bitcast i8*%al to i8**
store i8*%ao,i8**%ap,align 8
%aq=load i8*,i8**%d,align 8
%ar=getelementptr inbounds i8,i8*%al,i64 8
%as=bitcast i8*%ar to i8**
store i8*%aq,i8**%as,align 8
%at=getelementptr inbounds i8,i8*%al,i64 16
%au=bitcast i8*%at to i32*
store i32 3,i32*%au,align 4
%av=load i8*,i8**%f,align 8
%aw=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%av,i8*inreg%al)
ret i8*%aw
}
define internal fastcc i8*@_SMLL10toMLOption_233(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
n:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%b,i8**%c,align 8
store i8*%a,i8**%f,align 8
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%l,label%j
j:
call void@sml_check(i32 inreg%h)
%k=load i8*,i8**%c,align 8
br label%l
l:
%m=phi i8*[%k,%j],[%b,%n]
%o=bitcast i8*%m to i8**
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%c,align 8
%q=getelementptr inbounds i8,i8*%m,i64 8
%r=bitcast i8*%q to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%d,align 8
%t=getelementptr inbounds i8,i8*%m,i64 16
%u=bitcast i8*%t to i8**
%v=load i8*,i8**%u,align 8
store i8*%v,i8**%e,align 8
%w=call i8*@sml_alloc(i32 inreg 20)#0
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
store i32 1342177296,i32*%y,align 4
%z=load i8*,i8**%d,align 8
%A=bitcast i8*%w to i8**
store i8*%z,i8**%A,align 8
%B=load i8*,i8**%e,align 8
%C=getelementptr inbounds i8,i8*%w,i64 8
%D=bitcast i8*%C to i8**
store i8*%B,i8**%D,align 8
%E=getelementptr inbounds i8,i8*%w,i64 16
%F=bitcast i8*%E to i32*
store i32 3,i32*%F,align 4
%G=call fastcc i32@_SMLFN9ReifiedTy11reifiedTyEqE(i8*inreg%w)
%H=icmp eq i32%G,0
br i1%H,label%a9,label%I
I:
store i8*null,i8**%d,align 8
%J=load i8*,i8**%c,align 8
%K=icmp eq i8*%J,null
br i1%K,label%L,label%O
L:
%M=load i8*,i8**%f,align 8
%N=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%M,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,i8*,i32}>,<{[4x i8],i32,i8*,i8*,i32}>*@aE,i64 0,i32 2)to i8*))
ret i8*%N
O:
%P=bitcast i8*%J to i8**
%Q=load i8*,i8**%P,align 8
store i8*%Q,i8**%c,align 8
%R=call fastcc i8*@_SMLFN11RecordLabel8tupleMapE(i32 inreg 1,i32 inreg 8)
%S=getelementptr inbounds i8,i8*%R,i64 16
%T=bitcast i8*%S to i8*(i8*,i8*)**
%U=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%T,align 8
%V=bitcast i8*%R to i8**
%W=load i8*,i8**%V,align 8
store i8*%W,i8**%d,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
%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*null,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=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ah=call fastcc i8*%U(i8*inreg%ag,i8*inreg%X)
store i8*%ah,i8**%c,align 8
%ai=call i8*@sml_alloc(i32 inreg 20)#0
%aj=getelementptr inbounds i8,i8*%ai,i64 -4
%ak=bitcast i8*%aj to i32*
store i32 1342177296,i32*%ak,align 4
store i8*%ai,i8**%g,align 8
%al=getelementptr inbounds i8,i8*%ai,i64 4
%am=bitcast i8*%al to i32*
store i32 0,i32*%am,align 1
%an=bitcast i8*%ai to i32*
store i32 29,i32*%an,align 4
%ao=load i8*,i8**%c,align 8
store i8*null,i8**%c,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
%at=call fastcc i8*@_SMLFN11RecordLabel3Map9singletonE(i32 inreg 1,i32 inreg 8)
%au=getelementptr inbounds i8,i8*%at,i64 16
%av=bitcast i8*%au to i8*(i8*,i8*)**
%aw=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%av,align 8
%ax=bitcast i8*%at to i8**
%ay=load i8*,i8**%ax,align 8
store i8*%ay,i8**%d,align 8
%az=call fastcc i8*@_SMLFN11RecordLabel7fromIntE(i32 inreg 1)
store i8*%az,i8**%c,align 8
%aA=call i8*@sml_alloc(i32 inreg 20)#0
%aB=getelementptr inbounds i8,i8*%aA,i64 -4
%aC=bitcast i8*%aB to i32*
store i32 1342177296,i32*%aC,align 4
%aD=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aE=bitcast i8*%aA to i8**
store i8*%aD,i8**%aE,align 8
%aF=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aG=getelementptr inbounds i8,i8*%aA,i64 8
%aH=bitcast i8*%aG to i8**
store i8*%aF,i8**%aH,align 8
%aI=getelementptr inbounds i8,i8*%aA,i64 16
%aJ=bitcast i8*%aI to i32*
store i32 3,i32*%aJ,align 4
%aK=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aL=call fastcc i8*%aw(i8*inreg%aK,i8*inreg%aA)
store i8*%aL,i8**%c,align 8
%aM=call i8*@sml_alloc(i32 inreg 20)#0
%aN=getelementptr inbounds i8,i8*%aM,i64 -4
%aO=bitcast i8*%aN to i32*
store i32 1342177296,i32*%aO,align 4
store i8*%aM,i8**%d,align 8
%aP=getelementptr inbounds i8,i8*%aM,i64 4
%aQ=bitcast i8*%aP to i32*
store i32 0,i32*%aQ,align 1
%aR=bitcast i8*%aM to i32*
store i32 32,i32*%aR,align 4
%aS=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aT=getelementptr inbounds i8,i8*%aM,i64 8
%aU=bitcast i8*%aT to i8**
store i8*%aS,i8**%aU,align 8
%aV=getelementptr inbounds i8,i8*%aM,i64 16
%aW=bitcast i8*%aV to i32*
store i32 2,i32*%aW,align 4
%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
%a0=load i8*,i8**%g,align 8
%a1=bitcast i8*%aX to i8**
store i8*%a0,i8**%a1,align 8
%a2=load i8*,i8**%d,align 8
%a3=getelementptr inbounds i8,i8*%aX,i64 8
%a4=bitcast i8*%a3 to i8**
store i8*%a2,i8**%a4,align 8
%a5=getelementptr inbounds i8,i8*%aX,i64 16
%a6=bitcast i8*%a5 to i32*
store i32 3,i32*%a6,align 4
%a7=load i8*,i8**%f,align 8
%a8=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%a7,i8*inreg%aX)
ret i8*%a8
a9:
store i8*null,i8**%e,align 8
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[13x i8]}>,<{[4x i8],i32,[13x i8]}>*@aA,i64 0,i32 2,i64 0))
%ba=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%bb=getelementptr inbounds i8,i8*%ba,i64 8
%bc=bitcast i8*%bb to i8**
%bd=load i8*,i8**%bc,align 8
%be=call fastcc i8*@_SMLFN9ReifiedTy17reifiedTyToStringE(i8*inreg%bd)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg%be)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@aB,i64 0,i32 2,i64 0))
%bf=call i8*@sml_alloc(i32 inreg 20)#0
%bg=getelementptr inbounds i8,i8*%bf,i64 -4
%bh=bitcast i8*%bg to i32*
store i32 1342177296,i32*%bh,align 4
store i8*%bf,i8**%e,align 8
%bi=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bj=bitcast i8*%bf to i8**
store i8*%bi,i8**%bj,align 8
%bk=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bl=getelementptr inbounds i8,i8*%bf,i64 8
%bm=bitcast i8*%bl to i8**
store i8*%bk,i8**%bm,align 8
%bn=getelementptr inbounds i8,i8*%bf,i64 16
%bo=bitcast i8*%bn to i32*
store i32 3,i32*%bo,align 4
%bp=call i8*@sml_alloc(i32 inreg 20)#0
%bq=bitcast i8*%bp to i32*
%br=getelementptr inbounds i8,i8*%bp,i64 -4
%bs=bitcast i8*%br to i32*
store i32 1342177296,i32*%bs,align 4
%bt=getelementptr inbounds i8,i8*%bp,i64 4
%bu=bitcast i8*%bt to i32*
store i32 0,i32*%bu,align 1
store i32 25,i32*%bq,align 4
%bv=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bw=getelementptr inbounds i8,i8*%bp,i64 8
%bx=bitcast i8*%bw to i8**
store i8*%bv,i8**%bx,align 8
%by=getelementptr inbounds i8,i8*%bp,i64 16
%bz=bitcast i8*%by to i32*
store i32 2,i32*%bz,align 4
%bA=call fastcc i8*@_SMLFN11ReifiedTerm19reifiedTermToStringE(i8*inreg%bp)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg%bA)
call fastcc void@_SMLFN6TextIO5printE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@aB,i64 0,i32 2,i64 0))
%bB=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%bB,i8**%c,align 8
%bC=call i8*@sml_alloc(i32 inreg 28)#0
%bD=getelementptr inbounds i8,i8*%bC,i64 -4
%bE=bitcast i8*%bD to i32*
store i32 1342177304,i32*%bE,align 4
store i8*%bC,i8**%d,align 8
%bF=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bG=bitcast i8*%bC to i8**
store i8*%bF,i8**%bG,align 8
%bH=getelementptr inbounds i8,i8*%bC,i64 8
%bI=bitcast i8*%bH to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[74x i8]}>,<{[4x i8],i32,[74x i8]}>*@aC,i64 0,i32 2,i64 0),i8**%bI,align 8
%bJ=getelementptr inbounds i8,i8*%bC,i64 16
%bK=bitcast i8*%bJ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[49x i8]}>,<{[4x i8],i32,[49x i8]}>*@aD,i64 0,i32 2,i64 0),i8**%bK,align 8
%bL=getelementptr inbounds i8,i8*%bC,i64 24
%bM=bitcast i8*%bL to i32*
store i32 7,i32*%bM,align 4
%bN=call i8*@sml_alloc(i32 inreg 60)#0
%bO=getelementptr inbounds i8,i8*%bN,i64 -4
%bP=bitcast i8*%bO to i32*
store i32 1342177336,i32*%bP,align 4
%bQ=getelementptr inbounds i8,i8*%bN,i64 56
%bR=bitcast i8*%bQ to i32*
store i32 1,i32*%bR,align 4
%bS=load i8*,i8**%d,align 8
%bT=bitcast i8*%bN to i8**
store i8*%bS,i8**%bT,align 8
call void@sml_raise(i8*inreg%bN)#1
unreachable
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML4toMLE_325(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
l:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=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
store i8*%a,i8**%b,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%j,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%b,align 8
br label%j
j:
%k=phi i8*[%i,%h],[%a,%l]
%m=bitcast i8*%k to i8**
%n=load i8*,i8**%m,align 8
store i8*%n,i8**%b,align 8
%o=getelementptr inbounds i8,i8*%k,i64 8
%p=bitcast i8*%o to i8***
%q=load i8**,i8***%p,align 8
%r=load i8*,i8**%q,align 8
store i8*%r,i8**%c,align 8
%s=getelementptr inbounds i8*,i8**%q,i64 1
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%d,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**%e,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=load i8*,i8**%d,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**%e,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(i8*(i8*,i8*)*@_SMLL10makeRecord_229 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*)*@_SMLL10makeRecord_229 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=call i8*@sml_alloc(i32 inreg 28)#0
%Q=getelementptr inbounds i8,i8*%P,i64 -4
%R=bitcast i8*%Q to i32*
store i32 1342177304,i32*%R,align 4
%S=load i8*,i8**%e,align 8
%T=bitcast i8*%P to i8**
store i8*%S,i8**%T,align 8
%U=getelementptr inbounds i8,i8*%P,i64 8
%V=bitcast i8*%U to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL9toMLValue_230 to void(...)*),void(...)**%V,align 8
%W=getelementptr inbounds i8,i8*%P,i64 16
%X=bitcast i8*%W to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL9toMLValue_230 to void(...)*),void(...)**%X,align 8
%Y=getelementptr inbounds i8,i8*%P,i64 24
%Z=bitcast i8*%Y to i32*
store i32 -2147483647,i32*%Z,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**%e,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*)*@_SMLL12toMLDatatype_231 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*)*@_SMLL12toMLDatatype_231 to void(...)*),void(...)**%ai,align 8
%aj=getelementptr inbounds i8,i8*%aa,i64 24
%ak=bitcast i8*%aj to i32*
store i32 -2147483647,i32*%ak,align 4
%al=call i8*@sml_alloc(i32 inreg 28)#0
%am=getelementptr inbounds i8,i8*%al,i64 -4
%an=bitcast i8*%am to i32*
store i32 1342177304,i32*%an,align 4
%ao=load i8*,i8**%e,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 void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8toMLList_232 to void(...)*),void(...)**%ar,align 8
%as=getelementptr inbounds i8,i8*%al,i64 16
%at=bitcast i8*%as to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8toMLList_232 to void(...)*),void(...)**%at,align 8
%au=getelementptr inbounds i8,i8*%al,i64 24
%av=bitcast i8*%au to i32*
store i32 -2147483647,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
%aA=bitcast i8*%aw to i8**
store i8*%az,i8**%aA,align 8
%aB=getelementptr inbounds i8,i8*%aw,i64 8
%aC=bitcast i8*%aB to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL10toMLOption_233 to void(...)*),void(...)**%aC,align 8
%aD=getelementptr inbounds i8,i8*%aw,i64 16
%aE=bitcast i8*%aD to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL10toMLOption_233 to void(...)*),void(...)**%aE,align 8
%aF=getelementptr inbounds i8,i8*%aw,i64 24
%aG=bitcast i8*%aF to i32*
store i32 -2147483647,i32*%aG,align 4
%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
%aK=load i8*,i8**%b,align 8
%aL=bitcast i8*%aH to i8**
store i8*%aK,i8**%aL,align 8
%aM=load i8*,i8**%d,align 8
%aN=getelementptr inbounds i8,i8*%aH,i64 8
%aO=bitcast i8*%aN to i8**
store i8*%aM,i8**%aO,align 8
%aP=getelementptr inbounds i8,i8*%aH,i64 16
%aQ=bitcast i8*%aP to i32*
store i32 3,i32*%aQ,align 4
%aR=load i8*,i8**%e,align 8
%aS=tail call fastcc i8*@_SMLL9toMLValue_230(i8*inreg%aR,i8*inreg%aH)
ret i8*%aS
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML15reifiedTermToMLE_328(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 i8*@sml_alloc(i32 inreg 12)#0
%l=bitcast i8*%k to i32*
%m=getelementptr inbounds i8,i8*%k,i64 -4
%n=bitcast i8*%m to i32*
store i32 1342177288,i32*%n,align 4
%o=getelementptr inbounds i8,i8*%k,i64 4
%p=bitcast i8*%o to i32*
store i32 0,i32*%p,align 1
store i32 8,i32*%l,align 4
%q=getelementptr inbounds i8,i8*%k,i64 8
%r=bitcast i8*%q to i32*
store i32 0,i32*%r,align 4
call fastcc void@_SMLFN12RuntimeTypes4initE(i8*inreg%k)
%s=call fastcc i8*@_SMLFN9ReifiedTy26typIdConSetListToConSetEnvE(i8*inreg null)
%t=call fastcc i8*@_SMLFN9ReifiedTy27MergeConSetEnvWithTyRepListE(i8*inreg%s)
%u=getelementptr inbounds i8,i8*%t,i64 16
%v=bitcast i8*%u to i8*(i8*,i8*)**
%w=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%v,align 8
%x=bitcast i8*%t to i8**
%y=load i8*,i8**%x,align 8
store i8*%y,i8**%e,align 8
%z=bitcast i8**%d to i8***
%A=load i8**,i8***%z,align 8
%B=load i8*,i8**%A,align 8
store i8*%B,i8**%f,align 8
%C=call i8*@sml_alloc(i32 inreg 20)#0
%D=getelementptr inbounds i8,i8*%C,i64 -4
%E=bitcast i8*%D to i32*
store i32 1342177296,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 i8**
store i8*null,i8**%I,align 8
%J=getelementptr inbounds i8,i8*%C,i64 16
%K=bitcast i8*%J to i32*
store i32 3,i32*%K,align 4
%L=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%M=call fastcc i8*%w(i8*inreg%L,i8*inreg%C)
%N=call fastcc i8*@_SMLFN9ReifiedTy5TyRepE(i8*inreg%M)
%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
store i8*%S,i8**%e,align 8
%T=load i8**,i8***%z,align 8
%U=load i8*,i8**%T,align 8
%V=call fastcc i8*@_SMLFN9ReifiedTy16TyRepToReifiedTyE(i8*inreg%U)
%W=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%X=call fastcc i8*%Q(i8*inreg%W,i8*inreg%V)
store i8*%X,i8**%e,align 8
%Y=call i8*@sml_alloc(i32 inreg 20)#0
%Z=getelementptr inbounds i8,i8*%Y,i64 -4
%aa=bitcast i8*%Z to i32*
store i32 1342177296,i32*%aa,align 4
%ab=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ac=bitcast i8*%Y to i8**
store i8*%ab,i8**%ac,align 8
%ad=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ae=getelementptr inbounds i8,i8*%Y,i64 8
%af=bitcast i8*%ae to i8**
store i8*%ad,i8**%af,align 8
%ag=getelementptr inbounds i8,i8*%Y,i64 16
%ah=bitcast i8*%ag to i32*
store i32 3,i32*%ah,align 4
%ai=call fastcc i8*@_SMLLN15ReifiedTermToML4toMLE_325(i8*inreg%Y)
store i8*%ai,i8**%c,align 8
%aj=load i8*,i8**%d,align 8
%ak=getelementptr inbounds i8,i8*%aj,i64 12
%al=bitcast i8*%ak to i32*
%am=load i32,i32*%al,align 4
store i8*null,i8**%d,align 8
%an=getelementptr inbounds i8,i8*%aj,i64 8
%ao=bitcast i8*%an to i32*
%ap=load i32,i32*%ao,align 4
%aq=icmp eq i32%ap,0
br i1%aq,label%au,label%ar
ar:
%as=bitcast i8*%ai to i8**
%at=load i8*,i8**%as,align 8
ret i8*%at
au:
%av=call i8*@sml_alloc(i32 inreg%am)#0
%aw=getelementptr inbounds i8,i8*%av,i64 -4
%ax=bitcast i8*%aw to i32*
store i32%am,i32*%ax,align 4
%ay=load i8*,i8**%c,align 8
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%av,i8*%ay,i32%am,i1 false)
ret i8*%av
}
define fastcc i8*@_SMLFN15ReifiedTermToML15reifiedTermToMLE(i32 inreg%a,i32 inreg%b,i8*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
store i8*%c,i8**%d,align 8
%f=call i8*@sml_alloc(i32 inreg 20)#0
%g=getelementptr inbounds i8,i8*%f,i64 -4
%h=bitcast i8*%g to i32*
store i32 1342177296,i32*%h,align 4
store i8*%f,i8**%e,align 8
%i=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%j=bitcast i8*%f to i8**
store i8*%i,i8**%j,align 8
%k=getelementptr inbounds i8,i8*%f,i64 8
%l=bitcast i8*%k to i32*
store i32%a,i32*%l,align 4
%m=getelementptr inbounds i8,i8*%f,i64 12
%n=bitcast i8*%m to i32*
store i32%b,i32*%n,align 4
%o=getelementptr inbounds i8,i8*%f,i64 16
%p=bitcast i8*%o to i32*
store i32 1,i32*%p,align 4
%q=call i8*@sml_alloc(i32 inreg 28)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177304,i32*%s,align 4
%t=load i8*,i8**%e,align 8
%u=bitcast i8*%q to i8**
store i8*%t,i8**%u,align 8
%v=getelementptr inbounds i8,i8*%q,i64 8
%w=bitcast i8*%v to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN15ReifiedTermToML15reifiedTermToMLE_328 to void(...)*),void(...)**%w,align 8
%x=getelementptr inbounds i8,i8*%q,i64 16
%y=bitcast i8*%x to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN15ReifiedTermToML15reifiedTermToMLE_328 to void(...)*),void(...)**%y,align 8
%z=getelementptr inbounds i8,i8*%q,i64 24
%A=bitcast i8*%z to i32*
store i32 1,i32*%A,align 4
ret i8*%q
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_332(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**%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%i,label%h
h:
call void@sml_check(i32 inreg%f)
br label%i
i:
%j=call i8*@sml_alloc(i32 inreg 12)#0
%k=bitcast i8*%j to i32*
%l=getelementptr inbounds i8,i8*%j,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177288,i32*%m,align 4
%n=getelementptr inbounds i8,i8*%j,i64 4
%o=bitcast i8*%n to i32*
store i32 0,i32*%o,align 1
store i32 8,i32*%k,align 4
%p=getelementptr inbounds i8,i8*%j,i64 8
%q=bitcast i8*%p to i32*
store i32 0,i32*%q,align 4
call fastcc void@_SMLFN12RuntimeTypes4initE(i8*inreg%j)
%r=bitcast i8**%d to i8***
%s=load i8**,i8***%r,align 8
%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
%x=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=load i8*,i8**%c,align 8
store i8*null,i8**%c,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 fastcc i8*@_SMLLN15ReifiedTermToML4toMLE_325(i8*inreg%u)
store i8*%E,i8**%c,align 8
%F=load i8*,i8**%d,align 8
%G=getelementptr inbounds i8,i8*%F,i64 12
%H=bitcast i8*%G to i32*
%I=load i32,i32*%H,align 4
store i8*null,i8**%d,align 8
%J=getelementptr inbounds i8,i8*%F,i64 8
%K=bitcast i8*%J to i32*
%L=load i32,i32*%K,align 4
%M=icmp eq i32%L,0
br i1%M,label%Q,label%N
N:
%O=bitcast i8*%E to i8**
%P=load i8*,i8**%O,align 8
ret i8*%P
Q:
%R=call i8*@sml_alloc(i32 inreg%I)#0
%S=getelementptr inbounds i8,i8*%R,i64 -4
%T=bitcast i8*%S to i32*
store i32%I,i32*%T,align 4
%U=load i8*,i8**%c,align 8
call void@llvm.memcpy.p0i8.p0i8.i32(i8*%R,i8*%U,i32%I,i1 false)
ret i8*%R
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_333(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%b,i8**%c,align 8
%e=bitcast i8*%a to i32*
%f=load i32,i32*%e,align 4
%g=getelementptr inbounds i8,i8*%a,i64 4
%h=bitcast i8*%g to i32*
%i=load i32,i32*%h,align 4
%j=call i8*@sml_alloc(i32 inreg 20)#0
%k=getelementptr inbounds i8,i8*%j,i64 -4
%l=bitcast i8*%k to i32*
store i32 1342177296,i32*%l,align 4
store i8*%j,i8**%d,align 8
%m=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%n=bitcast i8*%j to i8**
store i8*%m,i8**%n,align 8
%o=getelementptr inbounds i8,i8*%j,i64 8
%p=bitcast i8*%o to i32*
store i32%f,i32*%p,align 4
%q=getelementptr inbounds i8,i8*%j,i64 12
%r=bitcast i8*%q to i32*
store i32%i,i32*%r,align 4
%s=getelementptr inbounds i8,i8*%j,i64 16
%t=bitcast i8*%s to i32*
store i32 1,i32*%t,align 4
%u=call i8*@sml_alloc(i32 inreg 28)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177304,i32*%w,align 4
%x=load i8*,i8**%d,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%u,i64 8
%A=bitcast i8*%z to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_332 to void(...)*),void(...)**%A,align 8
%B=getelementptr inbounds i8,i8*%u,i64 16
%C=bitcast i8*%B to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_332 to void(...)*),void(...)**%C,align 8
%D=getelementptr inbounds i8,i8*%u,i64 24
%E=bitcast i8*%D to i32*
store i32 1,i32*%E,align 4
ret i8*%u
}
define fastcc i8*@_SMLFN15ReifiedTermToML21reifiedTermToMLWithTyE(i32 inreg%a,i32 inreg%b,i8*inreg%c)#4 gc"smlsharp"{
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%d,i8*null)#0
%e=call i8*@sml_alloc(i32 inreg 12)#0
%f=bitcast i8*%e to i32*
%g=getelementptr inbounds i8,i8*%e,i64 -4
%h=bitcast i8*%g to i32*
store i32 1342177288,i32*%h,align 4
store i8*%e,i8**%d,align 8
store i32%a,i32*%f,align 4
%i=getelementptr inbounds i8,i8*%e,i64 4
%j=bitcast i8*%i to i32*
store i32%b,i32*%j,align 4
%k=getelementptr inbounds i8,i8*%e,i64 8
%l=bitcast i8*%k to i32*
store i32 0,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**%d,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*)*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_333 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*)*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_333 to void(...)*),void(...)**%u,align 8
%v=getelementptr inbounds i8,i8*%m,i64 24
%w=bitcast i8*%v to i32*
store i32 -2147483647,i32*%w,align 4
ret i8*%m
}
define fastcc i32@_SMLFN15ReifiedTermToML9tagToWordE(i32 inreg%a)#4 gc"smlsharp"{
%b=icmp eq i32%a,0
%c=zext i1%b to i32
ret i32%c
}
define fastcc i32@_SMLFN15ReifiedTermToML7isBoxedE(i8*inreg%a)#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
store i8*null,i8**%b,align 8
%j=call fastcc i32@_SMLFN15ReifiedTermToML8constTagE(i8*inreg%h)
%k=icmp eq i32%j,0
%l=zext i1%k to i32
ret i32%l
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML8constTagE_340(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN15ReifiedTermToML8constTagE(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*@_SMLL10fieldSizes_341(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLL10fieldSizes_220(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLL7bitmaps_343(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLL7bitmaps_253(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLL10makeRecord_344(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=getelementptr inbounds i8,i8*%b,i64 4
%f=bitcast i8*%e to i32*
%g=load i32,i32*%f,align 4
%h=bitcast i8*%a to i8**
%i=load i8*,i8**%h,align 8
%j=sext i32%g to i64
%k=getelementptr inbounds i8,i8*%i,i64%j
%l=bitcast i8*%k to i32*
store i32%d,i32*%l,align 4
%m=tail call i8*@sml_alloc(i32 inreg 4)#0
%n=bitcast i8*%m to i32*
%o=getelementptr inbounds i8,i8*%m,i64 -4
%p=bitcast i8*%o to i32*
store i32 4,i32*%p,align 4
store i32 0,i32*%n,align 4
ret i8*%m
}
define internal fastcc i8*@_SMLL10makeRecord_345(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
tail call fastcc void@_SMLL10makeRecord_258(i8*inreg%a,i8*inreg%b)
%c=tail call i8*@sml_alloc(i32 inreg 4)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
store i32 0,i32*%d,align 4
ret i8*%c
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML15reifiedTermToMLE_347(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*@_SMLFN15ReifiedTermToML15reifiedTermToMLE(i32 inreg%f,i32 inreg%h,i8*inreg%d)
ret i8*%i
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML21reifiedTermToMLWithTyE_348(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*@_SMLFN15ReifiedTermToML21reifiedTermToMLWithTyE(i32 inreg%f,i32 inreg%h,i8*inreg undef)
ret i8*%i
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML9tagToWordE_349(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=icmp eq i32%d,0
%f=zext i1%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLN15ReifiedTermToML7isBoxedE_350(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN15ReifiedTermToML7isBoxedE(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
}
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.lifetime.start.p0i8(i64,i8*)#0
declare void@llvm.lifetime.end.p0i8(i64,i8*)#0
attributes#0={nounwind}
attributes#1={noreturn}
attributes#2={uwtable}
attributes#3={noreturn nounwind}
attributes#4={nounwind uwtable}
