@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN12BuiltinTypes7boxedTyE=external local_unnamed_addr global i8*
@_SMLZN12BuiltinTypes8contagTyE=external local_unnamed_addr global i8*
@_SMLZN12BuiltinTypes8exntagTyE=external local_unnamed_addr global i8*
@_SMLZN13ConstantError16TooLargeConstantE=external local_unnamed_addr global i8*
@_SMLZN3Bug3BugE=external local_unnamed_addr global i8*
@_SMLZN3Loc5nolocE=external local_unnamed_addr global i8*
@_SMLZN9UserError10UserErrorsE=external local_unnamed_addr global i8*
@_SMLZ5Match=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[88x i8]}><{[4x i8]zeroinitializer,i32 -2147483560,[88x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:48.19(1127)\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,[14x i8]}><{[4x i8]zeroinitializer,i32 -2147483634,[14x i8]c"extractLayout\00"}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,[88x i8]}><{[4x i8]zeroinitializer,i32 -2147483560,[88x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:54.19(1333)\00"}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,[19x i8]}><{[4x i8]zeroinitializer,i32 -2147483629,[19x i8]c"decomposeDataconTy\00"}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,[88x i8]}><{[4x i8]zeroinitializer,i32 -2147483560,[88x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:59.12(1448)\00"}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,[88x i8]}><{[4x i8]zeroinitializer,i32 -2147483560,[88x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:67.24(1837)\00"}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[12x i8]}><{[4x i8]zeroinitializer,i32 -2147483636,[12x i8]c"dataconTag \00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,[87x i8]}><{[4x i8]zeroinitializer,i32 -2147483561,[87x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:72.6(1979)\00"}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:109.25(3522)\00"}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,[11x i8]}><{[4x i8]zeroinitializer,i32 -2147483637,[11x i8]c"composeCon\00"}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:117.30(3834)\00"}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[27x i8]}><{[4x i8]zeroinitializer,i32 -2147483621,[27x i8]c"composeCon: TAGGED_TAGONLY\00"}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:146.28(4936)\00"}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[30x i8]}><{[4x i8]zeroinitializer,i32 -2147483618,[30x i8]c"composeCon: LAYOUT_SINGLE_ARG\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:130.30(4326)\00"}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,[26x i8]}><{[4x i8]zeroinitializer,i32 -2147483622,[26x i8]c"composeCon: LAYOUT_CHOICE\00"}>,align 8
@q=private unnamed_addr constant<{[4x i8],i32,i32,i32,i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 5,i32 1,i32 0}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,i32,i32,i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 5,i32 0,i32 0}>,align 8
@s=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:140.30(4735)\00"}>,align 8
@t=private unnamed_addr constant<{[4x i8],i32,[26x i8]}><{[4x i8]zeroinitializer,i32 -2147483622,[26x i8]c"composeCon: LAYOUT_SINGLE\00"}>,align 8
@u=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 32,[4x i8]zeroinitializer,i32 0}>,align 8
@v=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:165.25(5569)\00"}>,align 8
@w=private unnamed_addr constant<{[4x i8],i32,[23x i8]}><{[4x i8]zeroinitializer,i32 -2147483625,[23x i8]c"composeCon: LAYOUT_REF\00"}>,align 8
@x=private unnamed_addr constant<{[4x i8],i32,[88x i8]}><{[4x i8]zeroinitializer,i32 -2147483560,[88x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:111.8(3560)\00"}>,align 8
@y=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:246.29(8854)\00"}>,align 8
@z=private unnamed_addr constant<{[4x i8],i32,[16x i8]}><{[4x i8]zeroinitializer,i32 -2147483632,[16x i8]c"switchArgOrNull\00"}>,align 8
@A=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:232.25(8240)\00"}>,align 8
@B=private unnamed_addr constant<{[4x i8],i32,[29x i8]}><{[4x i8]zeroinitializer,i32 -2147483619,[29x i8]c"switchCon: LAYOUT_SINGLE_ARG\00"}>,align 8
@C=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:210.29(7440)\00"}>,align 8
@D=private unnamed_addr constant<{[4x i8],i32,[25x i8]}><{[4x i8]zeroinitializer,i32 -2147483623,[25x i8]c"switchCon: LAYOUT_CHOICE\00"}>,align 8
@E=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:220.25(7782)\00"}>,align 8
@F=private unnamed_addr constant<{[4x i8],i32,[25x i8]}><{[4x i8]zeroinitializer,i32 -2147483623,[25x i8]c"switchCon: LAYOUT_SINGLE\00"}>,align 8
@G=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:269.25(9727)\00"}>,align 8
@H=private unnamed_addr constant<{[4x i8],i32,[35x i8]}><{[4x i8]zeroinitializer,i32 -2147483613,[35x i8]c"compileExp: TPCASE: LAYOUT_ARGONLY\00"}>,align 8
@I=private unnamed_addr constant<{[4x i8],i32,[88x i8]}><{[4x i8]zeroinitializer,i32 -2147483560,[88x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:179.8(6012)\00"}>,align 8
@J=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:309.6(10897)\00"}>,align 8
@K=private unnamed_addr constant<{[4x i8],i32,[86x i8]}><{[4x i8]zeroinitializer,i32 -2147483562,[86x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:38.6(831)\00"}>,align 8
@L=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:328.25(11496)\00"}>,align 8
@M=private unnamed_addr constant<{[4x i8],i32,[11x i8]}><{[4x i8]zeroinitializer,i32 -2147483637,[11x i8]c"composeExn\00"}>,align 8
@N=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:332.28(11647)\00"}>,align 8
@O=private unnamed_addr constant<{[4x i8],i32,[26x i8]}><{[4x i8]zeroinitializer,i32 -2147483622,[26x i8]c"composeExn: tag not found\00"}>,align 8
@P=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:351.48(12404)\00"}>,align 8
@Q=private unnamed_addr constant<{[4x i8],i32,[10x i8]}><{[4x i8]zeroinitializer,i32 -2147483638,[10x i8]c"switchExn\00"}>,align 8
@R=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 5,[4x i8]zeroinitializer,i32 0}>,align 8
@S=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:690.14(25532)\00"}>,align 8
@T=private unnamed_addr constant<{[4x i8],i32,[20x i8]}><{[4x i8]zeroinitializer,i32 -2147483628,[20x i8]c"compileExp: TPCASEM\00"}>,align 8
@U=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:579.38(21204)\00"}>,align 8
@V=private unnamed_addr constant<{[4x i8],i32,[21x i8]}><{[4x i8]zeroinitializer,i32 -2147483627,[21x i8]c"compileExp: TPSWITCH\00"}>,align 8
@W=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:604.37(22277)\00"}>,align 8
@X=private unnamed_addr constant<{[4x i8],i32,[29x i8]}><{[4x i8]zeroinitializer,i32 -2147483619,[29x i8]c"compileExp: TPSWITCH: STRING\00"}>,align 8
@Y=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN19DatatypeCompilation10compileExpE_338 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_426 to void(...)*),i32 -2147483647}>,align 8
@Z=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:592.37(21753)\00"}>,align 8
@aa=private unnamed_addr constant<{[4x i8],i32,[29x i8]}><{[4x i8]zeroinitializer,i32 -2147483619,[29x i8]c"compileExp: TPSWITCH: INTINF\00"}>,align 8
@ab=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN19DatatypeCompilation10compileExpE_342 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_427 to void(...)*),i32 -2147483647}>,align 8
@ac=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:616.37(22756)\00"}>,align 8
@ad=private unnamed_addr constant<{[4x i8],i32,[24x i8]}><{[4x i8]zeroinitializer,i32 -2147483624,[24x i8]c"compileExp: TPSWITCH: C\00"}>,align 8
@ae=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN19DatatypeCompilation10compileExpE_347 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_428 to void(...)*),i32 -2147483647}>,align 8
@af=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:584.10(21388)\00"}>,align 8
@ag=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLL8ruleList_350 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8ruleList_429 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(i8*(i8*)*@_SMLL8ruleList_353 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8ruleList_430 to void(...)*),i32 -2147483647}>,align 8
@ai=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:688.14(25458)\00"}>,align 8
@aj=private unnamed_addr constant<{[4x i8],i32,[26x i8]}><{[4x i8]zeroinitializer,i32 -2147483622,[26x i8]c"compileExp: TPDYNAMICCASE\00"}>,align 8
@ak=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:692.14(25598)\00"}>,align 8
@al=private unnamed_addr constant<{[4x i8],i32,[20x i8]}><{[4x i8]zeroinitializer,i32 -2147483628,[20x i8]c"compileExp: TPERROR\00"}>,align 8
@am=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:434.26(15669)\00"}>,align 8
@an=private unnamed_addr constant<{[4x i8],i32,[21x i8]}><{[4x i8]zeroinitializer,i32 -2147483627,[21x i8]c"compileExp: TPEXNTAG\00"}>,align 8
@ao=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:440.26(15884)\00"}>,align 8
@ap=private unnamed_addr constant<{[4x i8],i32,[23x i8]}><{[4x i8]zeroinitializer,i32 -2147483625,[23x i8]c"compileExp: TPEXEXNTAG\00"}>,align 8
@aq=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:674.14(24928)\00"}>,align 8
@ar=private unnamed_addr constant<{[4x i8],i32,[24x i8]}><{[4x i8]zeroinitializer,i32 -2147483624,[24x i8]c"compileExp: TPFFIIMPORT\00"}>,align 8
@as=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN19DatatypeCompilation10compileExpE_370 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_431 to void(...)*),i32 -2147483647}>,align 8
@at=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN19DatatypeCompilation10compileExpE_372 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_432 to void(...)*),i32 -2147483647}>,align 8
@au=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN19DatatypeCompilation10compileExpE_374 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_433 to void(...)*),i32 -2147483647}>,align 8
@av=private unnamed_addr constant<{[4x i8],i32,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306360,i32 19,[4x i8]zeroinitializer,i32 0}>,align 8
@aw=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:676.14(24999)\00"}>,align 8
@ax=private unnamed_addr constant<{[4x i8],i32,[19x i8]}><{[4x i8]zeroinitializer,i32 -2147483629,[19x i8]c"compileExp: TPJOIN\00"}>,align 8
@ay=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:678.14(25068)\00"}>,align 8
@az=private unnamed_addr constant<{[4x i8],i32,[22x i8]}><{[4x i8]zeroinitializer,i32 -2147483626,[22x i8]c"compileExp: TPDYNAMIC\00"}>,align 8
@aA=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:680.14(25142)\00"}>,align 8
@aB=private unnamed_addr constant<{[4x i8],i32,[24x i8]}><{[4x i8]zeroinitializer,i32 -2147483624,[24x i8]c"compileExp: TPDYNAMICIS\00"}>,align 8
@aC=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:682.14(25220)\00"}>,align 8
@aD=private unnamed_addr constant<{[4x i8],i32,[26x i8]}><{[4x i8]zeroinitializer,i32 -2147483622,[26x i8]c"compileExp: TPDYNAMICNULL\00"}>,align 8
@aE=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:684.14(25299)\00"}>,align 8
@aF=private unnamed_addr constant<{[4x i8],i32,[25x i8]}><{[4x i8]zeroinitializer,i32 -2147483623,[25x i8]c"compileExp: TPDYNAMICTOP\00"}>,align 8
@aG=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:686.14(25378)\00"}>,align 8
@aH=private unnamed_addr constant<{[4x i8],i32,[26x i8]}><{[4x i8]zeroinitializer,i32 -2147483622,[26x i8]c"compileExp: TPDYNAMICVIEW\00"}>,align 8
@aI=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:378.6(13461)\00"}>,align 8
@aJ=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:750.26(27628)\00"}>,align 8
@aK=private unnamed_addr constant<{[4x i8],i32,[25x i8]}><{[4x i8]zeroinitializer,i32 -2147483623,[25x i8]c"compileDecl: TPEXPORTEXN\00"}>,align 8
@aL=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:778.14(28674)\00"}>,align 8
@aM=private unnamed_addr constant<{[4x i8],i32,[23x i8]}><{[4x i8]zeroinitializer,i32 -2147483625,[23x i8]c"compileDecl: TPFUNDECL\00"}>,align 8
@aN=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:780.14(28751)\00"}>,align 8
@aO=private unnamed_addr constant<{[4x i8],i32,[27x i8]}><{[4x i8]zeroinitializer,i32 -2147483621,[27x i8]c"compileDecl: TPPOLYFUNDECL\00"}>,align 8
@aP=private unnamed_addr constant<{[4x i8],i32,[89x i8]}><{[4x i8]zeroinitializer,i32 -2147483559,[89x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:695.6(25666)\00"}>,align 8
@aQ=private unnamed_addr constant<{[4x i8],i32,[90x i8]}><{[4x i8]zeroinitializer,i32 -2147483558,[90x i8]c"src/compiler/compilePhases/datatypecompilation/main/DatatypeCompilation.sml:798.26(29272)\00"}>,align 8
@_SML_gvard79dd64f2e886d15_DatatypeCompilation=private global<{[4x i8],i32,[3x i8*]}><{[4x i8]zeroinitializer,i32 -1342177256,[3x i8*]zeroinitializer}>,align 8
@aR=private unnamed_addr global[2x i64][i64 1,i64 sub(i64 ptrtoint(i8**getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i32 0,i32 2,i32 0)to i64),i64 ptrtoint([2x i64]*@aR to i64))]
@_SML_ftabd79dd64f2e886d15_DatatypeCompilation=external global i8
@aS=private unnamed_addr global i8 0
@_SMLZN19DatatypeCompilation8emptyEnvE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i32 0,i32 2,i32 0)
@_SMLZN19DatatypeCompilation10compileExpE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i32 0,i32 2,i32 1)
@_SMLZN19DatatypeCompilation7compileE=alias i8*,getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i32 0,i32 2,i32 2)
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_end()local_unnamed_addr#0
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_save_exn(i8*inreg)local_unnamed_addr#0
declare void@sml_start(i8*inreg)local_unnamed_addr#0
declare void@sml_write(i8*inreg,i8**inreg,i8*inreg)local_unnamed_addr#0
declare i8*@_SMLFN10TyRevealTy8revealTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel3Map3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel3Map4mapiE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel3Map6insertE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11RecordLabel3Map7isEmptyE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11TypesBasics7derefTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN11TypesBasics7tpappTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN13ConstantTypes8fixConstE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN13LongsymbolEnv4findE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN13LongsymbolEnv5emptyE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN13LongsymbolEnv6insertE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN13SwitchCompile19compileIntInfSwitchE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN13SwitchCompile19compileStringSwitchE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda10composeExnE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda11allocExnTagE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda13IdentityEqualE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda13extractExnArgE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda13extractExnTagE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda5TupleE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN15EmitTypedLambda5newIdE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda6IsNullE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda7SelectNE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda7tupleTyE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda9Ref__allocE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN15EmitTypedLambda9Ref__derefE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN20PrimitiveTypedLambda7compileE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List1_VE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List5foldrE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5ExnID3Map4findE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5ExnID3Map5emptyE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN5ExnID3Map6insertE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN5VarID8generateE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Option3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String1_ZE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Symbol10lastSymbolE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Symbol14symbolToStringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Symbol18longsymbolToStringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN6Symbol8eqSymbolE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Symbol8mkSymbolE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SMLFN9UserError10clearQueueE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9UserError11createQueueE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9UserError12enqueueErrorE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9UserError9getErrorsE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main3a60343781315c1e_Option()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main1ef93e13728790b1_String()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main67a5b28ff146c353_Loc()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main44ca35c4c731682b_Symbol()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main60e750412e2bb4fe_RecordLabel()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main7374574ddb619c6a_LocalID()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maineaa0aca8fbe4101a_Bug()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maincf60e58028aea790_BuiltinTypes()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main502cbdd32cbefe89_ConstantError_ppg()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main900971c25b4603db_ConstantTypes()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main2aaf2b808f82ee2e_TypesBasics()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maind65fe522e787239e_TyRevealTy()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainadeb402e3568875f_UserError_ppg()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main60bbb7eac47f0da4_EmitTypedLambda()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main02952e3e94709fcc_SwitchCompile()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main438f04634a4a52b1_PrimitiveTypedLambda()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load3a60343781315c1e_Option(i8*)local_unnamed_addr
declare void@_SML_load1ef93e13728790b1_String(i8*)local_unnamed_addr
declare void@_SML_load67a5b28ff146c353_Loc(i8*)local_unnamed_addr
declare void@_SML_load44ca35c4c731682b_Symbol(i8*)local_unnamed_addr
declare void@_SML_load60e750412e2bb4fe_RecordLabel(i8*)local_unnamed_addr
declare void@_SML_load7374574ddb619c6a_LocalID(i8*)local_unnamed_addr
declare void@_SML_loadeaa0aca8fbe4101a_Bug(i8*)local_unnamed_addr
declare void@_SML_loadcf60e58028aea790_BuiltinTypes(i8*)local_unnamed_addr
declare void@_SML_load502cbdd32cbefe89_ConstantError_ppg(i8*)local_unnamed_addr
declare void@_SML_load900971c25b4603db_ConstantTypes(i8*)local_unnamed_addr
declare void@_SML_load2aaf2b808f82ee2e_TypesBasics(i8*)local_unnamed_addr
declare void@_SML_loadd65fe522e787239e_TyRevealTy(i8*)local_unnamed_addr
declare void@_SML_loadadeb402e3568875f_UserError_ppg(i8*)local_unnamed_addr
declare void@_SML_load60bbb7eac47f0da4_EmitTypedLambda(i8*)local_unnamed_addr
declare void@_SML_load02952e3e94709fcc_SwitchCompile(i8*)local_unnamed_addr
declare void@_SML_load438f04634a4a52b1_PrimitiveTypedLambda(i8*)local_unnamed_addr
define private void@_SML_tabbd79dd64f2e886d15_DatatypeCompilation()#3{
unreachable
}
define void@_SML_loadd79dd64f2e886d15_DatatypeCompilation(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@aS,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@aS,align 1
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load3a60343781315c1e_Option(i8*%a)#0
tail call void@_SML_load1ef93e13728790b1_String(i8*%a)#0
tail call void@_SML_load67a5b28ff146c353_Loc(i8*%a)#0
tail call void@_SML_load44ca35c4c731682b_Symbol(i8*%a)#0
tail call void@_SML_load60e750412e2bb4fe_RecordLabel(i8*%a)#0
tail call void@_SML_load7374574ddb619c6a_LocalID(i8*%a)#0
tail call void@_SML_loadeaa0aca8fbe4101a_Bug(i8*%a)#0
tail call void@_SML_loadcf60e58028aea790_BuiltinTypes(i8*%a)#0
tail call void@_SML_load502cbdd32cbefe89_ConstantError_ppg(i8*%a)#0
tail call void@_SML_load900971c25b4603db_ConstantTypes(i8*%a)#0
tail call void@_SML_load2aaf2b808f82ee2e_TypesBasics(i8*%a)#0
tail call void@_SML_loadd65fe522e787239e_TyRevealTy(i8*%a)#0
tail call void@_SML_loadadeb402e3568875f_UserError_ppg(i8*%a)#0
tail call void@_SML_load60bbb7eac47f0da4_EmitTypedLambda(i8*%a)#0
tail call void@_SML_load02952e3e94709fcc_SwitchCompile(i8*%a)#0
tail call void@_SML_load438f04634a4a52b1_PrimitiveTypedLambda(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabbd79dd64f2e886d15_DatatypeCompilation,i8*@_SML_ftabd79dd64f2e886d15_DatatypeCompilation,i8*bitcast([2x i64]*@aR to i8*))#0
ret void
}
define void@_SML_maind79dd64f2e886d15_DatatypeCompilation()local_unnamed_addr#2 gc"smlsharp"personality i32(...)*@sml_personality{
%a=alloca[3x i8*],align 8
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=load i8,i8*@aS,align 1
%g=and i8%f,2
%h=icmp eq i8%g,0
br i1%h,label%j,label%i
i:
ret void
j:
store i8 3,i8*@aS,align 1
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main3a60343781315c1e_Option()#2
tail call void@_SML_main1ef93e13728790b1_String()#2
tail call void@_SML_main67a5b28ff146c353_Loc()#2
tail call void@_SML_main44ca35c4c731682b_Symbol()#2
tail call void@_SML_main60e750412e2bb4fe_RecordLabel()#2
tail call void@_SML_main7374574ddb619c6a_LocalID()#2
tail call void@_SML_maineaa0aca8fbe4101a_Bug()#2
tail call void@_SML_maincf60e58028aea790_BuiltinTypes()#2
tail call void@_SML_main502cbdd32cbefe89_ConstantError_ppg()#2
tail call void@_SML_main900971c25b4603db_ConstantTypes()#2
tail call void@_SML_main2aaf2b808f82ee2e_TypesBasics()#2
tail call void@_SML_maind65fe522e787239e_TyRevealTy()#2
tail call void@_SML_mainadeb402e3568875f_UserError_ppg()#2
tail call void@_SML_main60bbb7eac47f0da4_EmitTypedLambda()#2
tail call void@_SML_main02952e3e94709fcc_SwitchCompile()#2
tail call void@_SML_main438f04634a4a52b1_PrimitiveTypedLambda()#2
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
%k=bitcast[3x i8*]*%a to i8*
call void@sml_start(i8*inreg%k)#0
%l=load atomic i32,i32*@sml_check_flag unordered,align 4
%m=icmp eq i32%l,0
br i1%m,label%o,label%n
n:
invoke void@sml_check(i32 inreg%l)
to label%o unwind label%bt
o:
%p=invoke fastcc i8*@_SMLFN9UserError11createQueueE(i32 inreg 0)
to label%q unwind label%bt
q:
store i8*%p,i8**%b,align 8
%r=invoke fastcc i8*@_SMLFN13LongsymbolEnv5emptyE(i32 inreg 1,i32 inreg 8)
to label%s unwind label%bt
s:
store i8*%r,i8**%d,align 8
%t=invoke fastcc i8*@_SMLFN5ExnID3Map5emptyE(i32 inreg 1,i32 inreg 8)
to label%u unwind label%bt
u:
store i8*%t,i8**%e,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**%d,align 8
store i8*null,i8**%d,align 8
%z=bitcast i8*%v to i8**
store i8*%y,i8**%z,align 8
%A=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%B=getelementptr inbounds i8,i8*%v,i64 8
%C=bitcast i8*%B to i8**
store i8*%A,i8**%C,align 8
%D=getelementptr inbounds i8,i8*%v,i64 16
%E=bitcast i8*%D to i32*
store i32 3,i32*%E,align 4
%F=call i8*@sml_alloc(i32 inreg 12)#0
%G=getelementptr inbounds i8,i8*%F,i64 -4
%H=bitcast i8*%G to i32*
store i32 1342177288,i32*%H,align 4
store i8*%F,i8**%d,align 8
%I=load i8*,i8**%b,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 1,i32*%L,align 4
%M=call i8*@sml_alloc(i32 inreg 28)#0
%N=getelementptr inbounds i8,i8*%M,i64 -4
%O=bitcast i8*%N to i32*
store i32 1342177304,i32*%O,align 4
%P=load i8*,i8**%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*)*@_SMLLN19DatatypeCompilation8fixConstE_326 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*)*@_SMLLN19DatatypeCompilation8fixConstE_326 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
%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**%e,align 8
%aa=load i8*,i8**%d,align 8
store i8*null,i8**%d,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 i32*
store i32 1,i32*%ad,align 4
%ae=call i8*@sml_alloc(i32 inreg 28)#0
%af=getelementptr inbounds i8,i8*%ae,i64 -4
%ag=bitcast i8*%af to i32*
store i32 1342177304,i32*%ag,align 4
%ah=load i8*,i8**%e,align 8
%ai=bitcast i8*%ae to i8**
store i8*%ah,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%ae,i64 8
%ak=bitcast i8*%aj to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_327 to void(...)*),void(...)**%ak,align 8
%al=getelementptr inbounds i8,i8*%ae,i64 16
%am=bitcast i8*%al to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_327 to void(...)*),void(...)**%am,align 8
%an=getelementptr inbounds i8,i8*%ae,i64 24
%ao=bitcast i8*%an to i32*
store i32 -2147483647,i32*%ao,align 4
%ap=call i8*@sml_alloc(i32 inreg 28)#0
%aq=getelementptr inbounds i8,i8*%ap,i64 -4
%ar=bitcast i8*%aq to i32*
store i32 1342177304,i32*%ar,align 4
%as=load i8*,i8**%e,align 8
%at=bitcast i8*%ap to i8**
store i8*%as,i8**%at,align 8
%au=getelementptr inbounds i8,i8*%ap,i64 8
%av=bitcast i8*%au to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN19DatatypeCompilation15compileDeclListE_328 to void(...)*),void(...)**%av,align 8
%aw=getelementptr inbounds i8,i8*%ap,i64 16
%ax=bitcast i8*%aw to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN19DatatypeCompilation15compileDeclListE_328 to void(...)*),void(...)**%ax,align 8
%ay=getelementptr inbounds i8,i8*%ap,i64 24
%az=bitcast i8*%ay to i32*
store i32 -2147483647,i32*%az,align 4
%aA=call i8*@sml_alloc(i32 inreg 28)#0
%aB=getelementptr inbounds i8,i8*%aA,i64 -4
%aC=bitcast i8*%aB to i32*
store i32 1342177304,i32*%aC,align 4
%aD=load i8*,i8**%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*,i8*)*@_SMLLN19DatatypeCompilation11compileDeclE_329 to void(...)*),void(...)**%aG,align 8
%aH=getelementptr inbounds i8,i8*%aA,i64 16
%aI=bitcast i8*%aH to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*)*@_SMLLN19DatatypeCompilation11compileDeclE_329 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
store i8*%aL,i8**%d,align 8
%aO=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aP=bitcast i8*%aL to i8**
store i8*%aO,i8**%aP,align 8
%aQ=load i8*,i8**%c,align 8
%aR=getelementptr inbounds i8,i8*%aL,i64 8
%aS=bitcast i8*%aR to i8**
store i8*%aQ,i8**%aS,align 8
%aT=load i8*,i8**%e,align 8
%aU=getelementptr inbounds i8,i8*%aL,i64 16
%aV=bitcast i8*%aU to i8**
store i8*%aT,i8**%aV,align 8
%aW=getelementptr inbounds i8,i8*%aL,i64 24
%aX=bitcast i8*%aW to i32*
store i32 7,i32*%aX,align 4
%aY=call i8*@sml_alloc(i32 inreg 28)#0
%aZ=getelementptr inbounds i8,i8*%aY,i64 -4
%a0=bitcast i8*%aZ to i32*
store i32 1342177304,i32*%a0,align 4
store i8*%aY,i8**%b,align 8
%a1=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%a2=bitcast i8*%aY to i8**
store i8*%a1,i8**%a2,align 8
%a3=getelementptr inbounds i8,i8*%aY,i64 8
%a4=bitcast i8*%a3 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation7compileE_405 to void(...)*),void(...)**%a4,align 8
%a5=getelementptr inbounds i8,i8*%aY,i64 16
%a6=bitcast i8*%a5 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation7compileE_405 to void(...)*),void(...)**%a6,align 8
%a7=getelementptr inbounds i8,i8*%aY,i64 24
%a8=bitcast i8*%a7 to i32*
store i32 -2147483647,i32*%a8,align 4
%a9=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 0),i8*inreg%a9)#0
%ba=call i8*@sml_alloc(i32 inreg 12)#0
%bb=getelementptr inbounds i8,i8*%ba,i64 -4
%bc=bitcast i8*%bb to i32*
store i32 1342177288,i32*%bc,align 4
store i8*%ba,i8**%c,align 8
%bd=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%be=bitcast i8*%ba to i8**
store i8*%bd,i8**%be,align 8
%bf=getelementptr inbounds i8,i8*%ba,i64 8
%bg=bitcast i8*%bf to i32*
store i32 1,i32*%bg,align 4
%bh=call i8*@sml_alloc(i32 inreg 28)#0
%bi=getelementptr inbounds i8,i8*%bh,i64 -4
%bj=bitcast i8*%bi to i32*
store i32 1342177304,i32*%bj,align 4
%bk=load i8*,i8**%c,align 8
%bl=bitcast i8*%bh to i8**
store i8*%bk,i8**%bl,align 8
%bm=getelementptr inbounds i8,i8*%bh,i64 8
%bn=bitcast i8*%bm to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_407 to void(...)*),void(...)**%bn,align 8
%bo=getelementptr inbounds i8,i8*%bh,i64 16
%bp=bitcast i8*%bo to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_407 to void(...)*),void(...)**%bp,align 8
%bq=getelementptr inbounds i8,i8*%bh,i64 24
%br=bitcast i8*%bq to i32*
store i32 -2147483647,i32*%br,align 4
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 1),i8*inreg%bh)#0
%bs=load i8*,i8**%b,align 8
call void@sml_write(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 0)to i8*),i8**inreg getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 2),i8*inreg%bs)#0
call void@sml_end()#0
ret void
bt:
%bu=landingpad{i8*,i8*}
cleanup
%bv=extractvalue{i8*,i8*}%bu,1
call void@sml_save_exn(i8*inreg%bv)#0
call void@sml_end()#0
resume{i8*,i8*}%bu
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation13extractLayoutE_243(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
j:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%h,label%f
f:
call void@sml_check(i32 inreg%d)
%g=load i8*,i8**%b,align 8
br label%h
h:
%i=phi i8*[%g,%f],[%a,%j]
store i8*null,i8**%b,align 8
%k=call fastcc i8*@_SMLFN10TyRevealTy8revealTyE(i8*inreg%i)
%l=icmp eq i8*%k,null
br i1%l,label%P,label%m
m:
%n=bitcast i8*%k to i32*
%o=load i32,i32*%n,align 4
%p=icmp eq i32%o,2
br i1%p,label%q,label%P
q:
%r=getelementptr inbounds i8,i8*%k,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
%u=getelementptr inbounds i8,i8*%t,i64 8
%v=bitcast i8*%u to i8**
%w=load i8*,i8**%v,align 8
%x=getelementptr inbounds i8,i8*%w,i64 24
%y=bitcast i8*%x to i8**
%z=load i8*,i8**%y,align 8
%A=bitcast i8*%z to i32*
%B=load i32,i32*%A,align 4
%C=icmp eq i32%B,0
br i1%C,label%D,label%P
D:
%E=getelementptr inbounds i8,i8*%z,i64 8
%F=bitcast i8*%E to i8***
%G=load i8**,i8***%F,align 8
%H=load i8*,i8**%G,align 8
%I=bitcast i8*%H to i32*
%J=load i32,i32*%I,align 4
%K=icmp eq i32%J,3
br i1%K,label%L,label%P
L:
%M=getelementptr inbounds i8,i8*%H,i64 8
%N=bitcast i8*%M to i8**
%O=load i8*,i8**%N,align 8
ret i8*%O
P:
%Q=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%Q,i8**%b,align 8
%R=call i8*@sml_alloc(i32 inreg 28)#0
%S=getelementptr inbounds i8,i8*%R,i64 -4
%T=bitcast i8*%S to i32*
store i32 1342177304,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,[88x i8]}>,<{[4x i8],i32,[88x i8]}>*@a,i64 0,i32 2,i64 0),i8**%X,align 8
%Y=getelementptr inbounds i8,i8*%R,i64 16
%Z=bitcast i8*%Y to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[14x i8]}>,<{[4x i8],i32,[14x i8]}>*@b,i64 0,i32 2,i64 0),i8**%Z,align 8
%aa=getelementptr inbounds i8,i8*%R,i64 24
%ab=bitcast i8*%aa to i32*
store i32 7,i32*%ab,align 4
%ac=call i8*@sml_alloc(i32 inreg 60)#0
%ad=getelementptr inbounds i8,i8*%ac,i64 -4
%ae=bitcast i8*%ad to i32*
store i32 1342177336,i32*%ae,align 4
%af=getelementptr inbounds i8,i8*%ac,i64 56
%ag=bitcast i8*%af to i32*
store i32 1,i32*%ag,align 4
%ah=load i8*,i8**%c,align 8
%ai=bitcast i8*%ac to i8**
store i8*%ah,i8**%ai,align 8
call void@sml_raise(i8*inreg%ac)#1
unreachable
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation18decomposeDataconTyE_247(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
k:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%b,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%b,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%a,%k]
%l=call fastcc i8*@_SMLFN11TypesBasics7derefTyE(i8*inreg%j)
%m=icmp eq i8*%l,null
br i1%m,label%aj,label%n
n:
%o=bitcast i8*%l to i32*
%p=load i32,i32*%o,align 4
switch i32%p,label%aj[
i32 6,label%A
i32 2,label%q
]
q:
%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
%u=bitcast i8*%r to i8**
store i8*null,i8**%u,align 8
%v=load i8*,i8**%b,align 8
%w=getelementptr inbounds i8,i8*%r,i64 8
%x=bitcast i8*%w to i8**
store i8*%v,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
ret i8*%r
A:
%B=getelementptr inbounds i8,i8*%l,i64 8
%C=bitcast i8*%B to i8**
%D=load i8*,i8**%C,align 8
%E=bitcast i8*%D to i8**
%F=load i8*,i8**%E,align 8
%G=icmp eq i8*%F,null
br i1%G,label%aj,label%H
H:
%I=getelementptr inbounds i8,i8*%F,i64 8
%J=bitcast i8*%I to i8**
%K=load i8*,i8**%J,align 8
%L=icmp eq i8*%K,null
br i1%L,label%M,label%aj
M:
%N=getelementptr inbounds i8,i8*%D,i64 8
%O=bitcast i8*%N to i8**
%P=load i8*,i8**%O,align 8
store i8*%P,i8**%b,align 8
%Q=bitcast i8*%F to i8**
%R=load i8*,i8**%Q,align 8
store i8*%R,i8**%c,align 8
%S=call i8*@sml_alloc(i32 inreg 12)#0
%T=getelementptr inbounds i8,i8*%S,i64 -4
%U=bitcast i8*%T to i32*
store i32 1342177288,i32*%U,align 4
store i8*%S,i8**%d,align 8
%V=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%W=bitcast i8*%S to i8**
store i8*%V,i8**%W,align 8
%X=getelementptr inbounds i8,i8*%S,i64 8
%Y=bitcast i8*%X to i32*
store i32 1,i32*%Y,align 4
%Z=call i8*@sml_alloc(i32 inreg 20)#0
%aa=getelementptr inbounds i8,i8*%Z,i64 -4
%ab=bitcast i8*%aa to i32*
store i32 1342177296,i32*%ab,align 4
%ac=load i8*,i8**%d,align 8
%ad=bitcast i8*%Z to i8**
store i8*%ac,i8**%ad,align 8
%ae=load i8*,i8**%b,align 8
%af=getelementptr inbounds i8,i8*%Z,i64 8
%ag=bitcast i8*%af to i8**
store i8*%ae,i8**%ag,align 8
%ah=getelementptr inbounds i8,i8*%Z,i64 16
%ai=bitcast i8*%ah to i32*
store i32 3,i32*%ai,align 4
ret i8*%Z
aj:
%ak=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%ak,i8**%b,align 8
%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
store i8*%al,i8**%c,align 8
%ao=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ap=bitcast i8*%al to i8**
store i8*%ao,i8**%ap,align 8
%aq=getelementptr inbounds i8,i8*%al,i64 8
%ar=bitcast i8*%aq to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[88x i8]}>,<{[4x i8],i32,[88x i8]}>*@c,i64 0,i32 2,i64 0),i8**%ar,align 8
%as=getelementptr inbounds i8,i8*%al,i64 16
%at=bitcast i8*%as to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[19x i8]}>,<{[4x i8],i32,[19x i8]}>*@d,i64 0,i32 2,i64 0),i8**%at,align 8
%au=getelementptr inbounds i8,i8*%al,i64 24
%av=bitcast i8*%au to i32*
store i32 7,i32*%av,align 4
%aw=call i8*@sml_alloc(i32 inreg 60)#0
%ax=getelementptr inbounds i8,i8*%aw,i64 -4
%ay=bitcast i8*%ax to i32*
store i32 1342177336,i32*%ay,align 4
%az=getelementptr inbounds i8,i8*%aw,i64 56
%aA=bitcast i8*%az to i32*
store i32 1,i32*%aA,align 4
%aB=load i8*,i8**%c,align 8
%aC=bitcast i8*%aw to i8**
store i8*%aB,i8**%aC,align 8
call void@sml_raise(i8*inreg%aw)#1
unreachable
}
define internal fastcc i32@_SMLLN19DatatypeCompilation12lookupConTagE_254(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
m:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
call void@llvm.gcroot(i8**%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
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%d,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%a,%m]
store i8*%l,i8**%e,align 8
%n=bitcast i8*%l to i8**
%o=load i8*,i8**%n,align 8
%p=bitcast i8*%o to i32*
%q=load i32,i32*%p,align 4
switch i32%q,label%r[
i32 1,label%V
i32 0,label%O
i32 2,label%J
]
r:
store i8*null,i8**%e,align 8
call void@sml_matchcomp_bug()
%s=load i8*,i8**@_SMLZ5Match,align 8
store i8*%s,i8**%d,align 8
%t=call i8*@sml_alloc(i32 inreg 20)#0
%u=getelementptr inbounds i8,i8*%t,i64 -4
%v=bitcast i8*%u to i32*
store i32 1342177296,i32*%v,align 4
store i8*%t,i8**%e,align 8
%w=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%x=bitcast i8*%t to i8**
store i8*%w,i8**%x,align 8
%y=getelementptr inbounds i8,i8*%t,i64 8
%z=bitcast i8*%y to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[88x i8]}>,<{[4x i8],i32,[88x i8]}>*@e,i64 0,i32 2,i64 0),i8**%z,align 8
%A=getelementptr inbounds i8,i8*%t,i64 16
%B=bitcast i8*%A to i32*
store i32 3,i32*%B,align 4
%C=call i8*@sml_alloc(i32 inreg 60)#0
%D=getelementptr inbounds i8,i8*%C,i64 -4
%E=bitcast i8*%D to i32*
store i32 1342177336,i32*%E,align 4
%F=getelementptr inbounds i8,i8*%C,i64 56
%G=bitcast i8*%F to i32*
store i32 1,i32*%G,align 4
%H=load i8*,i8**%e,align 8
%I=bitcast i8*%C to i8**
store i8*%H,i8**%I,align 8
call void@sml_raise(i8*inreg%C)#1
unreachable
J:
%K=getelementptr inbounds i8,i8*%o,i64 8
%L=bitcast i8*%K to i8***
%M=load i8**,i8***%L,align 8
%N=load i8*,i8**%M,align 8
store i8*%N,i8**%d,align 8
br label%aa
O:
%P=getelementptr inbounds i8,i8*%o,i64 8
%Q=bitcast i8*%P to i8**
%R=load i8*,i8**%Q,align 8
%S=getelementptr inbounds i8,i8*%R,i64 8
%T=bitcast i8*%S to i8**
%U=load i8*,i8**%T,align 8
store i8*%U,i8**%d,align 8
br label%aa
V:
%W=getelementptr inbounds i8,i8*%o,i64 8
%X=bitcast i8*%W to i8***
%Y=load i8**,i8***%X,align 8
%Z=load i8*,i8**%Y,align 8
store i8*%Z,i8**%d,align 8
br label%aa
aa:
%ab=getelementptr inbounds i8,i8*%l,i64 8
%ac=bitcast i8*%ab to i8**
%ad=load i8*,i8**%ac,align 8
%ae=call fastcc i8*@_SMLFN6Symbol10lastSymbolE(i8*inreg%ad)
%af=call fastcc i8*@_SMLFN6Symbol14symbolToStringE(i8*inreg%ae)
%ag=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ah=bitcast i8**%b to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%ah)
%ai=bitcast i8**%c to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%ai)
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
br label%aj
aj:
%ak=phi i8*[%af,%aa],[%at,%aC]
%al=phi i8*[%ag,%aa],[%aG,%aC]
%am=phi i32[0,%aa],[%aD,%aC]
store i8*%ak,i8**%b,align 8
store i8*%al,i8**%c,align 8
%an=load atomic i32,i32*@sml_check_flag unordered,align 4
%ao=icmp eq i32%an,0
br i1%ao,label%as,label%ap
ap:
call void@sml_check(i32 inreg%an)
%aq=load i8*,i8**%c,align 8
%ar=load i8*,i8**%b,align 8
br label%as
as:
%at=phi i8*[%ar,%ap],[%ak,%aj]
%au=phi i8*[%aq,%ap],[%al,%aj]
%av=icmp eq i8*%au,null
br i1%av,label%aw,label%ax
aw:
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ah)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ai)
br label%aR
ax:
%ay=bitcast i8*%au to i8**
%az=load i8*,i8**%ay,align 8
%aA=call i32@sml_obj_equal(i8*inreg%at,i8*inreg%az)#0
%aB=icmp eq i32%aA,0
br i1%aB,label%aC,label%aH
aC:
%aD=add nuw nsw i32%am,1
%aE=getelementptr inbounds i8,i8*%au,i64 8
%aF=bitcast i8*%aE to i8**
%aG=load i8*,i8**%aF,align 8
br label%aj
aH:
%aI=call i8*@sml_alloc(i32 inreg 12)#0
%aJ=bitcast i8*%aI to i32*
%aK=getelementptr inbounds i8,i8*%aI,i64 -4
%aL=bitcast i8*%aK to i32*
store i32 1342177288,i32*%aL,align 4
%aM=getelementptr inbounds i8,i8*%aI,i64 4
%aN=bitcast i8*%aM to i32*
store i32 0,i32*%aN,align 1
store i32%am,i32*%aJ,align 4
%aO=getelementptr inbounds i8,i8*%aI,i64 8
%aP=bitcast i8*%aO to i32*
store i32 0,i32*%aP,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ah)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ai)
%aQ=icmp eq i8*%aI,null
br i1%aQ,label%aR,label%br
aR:
%aS=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%aS,i8**%f,align 8
%aT=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aU=getelementptr inbounds i8,i8*%aT,i64 8
%aV=bitcast i8*%aU to i8**
%aW=load i8*,i8**%aV,align 8
%aX=call fastcc i8*@_SMLFN6Symbol18longsymbolToStringE(i8*inreg%aW)
store i8*%aX,i8**%d,align 8
%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=bitcast i8*%aY to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[12x i8]}>,<{[4x i8],i32,[12x i8]}>*@g,i64 0,i32 2,i64 0),i8**%a1,align 8
%a2=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%a3=getelementptr inbounds i8,i8*%aY,i64 8
%a4=bitcast i8*%a3 to i8**
store i8*%a2,i8**%a4,align 8
%a5=getelementptr inbounds i8,i8*%aY,i64 16
%a6=bitcast i8*%a5 to i32*
store i32 3,i32*%a6,align 4
%a7=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%aY)
store i8*%a7,i8**%d,align 8
%a8=call i8*@sml_alloc(i32 inreg 28)#0
%a9=getelementptr inbounds i8,i8*%a8,i64 -4
%ba=bitcast i8*%a9 to i32*
store i32 1342177304,i32*%ba,align 4
store i8*%a8,i8**%e,align 8
%bb=load i8*,i8**%f,align 8
store i8*null,i8**%f,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,[88x i8]}>,<{[4x i8],i32,[88x i8]}>*@f,i64 0,i32 2,i64 0),i8**%be,align 8
%bf=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bg=getelementptr inbounds i8,i8*%a8,i64 16
%bh=bitcast i8*%bg to i8**
store i8*%bf,i8**%bh,align 8
%bi=getelementptr inbounds i8,i8*%a8,i64 24
%bj=bitcast i8*%bi to i32*
store i32 7,i32*%bj,align 4
%bk=call i8*@sml_alloc(i32 inreg 60)#0
%bl=getelementptr inbounds i8,i8*%bk,i64 -4
%bm=bitcast i8*%bl to i32*
store i32 1342177336,i32*%bm,align 4
%bn=getelementptr inbounds i8,i8*%bk,i64 56
%bo=bitcast i8*%bn to i32*
store i32 1,i32*%bo,align 4
%bp=load i8*,i8**%e,align 8
%bq=bitcast i8*%bk to i8**
store i8*%bp,i8**%bq,align 8
call void@sml_raise(i8*inreg%bk)#1
unreachable
br:
ret i32%am
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation16composeTaggedConE_259(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
%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%h,label%j
h:
%i=bitcast i8*%a to i8**
br label%m
j:
call void@sml_check(i32 inreg%f)
%k=bitcast i8**%b to i8***
%l=load i8**,i8***%k,align 8
br label%m
m:
%n=phi i8**[%l,%j],[%i,%h]
%o=load i8*,i8**%n,align 8
store i8*%o,i8**%c,align 8
%p=getelementptr inbounds i8*,i8**%n,i64 3
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%d,align 8
%r=getelementptr inbounds i8*,i8**%n,i64 1
%s=load i8*,i8**%r,align 8
%t=getelementptr inbounds i8,i8*%s,i64 8
%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**%c,align 8
store i8*null,i8**%c,align 8
%A=bitcast i8*%w to i8**
store i8*%z,i8**%A,align 8
%B=load i8*,i8**%e,align 8
store i8*null,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@_SMLLN19DatatypeCompilation12lookupConTagE_254(i8*inreg%w)
%H=call i8*@sml_alloc(i32 inreg 12)#0
%I=bitcast i8*%H to i32*
%J=getelementptr inbounds i8,i8*%H,i64 -4
%K=bitcast i8*%J to i32*
store i32 1342177288,i32*%K,align 4
store i8*%H,i8**%c,align 8
store i32 5,i32*%I,align 4
%L=getelementptr inbounds i8,i8*%H,i64 4
%M=bitcast i8*%L to i32*
store i32%G,i32*%M,align 4
%N=getelementptr inbounds i8,i8*%H,i64 8
%O=bitcast i8*%N to i32*
store i32 0,i32*%O,align 4
%P=load i8*,i8**%b,align 8
%Q=getelementptr inbounds i8,i8*%P,i64 16
%R=bitcast i8*%Q to i8**
%S=load i8*,i8**%R,align 8
%T=icmp eq i8*%S,null
br i1%T,label%U,label%aA
U:
store i8*null,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
%Y=load i8*,i8**%c,align 8
store i8*null,i8**%c,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*null,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 fastcc i8*@_SMLFN15EmitTypedLambda5TupleE(i8*inreg%V)
store i8*%ae,i8**%b,align 8
%af=call i8*@sml_alloc(i32 inreg 20)#0
%ag=getelementptr inbounds i8,i8*%af,i64 -4
%ah=bitcast i8*%ag to i32*
store i32 1342177296,i32*%ah,align 4
store i8*%af,i8**%c,align 8
%ai=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aj=bitcast i8*%af to i8**
store i8*%ai,i8**%aj,align 8
%ak=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%al=getelementptr inbounds i8,i8*%af,i64 8
%am=bitcast i8*%al to i8**
store i8*%ak,i8**%am,align 8
%an=getelementptr inbounds i8,i8*%af,i64 16
%ao=bitcast i8*%an to i32*
store i32 3,i32*%ao,align 4
%ap=call i8*@sml_alloc(i32 inreg 20)#0
%aq=bitcast i8*%ap to i32*
%ar=getelementptr inbounds i8,i8*%ap,i64 -4
%as=bitcast i8*%ar to i32*
store i32 1342177296,i32*%as,align 4
%at=getelementptr inbounds i8,i8*%ap,i64 4
%au=bitcast i8*%at to i32*
store i32 0,i32*%au,align 1
store i32 3,i32*%aq,align 4
%av=load i8*,i8**%c,align 8
%aw=getelementptr inbounds i8,i8*%ap,i64 8
%ax=bitcast i8*%aw to i8**
store i8*%av,i8**%ax,align 8
%ay=getelementptr inbounds i8,i8*%ap,i64 16
%az=bitcast i8*%ay to i32*
store i32 2,i32*%az,align 4
ret i8*%ap
aA:
%aB=bitcast i8*%S to i8**
%aC=load i8*,i8**%aB,align 8
store i8*%aC,i8**%b,align 8
%aD=call i8*@sml_alloc(i32 inreg 20)#0
%aE=getelementptr inbounds i8,i8*%aD,i64 -4
%aF=bitcast i8*%aE to i32*
store i32 1342177296,i32*%aF,align 4
store i8*%aD,i8**%e,align 8
%aG=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aH=bitcast i8*%aD to i8**
store i8*%aG,i8**%aH,align 8
%aI=getelementptr inbounds i8,i8*%aD,i64 8
%aJ=bitcast i8*%aI to i8**
store i8*null,i8**%aJ,align 8
%aK=getelementptr inbounds i8,i8*%aD,i64 16
%aL=bitcast i8*%aK to i32*
store i32 3,i32*%aL,align 4
%aM=call i8*@sml_alloc(i32 inreg 20)#0
%aN=getelementptr inbounds i8,i8*%aM,i64 -4
%aO=bitcast i8*%aN to i32*
store i32 1342177296,i32*%aO,align 4
%aP=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aQ=bitcast i8*%aM to i8**
store i8*%aP,i8**%aQ,align 8
%aR=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aS=getelementptr inbounds i8,i8*%aM,i64 8
%aT=bitcast i8*%aS to i8**
store i8*%aR,i8**%aT,align 8
%aU=getelementptr inbounds i8,i8*%aM,i64 16
%aV=bitcast i8*%aU to i32*
store i32 3,i32*%aV,align 4
%aW=call fastcc i8*@_SMLFN15EmitTypedLambda5TupleE(i8*inreg%aM)
store i8*%aW,i8**%b,align 8
%aX=call i8*@sml_alloc(i32 inreg 20)#0
%aY=getelementptr inbounds i8,i8*%aX,i64 -4
%aZ=bitcast i8*%aY to i32*
store i32 1342177296,i32*%aZ,align 4
store i8*%aX,i8**%c,align 8
%a0=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%a1=bitcast i8*%aX to i8**
store i8*%a0,i8**%a1,align 8
%a2=load i8*,i8**%d,align 8
store i8*null,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=call i8*@sml_alloc(i32 inreg 20)#0
%a8=bitcast i8*%a7 to i32*
%a9=getelementptr inbounds i8,i8*%a7,i64 -4
%ba=bitcast i8*%a9 to i32*
store i32 1342177296,i32*%ba,align 4
%bb=getelementptr inbounds i8,i8*%a7,i64 4
%bc=bitcast i8*%bb to i32*
store i32 0,i32*%bc,align 1
store i32 3,i32*%a8,align 4
%bd=load i8*,i8**%c,align 8
%be=getelementptr inbounds i8,i8*%a7,i64 8
%bf=bitcast i8*%be to i8**
store i8*%bd,i8**%bf,align 8
%bg=getelementptr inbounds i8,i8*%a7,i64 16
%bh=bitcast i8*%bg to i32*
store i32 2,i32*%bh,align 4
ret i8*%a7
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation19extractTaggedConArgE_261(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%i,label%k
i:
%j=bitcast i8*%a to i8**
br label%n
k:
call void@sml_check(i32 inreg%g)
%l=bitcast i8**%d to i8***
%m=load i8**,i8***%l,align 8
br label%n
n:
%o=phi i8**[%m,%k],[%j,%i]
%p=load i8*,i8**%o,align 8
%q=getelementptr inbounds i8,i8*%p,i64 8
%r=bitcast i8*%q to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%d,align 8
%t=load i8*,i8**@_SMLZN12BuiltinTypes8contagTyE,align 8
store i8*%t,i8**%e,align 8
%u=call i8*@sml_alloc(i32 inreg 20)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177296,i32*%w,align 4
store i8*%u,i8**%f,align 8
%x=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%u,i64 8
%A=bitcast i8*%z to i8**
store i8*null,i8**%A,align 8
%B=getelementptr inbounds i8,i8*%u,i64 16
%C=bitcast i8*%B to i32*
store i32 3,i32*%C,align 4
%D=call i8*@sml_alloc(i32 inreg 20)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177296,i32*%F,align 4
%G=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%H=bitcast i8*%D to i8**
store i8*%G,i8**%H,align 8
%I=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%J=getelementptr inbounds i8,i8*%D,i64 8
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%D,i64 16
%M=bitcast i8*%L to i32*
store i32 3,i32*%M,align 4
%N=call fastcc i8*@_SMLFN15EmitTypedLambda7tupleTyE(i8*inreg%D)
store i8*%N,i8**%c,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**%e,align 8
%R=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%S=bitcast i8*%O to i8**
store i8*%R,i8**%S,align 8
%T=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%U=getelementptr inbounds i8,i8*%O,i64 8
%V=bitcast i8*%U to i8**
store i8*%T,i8**%V,align 8
%W=getelementptr inbounds i8,i8*%O,i64 16
%X=bitcast i8*%W to i32*
store i32 3,i32*%X,align 4
%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**%c,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 3,i32*%ad,align 4
%ae=load i8*,i8**%e,align 8
store i8*null,i8**%e,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 i8*@sml_alloc(i32 inreg 20)#0
%ak=bitcast i8*%aj to i32*
%al=getelementptr inbounds i8,i8*%aj,i64 -4
%am=bitcast i8*%al to i32*
store i32 1342177296,i32*%am,align 4
%an=getelementptr inbounds i8,i8*%aj,i64 4
%ao=bitcast i8*%an to i32*
store i32 0,i32*%ao,align 1
store i32 2,i32*%ak,align 4
%ap=load i8*,i8**%c,align 8
%aq=getelementptr inbounds i8,i8*%aj,i64 8
%ar=bitcast i8*%aq to i8**
store i8*%ap,i8**%ar,align 8
%as=getelementptr inbounds i8,i8*%aj,i64 16
%at=bitcast i8*%as to i32*
store i32 2,i32*%at,align 4
%au=tail call fastcc i8*@_SMLFN15EmitTypedLambda7SelectNE(i8*inreg%aj)
ret i8*%au
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10makeBranchE_285(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
n:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,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**%d,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
%q=icmp eq i8*%p,null
br i1%q,label%r,label%T
r:
%s=getelementptr inbounds i8,i8*%m,i64 8
%t=bitcast i8*%s to i8**
%u=load i8*,i8**%t,align 8
store i8*%u,i8**%c,align 8
%v=getelementptr inbounds i8,i8*%m,i64 16
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
store i8*%x,i8**%d,align 8
%y=call i8*@sml_alloc(i32 inreg 20)#0
%z=getelementptr inbounds i8,i8*%y,i64 -4
%A=bitcast i8*%z to i32*
store i32 1342177296,i32*%A,align 4
store i8*%y,i8**%e,align 8
%B=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%C=bitcast i8*%y to i8**
store i8*%B,i8**%C,align 8
%D=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%E=getelementptr inbounds i8,i8*%y,i64 8
%F=bitcast i8*%E to i8**
store i8*%D,i8**%F,align 8
%G=getelementptr inbounds i8,i8*%y,i64 16
%H=bitcast i8*%G to i32*
store i32 3,i32*%H,align 4
%I=call i8*@sml_alloc(i32 inreg 20)#0
%J=bitcast i8*%I to i32*
%K=getelementptr inbounds i8,i8*%I,i64 -4
%L=bitcast i8*%K to i32*
store i32 1342177296,i32*%L,align 4
%M=getelementptr inbounds i8,i8*%I,i64 4
%N=bitcast i8*%M to i32*
store i32 0,i32*%N,align 1
store i32 8,i32*%J,align 4
%O=load i8*,i8**%e,align 8
%P=getelementptr inbounds i8,i8*%I,i64 8
%Q=bitcast i8*%P to i8**
store i8*%O,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%I,i64 16
%S=bitcast i8*%R to i32*
store i32 2,i32*%S,align 4
ret i8*%I
T:
%U=bitcast i8*%p to i8**
%V=load i8*,i8**%U,align 8
store i8*%V,i8**%d,align 8
%W=getelementptr inbounds i8,i8*%m,i64 8
%X=bitcast i8*%W to i8**
%Y=load i8*,i8**%X,align 8
store i8*%Y,i8**%e,align 8
%Z=getelementptr inbounds i8,i8*%m,i64 16
%aa=bitcast i8*%Z to i8**
%ab=load i8*,i8**%aa,align 8
store i8*%ab,i8**%f,align 8
%ac=bitcast i8**%c to i8***
%ad=load i8**,i8***%ac,align 8
%ae=load i8*,i8**%ad,align 8
%af=getelementptr inbounds i8,i8*%ae,i64 16
%ag=bitcast i8*%af to i8*(i8*,i8*)**
%ah=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ag,align 8
store i8*null,i8**%c,align 8
%ai=bitcast i8**%ad to i8***
%aj=load i8**,i8***%ai,align 8
%ak=load i8*,i8**%aj,align 8
%al=getelementptr inbounds i8,i8*%V,i64 16
%am=bitcast i8*%al to i8**
%an=load i8*,i8**%am,align 8
%ao=call fastcc i8*%ah(i8*inreg%ak,i8*inreg%an)
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**%g,align 8
%as=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%at=bitcast i8*%ap to i8**
store i8*%as,i8**%at,align 8
%au=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%av=getelementptr inbounds i8,i8*%ap,i64 8
%aw=bitcast i8*%av to i8**
store i8*%au,i8**%aw,align 8
%ax=getelementptr inbounds i8,i8*%ap,i64 16
%ay=bitcast i8*%ax to i32*
store i32 3,i32*%ay,align 4
%az=call i8*@sml_alloc(i32 inreg 20)#0
%aA=getelementptr inbounds i8,i8*%az,i64 -4
%aB=bitcast i8*%aA to i32*
store i32 1342177296,i32*%aB,align 4
store i8*%az,i8**%c,align 8
%aC=bitcast i8*%az to i64*
store i64 0,i64*%aC,align 4
%aD=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%aE=getelementptr inbounds i8,i8*%az,i64 8
%aF=bitcast i8*%aE to i8**
store i8*%aD,i8**%aF,align 8
%aG=getelementptr inbounds i8,i8*%az,i64 16
%aH=bitcast i8*%aG to i32*
store i32 2,i32*%aH,align 4
%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
%aL=load i8*,i8**%c,align 8
%aM=bitcast i8*%aI to i8**
store i8*%aL,i8**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aI,i64 8
%aO=bitcast i8*%aN to i8**
store i8*null,i8**%aO,align 8
%aP=getelementptr inbounds i8,i8*%aI,i64 16
%aQ=bitcast i8*%aP to i32*
store i32 3,i32*%aQ,align 4
store i8*null,i8**%d,align 8
%aR=call i8*@sml_alloc(i32 inreg 20)#0
%aS=getelementptr inbounds i8,i8*%aR,i64 -4
%aT=bitcast i8*%aS to i32*
store i32 1342177296,i32*%aT,align 4
store i8*%aR,i8**%g,align 8
%aU=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aV=bitcast i8*%aR to i8**
store i8*%aU,i8**%aV,align 8
%aW=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aX=getelementptr inbounds i8,i8*%aR,i64 8
%aY=bitcast i8*%aX to i8**
store i8*%aW,i8**%aY,align 8
%aZ=getelementptr inbounds i8,i8*%aR,i64 16
%a0=bitcast i8*%aZ to i32*
store i32 3,i32*%a0,align 4
%a1=call i8*@sml_alloc(i32 inreg 20)#0
%a2=getelementptr inbounds i8,i8*%a1,i64 -4
%a3=bitcast i8*%a2 to i32*
store i32 1342177296,i32*%a3,align 4
store i8*%a1,i8**%c,align 8
%a4=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%a5=bitcast i8*%a1 to i8**
store i8*%a4,i8**%a5,align 8
%a6=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%a7=getelementptr inbounds i8,i8*%a1,i64 8
%a8=bitcast i8*%a7 to i8**
store i8*%a6,i8**%a8,align 8
%a9=getelementptr inbounds i8,i8*%a1,i64 16
%ba=bitcast i8*%a9 to i32*
store i32 3,i32*%ba,align 4
%bb=call i8*@sml_alloc(i32 inreg 20)#0
%bc=getelementptr inbounds i8,i8*%bb,i64 -4
%bd=bitcast i8*%bc to i32*
store i32 1342177296,i32*%bd,align 4
store i8*%bb,i8**%d,align 8
%be=getelementptr inbounds i8,i8*%bb,i64 4
%bf=bitcast i8*%be to i32*
store i32 0,i32*%bf,align 1
%bg=bitcast i8*%bb to i32*
store i32 8,i32*%bg,align 4
%bh=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bi=getelementptr inbounds i8,i8*%bb,i64 8
%bj=bitcast i8*%bi to i8**
store i8*%bh,i8**%bj,align 8
%bk=getelementptr inbounds i8,i8*%bb,i64 16
%bl=bitcast i8*%bk to i32*
store i32 2,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
store i8*%bm,i8**%c,align 8
%bp=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%bq=bitcast i8*%bm to i8**
store i8*%bp,i8**%bq,align 8
%br=load i8*,i8**%d,align 8
store i8*null,i8**%d,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=call i8*@sml_alloc(i32 inreg 20)#0
%bx=bitcast i8*%bw to i32*
%by=getelementptr inbounds i8,i8*%bw,i64 -4
%bz=bitcast i8*%by to i32*
store i32 1342177296,i32*%bz,align 4
%bA=getelementptr inbounds i8,i8*%bw,i64 4
%bB=bitcast i8*%bA to i32*
store i32 0,i32*%bB,align 1
store i32 29,i32*%bx,align 4
%bC=load i8*,i8**%c,align 8
%bD=getelementptr inbounds i8,i8*%bw,i64 8
%bE=bitcast i8*%bD to i8**
store i8*%bC,i8**%bE,align 8
%bF=getelementptr inbounds i8,i8*%bw,i64 16
%bG=bitcast i8*%bF to i32*
store i32 2,i32*%bG,align 4
ret i8*%bw
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10makeBranchE_286(i8*inreg%a)unnamed_addr#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=call i8*@sml_alloc(i32 inreg 12)#0
%e=getelementptr inbounds i8,i8*%d,i64 -4
%f=bitcast i8*%e to i32*
store i32 1342177288,i32*%f,align 4
store i8*%d,i8**%c,align 8
%g=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%h=bitcast i8*%d to i8**
store i8*%g,i8**%h,align 8
%i=getelementptr inbounds i8,i8*%d,i64 8
%j=bitcast i8*%i to i32*
store i32 1,i32*%j,align 4
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
%n=load i8*,i8**%c,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10makeBranchE_285 to void(...)*),void(...)**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10makeBranchE_285 to void(...)*),void(...)**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 -2147483647,i32*%u,align 4
ret i8*%k
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation9switchConE_288(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
r:
%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
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
call void@llvm.gcroot(i8**%h,i8*null)#0
call void@llvm.gcroot(i8**%i,i8*null)#0
call void@llvm.gcroot(i8**%j,i8*null)#0
store i8*%a,i8**%i,align 8
store i8*%b,i8**%e,align 8
%k=load atomic i32,i32*@sml_check_flag unordered,align 4
%l=icmp eq i32%k,0
br i1%l,label%p,label%m
m:
call void@sml_check(i32 inreg%k)
%n=load i8*,i8**%e,align 8
%o=load i8*,i8**%i,align 8
br label%p
p:
%q=phi i8*[%o,%m],[%a,%r]
%s=phi i8*[%n,%m],[%b,%r]
%t=bitcast i8*%s to i8**
%u=load i8*,i8**%t,align 8
store i8*%u,i8**%e,align 8
%v=getelementptr inbounds i8,i8*%u,i64 8
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
store i8*%x,i8**%f,align 8
%y=getelementptr inbounds i8,i8*%s,i64 8
%z=bitcast i8*%y to i8**
%A=load i8*,i8**%z,align 8
store i8*%A,i8**%g,align 8
%B=getelementptr inbounds i8,i8*%s,i64 16
%C=bitcast i8*%B to i8**
%D=load i8*,i8**%C,align 8
store i8*%D,i8**%h,align 8
%E=getelementptr inbounds i8,i8*%q,i64 16
%F=bitcast i8*%E to i8**
%G=load i8*,i8**%F,align 8
store i8*%G,i8**%j,align 8
%H=call i8*@sml_alloc(i32 inreg 20)#0
%I=getelementptr inbounds i8,i8*%H,i64 -4
%J=bitcast i8*%I to i32*
store i32 1342177296,i32*%J,align 4
%K=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%L=bitcast i8*%H to i8**
store i8*%K,i8**%L,align 8
%M=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%N=getelementptr inbounds i8,i8*%H,i64 8
%O=bitcast i8*%N to i8**
store i8*%M,i8**%O,align 8
%P=getelementptr inbounds i8,i8*%H,i64 16
%Q=bitcast i8*%P to i32*
store i32 3,i32*%Q,align 4
%R=call fastcc i32@_SMLLN19DatatypeCompilation12lookupConTagE_254(i8*inreg%H)
%S=call i8*@sml_alloc(i32 inreg 12)#0
%T=bitcast i8*%S to i32*
%U=getelementptr inbounds i8,i8*%S,i64 -4
%V=bitcast i8*%U to i32*
store i32 1342177288,i32*%V,align 4
store i8*%S,i8**%j,align 8
store i32 1,i32*%T,align 4
%W=getelementptr inbounds i8,i8*%S,i64 4
%X=bitcast i8*%W to i32*
store i32%R,i32*%X,align 4
%Y=getelementptr inbounds i8,i8*%S,i64 8
%Z=bitcast i8*%Y to i32*
store i32 0,i32*%Z,align 4
%aa=bitcast i8**%i to i8***
%ab=load i8**,i8***%aa,align 8
%ac=load i8*,i8**%ab,align 8
store i8*%ac,i8**%f,align 8
%ad=call i8*@sml_alloc(i32 inreg 20)#0
%ae=getelementptr inbounds i8,i8*%ad,i64 -4
%af=bitcast i8*%ae to i32*
store i32 1342177296,i32*%af,align 4
%ag=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ah=bitcast i8*%ad to i8**
store i8*%ag,i8**%ah,align 8
%ai=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aj=getelementptr inbounds i8,i8*%ad,i64 8
%ak=bitcast i8*%aj to i8**
store i8*%ai,i8**%ak,align 8
%al=getelementptr inbounds i8,i8*%ad,i64 16
%am=bitcast i8*%al to i32*
store i32 3,i32*%am,align 4
%an=bitcast i8**%c to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%an)
%ao=bitcast i8**%d to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%ao)
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%ad,i8**%c,align 8
%ap=call i8*@sml_alloc(i32 inreg 12)#0
%aq=getelementptr inbounds i8,i8*%ap,i64 -4
%ar=bitcast i8*%aq to i32*
store i32 1342177288,i32*%ar,align 4
store i8*%ap,i8**%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 i32*
store i32 1,i32*%av,align 4
%aw=call i8*@sml_alloc(i32 inreg 28)#0
%ax=getelementptr inbounds i8,i8*%aw,i64 -4
%ay=bitcast i8*%ax to i32*
store i32 1342177304,i32*%ay,align 4
%az=load i8*,i8**%d,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*)*@_SMLLN19DatatypeCompilation19extractTaggedConArgE_261 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*)*@_SMLLN19DatatypeCompilation19extractTaggedConArgE_261 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
call void@llvm.lifetime.end.p0i8(i64 8,i8*%an)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%ao)
%aH=call fastcc i8*@_SMLLN19DatatypeCompilation10makeBranchE_286(i8*inreg%aw)
%aI=getelementptr inbounds i8,i8*%aH,i64 16
%aJ=bitcast i8*%aI to i8*(i8*,i8*)**
%aK=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aJ,align 8
%aL=bitcast i8*%aH to i8**
%aM=load i8*,i8**%aL,align 8
store i8*%aM,i8**%f,align 8
%aN=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%aO=getelementptr inbounds i8,i8*%aN,i64 8
%aP=bitcast i8*%aO to i8**
%aQ=load i8*,i8**%aP,align 8
store i8*%aQ,i8**%e,align 8
%aR=call i8*@sml_alloc(i32 inreg 28)#0
%aS=getelementptr inbounds i8,i8*%aR,i64 -4
%aT=bitcast i8*%aS to i32*
store i32 1342177304,i32*%aT,align 4
%aU=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%aV=bitcast i8*%aR to i8**
store i8*%aU,i8**%aV,align 8
%aW=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%aX=getelementptr inbounds i8,i8*%aR,i64 8
%aY=bitcast i8*%aX to i8**
store i8*%aW,i8**%aY,align 8
%aZ=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%a0=getelementptr inbounds i8,i8*%aR,i64 16
%a1=bitcast i8*%a0 to i8**
store i8*%aZ,i8**%a1,align 8
%a2=getelementptr inbounds i8,i8*%aR,i64 24
%a3=bitcast i8*%a2 to i32*
store i32 7,i32*%a3,align 4
%a4=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%a5=call fastcc i8*%aK(i8*inreg%a4,i8*inreg%aR)
store i8*%a5,i8**%e,align 8
%a6=call i8*@sml_alloc(i32 inreg 20)#0
%a7=getelementptr inbounds i8,i8*%a6,i64 -4
%a8=bitcast i8*%a7 to i32*
store i32 1342177296,i32*%a8,align 4
%a9=load i8*,i8**%j,align 8
%ba=bitcast i8*%a6 to i8**
store i8*%a9,i8**%ba,align 8
%bb=load i8*,i8**%e,align 8
%bc=getelementptr inbounds i8,i8*%a6,i64 8
%bd=bitcast i8*%bc to i8**
store i8*%bb,i8**%bd,align 8
%be=getelementptr inbounds i8,i8*%a6,i64 16
%bf=bitcast i8*%be to i32*
store i32 3,i32*%bf,align 4
ret i8*%a6
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation9switchConE_291(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%j,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%d,align 8
br label%j
j:
%k=phi i8*[%i,%h],[%a,%l]
%m=getelementptr inbounds i8,i8*%k,i64 8
%n=bitcast i8*%m to i32**
%o=load i32*,i32**%n,align 8
%p=load i32,i32*%o,align 4
%q=icmp eq i32%p,0
br i1%q,label%am,label%r
r:
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
%v=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%s,i64 8
%y=bitcast i8*%x to i8**
store i8*null,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%s,i64 16
%A=bitcast i8*%z to i32*
store i32 3,i32*%A,align 4
%B=call fastcc i8*@_SMLFN15EmitTypedLambda7tupleTyE(i8*inreg%s)
store i8*%B,i8**%c,align 8
%C=bitcast i8**%d to i8***
%D=load i8**,i8***%C,align 8
%E=load i8*,i8**%D,align 8
store i8*%E,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=load i8*,i8**%c,align 8
store i8*null,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
%P=call i8*@sml_alloc(i32 inreg 20)#0
%Q=getelementptr inbounds i8,i8*%P,i64 -4
%R=bitcast i8*%Q to i32*
store i32 1342177296,i32*%R,align 4
store i8*%P,i8**%c,align 8
%S=getelementptr inbounds i8,i8*%P,i64 4
%T=bitcast i8*%S to i32*
store i32 0,i32*%T,align 1
%U=bitcast i8*%P to i32*
store i32 3,i32*%U,align 4
%V=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%W=getelementptr inbounds i8,i8*%P,i64 8
%X=bitcast i8*%W to i8**
store i8*%V,i8**%X,align 8
%Y=getelementptr inbounds i8,i8*%P,i64 16
%Z=bitcast i8*%Y to i32*
store i32 2,i32*%Z,align 4
%aa=call i8*@sml_alloc(i32 inreg 20)#0
%ab=bitcast i8*%aa to i32*
%ac=getelementptr inbounds i8,i8*%aa,i64 -4
%ad=bitcast i8*%ac to i32*
store i32 1342177296,i32*%ad,align 4
%ae=getelementptr inbounds i8,i8*%aa,i64 4
%af=bitcast i8*%ae to i32*
store i32 0,i32*%af,align 1
store i32 1,i32*%ab,align 4
%ag=load i8*,i8**%c,align 8
%ah=getelementptr inbounds i8,i8*%aa,i64 8
%ai=bitcast i8*%ah to i8**
store i8*%ag,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%aa,i64 16
%ak=bitcast i8*%aj to i32*
store i32 2,i32*%ak,align 4
%al=tail call fastcc i8*@_SMLFN15EmitTypedLambda7SelectNE(i8*inreg%aa)
ret i8*%al
am:
%an=bitcast i8*%k to i8**
%ao=load i8*,i8**%an,align 8
store i8*%ao,i8**%d,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**%e,align 8
%as=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%at=bitcast i8*%ap to i8**
store i8*%as,i8**%at,align 8
%au=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%av=getelementptr inbounds i8,i8*%ap,i64 8
%aw=bitcast i8*%av to i8**
store i8*%au,i8**%aw,align 8
%ax=getelementptr inbounds i8,i8*%ap,i64 16
%ay=bitcast i8*%ax to i32*
store i32 3,i32*%ay,align 4
%az=call i8*@sml_alloc(i32 inreg 20)#0
%aA=bitcast i8*%az to i32*
%aB=getelementptr inbounds i8,i8*%az,i64 -4
%aC=bitcast i8*%aB to i32*
store i32 1342177296,i32*%aC,align 4
%aD=getelementptr inbounds i8,i8*%az,i64 4
%aE=bitcast i8*%aD to i32*
store i32 0,i32*%aE,align 1
store i32 3,i32*%aA,align 4
%aF=load i8*,i8**%e,align 8
%aG=getelementptr inbounds i8,i8*%az,i64 8
%aH=bitcast i8*%aG to i8**
store i8*%aF,i8**%aH,align 8
%aI=getelementptr inbounds i8,i8*%az,i64 16
%aJ=bitcast i8*%aI to i32*
store i32 2,i32*%aJ,align 4
ret i8*%az
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation9switchConE_294(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%f=load atomic i32,i32*@sml_check_flag unordered,align 4
%g=icmp eq i32%f,0
br i1%g,label%j,label%h
h:
call void@sml_check(i32 inreg%f)
%i=load i8*,i8**%d,align 8
br label%j
j:
%k=phi i8*[%i,%h],[%a,%l]
%m=getelementptr inbounds i8,i8*%k,i64 8
%n=bitcast i8*%m to i32**
%o=load i32*,i32**%n,align 8
%p=load i32,i32*%o,align 4
%q=icmp eq i32%p,0
br i1%q,label%am,label%r
r:
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
%v=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%s,i64 8
%y=bitcast i8*%x to i8**
store i8*null,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%s,i64 16
%A=bitcast i8*%z to i32*
store i32 3,i32*%A,align 4
%B=call fastcc i8*@_SMLFN15EmitTypedLambda7tupleTyE(i8*inreg%s)
store i8*%B,i8**%c,align 8
%C=bitcast i8**%d to i8***
%D=load i8**,i8***%C,align 8
%E=load i8*,i8**%D,align 8
store i8*%E,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=load i8*,i8**%c,align 8
store i8*null,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
%P=call i8*@sml_alloc(i32 inreg 20)#0
%Q=getelementptr inbounds i8,i8*%P,i64 -4
%R=bitcast i8*%Q to i32*
store i32 1342177296,i32*%R,align 4
store i8*%P,i8**%c,align 8
%S=getelementptr inbounds i8,i8*%P,i64 4
%T=bitcast i8*%S to i32*
store i32 0,i32*%T,align 1
%U=bitcast i8*%P to i32*
store i32 3,i32*%U,align 4
%V=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%W=getelementptr inbounds i8,i8*%P,i64 8
%X=bitcast i8*%W to i8**
store i8*%V,i8**%X,align 8
%Y=getelementptr inbounds i8,i8*%P,i64 16
%Z=bitcast i8*%Y to i32*
store i32 2,i32*%Z,align 4
%aa=call i8*@sml_alloc(i32 inreg 20)#0
%ab=bitcast i8*%aa to i32*
%ac=getelementptr inbounds i8,i8*%aa,i64 -4
%ad=bitcast i8*%ac to i32*
store i32 1342177296,i32*%ad,align 4
%ae=getelementptr inbounds i8,i8*%aa,i64 4
%af=bitcast i8*%ae to i32*
store i32 0,i32*%af,align 1
store i32 1,i32*%ab,align 4
%ag=load i8*,i8**%c,align 8
%ah=getelementptr inbounds i8,i8*%aa,i64 8
%ai=bitcast i8*%ah to i8**
store i8*%ag,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%aa,i64 16
%ak=bitcast i8*%aj to i32*
store i32 2,i32*%ak,align 4
%al=tail call fastcc i8*@_SMLFN15EmitTypedLambda7SelectNE(i8*inreg%aa)
ret i8*%al
am:
%an=bitcast i8*%k to i8**
%ao=load i8*,i8**%an,align 8
store i8*%ao,i8**%d,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**%e,align 8
%as=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%at=bitcast i8*%ap to i8**
store i8*%as,i8**%at,align 8
%au=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%av=getelementptr inbounds i8,i8*%ap,i64 8
%aw=bitcast i8*%av to i8**
store i8*%au,i8**%aw,align 8
%ax=getelementptr inbounds i8,i8*%ap,i64 16
%ay=bitcast i8*%ax to i32*
store i32 3,i32*%ay,align 4
%az=call i8*@sml_alloc(i32 inreg 20)#0
%aA=bitcast i8*%az to i32*
%aB=getelementptr inbounds i8,i8*%az,i64 -4
%aC=bitcast i8*%aB to i32*
store i32 1342177296,i32*%aC,align 4
%aD=getelementptr inbounds i8,i8*%az,i64 4
%aE=bitcast i8*%aD to i32*
store i32 0,i32*%aE,align 1
store i32 3,i32*%aA,align 4
%aF=load i8*,i8**%e,align 8
%aG=getelementptr inbounds i8,i8*%az,i64 8
%aH=bitcast i8*%aG to i8**
store i8*%aF,i8**%aH,align 8
%aI=getelementptr inbounds i8,i8*%az,i64 16
%aJ=bitcast i8*%aI to i32*
store i32 2,i32*%aJ,align 4
ret i8*%az
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation11newLocalExnE_304(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]
store i8*null,i8**%b,align 8
store i8*%k,i8**%c,align 8
%m=getelementptr inbounds i8,i8*%k,i64 8
%n=bitcast i8*%m to i32**
%o=load i32*,i32**%n,align 8
%p=load i32,i32*%o,align 4
%q=call fastcc i32@_SMLFN5VarID8generateE(i32 inreg 0)
%r=load i8*,i8**@_SMLZN12BuiltinTypes8exntagTyE,align 8
store i8*%r,i8**%d,align 8
%s=call i8*@sml_alloc(i32 inreg 28)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177304,i32*%u,align 4
store i8*%s,i8**%b,align 8
%v=getelementptr inbounds i8,i8*%s,i64 4
%w=bitcast i8*%v to i32*
store i32 0,i32*%w,align 1
%x=bitcast i8*%s to i32*
store i32%q,i32*%x,align 4
%y=getelementptr inbounds i8,i8*%s,i64 8
%z=bitcast i8*%y to i8**
store i8*null,i8**%z,align 8
%A=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%B=getelementptr inbounds i8,i8*%s,i64 16
%C=bitcast i8*%B to i8**
store i8*%A,i8**%C,align 8
%D=getelementptr inbounds i8,i8*%s,i64 24
%E=bitcast i8*%D to i32*
store i32 6,i32*%E,align 4
%F=call fastcc i8*@_SMLFN5ExnID3Map6insertE(i32 inreg 1,i32 inreg 8)
%G=getelementptr inbounds i8,i8*%F,i64 16
%H=bitcast i8*%G to i8*(i8*,i8*)**
%I=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%H,align 8
%J=bitcast i8*%F to i8**
%K=load i8*,i8**%J,align 8
store i8*%K,i8**%e,align 8
%L=bitcast i8**%c to i8***
%M=load i8**,i8***%L,align 8
%N=load i8*,i8**%M,align 8
%O=getelementptr inbounds i8,i8*%N,i64 8
%P=bitcast i8*%O to i8**
%Q=load i8*,i8**%P,align 8
store i8*%Q,i8**%d,align 8
%R=call i8*@sml_alloc(i32 inreg 28)#0
%S=getelementptr inbounds i8,i8*%R,i64 -4
%T=bitcast i8*%S to i32*
store i32 1342177304,i32*%T,align 4
%U=getelementptr inbounds i8,i8*%R,i64 12
%V=bitcast i8*%U to i32*
store i32 0,i32*%V,align 1
%W=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%X=bitcast i8*%R to i8**
store i8*%W,i8**%X,align 8
%Y=getelementptr inbounds i8,i8*%R,i64 8
%Z=bitcast i8*%Y to i32*
store i32%p,i32*%Z,align 4
%aa=load i8*,i8**%b,align 8
%ab=getelementptr inbounds i8,i8*%R,i64 16
%ac=bitcast i8*%ab to i8**
store i8*%aa,i8**%ac,align 8
%ad=getelementptr inbounds i8,i8*%R,i64 24
%ae=bitcast i8*%ad to i32*
store i32 5,i32*%ae,align 4
%af=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ag=call fastcc i8*%I(i8*inreg%af,i8*inreg%R)
store i8*%ag,i8**%d,align 8
%ah=bitcast i8**%c to i8****
%ai=load i8***,i8****%ah,align 8
store i8*null,i8**%c,align 8
%aj=load i8**,i8***%ai,align 8
%ak=load i8*,i8**%aj,align 8
store i8*%ak,i8**%e,align 8
%al=call i8*@sml_alloc(i32 inreg 20)#0
%am=getelementptr inbounds i8,i8*%al,i64 -4
%an=bitcast i8*%am to i32*
store i32 1342177296,i32*%an,align 4
store i8*%al,i8**%c,align 8
%ao=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ap=bitcast i8*%al to i8**
store i8*%ao,i8**%ap,align 8
%aq=load i8*,i8**%d,align 8
store i8*null,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=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=load i8*,i8**%b,align 8
%aB=getelementptr inbounds i8,i8*%av,i64 8
%aC=bitcast i8*%aB to i8**
store i8*%aA,i8**%aC,align 8
%aD=getelementptr inbounds i8,i8*%av,i64 16
%aE=bitcast i8*%aD to i32*
store i32 3,i32*%aE,align 4
ret i8*%av
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation12addExternExnE_306(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
m:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
store i8*%a,i8**%b,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%b,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%a,%m]
store i8*null,i8**%b,align 8
store i8*%l,i8**%c,align 8
%n=getelementptr inbounds i8,i8*%l,i64 8
%o=bitcast i8*%n to i8***
%p=load i8**,i8***%o,align 8
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%d,align 8
%r=load i8*,i8**@_SMLZN12BuiltinTypes8exntagTyE,align 8
store i8*%r,i8**%e,align 8
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
store i8*%s,i8**%b,align 8
%v=load i8*,i8**%d,align 8
%w=bitcast i8*%s to i8**
store i8*%v,i8**%w,align 8
%x=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%y=getelementptr inbounds i8,i8*%s,i64 8
%z=bitcast i8*%y to i8**
store i8*%x,i8**%z,align 8
%A=getelementptr inbounds i8,i8*%s,i64 16
%B=bitcast i8*%A to i32*
store i32 3,i32*%B,align 4
%C=call fastcc i8*@_SMLFN13LongsymbolEnv6insertE(i32 inreg 1,i32 inreg 8)
%D=getelementptr inbounds i8,i8*%C,i64 16
%E=bitcast i8*%D to i8*(i8*,i8*)**
%F=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%E,align 8
%G=bitcast i8*%C to i8**
%H=load i8*,i8**%G,align 8
store i8*%H,i8**%f,align 8
%I=bitcast i8**%c to i8****
%J=load i8***,i8****%I,align 8
%K=load i8**,i8***%J,align 8
%L=load i8*,i8**%K,align 8
store i8*%L,i8**%e,align 8
%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**%e,align 8
store i8*null,i8**%e,align 8
%Q=bitcast i8*%M to i8**
store i8*%P,i8**%Q,align 8
%R=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%S=getelementptr inbounds i8,i8*%M,i64 8
%T=bitcast i8*%S to i8**
store i8*%R,i8**%T,align 8
%U=load i8*,i8**%b,align 8
%V=getelementptr inbounds i8,i8*%M,i64 16
%W=bitcast i8*%V to i8**
store i8*%U,i8**%W,align 8
%X=getelementptr inbounds i8,i8*%M,i64 24
%Y=bitcast i8*%X to i32*
store i32 7,i32*%Y,align 4
%Z=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aa=call fastcc i8*%F(i8*inreg%Z,i8*inreg%M)
store i8*%aa,i8**%d,align 8
%ab=bitcast i8**%c to i8***
%ac=load i8**,i8***%ab,align 8
store i8*null,i8**%c,align 8
%ad=load i8*,i8**%ac,align 8
%ae=getelementptr inbounds i8,i8*%ad,i64 8
%af=bitcast i8*%ae to i8**
%ag=load i8*,i8**%af,align 8
store i8*%ag,i8**%e,align 8
%ah=call i8*@sml_alloc(i32 inreg 20)#0
%ai=getelementptr inbounds i8,i8*%ah,i64 -4
%aj=bitcast i8*%ai to i32*
store i32 1342177296,i32*%aj,align 4
store i8*%ah,i8**%c,align 8
%ak=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%al=bitcast i8*%ah to i8**
store i8*%ak,i8**%al,align 8
%am=load i8*,i8**%e,align 8
store i8*null,i8**%e,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=call i8*@sml_alloc(i32 inreg 20)#0
%as=getelementptr inbounds i8,i8*%ar,i64 -4
%at=bitcast i8*%as to i32*
store i32 1342177296,i32*%at,align 4
%au=load i8*,i8**%c,align 8
%av=bitcast i8*%ar to i8**
store i8*%au,i8**%av,align 8
%aw=load i8*,i8**%b,align 8
%ax=getelementptr inbounds i8,i8*%ar,i64 8
%ay=bitcast i8*%ax to i8**
store i8*%aw,i8**%ay,align 8
%az=getelementptr inbounds i8,i8*%ar,i64 16
%aA=bitcast i8*%az to i32*
store i32 3,i32*%aA,align 4
ret i8*%ar
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10findExnTagE_309(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
k:
%b=alloca i8*,align 8
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%b,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%i,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%b,align 8
br label%i
i:
%j=phi i8*[%h,%g],[%a,%k]
%l=bitcast i8*%j to i8**
%m=load i8*,i8**%l,align 8
%n=getelementptr inbounds i8,i8*%j,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%p to i32*
%r=load i32,i32*%q,align 4
switch i32%r,label%s[
i32 0,label%aI
i32 1,label%K
]
s:
call void@sml_matchcomp_bug()
%t=load i8*,i8**@_SMLZ5Match,align 8
store i8*%t,i8**%b,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**%c,align 8
%x=load i8*,i8**%b,align 8
store i8*null,i8**%b,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 i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@J,i64 0,i32 2,i64 0),i8**%A,align 8
%B=getelementptr inbounds i8,i8*%u,i64 16
%C=bitcast i8*%B to i32*
store i32 3,i32*%C,align 4
%D=call i8*@sml_alloc(i32 inreg 60)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177336,i32*%F,align 4
%G=getelementptr inbounds i8,i8*%D,i64 56
%H=bitcast i8*%G to i32*
store i32 1,i32*%H,align 4
%I=load i8*,i8**%c,align 8
%J=bitcast i8*%D to i8**
store i8*%I,i8**%J,align 8
call void@sml_raise(i8*inreg%D)#1
unreachable
K:
%L=getelementptr inbounds i8,i8*%p,i64 8
%M=bitcast i8*%L to i32**
%N=load i32*,i32**%M,align 8
%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**%b,align 8
%R=load i32,i32*%N,align 4
%S=call fastcc i8*@_SMLFN5ExnID3Map4findE(i32 inreg 1,i32 inreg 8)
%T=getelementptr inbounds i8,i8*%S,i64 16
%U=bitcast i8*%T to i8*(i8*,i8*)**
%V=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%U,align 8
%W=bitcast i8*%S to i8**
%X=load i8*,i8**%W,align 8
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
%ab=getelementptr inbounds i8,i8*%Y,i64 12
%ac=bitcast i8*%ab to i32*
store i32 0,i32*%ac,align 1
%ad=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ae=bitcast i8*%Y to i8**
store i8*%ad,i8**%ae,align 8
%af=getelementptr inbounds i8,i8*%Y,i64 8
%ag=bitcast i8*%af to i32*
store i32%R,i32*%ag,align 4
%ah=getelementptr inbounds i8,i8*%Y,i64 16
%ai=bitcast i8*%ah to i32*
store i32 1,i32*%ai,align 4
%aj=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ak=call fastcc i8*%V(i8*inreg%aj,i8*inreg%Y)
%al=icmp eq i8*%ak,null
br i1%al,label%am,label%an
am:
ret i8*null
an:
%ao=bitcast i8*%ak to i8**
%ap=load i8*,i8**%ao,align 8
store i8*%ap,i8**%b,align 8
%aq=call i8*@sml_alloc(i32 inreg 20)#0
%ar=getelementptr inbounds i8,i8*%aq,i64 -4
%as=bitcast i8*%ar to i32*
store i32 1342177296,i32*%as,align 4
store i8*%aq,i8**%c,align 8
%at=getelementptr inbounds i8,i8*%aq,i64 4
%au=bitcast i8*%at to i32*
store i32 0,i32*%au,align 1
%av=bitcast i8*%aq to i32*
store i32 30,i32*%av,align 4
%aw=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%ax=getelementptr inbounds i8,i8*%aq,i64 8
%ay=bitcast i8*%ax to i8**
store i8*%aw,i8**%ay,align 8
%az=getelementptr inbounds i8,i8*%aq,i64 16
%aA=bitcast i8*%az to i32*
store i32 2,i32*%aA,align 4
%aB=call i8*@sml_alloc(i32 inreg 12)#0
%aC=getelementptr inbounds i8,i8*%aB,i64 -4
%aD=bitcast i8*%aC to i32*
store i32 1342177288,i32*%aD,align 4
%aE=load i8*,i8**%c,align 8
%aF=bitcast i8*%aB to i8**
store i8*%aE,i8**%aF,align 8
%aG=getelementptr inbounds i8,i8*%aB,i64 8
%aH=bitcast i8*%aG to i32*
store i32 1,i32*%aH,align 4
ret i8*%aB
aI:
%aJ=getelementptr inbounds i8,i8*%p,i64 8
%aK=bitcast i8*%aJ to i8***
%aL=load i8**,i8***%aK,align 8
%aM=bitcast i8*%m to i8**
%aN=load i8*,i8**%aM,align 8
store i8*%aN,i8**%b,align 8
%aO=load i8*,i8**%aL,align 8
store i8*%aO,i8**%c,align 8
%aP=call fastcc i8*@_SMLFN13LongsymbolEnv4findE(i32 inreg 1,i32 inreg 8)
%aQ=getelementptr inbounds i8,i8*%aP,i64 16
%aR=bitcast i8*%aQ to i8*(i8*,i8*)**
%aS=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aR,align 8
%aT=bitcast i8*%aP to i8**
%aU=load i8*,i8**%aT,align 8
store i8*%aU,i8**%d,align 8
%aV=call i8*@sml_alloc(i32 inreg 20)#0
%aW=getelementptr inbounds i8,i8*%aV,i64 -4
%aX=bitcast i8*%aW to i32*
store i32 1342177296,i32*%aX,align 4
%aY=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%aZ=bitcast i8*%aV to i8**
store i8*%aY,i8**%aZ,align 8
%a0=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a1=getelementptr inbounds i8,i8*%aV,i64 8
%a2=bitcast i8*%a1 to i8**
store i8*%a0,i8**%a2,align 8
%a3=getelementptr inbounds i8,i8*%aV,i64 16
%a4=bitcast i8*%a3 to i32*
store i32 3,i32*%a4,align 4
%a5=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%a6=call fastcc i8*%aS(i8*inreg%a5,i8*inreg%aV)
%a7=icmp eq i8*%a6,null
br i1%a7,label%am,label%a8
a8:
%a9=bitcast i8*%a6 to i8**
%ba=load i8*,i8**%a9,align 8
store i8*%ba,i8**%b,align 8
%bb=call i8*@sml_alloc(i32 inreg 20)#0
%bc=getelementptr inbounds i8,i8*%bb,i64 -4
%bd=bitcast i8*%bc to i32*
store i32 1342177296,i32*%bd,align 4
store i8*%bb,i8**%c,align 8
%be=getelementptr inbounds i8,i8*%bb,i64 4
%bf=bitcast i8*%be to i32*
store i32 0,i32*%bf,align 1
%bg=bitcast i8*%bb to i32*
store i32 7,i32*%bg,align 4
%bh=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bi=getelementptr inbounds i8,i8*%bb,i64 8
%bj=bitcast i8*%bi to i8**
store i8*%bh,i8**%bj,align 8
%bk=getelementptr inbounds i8,i8*%bb,i64 16
%bl=bitcast i8*%bk to i32*
store i32 2,i32*%bl,align 4
%bm=call i8*@sml_alloc(i32 inreg 12)#0
%bn=getelementptr inbounds i8,i8*%bm,i64 -4
%bo=bitcast i8*%bn to i32*
store i32 1342177288,i32*%bo,align 4
%bp=load i8*,i8**%c,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 i32*
store i32 1,i32*%bs,align 4
ret i8*%bm
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10composeExnE_316(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**%g,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**%d,align 8
%r=getelementptr inbounds i8,i8*%n,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%c,align 8
%u=getelementptr inbounds i8,i8*%n,i64 16
%v=bitcast i8*%u to i8**
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%e,align 8
%x=bitcast i8*%q to i32*
%y=load i32,i32*%x,align 4
switch i32%y,label%z[
i32 0,label%R
i32 1,label%S
]
z:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
call void@sml_matchcomp_bug()
%A=load i8*,i8**@_SMLZ5Match,align 8
store i8*%A,i8**%c,align 8
%B=call i8*@sml_alloc(i32 inreg 20)#0
%C=getelementptr inbounds i8,i8*%B,i64 -4
%D=bitcast i8*%C to i32*
store i32 1342177296,i32*%D,align 4
store i8*%B,i8**%d,align 8
%E=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%F=bitcast i8*%B to i8**
store i8*%E,i8**%F,align 8
%G=getelementptr inbounds i8,i8*%B,i64 8
%H=bitcast i8*%G to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[86x i8]}>,<{[4x i8],i32,[86x i8]}>*@K,i64 0,i32 2,i64 0),i8**%H,align 8
%I=getelementptr inbounds i8,i8*%B,i64 16
%J=bitcast i8*%I to i32*
store i32 3,i32*%J,align 4
%K=call i8*@sml_alloc(i32 inreg 60)#0
%L=getelementptr inbounds i8,i8*%K,i64 -4
%M=bitcast i8*%L to i32*
store i32 1342177336,i32*%M,align 4
%N=getelementptr inbounds i8,i8*%K,i64 56
%O=bitcast i8*%N to i32*
store i32 1,i32*%O,align 4
%P=load i8*,i8**%d,align 8
%Q=bitcast i8*%K to i8**
store i8*%P,i8**%Q,align 8
call void@sml_raise(i8*inreg%K)#1
unreachable
R:
br label%S
S:
%T=phi i64[8,%R],[16,%m]
%U=getelementptr inbounds i8,i8*%q,i64 8
%V=bitcast i8*%U to i8**
%W=load i8*,i8**%V,align 8
%X=getelementptr inbounds i8,i8*%W,i64%T
%Y=bitcast i8*%X to i8**
%Z=load i8*,i8**%Y,align 8
%aa=call fastcc i8*@_SMLLN19DatatypeCompilation18decomposeDataconTyE_247(i8*inreg%Z)
%ab=bitcast i8*%aa to i8**
%ac=load i8*,i8**%ab,align 8
%ad=load i8*,i8**%c,align 8
%ae=icmp eq i8*%ad,null
br i1%ae,label%af,label%ah
af:
%ag=icmp eq i8*%ac,null
br i1%ag,label%aQ,label%a7
ah:
%ai=bitcast i8*%ad to i8**
%aj=load i8*,i8**%ai,align 8
store i8*%aj,i8**%c,align 8
%ak=icmp eq i8*%ac,null
br i1%ak,label%a7,label%al
al:
%am=bitcast i8*%ac to i8**
%an=load i8*,i8**%am,align 8
store i8*%an,i8**%f,align 8
%ao=call i8*@sml_alloc(i32 inreg 20)#0
%ap=getelementptr inbounds i8,i8*%ao,i64 -4
%aq=bitcast i8*%ap to i32*
store i32 1342177296,i32*%aq,align 4
store i8*%ao,i8**%h,align 8
%ar=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%as=bitcast i8*%ao to i8**
store i8*%ar,i8**%as,align 8
%at=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%au=getelementptr inbounds i8,i8*%ao,i64 8
%av=bitcast i8*%au to i8**
store i8*%at,i8**%av,align 8
%aw=getelementptr inbounds i8,i8*%ao,i64 16
%ax=bitcast i8*%aw to i32*
store i32 3,i32*%ax,align 4
%ay=call i8*@sml_alloc(i32 inreg 20)#0
%az=getelementptr inbounds i8,i8*%ay,i64 -4
%aA=bitcast i8*%az to i32*
store i32 1342177296,i32*%aA,align 4
store i8*%ay,i8**%c,align 8
%aB=getelementptr inbounds i8,i8*%ay,i64 4
%aC=bitcast i8*%aB to i32*
store i32 0,i32*%aC,align 1
%aD=bitcast i8*%ay to i32*
store i32 8,i32*%aD,align 4
%aE=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%aF=getelementptr inbounds i8,i8*%ay,i64 8
%aG=bitcast i8*%aF to i8**
store i8*%aE,i8**%aG,align 8
%aH=getelementptr inbounds i8,i8*%ay,i64 16
%aI=bitcast i8*%aH to i32*
store i32 2,i32*%aI,align 4
%aJ=call i8*@sml_alloc(i32 inreg 12)#0
%aK=getelementptr inbounds i8,i8*%aJ,i64 -4
%aL=bitcast i8*%aK to i32*
store i32 1342177288,i32*%aL,align 4
%aM=load i8*,i8**%c,align 8
%aN=bitcast i8*%aJ to i8**
store i8*%aM,i8**%aN,align 8
%aO=getelementptr inbounds i8,i8*%aJ,i64 8
%aP=bitcast i8*%aO to i32*
store i32 1,i32*%aP,align 4
br label%aQ
aQ:
%aR=phi i8*[%aJ,%al],[null,%af]
store i8*%aR,i8**%c,align 8
%aS=bitcast i8**%g to i8***
%aT=load i8**,i8***%aS,align 8
store i8*null,i8**%g,align 8
%aU=load i8*,i8**%aT,align 8
store i8*%aU,i8**%f,align 8
%aV=call i8*@sml_alloc(i32 inreg 20)#0
%aW=getelementptr inbounds i8,i8*%aV,i64 -4
%aX=bitcast i8*%aW to i32*
store i32 1342177296,i32*%aX,align 4
%aY=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aZ=bitcast i8*%aV to i8**
store i8*%aY,i8**%aZ,align 8
%a0=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%a1=getelementptr inbounds i8,i8*%aV,i64 8
%a2=bitcast i8*%a1 to i8**
store i8*%a0,i8**%a2,align 8
%a3=getelementptr inbounds i8,i8*%aV,i64 16
%a4=bitcast i8*%a3 to i32*
store i32 3,i32*%a4,align 4
%a5=call fastcc i8*@_SMLLN19DatatypeCompilation10findExnTagE_309(i8*inreg%aV)
%a6=icmp eq i8*%a5,null
br i1%a6,label%br,label%bL
a7:
store i8*null,i8**%d,align 8
store i8*null,i8**%e,align 8
store i8*null,i8**%g,align 8
%a8=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%a8,i8**%c,align 8
%a9=call i8*@sml_alloc(i32 inreg 28)#0
%ba=getelementptr inbounds i8,i8*%a9,i64 -4
%bb=bitcast i8*%ba to i32*
store i32 1342177304,i32*%bb,align 4
store i8*%a9,i8**%d,align 8
%bc=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bd=bitcast i8*%a9 to i8**
store i8*%bc,i8**%bd,align 8
%be=getelementptr inbounds i8,i8*%a9,i64 8
%bf=bitcast i8*%be to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@L,i64 0,i32 2,i64 0),i8**%bf,align 8
%bg=getelementptr inbounds i8,i8*%a9,i64 16
%bh=bitcast i8*%bg to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[11x i8]}>,<{[4x i8],i32,[11x i8]}>*@M,i64 0,i32 2,i64 0),i8**%bh,align 8
%bi=getelementptr inbounds i8,i8*%a9,i64 24
%bj=bitcast i8*%bi to i32*
store i32 7,i32*%bj,align 4
%bk=call i8*@sml_alloc(i32 inreg 60)#0
%bl=getelementptr inbounds i8,i8*%bk,i64 -4
%bm=bitcast i8*%bl to i32*
store i32 1342177336,i32*%bm,align 4
%bn=getelementptr inbounds i8,i8*%bk,i64 56
%bo=bitcast i8*%bn to i32*
store i32 1,i32*%bo,align 4
%bp=load i8*,i8**%d,align 8
%bq=bitcast i8*%bk to i8**
store i8*%bp,i8**%bq,align 8
call void@sml_raise(i8*inreg%bk)#1
unreachable
br:
store i8*null,i8**%e,align 8
%bs=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%bs,i8**%c,align 8
%bt=call i8*@sml_alloc(i32 inreg 28)#0
%bu=getelementptr inbounds i8,i8*%bt,i64 -4
%bv=bitcast i8*%bu to i32*
store i32 1342177304,i32*%bv,align 4
store i8*%bt,i8**%d,align 8
%bw=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bx=bitcast i8*%bt to i8**
store i8*%bw,i8**%bx,align 8
%by=getelementptr inbounds i8,i8*%bt,i64 8
%bz=bitcast i8*%by to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@N,i64 0,i32 2,i64 0),i8**%bz,align 8
%bA=getelementptr inbounds i8,i8*%bt,i64 16
%bB=bitcast i8*%bA to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[26x i8]}>,<{[4x i8],i32,[26x i8]}>*@O,i64 0,i32 2,i64 0),i8**%bB,align 8
%bC=getelementptr inbounds i8,i8*%bt,i64 24
%bD=bitcast i8*%bC to i32*
store i32 7,i32*%bD,align 4
%bE=call i8*@sml_alloc(i32 inreg 60)#0
%bF=getelementptr inbounds i8,i8*%bE,i64 -4
%bG=bitcast i8*%bF to i32*
store i32 1342177336,i32*%bG,align 4
%bH=getelementptr inbounds i8,i8*%bE,i64 56
%bI=bitcast i8*%bH to i32*
store i32 1,i32*%bI,align 4
%bJ=load i8*,i8**%d,align 8
%bK=bitcast i8*%bE to i8**
store i8*%bJ,i8**%bK,align 8
call void@sml_raise(i8*inreg%bE)#1
unreachable
bL:
%bM=bitcast i8*%a5 to i8**
%bN=load i8*,i8**%bM,align 8
store i8*%bN,i8**%d,align 8
%bO=call i8*@sml_alloc(i32 inreg 28)#0
%bP=getelementptr inbounds i8,i8*%bO,i64 -4
%bQ=bitcast i8*%bP to i32*
store i32 1342177304,i32*%bQ,align 4
%bR=load i8*,i8**%d,align 8
%bS=bitcast i8*%bO to i8**
store i8*%bR,i8**%bS,align 8
%bT=load i8*,i8**%e,align 8
%bU=getelementptr inbounds i8,i8*%bO,i64 8
%bV=bitcast i8*%bU to i8**
store i8*%bT,i8**%bV,align 8
%bW=load i8*,i8**%c,align 8
%bX=getelementptr inbounds i8,i8*%bO,i64 16
%bY=bitcast i8*%bX to i8**
store i8*%bW,i8**%bY,align 8
%bZ=getelementptr inbounds i8,i8*%bO,i64 24
%b0=bitcast i8*%bZ to i32*
store i32 7,i32*%b0,align 4
%b1=tail call fastcc i8*@_SMLFN15EmitTypedLambda10composeExnE(i8*inreg%bO)
ret i8*%b1
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation9switchExnE_321(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
%g=alloca i8*,align 8
%h=alloca i8*,align 8
%i=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
call void@llvm.gcroot(i8**%i,i8*null)#0
store i8*%a,i8**%h,align 8
store i8*%b,i8**%c,align 8
%j=load atomic i32,i32*@sml_check_flag unordered,align 4
%k=icmp eq i32%j,0
br i1%k,label%l,label%n
l:
%m=bitcast i8*%a to i8**
br label%r
n:
call void@sml_check(i32 inreg%j)
%o=load i8*,i8**%c,align 8
%p=bitcast i8**%h to i8***
%q=load i8**,i8***%p,align 8
br label%r
r:
%s=phi i8**[%q,%n],[%m,%l]
%t=phi i8*[%o,%n],[%b,%l]
store i8*%t,i8**%d,align 8
%u=bitcast i8*%t to i8***
%v=load i8**,i8***%u,align 8
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%c,align 8
%x=bitcast i8*%t to i8**
%y=load i8*,i8**%x,align 8
%z=getelementptr inbounds i8,i8*%y,i64 16
%A=bitcast i8*%z to i8**
%B=load i8*,i8**%A,align 8
store i8*%B,i8**%f,align 8
%C=getelementptr inbounds i8,i8*%t,i64 8
%D=bitcast i8*%C to i8**
%E=load i8*,i8**%D,align 8
store i8*%E,i8**%g,align 8
%F=load i8*,i8**%s,align 8
store i8*%F,i8**%e,align 8
%G=call i8*@sml_alloc(i32 inreg 20)#0
%H=getelementptr inbounds i8,i8*%G,i64 -4
%I=bitcast i8*%H to i32*
store i32 1342177296,i32*%I,align 4
%J=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%K=bitcast i8*%G to i8**
store i8*%J,i8**%K,align 8
%L=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%M=getelementptr inbounds i8,i8*%G,i64 8
%N=bitcast i8*%M to i8**
store i8*%L,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%G,i64 16
%P=bitcast i8*%O to i32*
store i32 3,i32*%P,align 4
%Q=call fastcc i8*@_SMLLN19DatatypeCompilation10findExnTagE_309(i8*inreg%G)
%R=icmp eq i8*%Q,null
br i1%R,label%S,label%am
S:
store i8*null,i8**%d,align 8
store i8*null,i8**%f,align 8
store i8*null,i8**%g,align 8
store i8*null,i8**%h,align 8
%T=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%T,i8**%c,align 8
%U=call i8*@sml_alloc(i32 inreg 28)#0
%V=getelementptr inbounds i8,i8*%U,i64 -4
%W=bitcast i8*%V to i32*
store i32 1342177304,i32*%W,align 4
store i8*%U,i8**%d,align 8
%X=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%Y=bitcast i8*%U to i8**
store i8*%X,i8**%Y,align 8
%Z=getelementptr inbounds i8,i8*%U,i64 8
%aa=bitcast i8*%Z to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@P,i64 0,i32 2,i64 0),i8**%aa,align 8
%ab=getelementptr inbounds i8,i8*%U,i64 16
%ac=bitcast i8*%ab to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[10x i8]}>,<{[4x i8],i32,[10x i8]}>*@Q,i64 0,i32 2,i64 0),i8**%ac,align 8
%ad=getelementptr inbounds i8,i8*%U,i64 24
%ae=bitcast i8*%ad to i32*
store i32 7,i32*%ae,align 4
%af=call i8*@sml_alloc(i32 inreg 60)#0
%ag=getelementptr inbounds i8,i8*%af,i64 -4
%ah=bitcast i8*%ag to i32*
store i32 1342177336,i32*%ah,align 4
%ai=getelementptr inbounds i8,i8*%af,i64 56
%aj=bitcast i8*%ai to i32*
store i32 1,i32*%aj,align 4
%ak=load i8*,i8**%d,align 8
%al=bitcast i8*%af to i8**
store i8*%ak,i8**%al,align 8
call void@sml_raise(i8*inreg%af)#1
unreachable
am:
%an=bitcast i8*%Q to i8**
%ao=load i8*,i8**%an,align 8
store i8*%ao,i8**%c,align 8
%ap=load i8*,i8**@_SMLZN12BuiltinTypes8exntagTyE,align 8
store i8*%ap,i8**%e,align 8
%aq=load i8*,i8**%h,align 8
%ar=getelementptr inbounds i8,i8*%aq,i64 20
%as=bitcast i8*%ar to i32*
%at=load i32,i32*%as,align 4
%au=call i8*@sml_alloc(i32 inreg 12)#0
%av=bitcast i8*%au to i32*
%aw=getelementptr inbounds i8,i8*%au,i64 -4
%ax=bitcast i8*%aw to i32*
store i32 1342177288,i32*%ax,align 4
store i8*%au,i8**%i,align 8
store i32 33,i32*%av,align 4
%ay=getelementptr inbounds i8,i8*%au,i64 4
%az=bitcast i8*%ay to i32*
store i32%at,i32*%az,align 4
%aA=getelementptr inbounds i8,i8*%au,i64 8
%aB=bitcast i8*%aA to i32*
store i32 0,i32*%aB,align 4
%aC=call i8*@sml_alloc(i32 inreg 28)#0
%aD=getelementptr inbounds i8,i8*%aC,i64 -4
%aE=bitcast i8*%aD to i32*
store i32 1342177304,i32*%aE,align 4
%aF=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aG=bitcast i8*%aC to i8**
store i8*%aF,i8**%aG,align 8
%aH=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%aI=getelementptr inbounds i8,i8*%aC,i64 8
%aJ=bitcast i8*%aI to i8**
store i8*%aH,i8**%aJ,align 8
%aK=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aL=getelementptr inbounds i8,i8*%aC,i64 16
%aM=bitcast i8*%aL to i8**
store i8*%aK,i8**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aC,i64 24
%aO=bitcast i8*%aN to i32*
store i32 7,i32*%aO,align 4
%aP=call fastcc i8*@_SMLFN15EmitTypedLambda13IdentityEqualE(i8*inreg%aC)
store i8*%aP,i8**%e,align 8
%aQ=bitcast i8**%d to i8***
%aR=load i8**,i8***%aQ,align 8
%aS=load i8*,i8**%aR,align 8
%aT=getelementptr inbounds i8,i8*%aS,i64 8
%aU=bitcast i8*%aT to i8**
%aV=load i8*,i8**%aU,align 8
%aW=icmp eq i8*%aV,null
br i1%aW,label%aX,label%bj
aX:
store i8*null,i8**%d,align 8
%aY=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%aZ=getelementptr inbounds i8,i8*%aY,i64 8
%a0=bitcast i8*%aZ to i8**
%a1=load i8*,i8**%a0,align 8
store i8*%a1,i8**%c,align 8
%a2=call i8*@sml_alloc(i32 inreg 20)#0
%a3=getelementptr inbounds i8,i8*%a2,i64 -4
%a4=bitcast i8*%a3 to i32*
store i32 1342177296,i32*%a4,align 4
store i8*%a2,i8**%d,align 8
%a5=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%a6=bitcast i8*%a2 to i8**
store i8*%a5,i8**%a6,align 8
%a7=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%a8=getelementptr inbounds i8,i8*%a2,i64 8
%a9=bitcast i8*%a8 to i8**
store i8*%a7,i8**%a9,align 8
%ba=getelementptr inbounds i8,i8*%a2,i64 16
%bb=bitcast i8*%ba to i32*
store i32 3,i32*%bb,align 4
%bc=call i8*@sml_alloc(i32 inreg 20)#0
%bd=bitcast i8*%bc to i32*
%be=getelementptr inbounds i8,i8*%bc,i64 -4
%bf=bitcast i8*%be to i32*
store i32 1342177296,i32*%bf,align 4
%bg=getelementptr inbounds i8,i8*%bc,i64 4
%bh=bitcast i8*%bg to i32*
store i32 0,i32*%bh,align 1
store i32 8,i32*%bd,align 4
%bi=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
br label%c5
bj:
%bk=bitcast i8*%aV to i8**
%bl=load i8*,i8**%bk,align 8
store i8*%bl,i8**%d,align 8
%bm=load i8*,i8**%h,align 8
%bn=getelementptr inbounds i8,i8*%bm,i64 16
%bo=bitcast i8*%bn to i32*
%bp=load i32,i32*%bo,align 4
%bq=call i8*@sml_alloc(i32 inreg 12)#0
%br=bitcast i8*%bq to i32*
%bs=getelementptr inbounds i8,i8*%bq,i64 -4
%bt=bitcast i8*%bs to i32*
store i32 1342177288,i32*%bt,align 4
store i8*%bq,i8**%i,align 8
store i32 33,i32*%br,align 4
%bu=getelementptr inbounds i8,i8*%bq,i64 4
%bv=bitcast i8*%bu to i32*
store i32%bp,i32*%bv,align 4
%bw=getelementptr inbounds i8,i8*%bq,i64 8
%bx=bitcast i8*%bw to i32*
store i32 0,i32*%bx,align 4
%by=load i8*,i8**%d,align 8
%bz=getelementptr inbounds i8,i8*%by,i64 16
%bA=bitcast i8*%bz to i8**
%bB=load i8*,i8**%bA,align 8
store i8*%bB,i8**%c,align 8
%bC=call i8*@sml_alloc(i32 inreg 20)#0
%bD=getelementptr inbounds i8,i8*%bC,i64 -4
%bE=bitcast i8*%bD to i32*
store i32 1342177296,i32*%bE,align 4
%bF=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%bG=bitcast i8*%bC to i8**
store i8*%bF,i8**%bG,align 8
%bH=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bI=getelementptr inbounds i8,i8*%bC,i64 8
%bJ=bitcast i8*%bI to i8**
store i8*%bH,i8**%bJ,align 8
%bK=getelementptr inbounds i8,i8*%bC,i64 16
%bL=bitcast i8*%bK to i32*
store i32 3,i32*%bL,align 4
%bM=call fastcc i8*@_SMLFN15EmitTypedLambda13extractExnArgE(i8*inreg%bC)
store i8*%bM,i8**%c,align 8
%bN=call i8*@sml_alloc(i32 inreg 20)#0
%bO=getelementptr inbounds i8,i8*%bN,i64 -4
%bP=bitcast i8*%bO to i32*
store i32 1342177296,i32*%bP,align 4
store i8*%bN,i8**%i,align 8
%bQ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bR=bitcast i8*%bN to i8**
store i8*%bQ,i8**%bR,align 8
%bS=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bT=getelementptr inbounds i8,i8*%bN,i64 8
%bU=bitcast i8*%bT to i8**
store i8*%bS,i8**%bU,align 8
%bV=getelementptr inbounds i8,i8*%bN,i64 16
%bW=bitcast i8*%bV to i32*
store i32 3,i32*%bW,align 4
%bX=call i8*@sml_alloc(i32 inreg 20)#0
%bY=getelementptr inbounds i8,i8*%bX,i64 -4
%bZ=bitcast i8*%bY to i32*
store i32 1342177296,i32*%bZ,align 4
store i8*%bX,i8**%c,align 8
%b0=bitcast i8*%bX to i64*
store i64 0,i64*%b0,align 4
%b1=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%b2=getelementptr inbounds i8,i8*%bX,i64 8
%b3=bitcast i8*%b2 to i8**
store i8*%b1,i8**%b3,align 8
%b4=getelementptr inbounds i8,i8*%bX,i64 16
%b5=bitcast i8*%b4 to i32*
store i32 2,i32*%b5,align 4
%b6=call i8*@sml_alloc(i32 inreg 20)#0
%b7=getelementptr inbounds i8,i8*%b6,i64 -4
%b8=bitcast i8*%b7 to i32*
store i32 1342177296,i32*%b8,align 4
%b9=load i8*,i8**%c,align 8
%ca=bitcast i8*%b6 to i8**
store i8*%b9,i8**%ca,align 8
%cb=getelementptr inbounds i8,i8*%b6,i64 8
%cc=bitcast i8*%cb to i8**
store i8*null,i8**%cc,align 8
%cd=getelementptr inbounds i8,i8*%b6,i64 16
%ce=bitcast i8*%cd to i32*
store i32 3,i32*%ce,align 4
store i8*null,i8**%d,align 8
%cf=call i8*@sml_alloc(i32 inreg 20)#0
%cg=getelementptr inbounds i8,i8*%cf,i64 -4
%ch=bitcast i8*%cg to i32*
store i32 1342177296,i32*%ch,align 4
store i8*%cf,i8**%i,align 8
%ci=load i8*,i8**%c,align 8
%cj=bitcast i8*%cf to i8**
store i8*%ci,i8**%cj,align 8
%ck=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cl=getelementptr inbounds i8,i8*%cf,i64 8
%cm=bitcast i8*%cl to i8**
store i8*%ck,i8**%cm,align 8
%cn=getelementptr inbounds i8,i8*%cf,i64 16
%co=bitcast i8*%cn to i32*
store i32 3,i32*%co,align 4
%cp=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%cq=getelementptr inbounds i8,i8*%cp,i64 8
%cr=bitcast i8*%cq to i8**
%cs=load i8*,i8**%cr,align 8
store i8*%cs,i8**%c,align 8
%ct=call i8*@sml_alloc(i32 inreg 20)#0
%cu=getelementptr inbounds i8,i8*%ct,i64 -4
%cv=bitcast i8*%cu to i32*
store i32 1342177296,i32*%cv,align 4
store i8*%ct,i8**%d,align 8
%cw=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cx=bitcast i8*%ct to i8**
store i8*%cw,i8**%cx,align 8
%cy=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cz=getelementptr inbounds i8,i8*%ct,i64 8
%cA=bitcast i8*%cz to i8**
store i8*%cy,i8**%cA,align 8
%cB=getelementptr inbounds i8,i8*%ct,i64 16
%cC=bitcast i8*%cB to i32*
store i32 3,i32*%cC,align 4
%cD=call i8*@sml_alloc(i32 inreg 20)#0
%cE=getelementptr inbounds i8,i8*%cD,i64 -4
%cF=bitcast i8*%cE to i32*
store i32 1342177296,i32*%cF,align 4
store i8*%cD,i8**%f,align 8
%cG=getelementptr inbounds i8,i8*%cD,i64 4
%cH=bitcast i8*%cG to i32*
store i32 0,i32*%cH,align 1
%cI=bitcast i8*%cD to i32*
store i32 8,i32*%cI,align 4
%cJ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cK=getelementptr inbounds i8,i8*%cD,i64 8
%cL=bitcast i8*%cK to i8**
store i8*%cJ,i8**%cL,align 8
%cM=getelementptr inbounds i8,i8*%cD,i64 16
%cN=bitcast i8*%cM to i32*
store i32 2,i32*%cN,align 4
%cO=call i8*@sml_alloc(i32 inreg 20)#0
%cP=getelementptr inbounds i8,i8*%cO,i64 -4
%cQ=bitcast i8*%cP to i32*
store i32 1342177296,i32*%cQ,align 4
store i8*%cO,i8**%c,align 8
%cR=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%cS=bitcast i8*%cO to i8**
store i8*%cR,i8**%cS,align 8
%cT=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cU=getelementptr inbounds i8,i8*%cO,i64 8
%cV=bitcast i8*%cU to i8**
store i8*%cT,i8**%cV,align 8
%cW=getelementptr inbounds i8,i8*%cO,i64 16
%cX=bitcast i8*%cW to i32*
store i32 3,i32*%cX,align 4
%cY=call i8*@sml_alloc(i32 inreg 20)#0
%cZ=bitcast i8*%cY to i32*
%c0=getelementptr inbounds i8,i8*%cY,i64 -4
%c1=bitcast i8*%c0 to i32*
store i32 1342177296,i32*%c1,align 4
%c2=getelementptr inbounds i8,i8*%cY,i64 4
%c3=bitcast i8*%c2 to i32*
store i32 0,i32*%c3,align 1
store i32 29,i32*%cZ,align 4
%c4=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
br label%c5
c5:
%c6=phi i8*[%cY,%bj],[%bc,%aX]
%c7=phi i8*[%c4,%bj],[%bi,%aX]
%c8=getelementptr inbounds i8,i8*%c6,i64 8
%c9=bitcast i8*%c8 to i8**
store i8*%c7,i8**%c9,align 8
%da=getelementptr inbounds i8,i8*%c6,i64 16
%db=bitcast i8*%da to i32*
store i32 2,i32*%db,align 4
store i8*%c6,i8**%c,align 8
%dc=call i8*@sml_alloc(i32 inreg 28)#0
%dd=getelementptr inbounds i8,i8*%dc,i64 -4
%de=bitcast i8*%dd to i32*
store i32 1342177304,i32*%de,align 4
store i8*%dc,i8**%d,align 8
%df=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dg=bitcast i8*%dc to i8**
store i8*%df,i8**%dg,align 8
%dh=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%di=getelementptr inbounds i8,i8*%dc,i64 8
%dj=bitcast i8*%di to i8**
store i8*%dh,i8**%dj,align 8
%dk=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%dl=getelementptr inbounds i8,i8*%dc,i64 16
%dm=bitcast i8*%dl to i8**
store i8*%dk,i8**%dm,align 8
%dn=getelementptr inbounds i8,i8*%dc,i64 24
%do=bitcast i8*%dn to i32*
store i32 7,i32*%do,align 4
%dp=call i8*@sml_alloc(i32 inreg 20)#0
%dq=bitcast i8*%dp to i32*
%dr=getelementptr inbounds i8,i8*%dp,i64 -4
%ds=bitcast i8*%dr to i32*
store i32 1342177296,i32*%ds,align 4
%dt=getelementptr inbounds i8,i8*%dp,i64 4
%du=bitcast i8*%dt to i32*
store i32 0,i32*%du,align 1
store i32 11,i32*%dq,align 4
%dv=load i8*,i8**%d,align 8
%dw=getelementptr inbounds i8,i8*%dp,i64 8
%dx=bitcast i8*%dw to i8**
store i8*%dv,i8**%dx,align 8
%dy=getelementptr inbounds i8,i8*%dp,i64 16
%dz=bitcast i8*%dy to i32*
store i32 2,i32*%dz,align 4
ret i8*%dp
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation9switchExnE_322(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
%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
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
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
store i8*%a,i8**%j,align 8
store i8*%b,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%n,label%p
n:
%o=bitcast i8*%b to i8**
br label%t
p:
call void@sml_check(i32 inreg%l)
%q=bitcast i8**%c to i8***
%r=load i8**,i8***%q,align 8
%s=bitcast i8**%r to i8*
br label%t
t:
%u=phi i8*[%s,%p],[%b,%n]
%v=phi i8**[%r,%p],[%o,%n]
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%f,align 8
%x=getelementptr inbounds i8*,i8**%v,i64 1
%y=load i8*,i8**%x,align 8
store i8*%y,i8**%g,align 8
%z=getelementptr inbounds i8*,i8**%v,i64 3
%A=load i8*,i8**%z,align 8
store i8*%A,i8**%h,align 8
%B=getelementptr inbounds i8,i8*%u,i64 32
%C=bitcast i8*%B to i8**
%D=load i8*,i8**%C,align 8
store i8*%D,i8**%i,align 8
%E=call fastcc i32@_SMLFN15EmitTypedLambda5newIdE(i32 inreg 0)
%F=call fastcc i32@_SMLFN15EmitTypedLambda5newIdE(i32 inreg 0)
%G=call i8*@sml_alloc(i32 inreg 12)#0
%H=bitcast i8*%G to i32*
%I=getelementptr inbounds i8,i8*%G,i64 -4
%J=bitcast i8*%I to i32*
store i32 1342177288,i32*%J,align 4
store i32 33,i32*%H,align 4
%K=getelementptr inbounds i8,i8*%G,i64 4
%L=bitcast i8*%K to i32*
store i32%E,i32*%L,align 4
%M=getelementptr inbounds i8,i8*%G,i64 8
%N=bitcast i8*%M to i32*
store i32 0,i32*%N,align 4
%O=call fastcc i8*@_SMLFN15EmitTypedLambda13extractExnTagE(i8*inreg%G)
store i8*%O,i8**%d,align 8
%P=call i8*@sml_alloc(i32 inreg 20)#0
%Q=getelementptr inbounds i8,i8*%P,i64 -4
%R=bitcast i8*%Q to i32*
store i32 1342177296,i32*%R,align 4
store i8*%P,i8**%e,align 8
%S=getelementptr inbounds i8,i8*%P,i64 4
%T=bitcast i8*%S to i32*
store i32 0,i32*%T,align 1
%U=bitcast i8*%P to i32*
store i32%F,i32*%U,align 4
%V=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%W=getelementptr inbounds i8,i8*%P,i64 8
%X=bitcast i8*%W to i8**
store i8*%V,i8**%X,align 8
%Y=getelementptr inbounds i8,i8*%P,i64 16
%Z=bitcast i8*%Y to i32*
store i32 2,i32*%Z,align 4
%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**%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 i8**
store i8*null,i8**%ag,align 8
%ah=getelementptr inbounds i8,i8*%aa,i64 16
%ai=bitcast i8*%ah to i32*
store i32 3,i32*%ai,align 4
store i8*%ad,i8**%d,align 8
store i8*null,i8**%e,align 8
%aj=call i8*@sml_alloc(i32 inreg 20)#0
%ak=getelementptr inbounds i8,i8*%aj,i64 -4
%al=bitcast i8*%ak to i32*
store i32 1342177296,i32*%al,align 4
store i8*%aj,i8**%k,align 8
%am=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%an=bitcast i8*%aj to i8**
store i8*%am,i8**%an,align 8
%ao=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ap=getelementptr inbounds i8,i8*%aj,i64 8
%aq=bitcast i8*%ap to i8**
store i8*%ao,i8**%aq,align 8
%ar=getelementptr inbounds i8,i8*%aj,i64 16
%as=bitcast i8*%ar to i32*
store i32 3,i32*%as,align 4
%at=call i8*@sml_alloc(i32 inreg 20)#0
%au=getelementptr inbounds i8,i8*%at,i64 -4
%av=bitcast i8*%au to i32*
store i32 1342177296,i32*%av,align 4
store i8*%at,i8**%d,align 8
%aw=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%ax=bitcast i8*%at to i8**
store i8*%aw,i8**%ax,align 8
%ay=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%az=getelementptr inbounds i8,i8*%at,i64 8
%aA=bitcast i8*%az to i8**
store i8*%ay,i8**%aA,align 8
%aB=getelementptr inbounds i8,i8*%at,i64 16
%aC=bitcast i8*%aB to i32*
store i32 3,i32*%aC,align 4
%aD=call i8*@sml_alloc(i32 inreg 20)#0
%aE=getelementptr inbounds i8,i8*%aD,i64 -4
%aF=bitcast i8*%aE to i32*
store i32 1342177296,i32*%aF,align 4
store i8*%aD,i8**%e,align 8
%aG=getelementptr inbounds i8,i8*%aD,i64 4
%aH=bitcast i8*%aG to i32*
store i32 0,i32*%aH,align 1
%aI=bitcast i8*%aD to i32*
store i32 8,i32*%aI,align 4
%aJ=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aK=getelementptr inbounds i8,i8*%aD,i64 8
%aL=bitcast i8*%aK to i8**
store i8*%aJ,i8**%aL,align 8
%aM=getelementptr inbounds i8,i8*%aD,i64 16
%aN=bitcast i8*%aM to i32*
store i32 2,i32*%aN,align 4
%aO=call i8*@sml_alloc(i32 inreg 20)#0
%aP=getelementptr inbounds i8,i8*%aO,i64 -4
%aQ=bitcast i8*%aP to i32*
store i32 1342177296,i32*%aQ,align 4
store i8*%aO,i8**%d,align 8
%aR=getelementptr inbounds i8,i8*%aO,i64 4
%aS=bitcast i8*%aR to i32*
store i32 0,i32*%aS,align 1
%aT=bitcast i8*%aO to i32*
store i32%E,i32*%aT,align 4
%aU=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aV=getelementptr inbounds i8,i8*%aO,i64 8
%aW=bitcast i8*%aV to i8**
store i8*%aU,i8**%aW,align 8
%aX=getelementptr inbounds i8,i8*%aO,i64 16
%aY=bitcast i8*%aX to i32*
store i32 2,i32*%aY,align 4
%aZ=call i8*@sml_alloc(i32 inreg 20)#0
%a0=getelementptr inbounds i8,i8*%aZ,i64 -4
%a1=bitcast i8*%a0 to i32*
store i32 1342177296,i32*%a1,align 4
store i8*%aZ,i8**%f,align 8
%a2=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%a3=bitcast i8*%aZ to i8**
store i8*%a2,i8**%a3,align 8
%a4=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%a5=getelementptr inbounds i8,i8*%aZ,i64 8
%a6=bitcast i8*%a5 to i8**
store i8*%a4,i8**%a6,align 8
%a7=getelementptr inbounds i8,i8*%aZ,i64 16
%a8=bitcast i8*%a7 to i32*
store i32 3,i32*%a8,align 4
%a9=call fastcc i8*@_SMLFN4List5foldrE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%ba=getelementptr inbounds i8,i8*%a9,i64 16
%bb=bitcast i8*%ba to i8*(i8*,i8*)**
%bc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bb,align 8
%bd=bitcast i8*%a9 to i8**
%be=load i8*,i8**%bd,align 8
store i8*%be,i8**%e,align 8
%bf=bitcast i8**%j to i8***
%bg=load i8**,i8***%bf,align 8
store i8*null,i8**%j,align 8
%bh=load i8*,i8**%bg,align 8
store i8*%bh,i8**%d,align 8
%bi=call i8*@sml_alloc(i32 inreg 28)#0
%bj=getelementptr inbounds i8,i8*%bi,i64 -4
%bk=bitcast i8*%bj to i32*
store i32 1342177304,i32*%bk,align 4
store i8*%bi,i8**%g,align 8
%bl=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bm=bitcast i8*%bi to i8**
store i8*%bl,i8**%bm,align 8
%bn=load i8*,i8**%i,align 8
%bo=getelementptr inbounds i8,i8*%bi,i64 8
%bp=bitcast i8*%bo to i8**
store i8*%bn,i8**%bp,align 8
%bq=getelementptr inbounds i8,i8*%bi,i64 16
%br=bitcast i8*%bq to i32*
store i32%E,i32*%br,align 4
%bs=getelementptr inbounds i8,i8*%bi,i64 20
%bt=bitcast i8*%bs to i32*
store i32%F,i32*%bt,align 4
%bu=getelementptr inbounds i8,i8*%bi,i64 24
%bv=bitcast i8*%bu to i32*
store i32 3,i32*%bv,align 4
%bw=call i8*@sml_alloc(i32 inreg 28)#0
%bx=getelementptr inbounds i8,i8*%bw,i64 -4
%by=bitcast i8*%bx to i32*
store i32 1342177304,i32*%by,align 4
%bz=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%bA=bitcast i8*%bw to i8**
store i8*%bz,i8**%bA,align 8
%bB=getelementptr inbounds i8,i8*%bw,i64 8
%bC=bitcast i8*%bB to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchExnE_321 to void(...)*),void(...)**%bC,align 8
%bD=getelementptr inbounds i8,i8*%bw,i64 16
%bE=bitcast i8*%bD to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchExnE_321 to void(...)*),void(...)**%bE,align 8
%bF=getelementptr inbounds i8,i8*%bw,i64 24
%bG=bitcast i8*%bF to i32*
store i32 -2147483647,i32*%bG,align 4
%bH=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bI=call fastcc i8*%bc(i8*inreg%bH,i8*inreg%bw)
%bJ=getelementptr inbounds i8,i8*%bI,i64 16
%bK=bitcast i8*%bJ to i8*(i8*,i8*)**
%bL=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bK,align 8
%bM=bitcast i8*%bI to i8**
%bN=load i8*,i8**%bM,align 8
store i8*%bN,i8**%e,align 8
%bO=call i8*@sml_alloc(i32 inreg 20)#0
%bP=getelementptr inbounds i8,i8*%bO,i64 -4
%bQ=bitcast i8*%bP to i32*
store i32 1342177296,i32*%bQ,align 4
store i8*%bO,i8**%d,align 8
%bR=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%bS=bitcast i8*%bO to i8**
store i8*%bR,i8**%bS,align 8
%bT=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%bU=getelementptr inbounds i8,i8*%bO,i64 8
%bV=bitcast i8*%bU to i8**
store i8*%bT,i8**%bV,align 8
%bW=getelementptr inbounds i8,i8*%bO,i64 16
%bX=bitcast i8*%bW to i32*
store i32 3,i32*%bX,align 4
%bY=call i8*@sml_alloc(i32 inreg 20)#0
%bZ=bitcast i8*%bY to i32*
%b0=getelementptr inbounds i8,i8*%bY,i64 -4
%b1=bitcast i8*%b0 to i32*
store i32 1342177296,i32*%b1,align 4
%b2=getelementptr inbounds i8,i8*%bY,i64 4
%b3=bitcast i8*%b2 to i32*
store i32 0,i32*%b3,align 1
store i32 8,i32*%bZ,align 4
%b4=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%b5=getelementptr inbounds i8,i8*%bY,i64 8
%b6=bitcast i8*%b5 to i8**
store i8*%b4,i8**%b6,align 8
%b7=getelementptr inbounds i8,i8*%bY,i64 16
%b8=bitcast i8*%b7 to i32*
store i32 2,i32*%b8,align 4
%b9=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ca=call fastcc i8*%bL(i8*inreg%b9,i8*inreg%bY)
%cb=getelementptr inbounds i8,i8*%ca,i64 16
%cc=bitcast i8*%cb to i8*(i8*,i8*)**
%cd=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cc,align 8
%ce=bitcast i8*%ca to i8**
%cf=load i8*,i8**%ce,align 8
%cg=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%ch=getelementptr inbounds i8,i8*%cg,i64 16
%ci=bitcast i8*%ch to i8**
%cj=load i8*,i8**%ci,align 8
%ck=call fastcc i8*%cd(i8*inreg%cf,i8*inreg%cj)
store i8*%ck,i8**%c,align 8
%cl=call i8*@sml_alloc(i32 inreg 20)#0
%cm=getelementptr inbounds i8,i8*%cl,i64 -4
%cn=bitcast i8*%cm to i32*
store i32 1342177296,i32*%cn,align 4
store i8*%cl,i8**%d,align 8
%co=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%cp=bitcast i8*%cl to i8**
store i8*%co,i8**%cp,align 8
%cq=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cr=getelementptr inbounds i8,i8*%cl,i64 8
%cs=bitcast i8*%cr to i8**
store i8*%cq,i8**%cs,align 8
%ct=getelementptr inbounds i8,i8*%cl,i64 16
%cu=bitcast i8*%ct to i32*
store i32 3,i32*%cu,align 4
%cv=call i8*@sml_alloc(i32 inreg 20)#0
%cw=bitcast i8*%cv to i32*
%cx=getelementptr inbounds i8,i8*%cv,i64 -4
%cy=bitcast i8*%cx to i32*
store i32 1342177296,i32*%cy,align 4
%cz=getelementptr inbounds i8,i8*%cv,i64 4
%cA=bitcast i8*%cz to i32*
store i32 0,i32*%cA,align 1
store i32 18,i32*%cw,align 4
%cB=load i8*,i8**%d,align 8
%cC=getelementptr inbounds i8,i8*%cv,i64 8
%cD=bitcast i8*%cC to i8**
store i8*%cB,i8**%cD,align 8
%cE=getelementptr inbounds i8,i8*%cv,i64 16
%cF=bitcast i8*%cE to i32*
store i32 2,i32*%cF,align 4
ret i8*%cv
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation8fixConstE_326(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"personality i32(...)*@sml_personality{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%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**%f,align 8
store i8*%b,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%c,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%b,%m]
%n=bitcast i8*%l to i8**
%o=load i8*,i8**%n,align 8
store i8*%o,i8**%c,align 8
%p=getelementptr inbounds i8,i8*%l,i64 8
%q=bitcast i8*%p to i8**
%r=load i8*,i8**%q,align 8
store i8*%r,i8**%d,align 8
%s=getelementptr inbounds i8,i8*%l,i64 16
%t=bitcast i8*%s to i8**
%u=load i8*,i8**%t,align 8
store i8*%u,i8**%e,align 8
%v=call i8*@sml_alloc(i32 inreg 28)#0
%w=getelementptr inbounds i8,i8*%v,i64 -4
%x=bitcast i8*%w to i32*
store i32 1342177304,i32*%x,align 4
%y=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%z=bitcast i8*%v to i8**
store i8*%y,i8**%z,align 8
%A=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%B=getelementptr inbounds i8,i8*%v,i64 8
%C=bitcast i8*%B to i8**
store i8*%A,i8**%C,align 8
%D=load i8*,i8**%e,align 8
%E=getelementptr inbounds i8,i8*%v,i64 16
%F=bitcast i8*%E to i8**
store i8*%D,i8**%F,align 8
%G=getelementptr inbounds i8,i8*%v,i64 24
%H=bitcast i8*%G to i32*
store i32 7,i32*%H,align 4
%I=invoke fastcc i8*@_SMLFN13ConstantTypes8fixConstE(i8*inreg%v)
to label%aQ unwind label%J
J:
%K=landingpad{i8*,i8*}
catch i8*null
%L=extractvalue{i8*,i8*}%K,1
%M=bitcast i8*%L to i8**
%N=load i8*,i8**%M,align 8
store i8*%N,i8**%d,align 8
%O=bitcast i8*%N to i8**
%P=load i8*,i8**%O,align 8
%Q=load i8*,i8**@_SMLZN13ConstantError16TooLargeConstantE,align 8
%R=icmp eq i8*%P,%Q
br i1%R,label%S,label%aI
S:
%T=bitcast i8**%f to i8***
%U=load i8**,i8***%T,align 8
store i8*null,i8**%f,align 8
%V=load i8*,i8**%U,align 8
%W=call fastcc i8*@_SMLFN9UserError12enqueueErrorE(i8*inreg%V)
%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
store i8*%ab,i8**%c,align 8
%ac=call i8*@sml_alloc(i32 inreg 20)#0
%ad=getelementptr inbounds i8,i8*%ac,i64 -4
%ae=bitcast i8*%ad to i32*
store i32 1342177296,i32*%ae,align 4
%af=load i8*,i8**%e,align 8
%ag=bitcast i8*%ac to i8**
store i8*%af,i8**%ag,align 8
%ah=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ai=getelementptr inbounds i8,i8*%ac,i64 8
%aj=bitcast i8*%ai to i8**
store i8*%ah,i8**%aj,align 8
%ak=getelementptr inbounds i8,i8*%ac,i64 16
%al=bitcast i8*%ak to i32*
store i32 3,i32*%al,align 4
%am=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%an=call fastcc i8*%Z(i8*inreg%am,i8*inreg%ac)
%ao=call i8*@sml_alloc(i32 inreg 20)#0
%ap=getelementptr inbounds i8,i8*%ao,i64 -4
%aq=bitcast i8*%ap to i32*
store i32 1342177296,i32*%aq,align 4
store i8*%ao,i8**%c,align 8
%ar=bitcast i8*%ao to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@R,i64 0,i32 2)to i8*),i8**%ar,align 8
%as=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%at=getelementptr inbounds i8,i8*%ao,i64 8
%au=bitcast i8*%at to i8**
store i8*%as,i8**%au,align 8
%av=getelementptr inbounds i8,i8*%ao,i64 16
%aw=bitcast i8*%av to i32*
store i32 3,i32*%aw,align 4
%ax=call i8*@sml_alloc(i32 inreg 20)#0
%ay=bitcast i8*%ax to i32*
%az=getelementptr inbounds i8,i8*%ax,i64 -4
%aA=bitcast i8*%az to i32*
store i32 1342177296,i32*%aA,align 4
%aB=getelementptr inbounds i8,i8*%ax,i64 4
%aC=bitcast i8*%aB to i32*
store i32 0,i32*%aC,align 1
store i32 4,i32*%ay,align 4
%aD=load i8*,i8**%c,align 8
%aE=getelementptr inbounds i8,i8*%ax,i64 8
%aF=bitcast i8*%aE to i8**
store i8*%aD,i8**%aF,align 8
%aG=getelementptr inbounds i8,i8*%ax,i64 16
%aH=bitcast i8*%aG to i32*
store i32 2,i32*%aH,align 4
ret i8*%ax
aI:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
%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=load i8*,i8**%d,align 8
%aP=bitcast i8*%aJ to i8**
store i8*%aO,i8**%aP,align 8
call void@sml_raise(i8*inreg%aJ)#1
unreachable
aQ:
ret i8*%I
}
define internal fastcc i8*@_SMLL10argExpList_330(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=getelementptr inbounds i8,i8*%k,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%k to i8**
%r=load i8*,i8**%q,align 8
%s=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%p,i8*inreg%r,i8*inreg%m)
ret i8*%s
}
define internal fastcc i8*@_SMLL8branches_335(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
p:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
%h=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
call void@llvm.gcroot(i8**%h,i8*null)#0
store i8*%a,i8**%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%n,label%k
k:
call void@sml_check(i32 inreg%i)
%l=load i8*,i8**%c,align 8
%m=load i8*,i8**%f,align 8
br label%n
n:
%o=phi i8*[%m,%k],[%a,%p]
%q=phi i8*[%l,%k],[%b,%p]
%r=getelementptr inbounds i8,i8*%q,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
store i8*%t,i8**%d,align 8
%u=getelementptr inbounds i8,i8*%q,i64 16
%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*%o,i64 16
%y=bitcast i8*%x to i8**
%z=load i8*,i8**%y,align 8
store i8*%z,i8**%h,align 8
%A=getelementptr inbounds i8,i8*%o,i64 8
%B=bitcast i8*%A to i8**
%C=load i8*,i8**%B,align 8
store i8*%C,i8**%g,align 8
%D=call i8*@sml_alloc(i32 inreg 28)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177304,i32*%F,align 4
%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=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%J=getelementptr inbounds i8,i8*%D,i64 8
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%M=getelementptr inbounds i8,i8*%D,i64 16
%N=bitcast i8*%M to i8**
store i8*%L,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%D,i64 24
%P=bitcast i8*%O to i32*
store i32 7,i32*%P,align 4
%Q=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%R=call fastcc i8*@_SMLLN19DatatypeCompilation8fixConstE_326(i8*inreg%Q,i8*inreg%D)
%S=bitcast i8*%R to i32*
%T=load i32,i32*%S,align 4
switch i32%T,label%U[
i32 11,label%az
i32 22,label%ao
]
U:
store i8*null,i8**%f,align 8
%V=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%V,i8**%c,align 8
%W=call i8*@sml_alloc(i32 inreg 28)#0
%X=getelementptr inbounds i8,i8*%W,i64 -4
%Y=bitcast i8*%X to i32*
store i32 1342177304,i32*%Y,align 4
store i8*%W,i8**%d,align 8
%Z=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aa=bitcast i8*%W to i8**
store i8*%Z,i8**%aa,align 8
%ab=getelementptr inbounds i8,i8*%W,i64 8
%ac=bitcast i8*%ab to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@U,i64 0,i32 2,i64 0),i8**%ac,align 8
%ad=getelementptr inbounds i8,i8*%W,i64 16
%ae=bitcast i8*%ad to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[21x i8]}>,<{[4x i8],i32,[21x i8]}>*@V,i64 0,i32 2,i64 0),i8**%ae,align 8
%af=getelementptr inbounds i8,i8*%W,i64 24
%ag=bitcast i8*%af to i32*
store i32 7,i32*%ag,align 4
%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=load i8*,i8**%d,align 8
%an=bitcast i8*%ah to i8**
store i8*%am,i8**%an,align 8
call void@sml_raise(i8*inreg%ah)#1
unreachable
ao:
%ap=getelementptr inbounds i8,i8*%R,i64 8
%aq=bitcast i8*%ap to i8***
%ar=load i8**,i8***%aq,align 8
%as=load i8*,i8**%ar,align 8
store i8*%as,i8**%d,align 8
%at=call i8*@sml_alloc(i32 inreg 20)#0
%au=bitcast i8*%at to i32*
%av=getelementptr inbounds i8,i8*%at,i64 -4
%aw=bitcast i8*%av to i32*
store i32 1342177296,i32*%aw,align 4
%ax=getelementptr inbounds i8,i8*%at,i64 4
%ay=bitcast i8*%ax to i32*
store i32 0,i32*%ay,align 1
store i32 1,i32*%au,align 4
br label%aI
az:
%aA=getelementptr inbounds i8,i8*%R,i64 8
%aB=bitcast i8*%aA to i8***
%aC=load i8**,i8***%aB,align 8
%aD=load i8*,i8**%aC,align 8
store i8*%aD,i8**%d,align 8
%aE=call i8*@sml_alloc(i32 inreg 20)#0
%aF=getelementptr inbounds i8,i8*%aE,i64 -4
%aG=bitcast i8*%aF to i32*
store i32 1342177296,i32*%aG,align 4
%aH=bitcast i8*%aE to i64*
store i64 0,i64*%aH,align 4
br label%aI
aI:
%aJ=phi i8*[%aE,%az],[%at,%ao]
%aK=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aL=getelementptr inbounds i8,i8*%aJ,i64 8
%aM=bitcast i8*%aL to i8**
store i8*%aK,i8**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aJ,i64 16
%aO=bitcast i8*%aN to i32*
store i32 2,i32*%aO,align 4
store i8*%aJ,i8**%d,align 8
%aP=load i8*,i8**%f,align 8
%aQ=getelementptr inbounds i8,i8*%aP,i64 24
%aR=bitcast i8*%aQ to i8**
%aS=load i8*,i8**%aR,align 8
store i8*null,i8**%f,align 8
%aT=bitcast i8*%aP to i8**
%aU=load i8*,i8**%aT,align 8
%aV=bitcast i8**%c to i8***
%aW=load i8**,i8***%aV,align 8
store i8*null,i8**%c,align 8
%aX=load i8*,i8**%aW,align 8
%aY=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%aS,i8*inreg%aU,i8*inreg%aX)
store i8*%aY,i8**%c,align 8
%aZ=call i8*@sml_alloc(i32 inreg 20)#0
%a0=getelementptr inbounds i8,i8*%aZ,i64 -4
%a1=bitcast i8*%a0 to i32*
store i32 1342177296,i32*%a1,align 4
%a2=load i8*,i8**%d,align 8
%a3=bitcast i8*%aZ to i8**
store i8*%a2,i8**%a3,align 8
%a4=load i8*,i8**%c,align 8
%a5=getelementptr inbounds i8,i8*%aZ,i64 8
%a6=bitcast i8*%a5 to i8**
store i8*%a4,i8**%a6,align 8
%a7=getelementptr inbounds i8,i8*%aZ,i64 16
%a8=bitcast i8*%a7 to i32*
store i32 3,i32*%a8,align 4
ret i8*%aZ
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_338(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i8**
%e=load i8*,i8**%d,align 8
%f=bitcast i8*%e to i32*
%g=load i32,i32*%f,align 4
%h=icmp eq i32%g,1
br i1%h,label%i,label%G
i:
%j=getelementptr inbounds i8,i8*%e,i64 8
%k=bitcast i8*%j to i8**
%l=load i8*,i8**%k,align 8
%m=bitcast i8*%l to i32*
%n=load i32,i32*%m,align 4
%o=icmp eq i32%n,1
br i1%o,label%p,label%G
p:
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%b,align 8
%t=getelementptr inbounds i8,i8*%a,i64 8
%u=bitcast i8*%t to i8**
%v=load i8*,i8**%u,align 8
store i8*%v,i8**%c,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**%b,align 8
%A=bitcast i8*%w to i8**
store i8*%z,i8**%A,align 8
%B=load i8*,i8**%c,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
ret i8*%w
G:
%H=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%H,i8**%b,align 8
%I=call i8*@sml_alloc(i32 inreg 28)#0
%J=getelementptr inbounds i8,i8*%I,i64 -4
%K=bitcast i8*%J to i32*
store i32 1342177304,i32*%K,align 4
store i8*%I,i8**%c,align 8
%L=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%M=bitcast i8*%I to i8**
store i8*%L,i8**%M,align 8
%N=getelementptr inbounds i8,i8*%I,i64 8
%O=bitcast i8*%N to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@W,i64 0,i32 2,i64 0),i8**%O,align 8
%P=getelementptr inbounds i8,i8*%I,i64 16
%Q=bitcast i8*%P to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[29x i8]}>,<{[4x i8],i32,[29x i8]}>*@X,i64 0,i32 2,i64 0),i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%I,i64 24
%S=bitcast i8*%R to i32*
store i32 7,i32*%S,align 4
%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=load i8*,i8**%c,align 8
%Z=bitcast i8*%T to i8**
store i8*%Y,i8**%Z,align 8
call void@sml_raise(i8*inreg%T)#1
unreachable
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_342(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i8**
%e=load i8*,i8**%d,align 8
%f=bitcast i8*%e to i32*
%g=load i32,i32*%f,align 4
%h=icmp eq i32%g,1
br i1%h,label%i,label%G
i:
%j=getelementptr inbounds i8,i8*%e,i64 8
%k=bitcast i8*%j to i8**
%l=load i8*,i8**%k,align 8
%m=bitcast i8*%l to i32*
%n=load i32,i32*%m,align 4
%o=icmp eq i32%n,0
br i1%o,label%p,label%G
p:
%q=getelementptr inbounds i8,i8*%l,i64 8
%r=bitcast i8*%q to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%b,align 8
%t=getelementptr inbounds i8,i8*%a,i64 8
%u=bitcast i8*%t to i8**
%v=load i8*,i8**%u,align 8
store i8*%v,i8**%c,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**%b,align 8
%A=bitcast i8*%w to i8**
store i8*%z,i8**%A,align 8
%B=load i8*,i8**%c,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
ret i8*%w
G:
%H=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%H,i8**%b,align 8
%I=call i8*@sml_alloc(i32 inreg 28)#0
%J=getelementptr inbounds i8,i8*%I,i64 -4
%K=bitcast i8*%J to i32*
store i32 1342177304,i32*%K,align 4
store i8*%I,i8**%c,align 8
%L=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%M=bitcast i8*%I to i8**
store i8*%L,i8**%M,align 8
%N=getelementptr inbounds i8,i8*%I,i64 8
%O=bitcast i8*%N to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@Z,i64 0,i32 2,i64 0),i8**%O,align 8
%P=getelementptr inbounds i8,i8*%I,i64 16
%Q=bitcast i8*%P to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[29x i8]}>,<{[4x i8],i32,[29x i8]}>*@aa,i64 0,i32 2,i64 0),i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%I,i64 24
%S=bitcast i8*%R to i32*
store i32 7,i32*%S,align 4
%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=load i8*,i8**%c,align 8
%Z=bitcast i8*%T to i8**
store i8*%Y,i8**%Z,align 8
call void@sml_raise(i8*inreg%T)#1
unreachable
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_347(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i8**
%e=load i8*,i8**%d,align 8
%f=bitcast i8*%e to i32*
%g=load i32,i32*%f,align 4
%h=icmp eq i32%g,0
br i1%h,label%C,label%i
i:
%j=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%j,i8**%b,align 8
%k=call i8*@sml_alloc(i32 inreg 28)#0
%l=getelementptr inbounds i8,i8*%k,i64 -4
%m=bitcast i8*%l to i32*
store i32 1342177304,i32*%m,align 4
store i8*%k,i8**%c,align 8
%n=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%o=bitcast i8*%k to i8**
store i8*%n,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%k,i64 8
%q=bitcast i8*%p to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@ac,i64 0,i32 2,i64 0),i8**%q,align 8
%r=getelementptr inbounds i8,i8*%k,i64 16
%s=bitcast i8*%r to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[24x i8]}>,<{[4x i8],i32,[24x i8]}>*@ad,i64 0,i32 2,i64 0),i8**%s,align 8
%t=getelementptr inbounds i8,i8*%k,i64 24
%u=bitcast i8*%t to i32*
store i32 7,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
%A=load i8*,i8**%c,align 8
%B=bitcast i8*%v to i8**
store i8*%A,i8**%B,align 8
call void@sml_raise(i8*inreg%v)#1
unreachable
C:
%D=getelementptr inbounds i8,i8*%e,i64 8
%E=bitcast i8*%D to i8**
%F=load i8*,i8**%E,align 8
store i8*%F,i8**%b,align 8
%G=getelementptr inbounds i8,i8*%a,i64 8
%H=bitcast i8*%G to i8**
%I=load i8*,i8**%H,align 8
store i8*%I,i8**%c,align 8
%J=call i8*@sml_alloc(i32 inreg 20)#0
%K=getelementptr inbounds i8,i8*%J,i64 -4
%L=bitcast i8*%K to i32*
store i32 1342177296,i32*%L,align 4
%M=load i8*,i8**%c,align 8
%N=bitcast i8*%J to i8**
store i8*%M,i8**%N,align 8
%O=load i8*,i8**%b,align 8
%P=getelementptr inbounds i8,i8*%J,i64 8
%Q=bitcast i8*%P to i8**
store i8*%O,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%J,i64 16
%S=bitcast i8*%R to i32*
store i32 3,i32*%S,align 4
ret i8*%J
}
define internal fastcc i8*@_SMLL8ruleList_350(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i32*
%e=load i32,i32*%d,align 4
%f=getelementptr inbounds i8,i8*%a,i64 8
%g=bitcast i8*%f to i8**
%h=load i8*,i8**%g,align 8
store i8*%h,i8**%b,align 8
%i=getelementptr inbounds i8,i8*%a,i64 16
%j=bitcast i8*%i to i8**
%k=load i8*,i8**%j,align 8
store i8*%k,i8**%c,align 8
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=bitcast i8*%l to i32*
%n=getelementptr inbounds i8,i8*%l,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177304,i32*%o,align 4
%p=getelementptr inbounds i8,i8*%l,i64 4
%q=bitcast i8*%p to i32*
store i32 0,i32*%q,align 1
store i32%e,i32*%m,align 4
%r=load i8*,i8**%b,align 8
%s=getelementptr inbounds i8,i8*%l,i64 8
%t=bitcast i8*%s to i8**
store i8*%r,i8**%t,align 8
%u=load i8*,i8**%c,align 8
%v=getelementptr inbounds i8,i8*%l,i64 16
%w=bitcast i8*%v to i8**
store i8*%u,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%l,i64 24
%y=bitcast i8*%x to i32*
store i32 6,i32*%y,align 4
ret i8*%l
}
define internal fastcc i8*@_SMLL8ruleList_352(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
store i8*%a,i8**%f,align 8
store i8*%b,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%c,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%b,%m]
%n=getelementptr inbounds i8,i8*%l,i64 16
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%e,align 8
%q=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%r=getelementptr inbounds i8,i8*%q,i64 16
%s=bitcast i8*%r to i8*(i8*,i8*)**
%t=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%s,align 8
%u=bitcast i8*%q to i8**
%v=load i8*,i8**%u,align 8
%w=call fastcc i8*%t(i8*inreg%v,i8*inreg 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*))
%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
%A=bitcast i8*%w to i8**
%B=load i8*,i8**%A,align 8
%C=bitcast i8**%c to i8***
%D=load i8**,i8***%C,align 8
%E=load i8*,i8**%D,align 8
%F=call fastcc i8*%z(i8*inreg%B,i8*inreg%E)
store i8*%F,i8**%d,align 8
%G=load i8*,i8**%f,align 8
%H=getelementptr inbounds i8,i8*%G,i64 8
%I=bitcast i8*%H to i8**
%J=load i8*,i8**%I,align 8
store i8*null,i8**%f,align 8
%K=bitcast i8*%G to i8**
%L=load i8*,i8**%K,align 8
%M=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%N=getelementptr inbounds i8,i8*%M,i64 8
%O=bitcast i8*%N to i8**
%P=load i8*,i8**%O,align 8
%Q=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%J,i8*inreg%L,i8*inreg%P)
store i8*%Q,i8**%c,align 8
%R=call i8*@sml_alloc(i32 inreg 28)#0
%S=getelementptr inbounds i8,i8*%R,i64 -4
%T=bitcast i8*%S to i32*
store i32 1342177304,i32*%T,align 4
%U=load i8*,i8**%e,align 8
%V=bitcast i8*%R to i8**
store i8*%U,i8**%V,align 8
%W=load i8*,i8**%d,align 8
%X=getelementptr inbounds i8,i8*%R,i64 8
%Y=bitcast i8*%X to i8**
store i8*%W,i8**%Y,align 8
%Z=load i8*,i8**%c,align 8
%aa=getelementptr inbounds i8,i8*%R,i64 16
%ab=bitcast i8*%aa to i8**
store i8*%Z,i8**%ab,align 8
%ac=getelementptr inbounds i8,i8*%R,i64 24
%ad=bitcast i8*%ac to i32*
store i32 7,i32*%ad,align 4
ret i8*%R
}
define internal fastcc i8*@_SMLL8ruleList_353(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i32*
%e=load i32,i32*%d,align 4
%f=getelementptr inbounds i8,i8*%a,i64 8
%g=bitcast i8*%f to i8**
%h=load i8*,i8**%g,align 8
store i8*%h,i8**%b,align 8
%i=getelementptr inbounds i8,i8*%a,i64 16
%j=bitcast i8*%i to i8**
%k=load i8*,i8**%j,align 8
store i8*%k,i8**%c,align 8
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=bitcast i8*%l to i32*
%n=getelementptr inbounds i8,i8*%l,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177304,i32*%o,align 4
%p=getelementptr inbounds i8,i8*%l,i64 4
%q=bitcast i8*%p to i32*
store i32 0,i32*%q,align 1
store i32%e,i32*%m,align 4
%r=load i8*,i8**%b,align 8
%s=getelementptr inbounds i8,i8*%l,i64 8
%t=bitcast i8*%s to i8**
store i8*%r,i8**%t,align 8
%u=load i8*,i8**%c,align 8
%v=getelementptr inbounds i8,i8*%l,i64 16
%w=bitcast i8*%v to i8**
store i8*%u,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%l,i64 24
%y=bitcast i8*%x to i32*
store i32 6,i32*%y,align 4
ret i8*%l
}
define internal fastcc i8*@_SMLL8ruleList_355(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
m:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
store i8*%a,i8**%f,align 8
store i8*%b,i8**%c,align 8
%g=load atomic i32,i32*@sml_check_flag unordered,align 4
%h=icmp eq i32%g,0
br i1%h,label%k,label%i
i:
call void@sml_check(i32 inreg%g)
%j=load i8*,i8**%c,align 8
br label%k
k:
%l=phi i8*[%j,%i],[%b,%m]
%n=getelementptr inbounds i8,i8*%l,i64 16
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
store i8*%p,i8**%e,align 8
%q=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%r=getelementptr inbounds i8,i8*%q,i64 16
%s=bitcast i8*%r to i8*(i8*,i8*)**
%t=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%s,align 8
%u=bitcast i8*%q to i8**
%v=load i8*,i8**%u,align 8
%w=call fastcc i8*%t(i8*inreg%v,i8*inreg 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*))
%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
%A=bitcast i8*%w to i8**
%B=load i8*,i8**%A,align 8
%C=bitcast i8**%c to i8***
%D=load i8**,i8***%C,align 8
%E=load i8*,i8**%D,align 8
%F=call fastcc i8*%z(i8*inreg%B,i8*inreg%E)
store i8*%F,i8**%d,align 8
%G=load i8*,i8**%f,align 8
%H=getelementptr inbounds i8,i8*%G,i64 8
%I=bitcast i8*%H to i8**
%J=load i8*,i8**%I,align 8
store i8*null,i8**%f,align 8
%K=bitcast i8*%G to i8**
%L=load i8*,i8**%K,align 8
%M=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%N=getelementptr inbounds i8,i8*%M,i64 8
%O=bitcast i8*%N to i8**
%P=load i8*,i8**%O,align 8
%Q=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%J,i8*inreg%L,i8*inreg%P)
store i8*%Q,i8**%c,align 8
%R=call i8*@sml_alloc(i32 inreg 28)#0
%S=getelementptr inbounds i8,i8*%R,i64 -4
%T=bitcast i8*%S to i32*
store i32 1342177304,i32*%T,align 4
%U=load i8*,i8**%e,align 8
%V=bitcast i8*%R to i8**
store i8*%U,i8**%V,align 8
%W=load i8*,i8**%d,align 8
%X=getelementptr inbounds i8,i8*%R,i64 8
%Y=bitcast i8*%X to i8**
store i8*%W,i8**%Y,align 8
%Z=load i8*,i8**%c,align 8
%aa=getelementptr inbounds i8,i8*%R,i64 16
%ab=bitcast i8*%aa to i8**
store i8*%Z,i8**%ab,align 8
%ac=getelementptr inbounds i8,i8*%R,i64 24
%ad=bitcast i8*%ac to i32*
store i32 7,i32*%ad,align 4
ret i8*%R
}
define internal fastcc i8*@_SMLL9argExpOpt_357(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=getelementptr inbounds i8,i8*%k,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%k to i8**
%r=load i8*,i8**%q,align 8
%s=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%p,i8*inreg%r,i8*inreg%m)
ret i8*%s
}
define internal fastcc i8*@_SMLL9argExpOpt_362(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=getelementptr inbounds i8,i8*%k,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%k to i8**
%r=load i8*,i8**%q,align 8
%s=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%p,i8*inreg%r,i8*inreg%m)
ret i8*%s
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_369(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=getelementptr inbounds i8,i8*%k,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%k to i8**
%r=load i8*,i8**%q,align 8
%s=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%p,i8*inreg%r,i8*inreg%m)
ret i8*%s
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_370(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i32*
%e=load i32,i32*%d,align 4
%f=getelementptr inbounds i8,i8*%a,i64 8
%g=bitcast i8*%f to i8**
%h=load i8*,i8**%g,align 8
store i8*%h,i8**%b,align 8
%i=getelementptr inbounds i8,i8*%a,i64 16
%j=bitcast i8*%i to i8**
%k=load i8*,i8**%j,align 8
store i8*%k,i8**%c,align 8
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=bitcast i8*%l to i32*
%n=getelementptr inbounds i8,i8*%l,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177304,i32*%o,align 4
%p=getelementptr inbounds i8,i8*%l,i64 4
%q=bitcast i8*%p to i32*
store i32 0,i32*%q,align 1
store i32%e,i32*%m,align 4
%r=load i8*,i8**%b,align 8
%s=getelementptr inbounds i8,i8*%l,i64 8
%t=bitcast i8*%s to i8**
store i8*%r,i8**%t,align 8
%u=load i8*,i8**%c,align 8
%v=getelementptr inbounds i8,i8*%l,i64 16
%w=bitcast i8*%v to i8**
store i8*%u,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%l,i64 24
%y=bitcast i8*%x to i32*
store i32 6,i32*%y,align 4
ret i8*%l
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_372(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i32*
%e=load i32,i32*%d,align 4
%f=getelementptr inbounds i8,i8*%a,i64 8
%g=bitcast i8*%f to i8**
%h=load i8*,i8**%g,align 8
store i8*%h,i8**%b,align 8
%i=getelementptr inbounds i8,i8*%a,i64 16
%j=bitcast i8*%i to i8**
%k=load i8*,i8**%j,align 8
store i8*%k,i8**%c,align 8
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=bitcast i8*%l to i32*
%n=getelementptr inbounds i8,i8*%l,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177304,i32*%o,align 4
%p=getelementptr inbounds i8,i8*%l,i64 4
%q=bitcast i8*%p to i32*
store i32 0,i32*%q,align 1
store i32%e,i32*%m,align 4
%r=load i8*,i8**%b,align 8
%s=getelementptr inbounds i8,i8*%l,i64 8
%t=bitcast i8*%s to i8**
store i8*%r,i8**%t,align 8
%u=load i8*,i8**%c,align 8
%v=getelementptr inbounds i8,i8*%l,i64 16
%w=bitcast i8*%v to i8**
store i8*%u,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%l,i64 24
%y=bitcast i8*%x to i32*
store i32 6,i32*%y,align 4
ret i8*%l
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_374(i8*inreg%a)#4 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
%d=bitcast i8*%a to i32*
%e=load i32,i32*%d,align 4
%f=getelementptr inbounds i8,i8*%a,i64 8
%g=bitcast i8*%f to i8**
%h=load i8*,i8**%g,align 8
store i8*%h,i8**%b,align 8
%i=getelementptr inbounds i8,i8*%a,i64 16
%j=bitcast i8*%i to i8**
%k=load i8*,i8**%j,align 8
store i8*%k,i8**%c,align 8
%l=call i8*@sml_alloc(i32 inreg 28)#0
%m=bitcast i8*%l to i32*
%n=getelementptr inbounds i8,i8*%l,i64 -4
%o=bitcast i8*%n to i32*
store i32 1342177304,i32*%o,align 4
%p=getelementptr inbounds i8,i8*%l,i64 4
%q=bitcast i8*%p to i32*
store i32 0,i32*%q,align 1
store i32%e,i32*%m,align 4
%r=load i8*,i8**%b,align 8
%s=getelementptr inbounds i8,i8*%l,i64 8
%t=bitcast i8*%s to i8**
store i8*%r,i8**%t,align 8
%u=load i8*,i8**%c,align 8
%v=getelementptr inbounds i8,i8*%l,i64 16
%w=bitcast i8*%v to i8**
store i8*%u,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%l,i64 24
%y=bitcast i8*%x to i32*
store i32 6,i32*%y,align 4
ret i8*%l
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_376(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=getelementptr inbounds i8,i8*%k,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%k to i8**
%r=load i8*,i8**%q,align 8
%s=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%p,i8*inreg%r,i8*inreg%m)
ret i8*%s
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_377(i8*inreg%a,i8*inreg%b)#4 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
%g=bitcast i8*%b to i8**
%h=load i8*,i8**%g,align 8
store i8*%h,i8**%c,align 8
%i=getelementptr inbounds i8,i8*%b,i64 8
%j=bitcast i8*%i to i8**
%k=load i8*,i8**%j,align 8
store i8*%k,i8**%d,align 8
%l=bitcast i8*%a to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%e,align 8
%n=call i8*@sml_alloc(i32 inreg 28)#0
%o=getelementptr inbounds i8,i8*%n,i64 -4
%p=bitcast i8*%o to i32*
store i32 1342177304,i32*%p,align 4
store i8*%n,i8**%f,align 8
%q=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%r=bitcast i8*%n to i8**
store i8*%q,i8**%r,align 8
%s=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%t=getelementptr inbounds i8,i8*%n,i64 8
%u=bitcast i8*%t to i8**
store i8*%s,i8**%u,align 8
%v=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%w=getelementptr inbounds i8,i8*%n,i64 16
%x=bitcast i8*%w to i8**
store i8*%v,i8**%x,align 8
%y=getelementptr inbounds i8,i8*%n,i64 24
%z=bitcast i8*%y to i32*
store i32 7,i32*%z,align 4
%A=call i8*@sml_alloc(i32 inreg 20)#0
%B=bitcast i8*%A to i32*
%C=getelementptr inbounds i8,i8*%A,i64 -4
%D=bitcast i8*%C to i32*
store i32 1342177296,i32*%D,align 4
%E=getelementptr inbounds i8,i8*%A,i64 4
%F=bitcast i8*%E to i32*
store i32 0,i32*%F,align 1
store i32 12,i32*%B,align 4
%G=load i8*,i8**%f,align 8
%H=getelementptr inbounds i8,i8*%A,i64 8
%I=bitcast i8*%H to i8**
store i8*%G,i8**%I,align 8
%J=getelementptr inbounds i8,i8*%A,i64 16
%K=bitcast i8*%J to i32*
store i32 2,i32*%K,align 4
ret i8*%A
}
define internal fastcc i8*@_SMLL6fields_378(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%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
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
call void@llvm.gcroot(i8**%i,i8*null)#0
store i8*%a,i8**%e,align 8
%j=bitcast i8*%b to i8**
%k=load i8*,i8**%j,align 8
store i8*%k,i8**%c,align 8
%l=getelementptr inbounds i8,i8*%b,i64 8
%m=bitcast i8*%l to i8**
%n=load i8*,i8**%m,align 8
store i8*%n,i8**%d,align 8
%o=getelementptr inbounds i8,i8*%a,i64 8
%p=bitcast i8*%o to i8**
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%f,align 8
%r=bitcast i8*%a to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%g,align 8
store i8*%q,i8**%h,align 8
%t=call i8*@sml_alloc(i32 inreg 20)#0
%u=getelementptr inbounds i8,i8*%t,i64 -4
%v=bitcast i8*%u to i32*
store i32 1342177296,i32*%v,align 4
store i8*%t,i8**%i,align 8
%w=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%x=bitcast i8*%t to i8**
store i8*%w,i8**%x,align 8
%y=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%z=getelementptr inbounds i8,i8*%t,i64 8
%A=bitcast i8*%z to i8**
store i8*%y,i8**%A,align 8
%B=getelementptr inbounds i8,i8*%t,i64 16
%C=bitcast i8*%B to i32*
store i32 3,i32*%C,align 4
%D=call i8*@sml_alloc(i32 inreg 20)#0
%E=getelementptr inbounds i8,i8*%D,i64 -4
%F=bitcast i8*%E to i32*
store i32 1342177296,i32*%F,align 4
store i8*%D,i8**%h,align 8
%G=getelementptr inbounds i8,i8*%D,i64 4
%H=bitcast i8*%G to i32*
store i32 0,i32*%H,align 1
%I=bitcast i8*%D to i32*
store i32 26,i32*%I,align 4
%J=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%K=getelementptr inbounds i8,i8*%D,i64 8
%L=bitcast i8*%K to i8**
store i8*%J,i8**%L,align 8
%M=getelementptr inbounds i8,i8*%D,i64 16
%N=bitcast i8*%M to i32*
store i32 2,i32*%N,align 4
%O=load i8*,i8**%e,align 8
%P=getelementptr inbounds i8,i8*%O,i64 16
%Q=bitcast i8*%P to i8**
%R=load i8*,i8**%Q,align 8
store i8*%R,i8**%e,align 8
%S=call i8*@sml_alloc(i32 inreg 44)#0
%T=getelementptr inbounds i8,i8*%S,i64 -4
%U=bitcast i8*%T to i32*
store i32 1342177320,i32*%U,align 4
store i8*%S,i8**%g,align 8
%V=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%W=bitcast i8*%S to i8**
store i8*%V,i8**%W,align 8
%X=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Y=getelementptr inbounds i8,i8*%S,i64 8
%Z=bitcast i8*%Y to i8**
store i8*%X,i8**%Z,align 8
%aa=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%ab=getelementptr inbounds i8,i8*%S,i64 16
%ac=bitcast i8*%ab to i8**
store i8*%aa,i8**%ac,align 8
%ad=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ae=getelementptr inbounds i8,i8*%S,i64 24
%af=bitcast i8*%ae to i8**
store i8*%ad,i8**%af,align 8
%ag=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ah=getelementptr inbounds i8,i8*%S,i64 32
%ai=bitcast i8*%ah to i8**
store i8*%ag,i8**%ai,align 8
%aj=getelementptr inbounds i8,i8*%S,i64 40
%ak=bitcast i8*%aj to i32*
store i32 31,i32*%ak,align 4
%al=call i8*@sml_alloc(i32 inreg 20)#0
%am=bitcast i8*%al to i32*
%an=getelementptr inbounds i8,i8*%al,i64 -4
%ao=bitcast i8*%an to i32*
store i32 1342177296,i32*%ao,align 4
%ap=getelementptr inbounds i8,i8*%al,i64 4
%aq=bitcast i8*%ap to i32*
store i32 0,i32*%aq,align 1
store i32 20,i32*%am,align 4
%ar=load i8*,i8**%g,align 8
%as=getelementptr inbounds i8,i8*%al,i64 8
%at=bitcast i8*%as to i8**
store i8*%ar,i8**%at,align 8
%au=getelementptr inbounds i8,i8*%al,i64 16
%av=bitcast i8*%au to i32*
store i32 2,i32*%av,align 4
ret i8*%al
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_379(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=getelementptr inbounds i8,i8*%n,i64 8
%r=bitcast i8*%q to i8**
%s=load i8*,i8**%r,align 8
store i8*%s,i8**%e,align 8
%t=load i8**,i8***%p,align 8
%u=load i8*,i8**%t,align 8
%v=bitcast i8*%u to i32*
%w=load i32,i32*%v,align 4
%x=getelementptr inbounds i8,i8*%u,i64 8
%y=bitcast i8*%x to i8**
%z=load i8*,i8**%y,align 8
store i8*%z,i8**%g,align 8
%A=load i8**,i8***%p,align 8
%B=load i8*,i8**%A,align 8
%C=getelementptr inbounds i8,i8*%B,i64 16
%D=bitcast i8*%C to i8**
%E=load i8*,i8**%D,align 8
store i8*%E,i8**%h,align 8
%F=call i8*@sml_alloc(i32 inreg 28)#0
%G=getelementptr inbounds i8,i8*%F,i64 -4
%H=bitcast i8*%G to i32*
store i32 1342177304,i32*%H,align 4
store i8*%F,i8**%d,align 8
%I=getelementptr inbounds i8,i8*%F,i64 4
%J=bitcast i8*%I to i32*
store i32 0,i32*%J,align 1
%K=bitcast i8*%F to i32*
store i32%w,i32*%K,align 4
%L=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%M=getelementptr inbounds i8,i8*%F,i64 8
%N=bitcast i8*%M to i8**
store i8*%L,i8**%N,align 8
%O=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%P=getelementptr inbounds i8,i8*%F,i64 16
%Q=bitcast i8*%P to i8**
store i8*%O,i8**%Q,align 8
%R=getelementptr inbounds i8,i8*%F,i64 24
%S=bitcast i8*%R to i32*
store i32 6,i32*%S,align 4
%T=load i8*,i8**%f,align 8
%U=getelementptr inbounds i8,i8*%T,i64 16
%V=bitcast i8*%U to i8**
%W=load i8*,i8**%V,align 8
%X=bitcast i8*%T to i8**
%Y=load i8*,i8**%X,align 8
%Z=bitcast i8**%c to i8***
%aa=load i8**,i8***%Z,align 8
store i8*null,i8**%c,align 8
%ab=load i8*,i8**%aa,align 8
%ac=getelementptr inbounds i8,i8*%ab,i64 8
%ad=bitcast i8*%ac to i8**
%ae=load i8*,i8**%ad,align 8
%af=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%W,i8*inreg%Y,i8*inreg%ae)
store i8*%af,i8**%c,align 8
%ag=load i8*,i8**%f,align 8
%ah=getelementptr inbounds i8,i8*%ag,i64 8
%ai=bitcast i8*%ah to i8**
%aj=load i8*,i8**%ai,align 8
store i8*%aj,i8**%g,align 8
%ak=call i8*@sml_alloc(i32 inreg 28)#0
%al=getelementptr inbounds i8,i8*%ak,i64 -4
%am=bitcast i8*%al to i32*
store i32 1342177304,i32*%am,align 4
store i8*%ak,i8**%h,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=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%aq=getelementptr inbounds i8,i8*%ak,i64 8
%ar=bitcast i8*%aq to i8**
store i8*%ap,i8**%ar,align 8
%as=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%at=getelementptr inbounds i8,i8*%ak,i64 16
%au=bitcast i8*%at to i8**
store i8*%as,i8**%au,align 8
%av=getelementptr inbounds i8,i8*%ak,i64 24
%aw=bitcast i8*%av to i32*
store i32 7,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
store i8*%ax,i8**%g,align 8
%aA=getelementptr inbounds i8,i8*%ax,i64 4
%aB=bitcast i8*%aA to i32*
store i32 0,i32*%aB,align 1
%aC=bitcast i8*%ax to i32*
store i32 2,i32*%aC,align 4
%aD=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%aE=getelementptr inbounds i8,i8*%ax,i64 8
%aF=bitcast i8*%aE to i8**
store i8*%aD,i8**%aF,align 8
%aG=getelementptr inbounds i8,i8*%ax,i64 16
%aH=bitcast i8*%aG to i32*
store i32 2,i32*%aH,align 4
%aI=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aJ=getelementptr inbounds i8,i8*%aI,i64 8
%aK=bitcast i8*%aJ to i8**
%aL=load i8*,i8**%aK,align 8
store i8*%aL,i8**%c,align 8
%aM=call i8*@sml_alloc(i32 inreg 28)#0
%aN=getelementptr inbounds i8,i8*%aM,i64 -4
%aO=bitcast i8*%aN to i32*
store i32 1342177304,i32*%aO,align 4
store i8*%aM,i8**%d,align 8
%aP=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aQ=bitcast i8*%aM to i8**
store i8*%aP,i8**%aQ,align 8
%aR=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%aS=getelementptr inbounds i8,i8*%aM,i64 8
%aT=bitcast i8*%aS to i8**
store i8*%aR,i8**%aT,align 8
%aU=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aV=getelementptr inbounds i8,i8*%aM,i64 16
%aW=bitcast i8*%aV to i8**
store i8*%aU,i8**%aW,align 8
%aX=getelementptr inbounds i8,i8*%aM,i64 24
%aY=bitcast i8*%aX to i32*
store i32 7,i32*%aY,align 4
%aZ=call i8*@sml_alloc(i32 inreg 20)#0
%a0=bitcast i8*%aZ to i32*
%a1=getelementptr inbounds i8,i8*%aZ,i64 -4
%a2=bitcast i8*%a1 to i32*
store i32 1342177296,i32*%a2,align 4
%a3=getelementptr inbounds i8,i8*%aZ,i64 4
%a4=bitcast i8*%a3 to i32*
store i32 0,i32*%a4,align 1
store i32 12,i32*%a0,align 4
%a5=load i8*,i8**%d,align 8
%a6=getelementptr inbounds i8,i8*%aZ,i64 8
%a7=bitcast i8*%a6 to i8**
store i8*%a5,i8**%a7,align 8
%a8=getelementptr inbounds i8,i8*%aZ,i64 16
%a9=bitcast i8*%a8 to i32*
store i32 2,i32*%a9,align 4
ret i8*%aZ
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_380(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=getelementptr inbounds i8,i8*%k,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%k to i8**
%r=load i8*,i8**%q,align 8
%s=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%p,i8*inreg%r,i8*inreg%m)
ret i8*%s
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation11compileDeclE_401(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
n:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%a,i8**%e,align 8
store i8*%b,i8**%c,align 8
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%l,label%j
j:
call void@sml_check(i32 inreg%h)
%k=load i8*,i8**%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
%r=bitcast i8*%q to i32*
%s=load i32,i32*%r,align 4
%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**%f,align 8
%w=getelementptr inbounds i8,i8*%q,i64 16
%x=bitcast i8*%w to i8**
%y=load i8*,i8**%x,align 8
store i8*%y,i8**%g,align 8
%z=call i8*@sml_alloc(i32 inreg 28)#0
%A=getelementptr inbounds i8,i8*%z,i64 -4
%B=bitcast i8*%A to i32*
store i32 1342177304,i32*%B,align 4
store i8*%z,i8**%d,align 8
%C=getelementptr inbounds i8,i8*%z,i64 4
%D=bitcast i8*%C to i32*
store i32 0,i32*%D,align 1
%E=bitcast i8*%z to i32*
store i32%s,i32*%E,align 4
%F=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%G=getelementptr inbounds i8,i8*%z,i64 8
%H=bitcast i8*%G to i8**
store i8*%F,i8**%H,align 8
%I=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%J=getelementptr inbounds i8,i8*%z,i64 16
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%z,i64 24
%M=bitcast i8*%L to i32*
store i32 6,i32*%M,align 4
%N=load i8*,i8**%e,align 8
%O=getelementptr inbounds i8,i8*%N,i64 8
%P=bitcast i8*%O to i8**
%Q=load i8*,i8**%P,align 8
store i8*null,i8**%e,align 8
%R=bitcast i8*%N to i8**
%S=load i8*,i8**%R,align 8
%T=bitcast i8**%c to i8***
%U=load i8**,i8***%T,align 8
store i8*null,i8**%c,align 8
%V=load i8*,i8**%U,align 8
%W=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%Q,i8*inreg%S,i8*inreg%V)
store i8*%W,i8**%c,align 8
%X=call i8*@sml_alloc(i32 inreg 20)#0
%Y=getelementptr inbounds i8,i8*%X,i64 -4
%Z=bitcast i8*%Y to i32*
store i32 1342177296,i32*%Z,align 4
%aa=load i8*,i8**%c,align 8
%ab=bitcast i8*%X to i8**
store i8*%aa,i8**%ab,align 8
%ac=load i8*,i8**%d,align 8
%ad=getelementptr inbounds i8,i8*%X,i64 8
%ae=bitcast i8*%ad to i8**
store i8*%ac,i8**%ae,align 8
%af=getelementptr inbounds i8,i8*%X,i64 16
%ag=bitcast i8*%af to i32*
store i32 3,i32*%ag,align 4
ret i8*%X
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation11compileDeclE_402(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
n:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
%e=alloca i8*,align 8
%f=alloca i8*,align 8
%g=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%a,i8**%e,align 8
store i8*%b,i8**%c,align 8
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%l,label%j
j:
call void@sml_check(i32 inreg%h)
%k=load i8*,i8**%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
%r=bitcast i8*%q to i32*
%s=load i32,i32*%r,align 4
%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**%f,align 8
%w=getelementptr inbounds i8,i8*%q,i64 16
%x=bitcast i8*%w to i8**
%y=load i8*,i8**%x,align 8
store i8*%y,i8**%g,align 8
%z=call i8*@sml_alloc(i32 inreg 28)#0
%A=getelementptr inbounds i8,i8*%z,i64 -4
%B=bitcast i8*%A to i32*
store i32 1342177304,i32*%B,align 4
store i8*%z,i8**%d,align 8
%C=getelementptr inbounds i8,i8*%z,i64 4
%D=bitcast i8*%C to i32*
store i32 0,i32*%D,align 1
%E=bitcast i8*%z to i32*
store i32%s,i32*%E,align 4
%F=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%G=getelementptr inbounds i8,i8*%z,i64 8
%H=bitcast i8*%G to i8**
store i8*%F,i8**%H,align 8
%I=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%J=getelementptr inbounds i8,i8*%z,i64 16
%K=bitcast i8*%J to i8**
store i8*%I,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%z,i64 24
%M=bitcast i8*%L to i32*
store i32 6,i32*%M,align 4
%N=load i8*,i8**%e,align 8
%O=getelementptr inbounds i8,i8*%N,i64 8
%P=bitcast i8*%O to i8**
%Q=load i8*,i8**%P,align 8
store i8*null,i8**%e,align 8
%R=bitcast i8*%N to i8**
%S=load i8*,i8**%R,align 8
%T=bitcast i8**%c to i8***
%U=load i8**,i8***%T,align 8
store i8*null,i8**%c,align 8
%V=load i8*,i8**%U,align 8
%W=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%Q,i8*inreg%S,i8*inreg%V)
store i8*%W,i8**%c,align 8
%X=call i8*@sml_alloc(i32 inreg 20)#0
%Y=getelementptr inbounds i8,i8*%X,i64 -4
%Z=bitcast i8*%Y to i32*
store i32 1342177296,i32*%Z,align 4
%aa=load i8*,i8**%c,align 8
%ab=bitcast i8*%X to i8**
store i8*%aa,i8**%ab,align 8
%ac=load i8*,i8**%d,align 8
%ad=getelementptr inbounds i8,i8*%X,i64 8
%ae=bitcast i8*%ad to i8**
store i8*%ac,i8**%ae,align 8
%af=getelementptr inbounds i8,i8*%X,i64 16
%ag=bitcast i8*%af to i32*
store i32 3,i32*%ag,align 4
ret i8*%X
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%a,i8*inreg%b,i8*inreg%c)#2 gc"smlsharp"{
V:
%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
%n=alloca i8*,align 8
%o=alloca i8*,align 8
%p=alloca i8*,align 8
%q=alloca i8*,align 8
%r=alloca i8*,align 8
%s=alloca i8*,align 8
%t=alloca i8*,align 8
%u=alloca i8*,align 8
%v=alloca i8*,align 8
%w=alloca i8*,align 8
%x=alloca i8*,align 8
%y=alloca i8*,align 8
%z=alloca i8*,align 8
%A=alloca i8*,align 8
%B=alloca i8*,align 8
%C=alloca i8*,align 8
%D=alloca i8*,align 8
%E=alloca i8*,align 8
%F=alloca i8*,align 8
%G=alloca i8*,align 8
%H=alloca i8*,align 8
%I=alloca i8*,align 8
%J=alloca i8*,align 8
%K=alloca i8*,align 8
%L=alloca i8*,align 8
%M=alloca i8*,align 8
%N=alloca i8*,align 8
call void@llvm.gcroot(i8**%D,i8*null)#0
call void@llvm.gcroot(i8**%E,i8*null)#0
call void@llvm.gcroot(i8**%F,i8*null)#0
call void@llvm.gcroot(i8**%G,i8*null)#0
call void@llvm.gcroot(i8**%H,i8*null)#0
call void@llvm.gcroot(i8**%I,i8*null)#0
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
call void@llvm.gcroot(i8**%N,i8*null)#0
store i8*%a,i8**%M,align 8
store i8*%b,i8**%D,align 8
store i8*%c,i8**%E,align 8
%O=load atomic i32,i32*@sml_check_flag unordered,align 4
%P=icmp eq i32%O,0
br i1%P,label%T,label%Q
Q:
call void@sml_check(i32 inreg%O)
%R=load i8*,i8**%E,align 8
%S=load i8*,i8**%D,align 8
br label%T
T:
%U=phi i8*[%S,%Q],[%b,%V]
%W=phi i8*[%R,%Q],[%c,%V]
store i8*%U,i8**%G,align 8
%X=icmp eq i8*%W,null
br i1%X,label%D8,label%Y
Y:
%Z=bitcast i8*%W to i32*
%aa=load i32,i32*%Z,align 4
switch i32%aa,label%ab[
i32 0,label%awg
i32 2,label%avW
i32 37,label%Sa
i32 3,label%Rl
i32 5,label%QR
i32 6,label%FE
i32 8,label%Fk
i32 9,label%Es
i32 14,label%D8
i32 16,label%CD
i32 17,label%Bl
i32 15,label%z5
i32 18,label%zB
i32 19,label%zh
i32 22,label%yr
i32 21,label%w3
i32 1,label%vZ
i32 20,label%u1
i32 23,label%tL
i32 4,label%sx
i32 39,label%rh
i32 25,label%qh
i32 26,label%mc
i32 27,label%lc
i32 28,label%ku
i32 29,label%jG
i32 30,label%i8
i32 31,label%iw
i32 32,label%hH
i32 33,label%fF
i32 35,label%eR
i32 36,label%en
i32 38,label%dF
i32 40,label%cT
i32 24,label%cz
i32 7,label%cf
i32 10,label%bV
i32 11,label%bB
i32 12,label%bh
i32 13,label%aX
i32 34,label%at
]
ab:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
call void@sml_matchcomp_bug()
%ac=load i8*,i8**@_SMLZ5Match,align 8
store i8*%ac,i8**%D,align 8
%ad=call i8*@sml_alloc(i32 inreg 20)#0
%ae=getelementptr inbounds i8,i8*%ad,i64 -4
%af=bitcast i8*%ae to i32*
store i32 1342177296,i32*%af,align 4
store i8*%ad,i8**%E,align 8
%ag=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%ah=bitcast i8*%ad to i8**
store i8*%ag,i8**%ah,align 8
%ai=getelementptr inbounds i8,i8*%ad,i64 8
%aj=bitcast i8*%ai to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@aI,i64 0,i32 2,i64 0),i8**%aj,align 8
%ak=getelementptr inbounds i8,i8*%ad,i64 16
%al=bitcast i8*%ak to i32*
store i32 3,i32*%al,align 4
%am=call i8*@sml_alloc(i32 inreg 60)#0
%an=getelementptr inbounds i8,i8*%am,i64 -4
%ao=bitcast i8*%an to i32*
store i32 1342177336,i32*%ao,align 4
%ap=getelementptr inbounds i8,i8*%am,i64 56
%aq=bitcast i8*%ap to i32*
store i32 1,i32*%aq,align 4
%ar=load i8*,i8**%E,align 8
%as=bitcast i8*%am to i8**
store i8*%ar,i8**%as,align 8
call void@sml_raise(i8*inreg%am)#1
unreachable
at:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%au=getelementptr inbounds i8,i8*%W,i64 8
%av=bitcast i8*%au to i8**
%aw=load i8*,i8**%av,align 8
%ax=bitcast i8*%aw to i8**
%ay=load i8*,i8**%ax,align 8
store i8*%ay,i8**%D,align 8
%az=getelementptr inbounds i8,i8*%aw,i64 8
%aA=bitcast i8*%az to i8**
%aB=load i8*,i8**%aA,align 8
store i8*%aB,i8**%E,align 8
%aC=call i8*@sml_alloc(i32 inreg 20)#0
%aD=getelementptr inbounds i8,i8*%aC,i64 -4
%aE=bitcast i8*%aD to i32*
store i32 1342177296,i32*%aE,align 4
store i8*%aC,i8**%F,align 8
%aF=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%aG=bitcast i8*%aC to i8**
store i8*%aF,i8**%aG,align 8
%aH=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%aI=getelementptr inbounds i8,i8*%aC,i64 8
%aJ=bitcast i8*%aI to i8**
store i8*%aH,i8**%aJ,align 8
%aK=getelementptr inbounds i8,i8*%aC,i64 16
%aL=bitcast i8*%aK to i32*
store i32 3,i32*%aL,align 4
%aM=call i8*@sml_alloc(i32 inreg 20)#0
%aN=bitcast i8*%aM to i32*
%aO=getelementptr inbounds i8,i8*%aM,i64 -4
%aP=bitcast i8*%aO to i32*
store i32 1342177296,i32*%aP,align 4
%aQ=getelementptr inbounds i8,i8*%aM,i64 4
%aR=bitcast i8*%aQ to i32*
store i32 0,i32*%aR,align 1
store i32 19,i32*%aN,align 4
%aS=load i8*,i8**%F,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
ret i8*%aM
aX:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%aY=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%aY,i8**%D,align 8
%aZ=call i8*@sml_alloc(i32 inreg 28)#0
%a0=getelementptr inbounds i8,i8*%aZ,i64 -4
%a1=bitcast i8*%a0 to i32*
store i32 1342177304,i32*%a1,align 4
store i8*%aZ,i8**%E,align 8
%a2=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%a3=bitcast i8*%aZ to i8**
store i8*%a2,i8**%a3,align 8
%a4=getelementptr inbounds i8,i8*%aZ,i64 8
%a5=bitcast i8*%a4 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aG,i64 0,i32 2,i64 0),i8**%a5,align 8
%a6=getelementptr inbounds i8,i8*%aZ,i64 16
%a7=bitcast i8*%a6 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[26x i8]}>,<{[4x i8],i32,[26x i8]}>*@aH,i64 0,i32 2,i64 0),i8**%a7,align 8
%a8=getelementptr inbounds i8,i8*%aZ,i64 24
%a9=bitcast i8*%a8 to i32*
store i32 7,i32*%a9,align 4
%ba=call i8*@sml_alloc(i32 inreg 60)#0
%bb=getelementptr inbounds i8,i8*%ba,i64 -4
%bc=bitcast i8*%bb to i32*
store i32 1342177336,i32*%bc,align 4
%bd=getelementptr inbounds i8,i8*%ba,i64 56
%be=bitcast i8*%bd to i32*
store i32 1,i32*%be,align 4
%bf=load i8*,i8**%E,align 8
%bg=bitcast i8*%ba to i8**
store i8*%bf,i8**%bg,align 8
call void@sml_raise(i8*inreg%ba)#1
unreachable
bh:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%bi=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%bi,i8**%D,align 8
%bj=call i8*@sml_alloc(i32 inreg 28)#0
%bk=getelementptr inbounds i8,i8*%bj,i64 -4
%bl=bitcast i8*%bk to i32*
store i32 1342177304,i32*%bl,align 4
store i8*%bj,i8**%E,align 8
%bm=load i8*,i8**%D,align 8
store i8*null,i8**%D,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,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aE,i64 0,i32 2,i64 0),i8**%bp,align 8
%bq=getelementptr inbounds i8,i8*%bj,i64 16
%br=bitcast i8*%bq to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[25x i8]}>,<{[4x i8],i32,[25x i8]}>*@aF,i64 0,i32 2,i64 0),i8**%br,align 8
%bs=getelementptr inbounds i8,i8*%bj,i64 24
%bt=bitcast i8*%bs to i32*
store i32 7,i32*%bt,align 4
%bu=call i8*@sml_alloc(i32 inreg 60)#0
%bv=getelementptr inbounds i8,i8*%bu,i64 -4
%bw=bitcast i8*%bv to i32*
store i32 1342177336,i32*%bw,align 4
%bx=getelementptr inbounds i8,i8*%bu,i64 56
%by=bitcast i8*%bx to i32*
store i32 1,i32*%by,align 4
%bz=load i8*,i8**%E,align 8
%bA=bitcast i8*%bu to i8**
store i8*%bz,i8**%bA,align 8
call void@sml_raise(i8*inreg%bu)#1
unreachable
bB:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%bC=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%bC,i8**%D,align 8
%bD=call i8*@sml_alloc(i32 inreg 28)#0
%bE=getelementptr inbounds i8,i8*%bD,i64 -4
%bF=bitcast i8*%bE to i32*
store i32 1342177304,i32*%bF,align 4
store i8*%bD,i8**%E,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*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aC,i64 0,i32 2,i64 0),i8**%bJ,align 8
%bK=getelementptr inbounds i8,i8*%bD,i64 16
%bL=bitcast i8*%bK to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[26x i8]}>,<{[4x i8],i32,[26x i8]}>*@aD,i64 0,i32 2,i64 0),i8**%bL,align 8
%bM=getelementptr inbounds i8,i8*%bD,i64 24
%bN=bitcast i8*%bM to i32*
store i32 7,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**%E,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:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%bW=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%bW,i8**%D,align 8
%bX=call i8*@sml_alloc(i32 inreg 28)#0
%bY=getelementptr inbounds i8,i8*%bX,i64 -4
%bZ=bitcast i8*%bY to i32*
store i32 1342177304,i32*%bZ,align 4
store i8*%bX,i8**%E,align 8
%b0=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%b1=bitcast i8*%bX to i8**
store i8*%b0,i8**%b1,align 8
%b2=getelementptr inbounds i8,i8*%bX,i64 8
%b3=bitcast i8*%b2 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aA,i64 0,i32 2,i64 0),i8**%b3,align 8
%b4=getelementptr inbounds i8,i8*%bX,i64 16
%b5=bitcast i8*%b4 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[24x i8]}>,<{[4x i8],i32,[24x i8]}>*@aB,i64 0,i32 2,i64 0),i8**%b5,align 8
%b6=getelementptr inbounds i8,i8*%bX,i64 24
%b7=bitcast i8*%b6 to i32*
store i32 7,i32*%b7,align 4
%b8=call i8*@sml_alloc(i32 inreg 60)#0
%b9=getelementptr inbounds i8,i8*%b8,i64 -4
%ca=bitcast i8*%b9 to i32*
store i32 1342177336,i32*%ca,align 4
%cb=getelementptr inbounds i8,i8*%b8,i64 56
%cc=bitcast i8*%cb to i32*
store i32 1,i32*%cc,align 4
%cd=load i8*,i8**%E,align 8
%ce=bitcast i8*%b8 to i8**
store i8*%cd,i8**%ce,align 8
call void@sml_raise(i8*inreg%b8)#1
unreachable
cf:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%cg=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%cg,i8**%D,align 8
%ch=call i8*@sml_alloc(i32 inreg 28)#0
%ci=getelementptr inbounds i8,i8*%ch,i64 -4
%cj=bitcast i8*%ci to i32*
store i32 1342177304,i32*%cj,align 4
store i8*%ch,i8**%E,align 8
%ck=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%cl=bitcast i8*%ch to i8**
store i8*%ck,i8**%cl,align 8
%cm=getelementptr inbounds i8,i8*%ch,i64 8
%cn=bitcast i8*%cm to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@ay,i64 0,i32 2,i64 0),i8**%cn,align 8
%co=getelementptr inbounds i8,i8*%ch,i64 16
%cp=bitcast i8*%co to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[22x i8]}>,<{[4x i8],i32,[22x i8]}>*@az,i64 0,i32 2,i64 0),i8**%cp,align 8
%cq=getelementptr inbounds i8,i8*%ch,i64 24
%cr=bitcast i8*%cq to i32*
store i32 7,i32*%cr,align 4
%cs=call i8*@sml_alloc(i32 inreg 60)#0
%ct=getelementptr inbounds i8,i8*%cs,i64 -4
%cu=bitcast i8*%ct to i32*
store i32 1342177336,i32*%cu,align 4
%cv=getelementptr inbounds i8,i8*%cs,i64 56
%cw=bitcast i8*%cv to i32*
store i32 1,i32*%cw,align 4
%cx=load i8*,i8**%E,align 8
%cy=bitcast i8*%cs to i8**
store i8*%cx,i8**%cy,align 8
call void@sml_raise(i8*inreg%cs)#1
unreachable
cz:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%cA=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%cA,i8**%D,align 8
%cB=call i8*@sml_alloc(i32 inreg 28)#0
%cC=getelementptr inbounds i8,i8*%cB,i64 -4
%cD=bitcast i8*%cC to i32*
store i32 1342177304,i32*%cD,align 4
store i8*%cB,i8**%E,align 8
%cE=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%cF=bitcast i8*%cB to i8**
store i8*%cE,i8**%cF,align 8
%cG=getelementptr inbounds i8,i8*%cB,i64 8
%cH=bitcast i8*%cG to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aw,i64 0,i32 2,i64 0),i8**%cH,align 8
%cI=getelementptr inbounds i8,i8*%cB,i64 16
%cJ=bitcast i8*%cI to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[19x i8]}>,<{[4x i8],i32,[19x i8]}>*@ax,i64 0,i32 2,i64 0),i8**%cJ,align 8
%cK=getelementptr inbounds i8,i8*%cB,i64 24
%cL=bitcast i8*%cK to i32*
store i32 7,i32*%cL,align 4
%cM=call i8*@sml_alloc(i32 inreg 60)#0
%cN=getelementptr inbounds i8,i8*%cM,i64 -4
%cO=bitcast i8*%cN to i32*
store i32 1342177336,i32*%cO,align 4
%cP=getelementptr inbounds i8,i8*%cM,i64 56
%cQ=bitcast i8*%cP to i32*
store i32 1,i32*%cQ,align 4
%cR=load i8*,i8**%E,align 8
%cS=bitcast i8*%cM to i8**
store i8*%cR,i8**%cS,align 8
call void@sml_raise(i8*inreg%cM)#1
unreachable
cT:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%cU=getelementptr inbounds i8,i8*%W,i64 8
%cV=bitcast i8*%cU to i8**
%cW=load i8*,i8**%cV,align 8
%cX=bitcast i8*%cW to i32*
%cY=load i32,i32*%cX,align 4
%cZ=getelementptr inbounds i8,i8*%cW,i64 8
%c0=bitcast i8*%cZ to i8**
%c1=load i8*,i8**%c0,align 8
store i8*%c1,i8**%E,align 8
%c2=getelementptr inbounds i8,i8*%cW,i64 16
%c3=bitcast i8*%c2 to i8**
%c4=load i8*,i8**%c3,align 8
store i8*%c4,i8**%F,align 8
%c5=call i8*@sml_alloc(i32 inreg 28)#0
%c6=getelementptr inbounds i8,i8*%c5,i64 -4
%c7=bitcast i8*%c6 to i32*
store i32 1342177304,i32*%c7,align 4
store i8*%c5,i8**%D,align 8
%c8=getelementptr inbounds i8,i8*%c5,i64 4
%c9=bitcast i8*%c8 to i32*
store i32 0,i32*%c9,align 1
%da=bitcast i8*%c5 to i32*
store i32%cY,i32*%da,align 4
%db=load i8*,i8**%E,align 8
%dc=getelementptr inbounds i8,i8*%c5,i64 8
%dd=bitcast i8*%dc to i8**
store i8*%db,i8**%dd,align 8
%de=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%df=getelementptr inbounds i8,i8*%c5,i64 16
%dg=bitcast i8*%df to i8**
store i8*%de,i8**%dg,align 8
%dh=getelementptr inbounds i8,i8*%c5,i64 24
%di=bitcast i8*%dh to i32*
store i32 6,i32*%di,align 4
%dj=load i8*,i8**@_SMLZN3Loc5nolocE,align 8
store i8*%dj,i8**%E,align 8
%dk=call i8*@sml_alloc(i32 inreg 20)#0
%dl=getelementptr inbounds i8,i8*%dk,i64 -4
%dm=bitcast i8*%dl to i32*
store i32 1342177296,i32*%dm,align 4
store i8*%dk,i8**%F,align 8
%dn=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%do=bitcast i8*%dk to i8**
store i8*%dn,i8**%do,align 8
%dp=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%dq=getelementptr inbounds i8,i8*%dk,i64 8
%dr=bitcast i8*%dq to i8**
store i8*%dp,i8**%dr,align 8
%ds=getelementptr inbounds i8,i8*%dk,i64 16
%dt=bitcast i8*%ds to i32*
store i32 3,i32*%dt,align 4
%du=call i8*@sml_alloc(i32 inreg 20)#0
%dv=bitcast i8*%du to i32*
%dw=getelementptr inbounds i8,i8*%du,i64 -4
%dx=bitcast i8*%dw to i32*
store i32 1342177296,i32*%dx,align 4
%dy=getelementptr inbounds i8,i8*%du,i64 4
%dz=bitcast i8*%dy to i32*
store i32 0,i32*%dz,align 1
store i32 26,i32*%dv,align 4
%dA=load i8*,i8**%F,align 8
%dB=getelementptr inbounds i8,i8*%du,i64 8
%dC=bitcast i8*%dB to i8**
store i8*%dA,i8**%dC,align 8
%dD=getelementptr inbounds i8,i8*%du,i64 16
%dE=bitcast i8*%dD to i32*
store i32 2,i32*%dE,align 4
ret i8*%du
dF:
%dG=getelementptr inbounds i8,i8*%W,i64 8
%dH=bitcast i8*%dG to i8**
%dI=load i8*,i8**%dH,align 8
%dJ=getelementptr inbounds i8,i8*%dI,i64 8
%dK=bitcast i8*%dJ to i8**
%dL=load i8*,i8**%dK,align 8
store i8*%dL,i8**%E,align 8
%dM=getelementptr inbounds i8,i8*%dI,i64 16
%dN=bitcast i8*%dM to i8**
%dO=load i8*,i8**%dN,align 8
store i8*%dO,i8**%F,align 8
%dP=getelementptr inbounds i8,i8*%dI,i64 24
%dQ=bitcast i8*%dP to i8**
%dR=load i8*,i8**%dQ,align 8
store i8*%dR,i8**%H,align 8
%dS=bitcast i8*%dI to i8**
%dT=load i8*,i8**%dS,align 8
%dU=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%dV=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%dU,i8*inreg%U,i8*inreg%dT)
store i8*%dV,i8**%D,align 8
%dW=call i8*@sml_alloc(i32 inreg 36)#0
%dX=getelementptr inbounds i8,i8*%dW,i64 -4
%dY=bitcast i8*%dX to i32*
store i32 1342177312,i32*%dY,align 4
store i8*%dW,i8**%G,align 8
%dZ=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%d0=bitcast i8*%dW to i8**
store i8*%dZ,i8**%d0,align 8
%d1=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%d2=getelementptr inbounds i8,i8*%dW,i64 8
%d3=bitcast i8*%d2 to i8**
store i8*%d1,i8**%d3,align 8
%d4=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%d5=getelementptr inbounds i8,i8*%dW,i64 16
%d6=bitcast i8*%d5 to i8**
store i8*%d4,i8**%d6,align 8
%d7=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%d8=getelementptr inbounds i8,i8*%dW,i64 24
%d9=bitcast i8*%d8 to i8**
store i8*%d7,i8**%d9,align 8
%ea=getelementptr inbounds i8,i8*%dW,i64 32
%eb=bitcast i8*%ea to i32*
store i32 15,i32*%eb,align 4
%ec=call i8*@sml_alloc(i32 inreg 20)#0
%ed=bitcast i8*%ec to i32*
%ee=getelementptr inbounds i8,i8*%ec,i64 -4
%ef=bitcast i8*%ee to i32*
store i32 1342177296,i32*%ef,align 4
%eg=getelementptr inbounds i8,i8*%ec,i64 4
%eh=bitcast i8*%eg to i32*
store i32 0,i32*%eh,align 1
store i32 24,i32*%ed,align 4
%ei=load i8*,i8**%G,align 8
%ej=getelementptr inbounds i8,i8*%ec,i64 8
%ek=bitcast i8*%ej to i8**
store i8*%ei,i8**%ek,align 8
%el=getelementptr inbounds i8,i8*%ec,i64 16
%em=bitcast i8*%el to i32*
store i32 2,i32*%em,align 4
ret i8*%ec
en:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%eo=getelementptr inbounds i8,i8*%W,i64 8
%ep=bitcast i8*%eo to i8**
%eq=load i8*,i8**%ep,align 8
%er=bitcast i8*%eq to i8**
%es=load i8*,i8**%er,align 8
store i8*%es,i8**%D,align 8
%et=getelementptr inbounds i8,i8*%eq,i64 8
%eu=bitcast i8*%et to i8**
%ev=load i8*,i8**%eu,align 8
store i8*%ev,i8**%E,align 8
%ew=call i8*@sml_alloc(i32 inreg 20)#0
%ex=getelementptr inbounds i8,i8*%ew,i64 -4
%ey=bitcast i8*%ex to i32*
store i32 1342177296,i32*%ey,align 4
store i8*%ew,i8**%F,align 8
%ez=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%eA=bitcast i8*%ew to i8**
store i8*%ez,i8**%eA,align 8
%eB=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%eC=getelementptr inbounds i8,i8*%ew,i64 8
%eD=bitcast i8*%eC to i8**
store i8*%eB,i8**%eD,align 8
%eE=getelementptr inbounds i8,i8*%ew,i64 16
%eF=bitcast i8*%eE to i32*
store i32 3,i32*%eF,align 4
%eG=call i8*@sml_alloc(i32 inreg 20)#0
%eH=bitcast i8*%eG to i32*
%eI=getelementptr inbounds i8,i8*%eG,i64 -4
%eJ=bitcast i8*%eI to i32*
store i32 1342177296,i32*%eJ,align 4
%eK=getelementptr inbounds i8,i8*%eG,i64 4
%eL=bitcast i8*%eK to i32*
store i32 0,i32*%eL,align 1
store i32 21,i32*%eH,align 4
%eM=load i8*,i8**%F,align 8
%eN=getelementptr inbounds i8,i8*%eG,i64 8
%eO=bitcast i8*%eN to i8**
store i8*%eM,i8**%eO,align 8
%eP=getelementptr inbounds i8,i8*%eG,i64 16
%eQ=bitcast i8*%eP to i32*
store i32 2,i32*%eQ,align 4
ret i8*%eG
eR:
%eS=getelementptr inbounds i8,i8*%W,i64 8
%eT=bitcast i8*%eS to i8**
%eU=load i8*,i8**%eT,align 8
%eV=getelementptr inbounds i8,i8*%eU,i64 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*%eU,i64 16
%eZ=bitcast i8*%eY to i8**
%e0=load i8*,i8**%eZ,align 8
store i8*%e0,i8**%F,align 8
%e1=getelementptr inbounds i8,i8*%eU,i64 24
%e2=bitcast i8*%e1 to i8**
%e3=load i8*,i8**%e2,align 8
store i8*%e3,i8**%H,align 8
%e4=getelementptr inbounds i8,i8*%eU,i64 32
%e5=bitcast i8*%e4 to i8**
%e6=load i8*,i8**%e5,align 8
store i8*%e6,i8**%I,align 8
%e7=bitcast i8*%eU to i8**
%e8=load i8*,i8**%e7,align 8
%e9=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%fa=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%e9,i8*inreg%U,i8*inreg%e8)
store i8*%fa,i8**%D,align 8
%fb=call i8*@sml_alloc(i32 inreg 44)#0
%fc=getelementptr inbounds i8,i8*%fb,i64 -4
%fd=bitcast i8*%fc to i32*
store i32 1342177320,i32*%fd,align 4
store i8*%fb,i8**%G,align 8
%fe=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%ff=bitcast i8*%fb to i8**
store i8*%fe,i8**%ff,align 8
%fg=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%fh=getelementptr inbounds i8,i8*%fb,i64 8
%fi=bitcast i8*%fh to i8**
store i8*%fg,i8**%fi,align 8
%fj=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%fk=getelementptr inbounds i8,i8*%fb,i64 16
%fl=bitcast i8*%fk to i8**
store i8*%fj,i8**%fl,align 8
%fm=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%fn=getelementptr inbounds i8,i8*%fb,i64 24
%fo=bitcast i8*%fn to i8**
store i8*%fm,i8**%fo,align 8
%fp=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%fq=getelementptr inbounds i8,i8*%fb,i64 32
%fr=bitcast i8*%fq to i8**
store i8*%fp,i8**%fr,align 8
%fs=getelementptr inbounds i8,i8*%fb,i64 40
%ft=bitcast i8*%fs to i32*
store i32 31,i32*%ft,align 4
%fu=call i8*@sml_alloc(i32 inreg 20)#0
%fv=bitcast i8*%fu to i32*
%fw=getelementptr inbounds i8,i8*%fu,i64 -4
%fx=bitcast i8*%fw to i32*
store i32 1342177296,i32*%fx,align 4
%fy=getelementptr inbounds i8,i8*%fu,i64 4
%fz=bitcast i8*%fy to i32*
store i32 0,i32*%fz,align 1
store i32 20,i32*%fv,align 4
%fA=load i8*,i8**%G,align 8
%fB=getelementptr inbounds i8,i8*%fu,i64 8
%fC=bitcast i8*%fB to i8**
store i8*%fA,i8**%fC,align 8
%fD=getelementptr inbounds i8,i8*%fu,i64 16
%fE=bitcast i8*%fD to i32*
store i32 2,i32*%fE,align 4
ret i8*%fu
fF:
%fG=getelementptr inbounds i8,i8*%W,i64 8
%fH=bitcast i8*%fG to i8**
%fI=load i8*,i8**%fH,align 8
store i8*%fI,i8**%D,align 8
%fJ=getelementptr inbounds i8,i8*%fI,i64 8
%fK=bitcast i8*%fJ to i8**
%fL=load i8*,i8**%fK,align 8
store i8*%fL,i8**%E,align 8
%fM=getelementptr inbounds i8,i8*%fI,i64 16
%fN=bitcast i8*%fM to i8**
%fO=load i8*,i8**%fN,align 8
store i8*%fO,i8**%F,align 8
%fP=call fastcc i8*@_SMLFN11RecordLabel3Map7isEmptyE(i32 inreg 1,i32 inreg 8)
%fQ=getelementptr inbounds i8,i8*%fP,i64 16
%fR=bitcast i8*%fQ to i8*(i8*,i8*)**
%fS=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%fR,align 8
%fT=bitcast i8*%fP to i8**
%fU=load i8*,i8**%fT,align 8
%fV=bitcast i8**%D to i8***
%fW=load i8**,i8***%fV,align 8
%fX=load i8*,i8**%fW,align 8
%fY=call fastcc i8*%fS(i8*inreg%fU,i8*inreg%fX)
%fZ=bitcast i8*%fY to i32*
%f0=load i32,i32*%fZ,align 4
%f1=icmp eq i32%f0,0
br i1%f1,label%gH,label%f2
f2:
store i8*null,i8**%G,align 8
store i8*null,i8**%D,align 8
store i8*null,i8**%M,align 8
%f3=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%f4=call fastcc i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg%f3)
%f5=getelementptr inbounds i8,i8*%f4,i64 16
%f6=bitcast i8*%f5 to i8*(i8*,i8*)**
%f7=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%f6,align 8
%f8=bitcast i8*%f4 to i8**
%f9=load i8*,i8**%f8,align 8
store i8*%f9,i8**%E,align 8
%ga=call i8*@sml_alloc(i32 inreg 20)#0
%gb=getelementptr inbounds i8,i8*%ga,i64 -4
%gc=bitcast i8*%gb to i32*
store i32 1342177296,i32*%gc,align 4
store i8*%ga,i8**%G,align 8
%gd=getelementptr inbounds i8,i8*%ga,i64 4
%ge=bitcast i8*%gd to i32*
store i32 0,i32*%ge,align 1
%gf=bitcast i8*%ga to i32*
store i32 8,i32*%gf,align 4
%gg=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%gh=getelementptr inbounds i8,i8*%ga,i64 8
%gi=bitcast i8*%gh to i8**
store i8*%gg,i8**%gi,align 8
%gj=getelementptr inbounds i8,i8*%ga,i64 16
%gk=bitcast i8*%gj to i32*
store i32 2,i32*%gk,align 4
%gl=call i8*@sml_alloc(i32 inreg 20)#0
%gm=getelementptr inbounds i8,i8*%gl,i64 -4
%gn=bitcast i8*%gm to i32*
store i32 1342177296,i32*%gn,align 4
store i8*%gl,i8**%D,align 8
%go=bitcast i8*%gl to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@av,i64 0,i32 2)to i8*),i8**%go,align 8
%gp=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%gq=getelementptr inbounds i8,i8*%gl,i64 8
%gr=bitcast i8*%gq to i8**
store i8*%gp,i8**%gr,align 8
%gs=getelementptr inbounds i8,i8*%gl,i64 16
%gt=bitcast i8*%gs to i32*
store i32 3,i32*%gt,align 4
%gu=call i8*@sml_alloc(i32 inreg 20)#0
%gv=bitcast i8*%gu to i32*
%gw=getelementptr inbounds i8,i8*%gu,i64 -4
%gx=bitcast i8*%gw to i32*
store i32 1342177296,i32*%gx,align 4
%gy=getelementptr inbounds i8,i8*%gu,i64 4
%gz=bitcast i8*%gy to i32*
store i32 0,i32*%gz,align 1
store i32 3,i32*%gv,align 4
%gA=load i8*,i8**%D,align 8
%gB=getelementptr inbounds i8,i8*%gu,i64 8
%gC=bitcast i8*%gB to i8**
store i8*%gA,i8**%gC,align 8
%gD=getelementptr inbounds i8,i8*%gu,i64 16
%gE=bitcast i8*%gD to i32*
store i32 2,i32*%gE,align 4
%gF=load i8*,i8**%E,align 8
%gG=tail call fastcc i8*%f7(i8*inreg%gF,i8*inreg%gu)
ret i8*%gG
gH:
%gI=call fastcc i8*@_SMLFN11RecordLabel3Map3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%gJ=getelementptr inbounds i8,i8*%gI,i64 16
%gK=bitcast i8*%gJ to i8*(i8*,i8*)**
%gL=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%gK,align 8
%gM=bitcast i8*%gI to i8**
%gN=load i8*,i8**%gM,align 8
store i8*%gN,i8**%H,align 8
%gO=call i8*@sml_alloc(i32 inreg 20)#0
%gP=getelementptr inbounds i8,i8*%gO,i64 -4
%gQ=bitcast i8*%gP to i32*
store i32 1342177296,i32*%gQ,align 4
store i8*%gO,i8**%I,align 8
%gR=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%gS=bitcast i8*%gO to i8**
store i8*%gR,i8**%gS,align 8
%gT=load i8*,i8**%M,align 8
store i8*null,i8**%M,align 8
%gU=getelementptr inbounds i8,i8*%gO,i64 8
%gV=bitcast i8*%gU to i8**
store i8*%gT,i8**%gV,align 8
%gW=getelementptr inbounds i8,i8*%gO,i64 16
%gX=bitcast i8*%gW to i32*
store i32 3,i32*%gX,align 4
%gY=call i8*@sml_alloc(i32 inreg 28)#0
%gZ=getelementptr inbounds i8,i8*%gY,i64 -4
%g0=bitcast i8*%gZ to i32*
store i32 1342177304,i32*%g0,align 4
%g1=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%g2=bitcast i8*%gY to i8**
store i8*%g1,i8**%g2,align 8
%g3=getelementptr inbounds i8,i8*%gY,i64 8
%g4=bitcast i8*%g3 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_380 to void(...)*),void(...)**%g4,align 8
%g5=getelementptr inbounds i8,i8*%gY,i64 16
%g6=bitcast i8*%g5 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_380 to void(...)*),void(...)**%g6,align 8
%g7=getelementptr inbounds i8,i8*%gY,i64 24
%g8=bitcast i8*%g7 to i32*
store i32 -2147483647,i32*%g8,align 4
%g9=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%ha=call fastcc i8*%gL(i8*inreg%g9,i8*inreg%gY)
%hb=getelementptr inbounds i8,i8*%ha,i64 16
%hc=bitcast i8*%hb to i8*(i8*,i8*)**
%hd=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%hc,align 8
%he=bitcast i8*%ha to i8**
%hf=load i8*,i8**%he,align 8
%hg=load i8**,i8***%fV,align 8
store i8*null,i8**%D,align 8
%hh=load i8*,i8**%hg,align 8
%hi=call fastcc i8*%hd(i8*inreg%hf,i8*inreg%hh)
store i8*%hi,i8**%D,align 8
%hj=call i8*@sml_alloc(i32 inreg 28)#0
%hk=getelementptr inbounds i8,i8*%hj,i64 -4
%hl=bitcast i8*%hk to i32*
store i32 1342177304,i32*%hl,align 4
store i8*%hj,i8**%G,align 8
%hm=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%hn=bitcast i8*%hj to i8**
store i8*%hm,i8**%hn,align 8
%ho=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%hp=getelementptr inbounds i8,i8*%hj,i64 8
%hq=bitcast i8*%hp to i8**
store i8*%ho,i8**%hq,align 8
%hr=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%hs=getelementptr inbounds i8,i8*%hj,i64 16
%ht=bitcast i8*%hs to i8**
store i8*%hr,i8**%ht,align 8
%hu=getelementptr inbounds i8,i8*%hj,i64 24
%hv=bitcast i8*%hu to i32*
store i32 7,i32*%hv,align 4
%hw=call i8*@sml_alloc(i32 inreg 20)#0
%hx=bitcast i8*%hw to i32*
%hy=getelementptr inbounds i8,i8*%hw,i64 -4
%hz=bitcast i8*%hy to i32*
store i32 1342177296,i32*%hz,align 4
%hA=getelementptr inbounds i8,i8*%hw,i64 4
%hB=bitcast i8*%hA to i32*
store i32 0,i32*%hB,align 1
store i32 18,i32*%hx,align 4
%hC=load i8*,i8**%G,align 8
%hD=getelementptr inbounds i8,i8*%hw,i64 8
%hE=bitcast i8*%hD to i8**
store i8*%hC,i8**%hE,align 8
%hF=getelementptr inbounds i8,i8*%hw,i64 16
%hG=bitcast i8*%hF to i32*
store i32 2,i32*%hG,align 4
ret i8*%hw
hH:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%hI=getelementptr inbounds i8,i8*%W,i64 8
%hJ=bitcast i8*%hI to i8**
%hK=load i8*,i8**%hJ,align 8
%hL=getelementptr inbounds i8,i8*%hK,i64 8
%hM=bitcast i8*%hL to i8**
%hN=load i8*,i8**%hM,align 8
%hO=bitcast i8*%hN to i32*
%hP=load i32,i32*%hO,align 4
%hQ=getelementptr inbounds i8,i8*%hN,i64 8
%hR=bitcast i8*%hQ to i8**
%hS=load i8*,i8**%hR,align 8
store i8*%hS,i8**%E,align 8
%hT=getelementptr inbounds i8,i8*%hN,i64 16
%hU=bitcast i8*%hT to i8**
%hV=load i8*,i8**%hU,align 8
store i8*%hV,i8**%F,align 8
%hW=call i8*@sml_alloc(i32 inreg 28)#0
%hX=getelementptr inbounds i8,i8*%hW,i64 -4
%hY=bitcast i8*%hX to i32*
store i32 1342177304,i32*%hY,align 4
store i8*%hW,i8**%D,align 8
%hZ=getelementptr inbounds i8,i8*%hW,i64 4
%h0=bitcast i8*%hZ to i32*
store i32 0,i32*%h0,align 1
%h1=bitcast i8*%hW to i32*
store i32%hP,i32*%h1,align 4
%h2=load i8*,i8**%E,align 8
%h3=getelementptr inbounds i8,i8*%hW,i64 8
%h4=bitcast i8*%h3 to i8**
store i8*%h2,i8**%h4,align 8
%h5=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%h6=getelementptr inbounds i8,i8*%hW,i64 16
%h7=bitcast i8*%h6 to i8**
store i8*%h5,i8**%h7,align 8
%h8=getelementptr inbounds i8,i8*%hW,i64 24
%h9=bitcast i8*%h8 to i32*
store i32 6,i32*%h9,align 4
%ia=load i8*,i8**@_SMLZN3Loc5nolocE,align 8
store i8*%ia,i8**%E,align 8
%ib=call i8*@sml_alloc(i32 inreg 20)#0
%ic=getelementptr inbounds i8,i8*%ib,i64 -4
%id=bitcast i8*%ic to i32*
store i32 1342177296,i32*%id,align 4
store i8*%ib,i8**%F,align 8
%ie=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%if=bitcast i8*%ib to i8**
store i8*%ie,i8**%if,align 8
%ig=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%ih=getelementptr inbounds i8,i8*%ib,i64 8
%ii=bitcast i8*%ih to i8**
store i8*%ig,i8**%ii,align 8
%ij=getelementptr inbounds i8,i8*%ib,i64 16
%ik=bitcast i8*%ij to i32*
store i32 3,i32*%ik,align 4
%il=call i8*@sml_alloc(i32 inreg 20)#0
%im=bitcast i8*%il to i32*
%in=getelementptr inbounds i8,i8*%il,i64 -4
%io=bitcast i8*%in to i32*
store i32 1342177296,i32*%io,align 4
%ip=getelementptr inbounds i8,i8*%il,i64 4
%iq=bitcast i8*%ip to i32*
store i32 0,i32*%iq,align 1
store i32 26,i32*%im,align 4
%ir=load i8*,i8**%F,align 8
%is=getelementptr inbounds i8,i8*%il,i64 8
%it=bitcast i8*%is to i8**
store i8*%ir,i8**%it,align 8
%iu=getelementptr inbounds i8,i8*%il,i64 16
%iv=bitcast i8*%iu to i32*
store i32 2,i32*%iv,align 4
ret i8*%il
iw:
%ix=getelementptr inbounds i8,i8*%W,i64 8
%iy=bitcast i8*%ix to i8**
%iz=load i8*,i8**%iy,align 8
%iA=getelementptr inbounds i8,i8*%iz,i64 8
%iB=bitcast i8*%iA to i8**
%iC=load i8*,i8**%iB,align 8
store i8*%iC,i8**%E,align 8
%iD=getelementptr inbounds i8,i8*%iz,i64 16
%iE=bitcast i8*%iD to i8**
%iF=load i8*,i8**%iE,align 8
store i8*%iF,i8**%F,align 8
%iG=bitcast i8*%iz to i8**
%iH=load i8*,i8**%iG,align 8
%iI=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%iJ=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%iI,i8*inreg%U,i8*inreg%iH)
store i8*%iJ,i8**%D,align 8
%iK=call i8*@sml_alloc(i32 inreg 28)#0
%iL=getelementptr inbounds i8,i8*%iK,i64 -4
%iM=bitcast i8*%iL to i32*
store i32 1342177304,i32*%iM,align 4
store i8*%iK,i8**%G,align 8
%iN=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%iO=bitcast i8*%iK to i8**
store i8*%iN,i8**%iO,align 8
%iP=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%iQ=getelementptr inbounds i8,i8*%iK,i64 8
%iR=bitcast i8*%iQ to i8**
store i8*%iP,i8**%iR,align 8
%iS=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%iT=getelementptr inbounds i8,i8*%iK,i64 16
%iU=bitcast i8*%iT to i8**
store i8*%iS,i8**%iU,align 8
%iV=getelementptr inbounds i8,i8*%iK,i64 24
%iW=bitcast i8*%iV to i32*
store i32 7,i32*%iW,align 4
%iX=call i8*@sml_alloc(i32 inreg 20)#0
%iY=bitcast i8*%iX to i32*
%iZ=getelementptr inbounds i8,i8*%iX,i64 -4
%i0=bitcast i8*%iZ to i32*
store i32 1342177296,i32*%i0,align 4
%i1=getelementptr inbounds i8,i8*%iX,i64 4
%i2=bitcast i8*%i1 to i32*
store i32 0,i32*%i2,align 1
store i32 17,i32*%iY,align 4
%i3=load i8*,i8**%G,align 8
%i4=getelementptr inbounds i8,i8*%iX,i64 8
%i5=bitcast i8*%i4 to i8**
store i8*%i3,i8**%i5,align 8
%i6=getelementptr inbounds i8,i8*%iX,i64 16
%i7=bitcast i8*%i6 to i32*
store i32 2,i32*%i7,align 4
ret i8*%iX
i8:
%i9=getelementptr inbounds i8,i8*%W,i64 8
%ja=bitcast i8*%i9 to i8**
%jb=load i8*,i8**%ja,align 8
%jc=getelementptr inbounds i8,i8*%jb,i64 8
%jd=bitcast i8*%jc to i8**
%je=load i8*,i8**%jd,align 8
store i8*%je,i8**%E,align 8
%jf=getelementptr inbounds i8,i8*%jb,i64 16
%jg=bitcast i8*%jf to i8**
%jh=load i8*,i8**%jg,align 8
store i8*%jh,i8**%F,align 8
%ji=getelementptr inbounds i8,i8*%jb,i64 24
%jj=bitcast i8*%ji to i8**
%jk=load i8*,i8**%jj,align 8
store i8*%jk,i8**%H,align 8
%jl=bitcast i8*%jb to i8**
%jm=load i8*,i8**%jl,align 8
%jn=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%jo=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%jn,i8*inreg%U,i8*inreg%jm)
store i8*%jo,i8**%D,align 8
%jp=call i8*@sml_alloc(i32 inreg 36)#0
%jq=getelementptr inbounds i8,i8*%jp,i64 -4
%jr=bitcast i8*%jq to i32*
store i32 1342177312,i32*%jr,align 4
%js=load i8*,i8**%D,align 8
%jt=bitcast i8*%jp to i8**
store i8*%js,i8**%jt,align 8
%ju=load i8*,i8**%E,align 8
%jv=getelementptr inbounds i8,i8*%jp,i64 8
%jw=bitcast i8*%jv to i8**
store i8*%ju,i8**%jw,align 8
%jx=load i8*,i8**%F,align 8
%jy=getelementptr inbounds i8,i8*%jp,i64 16
%jz=bitcast i8*%jy to i8**
store i8*%jx,i8**%jz,align 8
%jA=load i8*,i8**%H,align 8
%jB=getelementptr inbounds i8,i8*%jp,i64 24
%jC=bitcast i8*%jB to i8**
store i8*%jA,i8**%jC,align 8
%jD=getelementptr inbounds i8,i8*%jp,i64 32
%jE=bitcast i8*%jD to i32*
store i32 15,i32*%jE,align 4
%jF=tail call fastcc i8*@_SMLFN20PrimitiveTypedLambda7compileE(i8*inreg%jp)
ret i8*%jF
jG:
%jH=getelementptr inbounds i8,i8*%W,i64 8
%jI=bitcast i8*%jH to i8**
%jJ=load i8*,i8**%jI,align 8
%jK=bitcast i8*%jJ to i8**
%jL=load i8*,i8**%jK,align 8
store i8*%jL,i8**%E,align 8
%jM=getelementptr inbounds i8,i8*%jJ,i64 8
%jN=bitcast i8*%jM to i8**
%jO=load i8*,i8**%jN,align 8
store i8*%jO,i8**%F,align 8
%jP=getelementptr inbounds i8,i8*%jJ,i64 24
%jQ=bitcast i8*%jP to i8**
%jR=load i8*,i8**%jQ,align 8
store i8*%jR,i8**%H,align 8
%jS=getelementptr inbounds i8,i8*%jJ,i64 32
%jT=bitcast i8*%jS to i8**
%jU=load i8*,i8**%jT,align 8
store i8*%jU,i8**%I,align 8
%jV=getelementptr inbounds i8,i8*%jJ,i64 16
%jW=bitcast i8*%jV to i8**
%jX=load i8*,i8**%jW,align 8
%jY=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%jZ=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%jY,i8*inreg%U,i8*inreg%jX)
store i8*%jZ,i8**%D,align 8
%j0=call i8*@sml_alloc(i32 inreg 44)#0
%j1=getelementptr inbounds i8,i8*%j0,i64 -4
%j2=bitcast i8*%j1 to i32*
store i32 1342177320,i32*%j2,align 4
store i8*%j0,i8**%G,align 8
%j3=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%j4=bitcast i8*%j0 to i8**
store i8*%j3,i8**%j4,align 8
%j5=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%j6=getelementptr inbounds i8,i8*%j0,i64 8
%j7=bitcast i8*%j6 to i8**
store i8*%j5,i8**%j7,align 8
%j8=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%j9=getelementptr inbounds i8,i8*%j0,i64 16
%ka=bitcast i8*%j9 to i8**
store i8*%j8,i8**%ka,align 8
%kb=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%kc=getelementptr inbounds i8,i8*%j0,i64 24
%kd=bitcast i8*%kc to i8**
store i8*%kb,i8**%kd,align 8
%ke=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%kf=getelementptr inbounds i8,i8*%j0,i64 32
%kg=bitcast i8*%kf to i8**
store i8*%ke,i8**%kg,align 8
%kh=getelementptr inbounds i8,i8*%j0,i64 40
%ki=bitcast i8*%kh to i32*
store i32 31,i32*%ki,align 4
%kj=call i8*@sml_alloc(i32 inreg 20)#0
%kk=bitcast i8*%kj to i32*
%kl=getelementptr inbounds i8,i8*%kj,i64 -4
%km=bitcast i8*%kl to i32*
store i32 1342177296,i32*%km,align 4
%kn=getelementptr inbounds i8,i8*%kj,i64 4
%ko=bitcast i8*%kn to i32*
store i32 0,i32*%ko,align 1
store i32 15,i32*%kk,align 4
%kp=load i8*,i8**%G,align 8
%kq=getelementptr inbounds i8,i8*%kj,i64 8
%kr=bitcast i8*%kq to i8**
store i8*%kp,i8**%kr,align 8
%ks=getelementptr inbounds i8,i8*%kj,i64 16
%kt=bitcast i8*%ks to i32*
store i32 2,i32*%kt,align 4
ret i8*%kj
ku:
%kv=getelementptr inbounds i8,i8*%W,i64 8
%kw=bitcast i8*%kv to i8**
%kx=load i8*,i8**%kw,align 8
%ky=getelementptr inbounds i8,i8*%kx,i64 8
%kz=bitcast i8*%ky to i8**
%kA=load i8*,i8**%kz,align 8
store i8*%kA,i8**%E,align 8
%kB=getelementptr inbounds i8,i8*%kx,i64 16
%kC=bitcast i8*%kB to i8**
%kD=load i8*,i8**%kC,align 8
store i8*%kD,i8**%F,align 8
%kE=getelementptr inbounds i8,i8*%kx,i64 24
%kF=bitcast i8*%kE to i8**
%kG=load i8*,i8**%kF,align 8
store i8*%kG,i8**%H,align 8
%kH=bitcast i8*%kx to i8**
%kI=load i8*,i8**%kH,align 8
%kJ=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%kK=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%kJ,i8*inreg%U,i8*inreg%kI)
store i8*%kK,i8**%D,align 8
%kL=call i8*@sml_alloc(i32 inreg 36)#0
%kM=getelementptr inbounds i8,i8*%kL,i64 -4
%kN=bitcast i8*%kM to i32*
store i32 1342177312,i32*%kN,align 4
store i8*%kL,i8**%G,align 8
%kO=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%kP=bitcast i8*%kL to i8**
store i8*%kO,i8**%kP,align 8
%kQ=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%kR=getelementptr inbounds i8,i8*%kL,i64 8
%kS=bitcast i8*%kR to i8**
store i8*%kQ,i8**%kS,align 8
%kT=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%kU=getelementptr inbounds i8,i8*%kL,i64 16
%kV=bitcast i8*%kU to i8**
store i8*%kT,i8**%kV,align 8
%kW=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%kX=getelementptr inbounds i8,i8*%kL,i64 24
%kY=bitcast i8*%kX to i8**
store i8*%kW,i8**%kY,align 8
%kZ=getelementptr inbounds i8,i8*%kL,i64 32
%k0=bitcast i8*%kZ to i32*
store i32 15,i32*%k0,align 4
%k1=call i8*@sml_alloc(i32 inreg 20)#0
%k2=bitcast i8*%k1 to i32*
%k3=getelementptr inbounds i8,i8*%k1,i64 -4
%k4=bitcast i8*%k3 to i32*
store i32 1342177296,i32*%k4,align 4
%k5=getelementptr inbounds i8,i8*%k1,i64 4
%k6=bitcast i8*%k5 to i32*
store i32 0,i32*%k6,align 1
store i32 14,i32*%k2,align 4
%k7=load i8*,i8**%G,align 8
%k8=getelementptr inbounds i8,i8*%k1,i64 8
%k9=bitcast i8*%k8 to i8**
store i8*%k7,i8**%k9,align 8
%la=getelementptr inbounds i8,i8*%k1,i64 16
%lb=bitcast i8*%la to i32*
store i32 2,i32*%lb,align 4
ret i8*%k1
lc:
%ld=getelementptr inbounds i8,i8*%W,i64 8
%le=bitcast i8*%ld to i8**
%lf=load i8*,i8**%le,align 8
store i8*%lf,i8**%D,align 8
%lg=getelementptr inbounds i8,i8*%lf,i64 16
%lh=bitcast i8*%lg to i8**
%li=load i8*,i8**%lh,align 8
store i8*%li,i8**%E,align 8
%lj=call fastcc i8*@_SMLFN4List5foldrE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%lk=getelementptr inbounds i8,i8*%lj,i64 16
%ll=bitcast i8*%lk to i8*(i8*,i8*)**
%lm=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ll,align 8
%ln=bitcast i8*%lj to i8**
%lo=load i8*,i8**%ln,align 8
store i8*%lo,i8**%F,align 8
%lp=call i8*@sml_alloc(i32 inreg 28)#0
%lq=getelementptr inbounds i8,i8*%lp,i64 -4
%lr=bitcast i8*%lq to i32*
store i32 1342177304,i32*%lr,align 4
store i8*%lp,i8**%H,align 8
%ls=load i8*,i8**%G,align 8
%lt=bitcast i8*%lp to i8**
store i8*%ls,i8**%lt,align 8
%lu=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%lv=getelementptr inbounds i8,i8*%lp,i64 8
%lw=bitcast i8*%lv to i8**
store i8*%lu,i8**%lw,align 8
%lx=load i8*,i8**%M,align 8
%ly=getelementptr inbounds i8,i8*%lp,i64 16
%lz=bitcast i8*%ly to i8**
store i8*%lx,i8**%lz,align 8
%lA=getelementptr inbounds i8,i8*%lp,i64 24
%lB=bitcast i8*%lA to i32*
store i32 7,i32*%lB,align 4
%lC=call i8*@sml_alloc(i32 inreg 28)#0
%lD=getelementptr inbounds i8,i8*%lC,i64 -4
%lE=bitcast i8*%lD to i32*
store i32 1342177304,i32*%lE,align 4
%lF=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%lG=bitcast i8*%lC to i8**
store i8*%lF,i8**%lG,align 8
%lH=getelementptr inbounds i8,i8*%lC,i64 8
%lI=bitcast i8*%lH to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_379 to void(...)*),void(...)**%lI,align 8
%lJ=getelementptr inbounds i8,i8*%lC,i64 16
%lK=bitcast i8*%lJ to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_379 to void(...)*),void(...)**%lK,align 8
%lL=getelementptr inbounds i8,i8*%lC,i64 24
%lM=bitcast i8*%lL to i32*
store i32 -2147483647,i32*%lM,align 4
%lN=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%lO=call fastcc i8*%lm(i8*inreg%lN,i8*inreg%lC)
%lP=getelementptr inbounds i8,i8*%lO,i64 16
%lQ=bitcast i8*%lP to i8*(i8*,i8*)**
%lR=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%lQ,align 8
%lS=bitcast i8*%lO to i8**
%lT=load i8*,i8**%lS,align 8
store i8*%lT,i8**%E,align 8
%lU=load i8*,i8**%D,align 8
%lV=getelementptr inbounds i8,i8*%lU,i64 8
%lW=bitcast i8*%lV to i8**
%lX=load i8*,i8**%lW,align 8
%lY=load i8*,i8**%G,align 8
%lZ=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%l0=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%lZ,i8*inreg%lY,i8*inreg%lX)
%l1=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%l2=call fastcc i8*%lR(i8*inreg%l1,i8*inreg%l0)
%l3=getelementptr inbounds i8,i8*%l2,i64 16
%l4=bitcast i8*%l3 to i8*(i8*,i8*)**
%l5=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%l4,align 8
%l6=bitcast i8*%l2 to i8**
%l7=load i8*,i8**%l6,align 8
%l8=bitcast i8**%D to i8***
%l9=load i8**,i8***%l8,align 8
%ma=load i8*,i8**%l9,align 8
%mb=tail call fastcc i8*%l5(i8*inreg%l7,i8*inreg%ma)
ret i8*%mb
mc:
%md=getelementptr inbounds i8,i8*%W,i64 8
%me=bitcast i8*%md to i8**
%mf=load i8*,i8**%me,align 8
store i8*%mf,i8**%H,align 8
%mg=getelementptr inbounds i8,i8*%mf,i64 8
%mh=bitcast i8*%mg to i8**
%mi=load i8*,i8**%mh,align 8
store i8*%mi,i8**%F,align 8
%mj=getelementptr inbounds i8,i8*%mf,i64 16
%mk=bitcast i8*%mj to i8**
%ml=load i8*,i8**%mk,align 8
store i8*%ml,i8**%I,align 8
%mm=getelementptr inbounds i8,i8*%mf,i64 24
%mn=bitcast i8*%mm to i8**
%mo=load i8*,i8**%mn,align 8
store i8*%mo,i8**%J,align 8
%mp=getelementptr inbounds i8,i8*%mf,i64 40
%mq=bitcast i8*%mp to i8**
%mr=load i8*,i8**%mq,align 8
store i8*%mr,i8**%K,align 8
%ms=call fastcc i8*@_SMLFN11TypesBasics7derefTyE(i8*inreg%mr)
%mt=icmp eq i8*%ms,null
br i1%mt,label%my,label%mu
mu:
%mv=bitcast i8*%ms to i32*
%mw=load i32,i32*%mv,align 4
%mx=icmp eq i32%mw,8
br i1%mx,label%nj,label%my
my:
%mz=load i8*,i8**%H,align 8
%mA=getelementptr inbounds i8,i8*%mz,i64 32
%mB=bitcast i8*%mA to i8**
%mC=load i8*,i8**%mB,align 8
%mD=load i8*,i8**%G,align 8
%mE=load i8*,i8**%M,align 8
%mF=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%mE,i8*inreg%mD,i8*inreg%mC)
store i8*%mF,i8**%D,align 8
%mG=bitcast i8**%H to i8***
%mH=load i8**,i8***%mG,align 8
store i8*null,i8**%H,align 8
%mI=load i8*,i8**%mH,align 8
%mJ=load i8*,i8**%G,align 8
%mK=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%mL=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%mK,i8*inreg%mJ,i8*inreg%mI)
store i8*%mL,i8**%E,align 8
%mM=call i8*@sml_alloc(i32 inreg 52)#0
%mN=getelementptr inbounds i8,i8*%mM,i64 -4
%mO=bitcast i8*%mN to i32*
store i32 1342177328,i32*%mO,align 4
store i8*%mM,i8**%G,align 8
%mP=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%mQ=bitcast i8*%mM to i8**
store i8*%mP,i8**%mQ,align 8
%mR=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%mS=getelementptr inbounds i8,i8*%mM,i64 8
%mT=bitcast i8*%mS to i8**
store i8*%mR,i8**%mT,align 8
%mU=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%mV=getelementptr inbounds i8,i8*%mM,i64 16
%mW=bitcast i8*%mV to i8**
store i8*%mU,i8**%mW,align 8
%mX=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%mY=getelementptr inbounds i8,i8*%mM,i64 24
%mZ=bitcast i8*%mY to i8**
store i8*%mX,i8**%mZ,align 8
%m0=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%m1=getelementptr inbounds i8,i8*%mM,i64 32
%m2=bitcast i8*%m1 to i8**
store i8*%m0,i8**%m2,align 8
%m3=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%m4=getelementptr inbounds i8,i8*%mM,i64 40
%m5=bitcast i8*%m4 to i8**
store i8*%m3,i8**%m5,align 8
%m6=getelementptr inbounds i8,i8*%mM,i64 48
%m7=bitcast i8*%m6 to i32*
store i32 63,i32*%m7,align 4
%m8=call i8*@sml_alloc(i32 inreg 20)#0
%m9=bitcast i8*%m8 to i32*
%na=getelementptr inbounds i8,i8*%m8,i64 -4
%nb=bitcast i8*%na to i32*
store i32 1342177296,i32*%nb,align 4
%nc=getelementptr inbounds i8,i8*%m8,i64 4
%nd=bitcast i8*%nc to i32*
store i32 0,i32*%nd,align 1
store i32 13,i32*%m9,align 4
%ne=load i8*,i8**%G,align 8
%nf=getelementptr inbounds i8,i8*%m8,i64 8
%ng=bitcast i8*%nf to i8**
store i8*%ne,i8**%ng,align 8
%nh=getelementptr inbounds i8,i8*%m8,i64 16
%ni=bitcast i8*%nh to i32*
store i32 2,i32*%ni,align 4
ret i8*%m8
nj:
store i8*null,i8**%F,align 8
%nk=getelementptr inbounds i8,i8*%ms,i64 8
%nl=bitcast i8*%nk to i8**
%nm=load i8*,i8**%nl,align 8
store i8*%nm,i8**%L,align 8
%nn=load i8*,i8**%K,align 8
%no=bitcast i8**%n to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%no)
%np=bitcast i8**%o to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%np)
call void@llvm.gcroot(i8**%n,i8*null)#0
call void@llvm.gcroot(i8**%o,i8*null)#0
store i8*%nn,i8**%n,align 8
%nq=load atomic i32,i32*@sml_check_flag unordered,align 4
%nr=icmp eq i32%nq,0
br i1%nr,label%nt,label%ns
ns:
call void@sml_check(i32 inreg%nq)
br label%nt
nt:
%nu=call fastcc i32@_SMLFN5VarID8generateE(i32 inreg 0)
%nv=call i8*@sml_alloc(i32 inreg 28)#0
%nw=bitcast i8*%nv to i32*
%nx=getelementptr inbounds i8,i8*%nv,i64 -4
%ny=bitcast i8*%nx to i32*
store i32 1342177304,i32*%ny,align 4
%nz=getelementptr inbounds i8,i8*%nv,i64 4
%nA=bitcast i8*%nz to i32*
store i32 0,i32*%nA,align 1
store i32%nu,i32*%nw,align 4
%nB=getelementptr inbounds i8,i8*%nv,i64 8
%nC=bitcast i8*%nB to i8**
store i8*null,i8**%nC,align 8
%nD=load i8*,i8**%n,align 8
%nE=getelementptr inbounds i8,i8*%nv,i64 16
%nF=bitcast i8*%nE to i8**
store i8*%nD,i8**%nF,align 8
%nG=getelementptr inbounds i8,i8*%nv,i64 24
%nH=bitcast i8*%nG to i32*
store i32 6,i32*%nH,align 4
store i8*null,i8**%n,align 8
store i8*%nD,i8**%o,align 8
%nI=call i8*@sml_alloc(i32 inreg 28)#0
%nJ=bitcast i8*%nI to i32*
%nK=getelementptr inbounds i8,i8*%nI,i64 -4
%nL=bitcast i8*%nK to i32*
store i32 1342177304,i32*%nL,align 4
%nM=getelementptr inbounds i8,i8*%nI,i64 4
%nN=bitcast i8*%nM to i32*
store i32 0,i32*%nN,align 1
store i32%nu,i32*%nJ,align 4
%nO=load i8*,i8**%n,align 8
%nP=getelementptr inbounds i8,i8*%nI,i64 8
%nQ=bitcast i8*%nP to i8**
store i8*%nO,i8**%nQ,align 8
%nR=load i8*,i8**%o,align 8
%nS=getelementptr inbounds i8,i8*%nI,i64 16
%nT=bitcast i8*%nS to i8**
store i8*%nR,i8**%nT,align 8
%nU=getelementptr inbounds i8,i8*%nI,i64 24
%nV=bitcast i8*%nU to i32*
store i32 6,i32*%nV,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%no)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%np)
store i8*%nI,i8**%D,align 8
%nW=call fastcc i8*@_SMLFN11RecordLabel3Map4mapiE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%nX=getelementptr inbounds i8,i8*%nW,i64 16
%nY=bitcast i8*%nX to i8*(i8*,i8*)**
%nZ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%nY,align 8
%n0=bitcast i8*%nW to i8**
%n1=load i8*,i8**%n0,align 8
store i8*%n1,i8**%E,align 8
%n2=call i8*@sml_alloc(i32 inreg 28)#0
%n3=getelementptr inbounds i8,i8*%n2,i64 -4
%n4=bitcast i8*%n3 to i32*
store i32 1342177304,i32*%n4,align 4
store i8*%n2,i8**%F,align 8
%n5=load i8*,i8**%D,align 8
%n6=bitcast i8*%n2 to i8**
store i8*%n5,i8**%n6,align 8
%n7=load i8*,i8**%J,align 8
%n8=getelementptr inbounds i8,i8*%n2,i64 8
%n9=bitcast i8*%n8 to i8**
store i8*%n7,i8**%n9,align 8
%oa=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%ob=getelementptr inbounds i8,i8*%n2,i64 16
%oc=bitcast i8*%ob to i8**
store i8*%oa,i8**%oc,align 8
%od=getelementptr inbounds i8,i8*%n2,i64 24
%oe=bitcast i8*%od to i32*
store i32 7,i32*%oe,align 4
%of=call i8*@sml_alloc(i32 inreg 28)#0
%og=getelementptr inbounds i8,i8*%of,i64 -4
%oh=bitcast i8*%og to i32*
store i32 1342177304,i32*%oh,align 4
%oi=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%oj=bitcast i8*%of to i8**
store i8*%oi,i8**%oj,align 8
%ok=getelementptr inbounds i8,i8*%of,i64 8
%ol=bitcast i8*%ok to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL6fields_378 to void(...)*),void(...)**%ol,align 8
%om=getelementptr inbounds i8,i8*%of,i64 16
%on=bitcast i8*%om to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL6fields_378 to void(...)*),void(...)**%on,align 8
%oo=getelementptr inbounds i8,i8*%of,i64 24
%op=bitcast i8*%oo to i32*
store i32 -2147483647,i32*%op,align 4
%oq=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%or=call fastcc i8*%nZ(i8*inreg%oq,i8*inreg%of)
%os=getelementptr inbounds i8,i8*%or,i64 16
%ot=bitcast i8*%os to i8*(i8*,i8*)**
%ou=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ot,align 8
%ov=bitcast i8*%or to i8**
%ow=load i8*,i8**%ov,align 8
%ox=load i8*,i8**%L,align 8
%oy=call fastcc i8*%ou(i8*inreg%ow,i8*inreg%ox)
store i8*%oy,i8**%E,align 8
%oz=bitcast i8**%H to i8***
%oA=load i8**,i8***%oz,align 8
%oB=load i8*,i8**%oA,align 8
%oC=load i8*,i8**%G,align 8
%oD=load i8*,i8**%M,align 8
%oE=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%oD,i8*inreg%oC,i8*inreg%oB)
store i8*%oE,i8**%F,align 8
%oF=call fastcc i8*@_SMLFN11RecordLabel3Map6insertE(i32 inreg 1,i32 inreg 8)
%oG=getelementptr inbounds i8,i8*%oF,i64 16
%oH=bitcast i8*%oG to i8*(i8*,i8*)**
%oI=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%oH,align 8
%oJ=bitcast i8*%oF to i8**
%oK=load i8*,i8**%oJ,align 8
store i8*%oK,i8**%K,align 8
%oL=call i8*@sml_alloc(i32 inreg 28)#0
%oM=getelementptr inbounds i8,i8*%oL,i64 -4
%oN=bitcast i8*%oM to i32*
store i32 1342177304,i32*%oN,align 4
%oO=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%oP=bitcast i8*%oL to i8**
store i8*%oO,i8**%oP,align 8
%oQ=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%oR=getelementptr inbounds i8,i8*%oL,i64 8
%oS=bitcast i8*%oR to i8**
store i8*%oQ,i8**%oS,align 8
%oT=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%oU=getelementptr inbounds i8,i8*%oL,i64 16
%oV=bitcast i8*%oU to i8**
store i8*%oT,i8**%oV,align 8
%oW=getelementptr inbounds i8,i8*%oL,i64 24
%oX=bitcast i8*%oW to i32*
store i32 7,i32*%oX,align 4
%oY=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%oZ=call fastcc i8*%oI(i8*inreg%oY,i8*inreg%oL)
store i8*%oZ,i8**%E,align 8
%o0=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%o1=getelementptr inbounds i8,i8*%o0,i64 32
%o2=bitcast i8*%o1 to i8**
%o3=load i8*,i8**%o2,align 8
%o4=load i8*,i8**%G,align 8
%o5=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%o6=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%o5,i8*inreg%o4,i8*inreg%o3)
store i8*%o6,i8**%F,align 8
%o7=call i8*@sml_alloc(i32 inreg 28)#0
%o8=getelementptr inbounds i8,i8*%o7,i64 -4
%o9=bitcast i8*%o8 to i32*
store i32 1342177304,i32*%o9,align 4
store i8*%o7,i8**%G,align 8
%pa=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%pb=bitcast i8*%o7 to i8**
store i8*%pa,i8**%pb,align 8
%pc=load i8*,i8**%J,align 8
%pd=getelementptr inbounds i8,i8*%o7,i64 8
%pe=bitcast i8*%pd to i8**
store i8*%pc,i8**%pe,align 8
%pf=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%pg=getelementptr inbounds i8,i8*%o7,i64 16
%ph=bitcast i8*%pg to i8**
store i8*%pf,i8**%ph,align 8
%pi=getelementptr inbounds i8,i8*%o7,i64 24
%pj=bitcast i8*%pi to i32*
store i32 7,i32*%pj,align 4
%pk=call i8*@sml_alloc(i32 inreg 20)#0
%pl=getelementptr inbounds i8,i8*%pk,i64 -4
%pm=bitcast i8*%pl to i32*
store i32 1342177296,i32*%pm,align 4
store i8*%pk,i8**%F,align 8
%pn=getelementptr inbounds i8,i8*%pk,i64 4
%po=bitcast i8*%pn to i32*
store i32 0,i32*%po,align 1
%pp=bitcast i8*%pk to i32*
store i32 2,i32*%pp,align 4
%pq=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%pr=getelementptr inbounds i8,i8*%pk,i64 8
%ps=bitcast i8*%pr to i8**
store i8*%pq,i8**%ps,align 8
%pt=getelementptr inbounds i8,i8*%pk,i64 16
%pu=bitcast i8*%pt to i32*
store i32 2,i32*%pu,align 4
%pv=call i8*@sml_alloc(i32 inreg 28)#0
%pw=getelementptr inbounds i8,i8*%pv,i64 -4
%px=bitcast i8*%pw to i32*
store i32 1342177304,i32*%px,align 4
store i8*%pv,i8**%D,align 8
%py=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%pz=bitcast i8*%pv to i8**
store i8*%py,i8**%pz,align 8
%pA=load i8*,i8**%J,align 8
%pB=getelementptr inbounds i8,i8*%pv,i64 8
%pC=bitcast i8*%pB to i8**
store i8*%pA,i8**%pC,align 8
%pD=load i8*,i8**%L,align 8
store i8*null,i8**%L,align 8
%pE=getelementptr inbounds i8,i8*%pv,i64 16
%pF=bitcast i8*%pE to i8**
store i8*%pD,i8**%pF,align 8
%pG=getelementptr inbounds i8,i8*%pv,i64 24
%pH=bitcast i8*%pG to i32*
store i32 7,i32*%pH,align 4
%pI=call i8*@sml_alloc(i32 inreg 20)#0
%pJ=getelementptr inbounds i8,i8*%pI,i64 -4
%pK=bitcast i8*%pJ to i32*
store i32 1342177296,i32*%pK,align 4
store i8*%pI,i8**%E,align 8
%pL=getelementptr inbounds i8,i8*%pI,i64 4
%pM=bitcast i8*%pL to i32*
store i32 0,i32*%pM,align 1
%pN=bitcast i8*%pI to i32*
store i32 18,i32*%pN,align 4
%pO=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%pP=getelementptr inbounds i8,i8*%pI,i64 8
%pQ=bitcast i8*%pP to i8**
store i8*%pO,i8**%pQ,align 8
%pR=getelementptr inbounds i8,i8*%pI,i64 16
%pS=bitcast i8*%pR to i32*
store i32 2,i32*%pS,align 4
%pT=call i8*@sml_alloc(i32 inreg 28)#0
%pU=getelementptr inbounds i8,i8*%pT,i64 -4
%pV=bitcast i8*%pU to i32*
store i32 1342177304,i32*%pV,align 4
store i8*%pT,i8**%D,align 8
%pW=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%pX=bitcast i8*%pT to i8**
store i8*%pW,i8**%pX,align 8
%pY=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%pZ=getelementptr inbounds i8,i8*%pT,i64 8
%p0=bitcast i8*%pZ to i8**
store i8*%pY,i8**%p0,align 8
%p1=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%p2=getelementptr inbounds i8,i8*%pT,i64 16
%p3=bitcast i8*%p2 to i8**
store i8*%p1,i8**%p3,align 8
%p4=getelementptr inbounds i8,i8*%pT,i64 24
%p5=bitcast i8*%p4 to i32*
store i32 7,i32*%p5,align 4
%p6=call i8*@sml_alloc(i32 inreg 20)#0
%p7=bitcast i8*%p6 to i32*
%p8=getelementptr inbounds i8,i8*%p6,i64 -4
%p9=bitcast i8*%p8 to i32*
store i32 1342177296,i32*%p9,align 4
%qa=getelementptr inbounds i8,i8*%p6,i64 4
%qb=bitcast i8*%qa to i32*
store i32 0,i32*%qb,align 1
store i32 12,i32*%p7,align 4
%qc=load i8*,i8**%D,align 8
%qd=getelementptr inbounds i8,i8*%p6,i64 8
%qe=bitcast i8*%qd to i8**
store i8*%qc,i8**%qe,align 8
%qf=getelementptr inbounds i8,i8*%p6,i64 16
%qg=bitcast i8*%qf to i32*
store i32 2,i32*%qg,align 4
ret i8*%p6
qh:
%qi=getelementptr inbounds i8,i8*%W,i64 8
%qj=bitcast i8*%qi to i8**
%qk=load i8*,i8**%qj,align 8
store i8*%qk,i8**%D,align 8
%ql=getelementptr inbounds i8,i8*%qk,i64 16
%qm=bitcast i8*%ql to i8**
%qn=load i8*,i8**%qm,align 8
store i8*%qn,i8**%F,align 8
%qo=getelementptr inbounds i8,i8*%qk,i64 8
%qp=bitcast i8*%qo to i8**
%qq=load i8*,i8**%qp,align 8
%qr=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
%qs=call fastcc i8*@_SMLLN19DatatypeCompilation15compileDeclListE_328(i8*inreg%qr,i8*inreg%U,i8*inreg%qq)
store i8*%qs,i8**%E,align 8
%qt=bitcast i8*%qs to i8**
%qu=load i8*,i8**%qt,align 8
%qv=bitcast i8**%D to i8***
%qw=load i8**,i8***%qv,align 8
store i8*null,i8**%D,align 8
%qx=load i8*,i8**%qw,align 8
%qy=load i8*,i8**%M,align 8
store i8*null,i8**%M,align 8
%qz=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%qy,i8*inreg%qu,i8*inreg%qx)
store i8*%qz,i8**%D,align 8
%qA=call fastcc i8*@_SMLFN4List5foldrE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%qB=getelementptr inbounds i8,i8*%qA,i64 16
%qC=bitcast i8*%qB to i8*(i8*,i8*)**
%qD=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%qC,align 8
%qE=bitcast i8*%qA to i8**
%qF=load i8*,i8**%qE,align 8
store i8*%qF,i8**%G,align 8
%qG=call i8*@sml_alloc(i32 inreg 12)#0
%qH=getelementptr inbounds i8,i8*%qG,i64 -4
%qI=bitcast i8*%qH to i32*
store i32 1342177288,i32*%qI,align 4
store i8*%qG,i8**%H,align 8
%qJ=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%qK=bitcast i8*%qG to i8**
store i8*%qJ,i8**%qK,align 8
%qL=getelementptr inbounds i8,i8*%qG,i64 8
%qM=bitcast i8*%qL to i32*
store i32 1,i32*%qM,align 4
%qN=call i8*@sml_alloc(i32 inreg 28)#0
%qO=getelementptr inbounds i8,i8*%qN,i64 -4
%qP=bitcast i8*%qO to i32*
store i32 1342177304,i32*%qP,align 4
%qQ=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%qR=bitcast i8*%qN to i8**
store i8*%qQ,i8**%qR,align 8
%qS=getelementptr inbounds i8,i8*%qN,i64 8
%qT=bitcast i8*%qS to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_377 to void(...)*),void(...)**%qT,align 8
%qU=getelementptr inbounds i8,i8*%qN,i64 16
%qV=bitcast i8*%qU to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_377 to void(...)*),void(...)**%qV,align 8
%qW=getelementptr inbounds i8,i8*%qN,i64 24
%qX=bitcast i8*%qW to i32*
store i32 -2147483647,i32*%qX,align 4
%qY=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%qZ=call fastcc i8*%qD(i8*inreg%qY,i8*inreg%qN)
%q0=getelementptr inbounds i8,i8*%qZ,i64 16
%q1=bitcast i8*%q0 to i8*(i8*,i8*)**
%q2=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%q1,align 8
%q3=bitcast i8*%qZ to i8**
%q4=load i8*,i8**%q3,align 8
%q5=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%q6=call fastcc i8*%q2(i8*inreg%q4,i8*inreg%q5)
%q7=getelementptr inbounds i8,i8*%q6,i64 16
%q8=bitcast i8*%q7 to i8*(i8*,i8*)**
%q9=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%q8,align 8
%ra=bitcast i8*%q6 to i8**
%rb=load i8*,i8**%ra,align 8
%rc=load i8*,i8**%E,align 8
%rd=getelementptr inbounds i8,i8*%rc,i64 8
%re=bitcast i8*%rd to i8**
%rf=load i8*,i8**%re,align 8
%rg=tail call fastcc i8*%q9(i8*inreg%rb,i8*inreg%rf)
ret i8*%rg
rh:
%ri=getelementptr inbounds i8,i8*%W,i64 8
%rj=bitcast i8*%ri to i8**
%rk=load i8*,i8**%rj,align 8
store i8*%rk,i8**%D,align 8
%rl=getelementptr inbounds i8,i8*%rk,i64 8
%rm=bitcast i8*%rl to i8**
%rn=load i8*,i8**%rm,align 8
store i8*%rn,i8**%E,align 8
%ro=getelementptr inbounds i8,i8*%rk,i64 16
%rp=bitcast i8*%ro to i8**
%rq=load i8*,i8**%rp,align 8
store i8*%rq,i8**%F,align 8
%rr=getelementptr inbounds i8,i8*%rk,i64 24
%rs=bitcast i8*%rr to i8**
%rt=load i8*,i8**%rs,align 8
store i8*%rt,i8**%H,align 8
%ru=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%rv=getelementptr inbounds i8,i8*%ru,i64 16
%rw=bitcast i8*%rv to i8*(i8*,i8*)**
%rx=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%rw,align 8
%ry=bitcast i8*%ru to i8**
%rz=load i8*,i8**%ry,align 8
store i8*%rz,i8**%I,align 8
%rA=call i8*@sml_alloc(i32 inreg 20)#0
%rB=getelementptr inbounds i8,i8*%rA,i64 -4
%rC=bitcast i8*%rB to i32*
store i32 1342177296,i32*%rC,align 4
store i8*%rA,i8**%J,align 8
%rD=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%rE=bitcast i8*%rA to i8**
store i8*%rD,i8**%rE,align 8
%rF=load i8*,i8**%M,align 8
store i8*null,i8**%M,align 8
%rG=getelementptr inbounds i8,i8*%rA,i64 8
%rH=bitcast i8*%rG to i8**
store i8*%rF,i8**%rH,align 8
%rI=getelementptr inbounds i8,i8*%rA,i64 16
%rJ=bitcast i8*%rI to i32*
store i32 3,i32*%rJ,align 4
%rK=call i8*@sml_alloc(i32 inreg 28)#0
%rL=getelementptr inbounds i8,i8*%rK,i64 -4
%rM=bitcast i8*%rL to i32*
store i32 1342177304,i32*%rM,align 4
%rN=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%rO=bitcast i8*%rK to i8**
store i8*%rN,i8**%rO,align 8
%rP=getelementptr inbounds i8,i8*%rK,i64 8
%rQ=bitcast i8*%rP to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_376 to void(...)*),void(...)**%rQ,align 8
%rR=getelementptr inbounds i8,i8*%rK,i64 16
%rS=bitcast i8*%rR to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_376 to void(...)*),void(...)**%rS,align 8
%rT=getelementptr inbounds i8,i8*%rK,i64 24
%rU=bitcast i8*%rT to i32*
store i32 -2147483647,i32*%rU,align 4
%rV=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%rW=call fastcc i8*%rx(i8*inreg%rV,i8*inreg%rK)
%rX=getelementptr inbounds i8,i8*%rW,i64 16
%rY=bitcast i8*%rX to i8*(i8*,i8*)**
%rZ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%rY,align 8
%r0=bitcast i8*%rW to i8**
%r1=load i8*,i8**%r0,align 8
%r2=bitcast i8**%D to i8***
%r3=load i8**,i8***%r2,align 8
store i8*null,i8**%D,align 8
%r4=load i8*,i8**%r3,align 8
%r5=call fastcc i8*%rZ(i8*inreg%r1,i8*inreg%r4)
store i8*%r5,i8**%D,align 8
%r6=call i8*@sml_alloc(i32 inreg 36)#0
%r7=getelementptr inbounds i8,i8*%r6,i64 -4
%r8=bitcast i8*%r7 to i32*
store i32 1342177312,i32*%r8,align 4
store i8*%r6,i8**%G,align 8
%r9=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%sa=bitcast i8*%r6 to i8**
store i8*%r9,i8**%sa,align 8
%sb=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%sc=getelementptr inbounds i8,i8*%r6,i64 8
%sd=bitcast i8*%sc to i8**
store i8*%sb,i8**%sd,align 8
%se=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%sf=getelementptr inbounds i8,i8*%r6,i64 16
%sg=bitcast i8*%sf to i8**
store i8*%se,i8**%sg,align 8
%sh=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%si=getelementptr inbounds i8,i8*%r6,i64 24
%sj=bitcast i8*%si to i8**
store i8*%sh,i8**%sj,align 8
%sk=getelementptr inbounds i8,i8*%r6,i64 32
%sl=bitcast i8*%sk to i32*
store i32 15,i32*%sl,align 4
%sm=call i8*@sml_alloc(i32 inreg 20)#0
%sn=bitcast i8*%sm to i32*
%so=getelementptr inbounds i8,i8*%sm,i64 -4
%sp=bitcast i8*%so to i32*
store i32 1342177296,i32*%sp,align 4
%sq=getelementptr inbounds i8,i8*%sm,i64 4
%sr=bitcast i8*%sq to i32*
store i32 0,i32*%sr,align 1
store i32 25,i32*%sn,align 4
%ss=load i8*,i8**%G,align 8
%st=getelementptr inbounds i8,i8*%sm,i64 8
%su=bitcast i8*%st to i8**
store i8*%ss,i8**%su,align 8
%sv=getelementptr inbounds i8,i8*%sm,i64 16
%sw=bitcast i8*%sv to i32*
store i32 2,i32*%sw,align 4
ret i8*%sm
sx:
%sy=getelementptr inbounds i8,i8*%W,i64 8
%sz=bitcast i8*%sy to i8**
%sA=load i8*,i8**%sz,align 8
store i8*%sA,i8**%F,align 8
%sB=getelementptr inbounds i8,i8*%sA,i64 16
%sC=bitcast i8*%sB to i8**
%sD=load i8*,i8**%sC,align 8
store i8*%sD,i8**%H,align 8
%sE=getelementptr inbounds i8,i8*%sA,i64 24
%sF=bitcast i8*%sE to i8**
%sG=load i8*,i8**%sF,align 8
store i8*%sG,i8**%I,align 8
%sH=getelementptr inbounds i8,i8*%sA,i64 32
%sI=bitcast i8*%sH to i8**
%sJ=load i8*,i8**%sI,align 8
store i8*%sJ,i8**%J,align 8
%sK=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%sL=getelementptr inbounds i8,i8*%sK,i64 16
%sM=bitcast i8*%sL to i8*(i8*,i8*)**
%sN=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%sM,align 8
%sO=bitcast i8*%sK to i8**
%sP=load i8*,i8**%sO,align 8
%sQ=call fastcc i8*%sN(i8*inreg%sP,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@au,i64 0,i32 2)to i8*))
%sR=getelementptr inbounds i8,i8*%sQ,i64 16
%sS=bitcast i8*%sR to i8*(i8*,i8*)**
%sT=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%sS,align 8
%sU=bitcast i8*%sQ to i8**
%sV=load i8*,i8**%sU,align 8
%sW=bitcast i8**%F to i8***
%sX=load i8**,i8***%sW,align 8
%sY=load i8*,i8**%sX,align 8
%sZ=call fastcc i8*%sT(i8*inreg%sV,i8*inreg%sY)
store i8*%sZ,i8**%D,align 8
%s0=load i8*,i8**%F,align 8
%s1=getelementptr inbounds i8,i8*%s0,i64 8
%s2=bitcast i8*%s1 to i8**
%s3=load i8*,i8**%s2,align 8
%s4=load i8*,i8**%G,align 8
%s5=load i8*,i8**%M,align 8
%s6=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%s5,i8*inreg%s4,i8*inreg%s3)
store i8*%s6,i8**%E,align 8
%s7=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%s8=getelementptr inbounds i8,i8*%s7,i64 40
%s9=bitcast i8*%s8 to i8**
%ta=load i8*,i8**%s9,align 8
%tb=load i8*,i8**%G,align 8
%tc=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%td=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%tc,i8*inreg%tb,i8*inreg%ta)
store i8*%td,i8**%F,align 8
%te=call i8*@sml_alloc(i32 inreg 52)#0
%tf=getelementptr inbounds i8,i8*%te,i64 -4
%tg=bitcast i8*%tf to i32*
store i32 1342177328,i32*%tg,align 4
store i8*%te,i8**%G,align 8
%th=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%ti=bitcast i8*%te to i8**
store i8*%th,i8**%ti,align 8
%tj=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%tk=getelementptr inbounds i8,i8*%te,i64 8
%tl=bitcast i8*%tk to i8**
store i8*%tj,i8**%tl,align 8
%tm=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%tn=getelementptr inbounds i8,i8*%te,i64 16
%to=bitcast i8*%tn to i8**
store i8*%tm,i8**%to,align 8
%tp=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%tq=getelementptr inbounds i8,i8*%te,i64 24
%tr=bitcast i8*%tq to i8**
store i8*%tp,i8**%tr,align 8
%ts=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%tt=getelementptr inbounds i8,i8*%te,i64 32
%tu=bitcast i8*%tt to i8**
store i8*%ts,i8**%tu,align 8
%tv=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%tw=getelementptr inbounds i8,i8*%te,i64 40
%tx=bitcast i8*%tw to i8**
store i8*%tv,i8**%tx,align 8
%ty=getelementptr inbounds i8,i8*%te,i64 48
%tz=bitcast i8*%ty to i32*
store i32 63,i32*%tz,align 4
%tA=call i8*@sml_alloc(i32 inreg 20)#0
%tB=bitcast i8*%tA to i32*
%tC=getelementptr inbounds i8,i8*%tA,i64 -4
%tD=bitcast i8*%tC to i32*
store i32 1342177296,i32*%tD,align 4
%tE=getelementptr inbounds i8,i8*%tA,i64 4
%tF=bitcast i8*%tE to i32*
store i32 0,i32*%tF,align 1
store i32 3,i32*%tB,align 4
%tG=load i8*,i8**%G,align 8
%tH=getelementptr inbounds i8,i8*%tA,i64 8
%tI=bitcast i8*%tH to i8**
store i8*%tG,i8**%tI,align 8
%tJ=getelementptr inbounds i8,i8*%tA,i64 16
%tK=bitcast i8*%tJ to i32*
store i32 2,i32*%tK,align 4
ret i8*%tA
tL:
%tM=getelementptr inbounds i8,i8*%W,i64 8
%tN=bitcast i8*%tM to i8**
%tO=load i8*,i8**%tN,align 8
store i8*%tO,i8**%F,align 8
%tP=getelementptr inbounds i8,i8*%tO,i64 24
%tQ=bitcast i8*%tP to i8**
%tR=load i8*,i8**%tQ,align 8
store i8*%tR,i8**%H,align 8
%tS=getelementptr inbounds i8,i8*%tO,i64 32
%tT=bitcast i8*%tS to i8**
%tU=load i8*,i8**%tT,align 8
store i8*%tU,i8**%I,align 8
%tV=getelementptr inbounds i8,i8*%tO,i64 8
%tW=bitcast i8*%tV to i8**
%tX=load i8*,i8**%tW,align 8
%tY=load i8*,i8**%M,align 8
%tZ=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%tY,i8*inreg%U,i8*inreg%tX)
store i8*%tZ,i8**%D,align 8
%t0=bitcast i8**%F to i8***
%t1=load i8**,i8***%t0,align 8
%t2=load i8*,i8**%t1,align 8
%t3=bitcast i8*%t2 to i32*
%t4=load i32,i32*%t3,align 4
%t5=getelementptr inbounds i8,i8*%t2,i64 8
%t6=bitcast i8*%t5 to i8**
%t7=load i8*,i8**%t6,align 8
store i8*%t7,i8**%J,align 8
%t8=load i8*,i8**%t1,align 8
%t9=getelementptr inbounds i8,i8*%t8,i64 16
%ua=bitcast i8*%t9 to i8**
%ub=load i8*,i8**%ua,align 8
store i8*%ub,i8**%K,align 8
%uc=call i8*@sml_alloc(i32 inreg 28)#0
%ud=getelementptr inbounds i8,i8*%uc,i64 -4
%ue=bitcast i8*%ud to i32*
store i32 1342177304,i32*%ue,align 4
store i8*%uc,i8**%E,align 8
%uf=getelementptr inbounds i8,i8*%uc,i64 4
%ug=bitcast i8*%uf to i32*
store i32 0,i32*%ug,align 1
%uh=bitcast i8*%uc to i32*
store i32%t4,i32*%uh,align 4
%ui=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%uj=getelementptr inbounds i8,i8*%uc,i64 8
%uk=bitcast i8*%uj to i8**
store i8*%ui,i8**%uk,align 8
%ul=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%um=getelementptr inbounds i8,i8*%uc,i64 16
%un=bitcast i8*%um to i8**
store i8*%ul,i8**%un,align 8
%uo=getelementptr inbounds i8,i8*%uc,i64 24
%up=bitcast i8*%uo to i32*
store i32 6,i32*%up,align 4
%uq=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%ur=getelementptr inbounds i8,i8*%uq,i64 16
%us=bitcast i8*%ur to i8**
%ut=load i8*,i8**%us,align 8
%uu=load i8*,i8**%G,align 8
%uv=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%uw=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%uv,i8*inreg%uu,i8*inreg%ut)
store i8*%uw,i8**%F,align 8
%ux=call i8*@sml_alloc(i32 inreg 44)#0
%uy=getelementptr inbounds i8,i8*%ux,i64 -4
%uz=bitcast i8*%uy to i32*
store i32 1342177320,i32*%uz,align 4
store i8*%ux,i8**%G,align 8
%uA=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%uB=bitcast i8*%ux to i8**
store i8*%uA,i8**%uB,align 8
%uC=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%uD=getelementptr inbounds i8,i8*%ux,i64 8
%uE=bitcast i8*%uD to i8**
store i8*%uC,i8**%uE,align 8
%uF=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%uG=getelementptr inbounds i8,i8*%ux,i64 16
%uH=bitcast i8*%uG to i8**
store i8*%uF,i8**%uH,align 8
%uI=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%uJ=getelementptr inbounds i8,i8*%ux,i64 24
%uK=bitcast i8*%uJ to i8**
store i8*%uI,i8**%uK,align 8
%uL=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%uM=getelementptr inbounds i8,i8*%ux,i64 32
%uN=bitcast i8*%uM to i8**
store i8*%uL,i8**%uN,align 8
%uO=getelementptr inbounds i8,i8*%ux,i64 40
%uP=bitcast i8*%uO to i32*
store i32 31,i32*%uP,align 4
%uQ=call i8*@sml_alloc(i32 inreg 20)#0
%uR=bitcast i8*%uQ to i32*
%uS=getelementptr inbounds i8,i8*%uQ,i64 -4
%uT=bitcast i8*%uS to i32*
store i32 1342177296,i32*%uT,align 4
%uU=getelementptr inbounds i8,i8*%uQ,i64 4
%uV=bitcast i8*%uU to i32*
store i32 0,i32*%uV,align 1
store i32 9,i32*%uR,align 4
%uW=load i8*,i8**%G,align 8
%uX=getelementptr inbounds i8,i8*%uQ,i64 8
%uY=bitcast i8*%uX to i8**
store i8*%uW,i8**%uY,align 8
%uZ=getelementptr inbounds i8,i8*%uQ,i64 16
%u0=bitcast i8*%uZ to i32*
store i32 2,i32*%u0,align 4
ret i8*%uQ
u1:
%u2=getelementptr inbounds i8,i8*%W,i64 8
%u3=bitcast i8*%u2 to i8**
%u4=load i8*,i8**%u3,align 8
store i8*%u4,i8**%E,align 8
%u5=getelementptr inbounds i8,i8*%u4,i64 16
%u6=bitcast i8*%u5 to i8**
%u7=load i8*,i8**%u6,align 8
store i8*%u7,i8**%F,align 8
%u8=getelementptr inbounds i8,i8*%u4,i64 24
%u9=bitcast i8*%u8 to i8**
%va=load i8*,i8**%u9,align 8
store i8*%va,i8**%H,align 8
%vb=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%vc=getelementptr inbounds i8,i8*%vb,i64 16
%vd=bitcast i8*%vc to i8*(i8*,i8*)**
%ve=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%vd,align 8
%vf=bitcast i8*%vb to i8**
%vg=load i8*,i8**%vf,align 8
%vh=call fastcc i8*%ve(i8*inreg%vg,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@at,i64 0,i32 2)to i8*))
%vi=getelementptr inbounds i8,i8*%vh,i64 16
%vj=bitcast i8*%vi to i8*(i8*,i8*)**
%vk=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%vj,align 8
%vl=bitcast i8*%vh to i8**
%vm=load i8*,i8**%vl,align 8
%vn=bitcast i8**%E to i8***
%vo=load i8**,i8***%vn,align 8
%vp=load i8*,i8**%vo,align 8
%vq=call fastcc i8*%vk(i8*inreg%vm,i8*inreg%vp)
store i8*%vq,i8**%D,align 8
%vr=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%vs=getelementptr inbounds i8,i8*%vr,i64 8
%vt=bitcast i8*%vs to i8**
%vu=load i8*,i8**%vt,align 8
%vv=load i8*,i8**%G,align 8
%vw=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%vx=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%vw,i8*inreg%vv,i8*inreg%vu)
store i8*%vx,i8**%E,align 8
%vy=call i8*@sml_alloc(i32 inreg 36)#0
%vz=getelementptr inbounds i8,i8*%vy,i64 -4
%vA=bitcast i8*%vz to i32*
store i32 1342177312,i32*%vA,align 4
store i8*%vy,i8**%G,align 8
%vB=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%vC=bitcast i8*%vy to i8**
store i8*%vB,i8**%vC,align 8
%vD=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%vE=getelementptr inbounds i8,i8*%vy,i64 8
%vF=bitcast i8*%vE to i8**
store i8*%vD,i8**%vF,align 8
%vG=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%vH=getelementptr inbounds i8,i8*%vy,i64 16
%vI=bitcast i8*%vH to i8**
store i8*%vG,i8**%vI,align 8
%vJ=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%vK=getelementptr inbounds i8,i8*%vy,i64 24
%vL=bitcast i8*%vK to i8**
store i8*%vJ,i8**%vL,align 8
%vM=getelementptr inbounds i8,i8*%vy,i64 32
%vN=bitcast i8*%vM to i32*
store i32 15,i32*%vN,align 4
%vO=call i8*@sml_alloc(i32 inreg 20)#0
%vP=bitcast i8*%vO to i32*
%vQ=getelementptr inbounds i8,i8*%vO,i64 -4
%vR=bitcast i8*%vQ to i32*
store i32 1342177296,i32*%vR,align 4
%vS=getelementptr inbounds i8,i8*%vO,i64 4
%vT=bitcast i8*%vS to i32*
store i32 0,i32*%vT,align 1
store i32 7,i32*%vP,align 4
%vU=load i8*,i8**%G,align 8
%vV=getelementptr inbounds i8,i8*%vO,i64 8
%vW=bitcast i8*%vV to i8**
store i8*%vU,i8**%vW,align 8
%vX=getelementptr inbounds i8,i8*%vO,i64 16
%vY=bitcast i8*%vX to i32*
store i32 2,i32*%vY,align 4
ret i8*%vO
vZ:
%v0=getelementptr inbounds i8,i8*%W,i64 8
%v1=bitcast i8*%v0 to i8**
%v2=load i8*,i8**%v1,align 8
store i8*%v2,i8**%E,align 8
%v3=getelementptr inbounds i8,i8*%v2,i64 8
%v4=bitcast i8*%v3 to i8**
%v5=load i8*,i8**%v4,align 8
store i8*%v5,i8**%F,align 8
%v6=getelementptr inbounds i8,i8*%v2,i64 24
%v7=bitcast i8*%v6 to i8**
%v8=load i8*,i8**%v7,align 8
store i8*%v8,i8**%H,align 8
%v9=getelementptr inbounds i8,i8*%v2,i64 32
%wa=bitcast i8*%v9 to i8**
%wb=load i8*,i8**%wa,align 8
store i8*%wb,i8**%I,align 8
%wc=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%wd=getelementptr inbounds i8,i8*%wc,i64 16
%we=bitcast i8*%wd to i8*(i8*,i8*)**
%wf=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%we,align 8
%wg=bitcast i8*%wc to i8**
%wh=load i8*,i8**%wg,align 8
%wi=call fastcc i8*%wf(i8*inreg%wh,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@as,i64 0,i32 2)to i8*))
%wj=getelementptr inbounds i8,i8*%wi,i64 16
%wk=bitcast i8*%wj to i8*(i8*,i8*)**
%wl=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%wk,align 8
%wm=bitcast i8*%wi to i8**
%wn=load i8*,i8**%wm,align 8
%wo=bitcast i8**%E to i8***
%wp=load i8**,i8***%wo,align 8
%wq=load i8*,i8**%wp,align 8
%wr=call fastcc i8*%wl(i8*inreg%wn,i8*inreg%wq)
store i8*%wr,i8**%D,align 8
%ws=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%wt=getelementptr inbounds i8,i8*%ws,i64 16
%wu=bitcast i8*%wt to i8**
%wv=load i8*,i8**%wu,align 8
%ww=load i8*,i8**%G,align 8
%wx=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%wy=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%wx,i8*inreg%ww,i8*inreg%wv)
store i8*%wy,i8**%E,align 8
%wz=call i8*@sml_alloc(i32 inreg 44)#0
%wA=getelementptr inbounds i8,i8*%wz,i64 -4
%wB=bitcast i8*%wA to i32*
store i32 1342177320,i32*%wB,align 4
store i8*%wz,i8**%G,align 8
%wC=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%wD=bitcast i8*%wz to i8**
store i8*%wC,i8**%wD,align 8
%wE=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%wF=getelementptr inbounds i8,i8*%wz,i64 8
%wG=bitcast i8*%wF to i8**
store i8*%wE,i8**%wG,align 8
%wH=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%wI=getelementptr inbounds i8,i8*%wz,i64 16
%wJ=bitcast i8*%wI to i8**
store i8*%wH,i8**%wJ,align 8
%wK=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%wL=getelementptr inbounds i8,i8*%wz,i64 24
%wM=bitcast i8*%wL to i8**
store i8*%wK,i8**%wM,align 8
%wN=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%wO=getelementptr inbounds i8,i8*%wz,i64 32
%wP=bitcast i8*%wO to i8**
store i8*%wN,i8**%wP,align 8
%wQ=getelementptr inbounds i8,i8*%wz,i64 40
%wR=bitcast i8*%wQ to i32*
store i32 31,i32*%wR,align 4
%wS=call i8*@sml_alloc(i32 inreg 20)#0
%wT=bitcast i8*%wS to i32*
%wU=getelementptr inbounds i8,i8*%wS,i64 -4
%wV=bitcast i8*%wU to i32*
store i32 1342177296,i32*%wV,align 4
%wW=getelementptr inbounds i8,i8*%wS,i64 4
%wX=bitcast i8*%wW to i32*
store i32 0,i32*%wX,align 1
store i32 1,i32*%wT,align 4
%wY=load i8*,i8**%G,align 8
%wZ=getelementptr inbounds i8,i8*%wS,i64 8
%w0=bitcast i8*%wZ to i8**
store i8*%wY,i8**%w0,align 8
%w1=getelementptr inbounds i8,i8*%wS,i64 16
%w2=bitcast i8*%w1 to i32*
store i32 2,i32*%w2,align 4
ret i8*%wS
w3:
%w4=getelementptr inbounds i8,i8*%W,i64 8
%w5=bitcast i8*%w4 to i8**
%w6=load i8*,i8**%w5,align 8
store i8*%w6,i8**%E,align 8
%w7=getelementptr inbounds i8,i8*%w6,i64 8
%w8=bitcast i8*%w7 to i8**
%w9=load i8*,i8**%w8,align 8
store i8*%w9,i8**%F,align 8
%xa=getelementptr inbounds i8,i8*%w6,i64 24
%xb=bitcast i8*%xa to i8**
%xc=load i8*,i8**%xb,align 8
store i8*%xc,i8**%H,align 8
%xd=getelementptr inbounds i8,i8*%w6,i64 32
%xe=bitcast i8*%xd to i8**
%xf=load i8*,i8**%xe,align 8
store i8*%xf,i8**%I,align 8
%xg=getelementptr inbounds i8,i8*%w6,i64 16
%xh=bitcast i8*%xg to i8**
%xi=load i8*,i8**%xh,align 8
%xj=load i8*,i8**%M,align 8
%xk=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%xj,i8*inreg%U,i8*inreg%xi)
store i8*%xk,i8**%D,align 8
%xl=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%xm=getelementptr inbounds i8,i8*%xl,i64 16
%xn=bitcast i8*%xm to i8*(i8*,i8*)**
%xo=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%xn,align 8
%xp=bitcast i8*%xl to i8**
%xq=load i8*,i8**%xp,align 8
store i8*%xq,i8**%J,align 8
%xr=call i8*@sml_alloc(i32 inreg 20)#0
%xs=getelementptr inbounds i8,i8*%xr,i64 -4
%xt=bitcast i8*%xs to i32*
store i32 1342177296,i32*%xt,align 4
store i8*%xr,i8**%K,align 8
%xu=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%xv=bitcast i8*%xr to i8**
store i8*%xu,i8**%xv,align 8
%xw=load i8*,i8**%M,align 8
store i8*null,i8**%M,align 8
%xx=getelementptr inbounds i8,i8*%xr,i64 8
%xy=bitcast i8*%xx to i8**
store i8*%xw,i8**%xy,align 8
%xz=getelementptr inbounds i8,i8*%xr,i64 16
%xA=bitcast i8*%xz to i32*
store i32 3,i32*%xA,align 4
%xB=call i8*@sml_alloc(i32 inreg 28)#0
%xC=getelementptr inbounds i8,i8*%xB,i64 -4
%xD=bitcast i8*%xC to i32*
store i32 1342177304,i32*%xD,align 4
%xE=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%xF=bitcast i8*%xB to i8**
store i8*%xE,i8**%xF,align 8
%xG=getelementptr inbounds i8,i8*%xB,i64 8
%xH=bitcast i8*%xG to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_369 to void(...)*),void(...)**%xH,align 8
%xI=getelementptr inbounds i8,i8*%xB,i64 16
%xJ=bitcast i8*%xI to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_369 to void(...)*),void(...)**%xJ,align 8
%xK=getelementptr inbounds i8,i8*%xB,i64 24
%xL=bitcast i8*%xK to i32*
store i32 -2147483647,i32*%xL,align 4
%xM=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%xN=call fastcc i8*%xo(i8*inreg%xM,i8*inreg%xB)
%xO=getelementptr inbounds i8,i8*%xN,i64 16
%xP=bitcast i8*%xO to i8*(i8*,i8*)**
%xQ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%xP,align 8
%xR=bitcast i8*%xN to i8**
%xS=load i8*,i8**%xR,align 8
%xT=bitcast i8**%E to i8***
%xU=load i8**,i8***%xT,align 8
store i8*null,i8**%E,align 8
%xV=load i8*,i8**%xU,align 8
%xW=call fastcc i8*%xQ(i8*inreg%xS,i8*inreg%xV)
store i8*%xW,i8**%E,align 8
%xX=call i8*@sml_alloc(i32 inreg 44)#0
%xY=getelementptr inbounds i8,i8*%xX,i64 -4
%xZ=bitcast i8*%xY to i32*
store i32 1342177320,i32*%xZ,align 4
store i8*%xX,i8**%G,align 8
%x0=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%x1=bitcast i8*%xX to i8**
store i8*%x0,i8**%x1,align 8
%x2=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%x3=getelementptr inbounds i8,i8*%xX,i64 8
%x4=bitcast i8*%x3 to i8**
store i8*%x2,i8**%x4,align 8
%x5=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%x6=getelementptr inbounds i8,i8*%xX,i64 16
%x7=bitcast i8*%x6 to i8**
store i8*%x5,i8**%x7,align 8
%x8=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%x9=getelementptr inbounds i8,i8*%xX,i64 24
%ya=bitcast i8*%x9 to i8**
store i8*%x8,i8**%ya,align 8
%yb=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%yc=getelementptr inbounds i8,i8*%xX,i64 32
%yd=bitcast i8*%yc to i8**
store i8*%yb,i8**%yd,align 8
%ye=getelementptr inbounds i8,i8*%xX,i64 40
%yf=bitcast i8*%ye to i32*
store i32 31,i32*%yf,align 4
%yg=call i8*@sml_alloc(i32 inreg 20)#0
%yh=bitcast i8*%yg to i32*
%yi=getelementptr inbounds i8,i8*%yg,i64 -4
%yj=bitcast i8*%yi to i32*
store i32 1342177296,i32*%yj,align 4
%yk=getelementptr inbounds i8,i8*%yg,i64 4
%yl=bitcast i8*%yk to i32*
store i32 0,i32*%yl,align 1
store i32 8,i32*%yh,align 4
%ym=load i8*,i8**%G,align 8
%yn=getelementptr inbounds i8,i8*%yg,i64 8
%yo=bitcast i8*%yn to i8**
store i8*%ym,i8**%yo,align 8
%yp=getelementptr inbounds i8,i8*%yg,i64 16
%yq=bitcast i8*%yp to i32*
store i32 2,i32*%yq,align 4
ret i8*%yg
yr:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%ys=getelementptr inbounds i8,i8*%W,i64 8
%yt=bitcast i8*%ys to i8**
%yu=load i8*,i8**%yt,align 8
%yv=bitcast i8*%yu to i8**
%yw=load i8*,i8**%yv,align 8
store i8*%yw,i8**%D,align 8
%yx=getelementptr inbounds i8,i8*%yu,i64 8
%yy=bitcast i8*%yx to i8**
%yz=load i8*,i8**%yy,align 8
store i8*%yz,i8**%E,align 8
%yA=getelementptr inbounds i8,i8*%yu,i64 16
%yB=bitcast i8*%yA to i8**
%yC=load i8*,i8**%yB,align 8
store i8*%yC,i8**%F,align 8
%yD=call i8*@sml_alloc(i32 inreg 20)#0
%yE=getelementptr inbounds i8,i8*%yD,i64 -4
%yF=bitcast i8*%yE to i32*
store i32 1342177296,i32*%yF,align 4
store i8*%yD,i8**%G,align 8
%yG=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%yH=bitcast i8*%yD to i8**
store i8*%yG,i8**%yH,align 8
%yI=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%yJ=getelementptr inbounds i8,i8*%yD,i64 8
%yK=bitcast i8*%yJ to i8**
store i8*%yI,i8**%yK,align 8
%yL=getelementptr inbounds i8,i8*%yD,i64 16
%yM=bitcast i8*%yL to i32*
store i32 3,i32*%yM,align 4
%yN=call i8*@sml_alloc(i32 inreg 20)#0
%yO=getelementptr inbounds i8,i8*%yN,i64 -4
%yP=bitcast i8*%yO to i32*
store i32 1342177296,i32*%yP,align 4
store i8*%yN,i8**%F,align 8
%yQ=bitcast i8*%yN to i64*
store i64 0,i64*%yQ,align 4
%yR=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%yS=getelementptr inbounds i8,i8*%yN,i64 8
%yT=bitcast i8*%yS to i8**
store i8*%yR,i8**%yT,align 8
%yU=getelementptr inbounds i8,i8*%yN,i64 16
%yV=bitcast i8*%yU to i32*
store i32 2,i32*%yV,align 4
%yW=call i8*@sml_alloc(i32 inreg 20)#0
%yX=getelementptr inbounds i8,i8*%yW,i64 -4
%yY=bitcast i8*%yX to i32*
store i32 1342177296,i32*%yY,align 4
store i8*%yW,i8**%E,align 8
%yZ=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%y0=bitcast i8*%yW to i8**
store i8*%yZ,i8**%y0,align 8
%y1=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%y2=getelementptr inbounds i8,i8*%yW,i64 8
%y3=bitcast i8*%y2 to i8**
store i8*%y1,i8**%y3,align 8
%y4=getelementptr inbounds i8,i8*%yW,i64 16
%y5=bitcast i8*%y4 to i32*
store i32 3,i32*%y5,align 4
%y6=call i8*@sml_alloc(i32 inreg 20)#0
%y7=bitcast i8*%y6 to i32*
%y8=getelementptr inbounds i8,i8*%y6,i64 -4
%y9=bitcast i8*%y8 to i32*
store i32 1342177296,i32*%y9,align 4
%za=getelementptr inbounds i8,i8*%y6,i64 4
%zb=bitcast i8*%za to i32*
store i32 0,i32*%zb,align 1
store i32 4,i32*%y7,align 4
%zc=load i8*,i8**%E,align 8
%zd=getelementptr inbounds i8,i8*%y6,i64 8
%ze=bitcast i8*%zd to i8**
store i8*%zc,i8**%ze,align 8
%zf=getelementptr inbounds i8,i8*%y6,i64 16
%zg=bitcast i8*%zf to i32*
store i32 2,i32*%zg,align 4
ret i8*%y6
zh:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%zi=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%zi,i8**%D,align 8
%zj=call i8*@sml_alloc(i32 inreg 28)#0
%zk=getelementptr inbounds i8,i8*%zj,i64 -4
%zl=bitcast i8*%zk to i32*
store i32 1342177304,i32*%zl,align 4
store i8*%zj,i8**%E,align 8
%zm=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%zn=bitcast i8*%zj to i8**
store i8*%zm,i8**%zn,align 8
%zo=getelementptr inbounds i8,i8*%zj,i64 8
%zp=bitcast i8*%zo to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aq,i64 0,i32 2,i64 0),i8**%zp,align 8
%zq=getelementptr inbounds i8,i8*%zj,i64 16
%zr=bitcast i8*%zq to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[24x i8]}>,<{[4x i8],i32,[24x i8]}>*@ar,i64 0,i32 2,i64 0),i8**%zr,align 8
%zs=getelementptr inbounds i8,i8*%zj,i64 24
%zt=bitcast i8*%zs to i32*
store i32 7,i32*%zt,align 4
%zu=call i8*@sml_alloc(i32 inreg 60)#0
%zv=getelementptr inbounds i8,i8*%zu,i64 -4
%zw=bitcast i8*%zv to i32*
store i32 1342177336,i32*%zw,align 4
%zx=getelementptr inbounds i8,i8*%zu,i64 56
%zy=bitcast i8*%zx to i32*
store i32 1,i32*%zy,align 4
%zz=load i8*,i8**%E,align 8
%zA=bitcast i8*%zu to i8**
store i8*%zz,i8**%zA,align 8
call void@sml_raise(i8*inreg%zu)#1
unreachable
zB:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%zC=getelementptr inbounds i8,i8*%W,i64 8
%zD=bitcast i8*%zC to i8**
%zE=load i8*,i8**%zD,align 8
%zF=bitcast i8*%zE to i8**
%zG=load i8*,i8**%zF,align 8
store i8*%zG,i8**%D,align 8
%zH=getelementptr inbounds i8,i8*%zE,i64 8
%zI=bitcast i8*%zH to i8**
%zJ=load i8*,i8**%zI,align 8
store i8*%zJ,i8**%E,align 8
%zK=call i8*@sml_alloc(i32 inreg 20)#0
%zL=getelementptr inbounds i8,i8*%zK,i64 -4
%zM=bitcast i8*%zL to i32*
store i32 1342177296,i32*%zM,align 4
store i8*%zK,i8**%F,align 8
%zN=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%zO=bitcast i8*%zK to i8**
store i8*%zN,i8**%zO,align 8
%zP=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%zQ=getelementptr inbounds i8,i8*%zK,i64 8
%zR=bitcast i8*%zQ to i8**
store i8*%zP,i8**%zR,align 8
%zS=getelementptr inbounds i8,i8*%zK,i64 16
%zT=bitcast i8*%zS to i32*
store i32 3,i32*%zT,align 4
%zU=call i8*@sml_alloc(i32 inreg 20)#0
%zV=bitcast i8*%zU to i32*
%zW=getelementptr inbounds i8,i8*%zU,i64 -4
%zX=bitcast i8*%zW to i32*
store i32 1342177296,i32*%zX,align 4
%zY=getelementptr inbounds i8,i8*%zU,i64 4
%zZ=bitcast i8*%zY to i32*
store i32 0,i32*%zZ,align 1
store i32 6,i32*%zV,align 4
%z0=load i8*,i8**%F,align 8
%z1=getelementptr inbounds i8,i8*%zU,i64 8
%z2=bitcast i8*%z1 to i8**
store i8*%z0,i8**%z2,align 8
%z3=getelementptr inbounds i8,i8*%zU,i64 16
%z4=bitcast i8*%z3 to i32*
store i32 2,i32*%z4,align 4
ret i8*%zU
z5:
store i8*null,i8**%M,align 8
%z6=getelementptr inbounds i8,i8*%W,i64 8
%z7=bitcast i8*%z6 to i8**
%z8=load i8*,i8**%z7,align 8
%z9=bitcast i8*%z8 to i8**
%Aa=load i8*,i8**%z9,align 8
store i8*%Aa,i8**%D,align 8
%Ab=getelementptr inbounds i8,i8*%z8,i64 8
%Ac=bitcast i8*%Ab to i8**
%Ad=load i8*,i8**%Ac,align 8
store i8*%Ad,i8**%E,align 8
%Ae=call fastcc i8*@_SMLFN13LongsymbolEnv4findE(i32 inreg 1,i32 inreg 8)
%Af=getelementptr inbounds i8,i8*%Ae,i64 16
%Ag=bitcast i8*%Af to i8*(i8*,i8*)**
%Ah=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Ag,align 8
%Ai=bitcast i8*%Ae to i8**
%Aj=load i8*,i8**%Ai,align 8
store i8*%Aj,i8**%H,align 8
%Ak=bitcast i8**%G to i8***
%Al=load i8**,i8***%Ak,align 8
store i8*null,i8**%G,align 8
%Am=load i8*,i8**%Al,align 8
store i8*%Am,i8**%F,align 8
%An=bitcast i8**%D to i8***
%Ao=load i8**,i8***%An,align 8
%Ap=load i8*,i8**%Ao,align 8
store i8*%Ap,i8**%D,align 8
%Aq=call i8*@sml_alloc(i32 inreg 20)#0
%Ar=getelementptr inbounds i8,i8*%Aq,i64 -4
%As=bitcast i8*%Ar to i32*
store i32 1342177296,i32*%As,align 4
%At=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%Au=bitcast i8*%Aq to i8**
store i8*%At,i8**%Au,align 8
%Av=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%Aw=getelementptr inbounds i8,i8*%Aq,i64 8
%Ax=bitcast i8*%Aw to i8**
store i8*%Av,i8**%Ax,align 8
%Ay=getelementptr inbounds i8,i8*%Aq,i64 16
%Az=bitcast i8*%Ay to i32*
store i32 3,i32*%Az,align 4
%AA=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%AB=call fastcc i8*%Ah(i8*inreg%AA,i8*inreg%Aq)
%AC=icmp eq i8*%AB,null
br i1%AC,label%AD,label%AX
AD:
store i8*null,i8**%E,align 8
%AE=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%AE,i8**%D,align 8
%AF=call i8*@sml_alloc(i32 inreg 28)#0
%AG=getelementptr inbounds i8,i8*%AF,i64 -4
%AH=bitcast i8*%AG to i32*
store i32 1342177304,i32*%AH,align 4
store i8*%AF,i8**%E,align 8
%AI=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%AJ=bitcast i8*%AF to i8**
store i8*%AI,i8**%AJ,align 8
%AK=getelementptr inbounds i8,i8*%AF,i64 8
%AL=bitcast i8*%AK to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@ao,i64 0,i32 2,i64 0),i8**%AL,align 8
%AM=getelementptr inbounds i8,i8*%AF,i64 16
%AN=bitcast i8*%AM to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[23x i8]}>,<{[4x i8],i32,[23x i8]}>*@ap,i64 0,i32 2,i64 0),i8**%AN,align 8
%AO=getelementptr inbounds i8,i8*%AF,i64 24
%AP=bitcast i8*%AO to i32*
store i32 7,i32*%AP,align 4
%AQ=call i8*@sml_alloc(i32 inreg 60)#0
%AR=getelementptr inbounds i8,i8*%AQ,i64 -4
%AS=bitcast i8*%AR to i32*
store i32 1342177336,i32*%AS,align 4
%AT=getelementptr inbounds i8,i8*%AQ,i64 56
%AU=bitcast i8*%AT to i32*
store i32 1,i32*%AU,align 4
%AV=load i8*,i8**%E,align 8
%AW=bitcast i8*%AQ to i8**
store i8*%AV,i8**%AW,align 8
call void@sml_raise(i8*inreg%AQ)#1
unreachable
AX:
%AY=bitcast i8*%AB to i8**
%AZ=load i8*,i8**%AY,align 8
store i8*%AZ,i8**%D,align 8
%A0=call i8*@sml_alloc(i32 inreg 20)#0
%A1=getelementptr inbounds i8,i8*%A0,i64 -4
%A2=bitcast i8*%A1 to i32*
store i32 1342177296,i32*%A2,align 4
store i8*%A0,i8**%F,align 8
%A3=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%A4=bitcast i8*%A0 to i8**
store i8*%A3,i8**%A4,align 8
%A5=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%A6=getelementptr inbounds i8,i8*%A0,i64 8
%A7=bitcast i8*%A6 to i8**
store i8*%A5,i8**%A7,align 8
%A8=getelementptr inbounds i8,i8*%A0,i64 16
%A9=bitcast i8*%A8 to i32*
store i32 3,i32*%A9,align 4
%Ba=call i8*@sml_alloc(i32 inreg 20)#0
%Bb=bitcast i8*%Ba to i32*
%Bc=getelementptr inbounds i8,i8*%Ba,i64 -4
%Bd=bitcast i8*%Bc to i32*
store i32 1342177296,i32*%Bd,align 4
%Be=getelementptr inbounds i8,i8*%Ba,i64 4
%Bf=bitcast i8*%Be to i32*
store i32 0,i32*%Bf,align 1
store i32 6,i32*%Bb,align 4
%Bg=load i8*,i8**%F,align 8
%Bh=getelementptr inbounds i8,i8*%Ba,i64 8
%Bi=bitcast i8*%Bh to i8**
store i8*%Bg,i8**%Bi,align 8
%Bj=getelementptr inbounds i8,i8*%Ba,i64 16
%Bk=bitcast i8*%Bj to i32*
store i32 2,i32*%Bk,align 4
ret i8*%Ba
Bl:
store i8*null,i8**%M,align 8
%Bm=getelementptr inbounds i8,i8*%W,i64 8
%Bn=bitcast i8*%Bm to i8**
%Bo=load i8*,i8**%Bn,align 8
%Bp=bitcast i8*%Bo to i8**
%Bq=load i8*,i8**%Bp,align 8
store i8*%Bq,i8**%D,align 8
%Br=getelementptr inbounds i8,i8*%Bo,i64 8
%Bs=bitcast i8*%Br to i8**
%Bt=load i8*,i8**%Bs,align 8
store i8*%Bt,i8**%E,align 8
%Bu=call fastcc i8*@_SMLFN5ExnID3Map4findE(i32 inreg 1,i32 inreg 8)
%Bv=getelementptr inbounds i8,i8*%Bu,i64 16
%Bw=bitcast i8*%Bv to i8*(i8*,i8*)**
%Bx=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Bw,align 8
%By=bitcast i8*%Bu to i8**
%Bz=load i8*,i8**%By,align 8
store i8*%Bz,i8**%H,align 8
%BA=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%BB=getelementptr inbounds i8,i8*%BA,i64 8
%BC=bitcast i8*%BB to i8**
%BD=load i8*,i8**%BC,align 8
store i8*%BD,i8**%F,align 8
%BE=bitcast i8**%D to i32**
%BF=load i32*,i32**%BE,align 8
store i8*null,i8**%D,align 8
%BG=load i32,i32*%BF,align 4
%BH=call i8*@sml_alloc(i32 inreg 20)#0
%BI=getelementptr inbounds i8,i8*%BH,i64 -4
%BJ=bitcast i8*%BI to i32*
store i32 1342177296,i32*%BJ,align 4
%BK=getelementptr inbounds i8,i8*%BH,i64 12
%BL=bitcast i8*%BK to i32*
store i32 0,i32*%BL,align 1
%BM=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%BN=bitcast i8*%BH to i8**
store i8*%BM,i8**%BN,align 8
%BO=getelementptr inbounds i8,i8*%BH,i64 8
%BP=bitcast i8*%BO to i32*
store i32%BG,i32*%BP,align 4
%BQ=getelementptr inbounds i8,i8*%BH,i64 16
%BR=bitcast i8*%BQ to i32*
store i32 1,i32*%BR,align 4
%BS=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%BT=call fastcc i8*%Bx(i8*inreg%BS,i8*inreg%BH)
%BU=icmp eq i8*%BT,null
br i1%BU,label%BV,label%Cf
BV:
store i8*null,i8**%E,align 8
%BW=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%BW,i8**%D,align 8
%BX=call i8*@sml_alloc(i32 inreg 28)#0
%BY=getelementptr inbounds i8,i8*%BX,i64 -4
%BZ=bitcast i8*%BY to i32*
store i32 1342177304,i32*%BZ,align 4
store i8*%BX,i8**%E,align 8
%B0=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%B1=bitcast i8*%BX to i8**
store i8*%B0,i8**%B1,align 8
%B2=getelementptr inbounds i8,i8*%BX,i64 8
%B3=bitcast i8*%B2 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@am,i64 0,i32 2,i64 0),i8**%B3,align 8
%B4=getelementptr inbounds i8,i8*%BX,i64 16
%B5=bitcast i8*%B4 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[21x i8]}>,<{[4x i8],i32,[21x i8]}>*@an,i64 0,i32 2,i64 0),i8**%B5,align 8
%B6=getelementptr inbounds i8,i8*%BX,i64 24
%B7=bitcast i8*%B6 to i32*
store i32 7,i32*%B7,align 4
%B8=call i8*@sml_alloc(i32 inreg 60)#0
%B9=getelementptr inbounds i8,i8*%B8,i64 -4
%Ca=bitcast i8*%B9 to i32*
store i32 1342177336,i32*%Ca,align 4
%Cb=getelementptr inbounds i8,i8*%B8,i64 56
%Cc=bitcast i8*%Cb to i32*
store i32 1,i32*%Cc,align 4
%Cd=load i8*,i8**%E,align 8
%Ce=bitcast i8*%B8 to i8**
store i8*%Cd,i8**%Ce,align 8
call void@sml_raise(i8*inreg%B8)#1
unreachable
Cf:
%Cg=bitcast i8*%BT to i8**
%Ch=load i8*,i8**%Cg,align 8
store i8*%Ch,i8**%D,align 8
%Ci=call i8*@sml_alloc(i32 inreg 20)#0
%Cj=getelementptr inbounds i8,i8*%Ci,i64 -4
%Ck=bitcast i8*%Cj to i32*
store i32 1342177296,i32*%Ck,align 4
store i8*%Ci,i8**%F,align 8
%Cl=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%Cm=bitcast i8*%Ci to i8**
store i8*%Cl,i8**%Cm,align 8
%Cn=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%Co=getelementptr inbounds i8,i8*%Ci,i64 8
%Cp=bitcast i8*%Co to i8**
store i8*%Cn,i8**%Cp,align 8
%Cq=getelementptr inbounds i8,i8*%Ci,i64 16
%Cr=bitcast i8*%Cq to i32*
store i32 3,i32*%Cr,align 4
%Cs=call i8*@sml_alloc(i32 inreg 20)#0
%Ct=bitcast i8*%Cs to i32*
%Cu=getelementptr inbounds i8,i8*%Cs,i64 -4
%Cv=bitcast i8*%Cu to i32*
store i32 1342177296,i32*%Cv,align 4
%Cw=getelementptr inbounds i8,i8*%Cs,i64 4
%Cx=bitcast i8*%Cw to i32*
store i32 0,i32*%Cx,align 1
store i32 26,i32*%Ct,align 4
%Cy=load i8*,i8**%F,align 8
%Cz=getelementptr inbounds i8,i8*%Cs,i64 8
%CA=bitcast i8*%Cz to i8**
store i8*%Cy,i8**%CA,align 8
%CB=getelementptr inbounds i8,i8*%Cs,i64 16
%CC=bitcast i8*%CB to i32*
store i32 2,i32*%CC,align 4
ret i8*%Cs
CD:
%CE=getelementptr inbounds i8,i8*%W,i64 8
%CF=bitcast i8*%CE to i8**
%CG=load i8*,i8**%CF,align 8
store i8*%CG,i8**%D,align 8
%CH=getelementptr inbounds i8,i8*%CG,i64 8
%CI=bitcast i8*%CH to i8**
%CJ=load i8*,i8**%CI,align 8
store i8*%CJ,i8**%E,align 8
%CK=getelementptr inbounds i8,i8*%CG,i64 16
%CL=bitcast i8*%CK to i8**
%CM=load i8*,i8**%CL,align 8
store i8*%CM,i8**%F,align 8
%CN=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%CO=getelementptr inbounds i8,i8*%CN,i64 16
%CP=bitcast i8*%CO to i8*(i8*,i8*)**
%CQ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%CP,align 8
%CR=bitcast i8*%CN to i8**
%CS=load i8*,i8**%CR,align 8
store i8*%CS,i8**%H,align 8
%CT=call i8*@sml_alloc(i32 inreg 20)#0
%CU=getelementptr inbounds i8,i8*%CT,i64 -4
%CV=bitcast i8*%CU to i32*
store i32 1342177296,i32*%CV,align 4
store i8*%CT,i8**%I,align 8
%CW=load i8*,i8**%G,align 8
%CX=bitcast i8*%CT to i8**
store i8*%CW,i8**%CX,align 8
%CY=load i8*,i8**%M,align 8
store i8*null,i8**%M,align 8
%CZ=getelementptr inbounds i8,i8*%CT,i64 8
%C0=bitcast i8*%CZ to i8**
store i8*%CY,i8**%C0,align 8
%C1=getelementptr inbounds i8,i8*%CT,i64 16
%C2=bitcast i8*%C1 to i32*
store i32 3,i32*%C2,align 4
%C3=call i8*@sml_alloc(i32 inreg 28)#0
%C4=getelementptr inbounds i8,i8*%C3,i64 -4
%C5=bitcast i8*%C4 to i32*
store i32 1342177304,i32*%C5,align 4
%C6=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%C7=bitcast i8*%C3 to i8**
store i8*%C6,i8**%C7,align 8
%C8=getelementptr inbounds i8,i8*%C3,i64 8
%C9=bitcast i8*%C8 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL9argExpOpt_362 to void(...)*),void(...)**%C9,align 8
%Da=getelementptr inbounds i8,i8*%C3,i64 16
%Db=bitcast i8*%Da to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL9argExpOpt_362 to void(...)*),void(...)**%Db,align 8
%Dc=getelementptr inbounds i8,i8*%C3,i64 24
%Dd=bitcast i8*%Dc to i32*
store i32 -2147483647,i32*%Dd,align 4
%De=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%Df=call fastcc i8*%CQ(i8*inreg%De,i8*inreg%C3)
%Dg=getelementptr inbounds i8,i8*%Df,i64 16
%Dh=bitcast i8*%Dg to i8*(i8*,i8*)**
%Di=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Dh,align 8
%Dj=bitcast i8*%Df to i8**
%Dk=load i8*,i8**%Dj,align 8
%Dl=bitcast i8**%D to i8***
%Dm=load i8**,i8***%Dl,align 8
store i8*null,i8**%D,align 8
%Dn=load i8*,i8**%Dm,align 8
%Do=call fastcc i8*%Di(i8*inreg%Dk,i8*inreg%Dn)
store i8*%Do,i8**%D,align 8
%Dp=load i8*,i8**%F,align 8
%Dq=call fastcc i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg%Dp)
%Dr=getelementptr inbounds i8,i8*%Dq,i64 16
%Ds=bitcast i8*%Dr to i8*(i8*,i8*)**
%Dt=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Ds,align 8
%Du=bitcast i8*%Dq to i8**
%Dv=load i8*,i8**%Du,align 8
store i8*%Dv,i8**%H,align 8
%Dw=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%Dx=bitcast i8**%d to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%Dx)
%Dy=bitcast i8**%e to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%Dy)
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
store i8*%Dw,i8**%d,align 8
%Dz=call i8*@sml_alloc(i32 inreg 12)#0
%DA=getelementptr inbounds i8,i8*%Dz,i64 -4
%DB=bitcast i8*%DA to i32*
store i32 1342177288,i32*%DB,align 4
store i8*%Dz,i8**%e,align 8
%DC=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%DD=bitcast i8*%Dz to i8**
store i8*%DC,i8**%DD,align 8
%DE=getelementptr inbounds i8,i8*%Dz,i64 8
%DF=bitcast i8*%DE to i32*
store i32 1,i32*%DF,align 4
%DG=call i8*@sml_alloc(i32 inreg 28)#0
%DH=getelementptr inbounds i8,i8*%DG,i64 -4
%DI=bitcast i8*%DH to i32*
store i32 1342177304,i32*%DI,align 4
%DJ=load i8*,i8**%e,align 8
%DK=bitcast i8*%DG to i8**
store i8*%DJ,i8**%DK,align 8
%DL=getelementptr inbounds i8,i8*%DG,i64 8
%DM=bitcast i8*%DL to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10composeExnE_316 to void(...)*),void(...)**%DM,align 8
%DN=getelementptr inbounds i8,i8*%DG,i64 16
%DO=bitcast i8*%DN to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10composeExnE_316 to void(...)*),void(...)**%DO,align 8
%DP=getelementptr inbounds i8,i8*%DG,i64 24
%DQ=bitcast i8*%DP to i32*
store i32 -2147483647,i32*%DQ,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%Dx)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%Dy)
store i8*%DJ,i8**%G,align 8
%DR=call i8*@sml_alloc(i32 inreg 28)#0
%DS=getelementptr inbounds i8,i8*%DR,i64 -4
%DT=bitcast i8*%DS to i32*
store i32 1342177304,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**%D,align 8
store i8*null,i8**%D,align 8
%DX=getelementptr inbounds i8,i8*%DR,i64 8
%DY=bitcast i8*%DX to i8**
store i8*%DW,i8**%DY,align 8
%DZ=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%D0=getelementptr inbounds i8,i8*%DR,i64 16
%D1=bitcast i8*%D0 to i8**
store i8*%DZ,i8**%D1,align 8
%D2=getelementptr inbounds i8,i8*%DR,i64 24
%D3=bitcast i8*%D2 to i32*
store i32 7,i32*%D3,align 4
%D4=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%D5=call fastcc i8*@_SMLLN19DatatypeCompilation10composeExnE_316(i8*inreg%D4,i8*inreg%DR)
%D6=load i8*,i8**%H,align 8
%D7=tail call fastcc i8*%Dt(i8*inreg%D6,i8*inreg%D5)
ret i8*%D7
D8:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%D9=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%D9,i8**%D,align 8
%Ea=call i8*@sml_alloc(i32 inreg 28)#0
%Eb=getelementptr inbounds i8,i8*%Ea,i64 -4
%Ec=bitcast i8*%Eb to i32*
store i32 1342177304,i32*%Ec,align 4
store i8*%Ea,i8**%E,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*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@ak,i64 0,i32 2,i64 0),i8**%Eg,align 8
%Eh=getelementptr inbounds i8,i8*%Ea,i64 16
%Ei=bitcast i8*%Eh to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[20x i8]}>,<{[4x i8],i32,[20x i8]}>*@al,i64 0,i32 2,i64 0),i8**%Ei,align 8
%Ej=getelementptr inbounds i8,i8*%Ea,i64 24
%Ek=bitcast i8*%Ej to i32*
store i32 7,i32*%Ek,align 4
%El=call i8*@sml_alloc(i32 inreg 60)#0
%Em=getelementptr inbounds i8,i8*%El,i64 -4
%En=bitcast i8*%Em to i32*
store i32 1342177336,i32*%En,align 4
%Eo=getelementptr inbounds i8,i8*%El,i64 56
%Ep=bitcast i8*%Eo to i32*
store i32 1,i32*%Ep,align 4
%Eq=load i8*,i8**%E,align 8
%Er=bitcast i8*%El to i8**
store i8*%Eq,i8**%Er,align 8
call void@sml_raise(i8*inreg%El)#1
unreachable
Es:
%Et=getelementptr inbounds i8,i8*%W,i64 8
%Eu=bitcast i8*%Et to i8**
%Ev=load i8*,i8**%Eu,align 8
store i8*%Ev,i8**%E,align 8
%Ew=getelementptr inbounds i8,i8*%Ev,i64 16
%Ex=bitcast i8*%Ew to i8**
%Ey=load i8*,i8**%Ex,align 8
store i8*%Ey,i8**%F,align 8
%Ez=getelementptr inbounds i8,i8*%Ev,i64 24
%EA=bitcast i8*%Ez to i8**
%EB=load i8*,i8**%EA,align 8
store i8*%EB,i8**%H,align 8
%EC=getelementptr inbounds i8,i8*%Ev,i64 32
%ED=bitcast i8*%EC to i8**
%EE=load i8*,i8**%ED,align 8
store i8*%EE,i8**%I,align 8
%EF=bitcast i8*%Ev to i8**
%EG=load i8*,i8**%EF,align 8
%EH=load i8*,i8**%M,align 8
%EI=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%EH,i8*inreg%U,i8*inreg%EG)
store i8*%EI,i8**%D,align 8
%EJ=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%EK=getelementptr inbounds i8,i8*%EJ,i64 8
%EL=bitcast i8*%EK to i8**
%EM=load i8*,i8**%EL,align 8
%EN=load i8*,i8**%G,align 8
%EO=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%EP=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%EO,i8*inreg%EN,i8*inreg%EM)
store i8*%EP,i8**%E,align 8
%EQ=call i8*@sml_alloc(i32 inreg 44)#0
%ER=getelementptr inbounds i8,i8*%EQ,i64 -4
%ES=bitcast i8*%ER to i32*
store i32 1342177320,i32*%ES,align 4
store i8*%EQ,i8**%G,align 8
%ET=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%EU=bitcast i8*%EQ to i8**
store i8*%ET,i8**%EU,align 8
%EV=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%EW=getelementptr inbounds i8,i8*%EQ,i64 8
%EX=bitcast i8*%EW to i8**
store i8*%EV,i8**%EX,align 8
%EY=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%EZ=getelementptr inbounds i8,i8*%EQ,i64 16
%E0=bitcast i8*%EZ to i8**
store i8*%EY,i8**%E0,align 8
%E1=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%E2=getelementptr inbounds i8,i8*%EQ,i64 24
%E3=bitcast i8*%E2 to i8**
store i8*%E1,i8**%E3,align 8
%E4=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%E5=getelementptr inbounds i8,i8*%EQ,i64 32
%E6=bitcast i8*%E5 to i8**
store i8*%E4,i8**%E6,align 8
%E7=getelementptr inbounds i8,i8*%EQ,i64 40
%E8=bitcast i8*%E7 to i32*
store i32 31,i32*%E8,align 4
%E9=call i8*@sml_alloc(i32 inreg 20)#0
%Fa=bitcast i8*%E9 to i32*
%Fb=getelementptr inbounds i8,i8*%E9,i64 -4
%Fc=bitcast i8*%Fb to i32*
store i32 1342177296,i32*%Fc,align 4
%Fd=getelementptr inbounds i8,i8*%E9,i64 4
%Fe=bitcast i8*%Fd to i32*
store i32 0,i32*%Fe,align 1
store i32 5,i32*%Fa,align 4
%Ff=load i8*,i8**%G,align 8
%Fg=getelementptr inbounds i8,i8*%E9,i64 8
%Fh=bitcast i8*%Fg to i8**
store i8*%Ff,i8**%Fh,align 8
%Fi=getelementptr inbounds i8,i8*%E9,i64 16
%Fj=bitcast i8*%Fi to i32*
store i32 2,i32*%Fj,align 4
ret i8*%E9
Fk:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%Fl=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%Fl,i8**%D,align 8
%Fm=call i8*@sml_alloc(i32 inreg 28)#0
%Fn=getelementptr inbounds i8,i8*%Fm,i64 -4
%Fo=bitcast i8*%Fn to i32*
store i32 1342177304,i32*%Fo,align 4
store i8*%Fm,i8**%E,align 8
%Fp=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%Fq=bitcast i8*%Fm to i8**
store i8*%Fp,i8**%Fq,align 8
%Fr=getelementptr inbounds i8,i8*%Fm,i64 8
%Fs=bitcast i8*%Fr to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@ai,i64 0,i32 2,i64 0),i8**%Fs,align 8
%Ft=getelementptr inbounds i8,i8*%Fm,i64 16
%Fu=bitcast i8*%Ft to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[26x i8]}>,<{[4x i8],i32,[26x i8]}>*@aj,i64 0,i32 2,i64 0),i8**%Fu,align 8
%Fv=getelementptr inbounds i8,i8*%Fm,i64 24
%Fw=bitcast i8*%Fv to i32*
store i32 7,i32*%Fw,align 4
%Fx=call i8*@sml_alloc(i32 inreg 60)#0
%Fy=getelementptr inbounds i8,i8*%Fx,i64 -4
%Fz=bitcast i8*%Fy to i32*
store i32 1342177336,i32*%Fz,align 4
%FA=getelementptr inbounds i8,i8*%Fx,i64 56
%FB=bitcast i8*%FA to i32*
store i32 1,i32*%FB,align 4
%FC=load i8*,i8**%E,align 8
%FD=bitcast i8*%Fx to i8**
store i8*%FC,i8**%FD,align 8
call void@sml_raise(i8*inreg%Fx)#1
unreachable
FE:
%FF=getelementptr inbounds i8,i8*%W,i64 8
%FG=bitcast i8*%FF to i8**
%FH=load i8*,i8**%FG,align 8
store i8*%FH,i8**%E,align 8
%FI=getelementptr inbounds i8,i8*%FH,i64 8
%FJ=bitcast i8*%FI to i8**
%FK=load i8*,i8**%FJ,align 8
store i8*%FK,i8**%F,align 8
%FL=getelementptr inbounds i8,i8*%FH,i64 16
%FM=bitcast i8*%FL to i8**
%FN=load i8*,i8**%FM,align 8
store i8*%FN,i8**%H,align 8
%FO=call fastcc i8*@_SMLFN6Option3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%FP=getelementptr inbounds i8,i8*%FO,i64 16
%FQ=bitcast i8*%FP to i8*(i8*,i8*)**
%FR=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%FQ,align 8
%FS=bitcast i8*%FO to i8**
%FT=load i8*,i8**%FS,align 8
store i8*%FT,i8**%D,align 8
%FU=call i8*@sml_alloc(i32 inreg 20)#0
%FV=getelementptr inbounds i8,i8*%FU,i64 -4
%FW=bitcast i8*%FV to i32*
store i32 1342177296,i32*%FW,align 4
store i8*%FU,i8**%I,align 8
%FX=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%FY=bitcast i8*%FU to i8**
store i8*%FX,i8**%FY,align 8
%FZ=load i8*,i8**%M,align 8
store i8*null,i8**%M,align 8
%F0=getelementptr inbounds i8,i8*%FU,i64 8
%F1=bitcast i8*%F0 to i8**
store i8*%FZ,i8**%F1,align 8
%F2=getelementptr inbounds i8,i8*%FU,i64 16
%F3=bitcast i8*%F2 to i32*
store i32 3,i32*%F3,align 4
%F4=call i8*@sml_alloc(i32 inreg 28)#0
%F5=getelementptr inbounds i8,i8*%F4,i64 -4
%F6=bitcast i8*%F5 to i32*
store i32 1342177304,i32*%F6,align 4
%F7=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%F8=bitcast i8*%F4 to i8**
store i8*%F7,i8**%F8,align 8
%F9=getelementptr inbounds i8,i8*%F4,i64 8
%Ga=bitcast i8*%F9 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL9argExpOpt_357 to void(...)*),void(...)**%Ga,align 8
%Gb=getelementptr inbounds i8,i8*%F4,i64 16
%Gc=bitcast i8*%Gb to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL9argExpOpt_357 to void(...)*),void(...)**%Gc,align 8
%Gd=getelementptr inbounds i8,i8*%F4,i64 24
%Ge=bitcast i8*%Gd to i32*
store i32 -2147483647,i32*%Ge,align 4
%Gf=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%Gg=call fastcc i8*%FR(i8*inreg%Gf,i8*inreg%F4)
%Gh=getelementptr inbounds i8,i8*%Gg,i64 16
%Gi=bitcast i8*%Gh to i8*(i8*,i8*)**
%Gj=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Gi,align 8
%Gk=bitcast i8*%Gg to i8**
%Gl=load i8*,i8**%Gk,align 8
%Gm=bitcast i8**%E to i8***
%Gn=load i8**,i8***%Gm,align 8
%Go=load i8*,i8**%Gn,align 8
%Gp=call fastcc i8*%Gj(i8*inreg%Gl,i8*inreg%Go)
store i8*%Gp,i8**%D,align 8
%Gq=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%Gr=getelementptr inbounds i8,i8*%Gq,i64 24
%Gs=bitcast i8*%Gr to i8**
%Gt=load i8*,i8**%Gs,align 8
%Gu=call fastcc i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg%Gt)
%Gv=getelementptr inbounds i8,i8*%Gu,i64 16
%Gw=bitcast i8*%Gv to i8*(i8*,i8*)**
%Gx=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Gw,align 8
%Gy=bitcast i8*%Gu to i8**
%Gz=load i8*,i8**%Gy,align 8
store i8*%Gz,i8**%E,align 8
%GA=call i8*@sml_alloc(i32 inreg 28)#0
%GB=getelementptr inbounds i8,i8*%GA,i64 -4
%GC=bitcast i8*%GB to i32*
store i32 1342177304,i32*%GC,align 4
%GD=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%GE=bitcast i8*%GA to i8**
store i8*%GD,i8**%GE,align 8
%GF=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%GG=getelementptr inbounds i8,i8*%GA,i64 8
%GH=bitcast i8*%GG to i8**
store i8*%GF,i8**%GH,align 8
%GI=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%GJ=getelementptr inbounds i8,i8*%GA,i64 16
%GK=bitcast i8*%GJ to i8**
store i8*%GI,i8**%GK,align 8
%GL=getelementptr inbounds i8,i8*%GA,i64 24
%GM=bitcast i8*%GL to i32*
store i32 7,i32*%GM,align 4
%GN=bitcast i8**%f to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%GN)
%GO=bitcast i8**%g to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%GO)
%GP=bitcast i8**%h to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%GP)
%GQ=bitcast i8**%i to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%GQ)
%GR=bitcast i8**%j to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%GR)
%GS=bitcast i8**%k to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%GS)
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
store i8*%GA,i8**%f,align 8
%GT=load atomic i32,i32*@sml_check_flag unordered,align 4
%GU=icmp eq i32%GT,0
br i1%GU,label%G2,label%GV
GV:
call void@sml_check(i32 inreg%GT)
%GW=load i8*,i8**%f,align 8
%GX=bitcast i8*%GW to i8**
%GY=getelementptr inbounds i8,i8*%GW,i64 16
%GZ=bitcast i8*%GY to i8**
%G0=getelementptr inbounds i8,i8*%GW,i64 8
%G1=bitcast i8*%G0 to i8**
br label%G2
G2:
%G3=phi i8**[%G1,%GV],[%GH,%FE]
%G4=phi i8**[%GZ,%GV],[%GK,%FE]
%G5=phi i8**[%GX,%GV],[%GE,%FE]
%G6=load i8*,i8**%G5,align 8
store i8*%G6,i8**%i,align 8
%G7=load i8*,i8**%G4,align 8
store i8*%G7,i8**%h,align 8
%G8=load i8*,i8**%G3,align 8
%G9=icmp eq i8*%G8,null
br i1%G9,label%Ha,label%Hf
Ha:
%Hb=getelementptr inbounds i8,i8*%G6,i64 16
%Hc=bitcast i8*%Hb to i8**
%Hd=load i8*,i8**%Hc,align 8
%He=call fastcc i8*@_SMLFN11TypesBasics7derefTyE(i8*inreg%Hd)
br label%Hw
Hf:
%Hg=bitcast i8*%G8 to i8**
%Hh=load i8*,i8**%Hg,align 8
store i8*%Hh,i8**%f,align 8
%Hi=getelementptr inbounds i8,i8*%G6,i64 16
%Hj=bitcast i8*%Hi to i8**
%Hk=load i8*,i8**%Hj,align 8
store i8*%Hk,i8**%g,align 8
%Hl=call i8*@sml_alloc(i32 inreg 20)#0
%Hm=getelementptr inbounds i8,i8*%Hl,i64 -4
%Hn=bitcast i8*%Hm to i32*
store i32 1342177296,i32*%Hn,align 4
%Ho=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%Hp=bitcast i8*%Hl to i8**
store i8*%Ho,i8**%Hp,align 8
%Hq=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Hr=getelementptr inbounds i8,i8*%Hl,i64 8
%Hs=bitcast i8*%Hr to i8**
store i8*%Hq,i8**%Hs,align 8
%Ht=getelementptr inbounds i8,i8*%Hl,i64 16
%Hu=bitcast i8*%Ht to i32*
store i32 3,i32*%Hu,align 4
%Hv=call fastcc i8*@_SMLFN11TypesBasics7tpappTyE(i8*inreg%Hl)
br label%Hw
Hw:
%Hx=phi i8*[%He,%Ha],[%Hv,%Hf]
%Hy=call fastcc i8*@_SMLLN19DatatypeCompilation18decomposeDataconTyE_247(i8*inreg%Hx)
%Hz=bitcast i8*%Hy to i8**
%HA=load i8*,i8**%Hz,align 8
store i8*%HA,i8**%f,align 8
%HB=getelementptr inbounds i8,i8*%Hy,i64 8
%HC=bitcast i8*%HB to i8**
%HD=load i8*,i8**%HC,align 8
store i8*%HD,i8**%g,align 8
%HE=load i8*,i8**%h,align 8
%HF=icmp eq i8*%HE,null
br i1%HF,label%HG,label%HJ
HG:
%HH=icmp eq i8*%HA,null
br i1%HH,label%Ik,label%HI
HI:
store i8*null,i8**%g,align 8
store i8*null,i8**%i,align 8
br label%Iq
HJ:
%HK=bitcast i8*%HE to i8**
%HL=load i8*,i8**%HK,align 8
store i8*%HL,i8**%h,align 8
%HM=icmp eq i8*%HA,null
br i1%HM,label%HN,label%HO
HN:
store i8*null,i8**%g,align 8
store i8*null,i8**%i,align 8
store i8*null,i8**%h,align 8
br label%Iq
HO:
%HP=bitcast i8*%HA to i8**
%HQ=load i8*,i8**%HP,align 8
store i8*%HQ,i8**%j,align 8
%HR=call i8*@sml_alloc(i32 inreg 20)#0
%HS=getelementptr inbounds i8,i8*%HR,i64 -4
%HT=bitcast i8*%HS to i32*
store i32 1342177296,i32*%HT,align 4
store i8*%HR,i8**%k,align 8
%HU=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%HV=bitcast i8*%HR to i8**
store i8*%HU,i8**%HV,align 8
%HW=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%HX=getelementptr inbounds i8,i8*%HR,i64 8
%HY=bitcast i8*%HX to i8**
store i8*%HW,i8**%HY,align 8
%HZ=getelementptr inbounds i8,i8*%HR,i64 16
%H0=bitcast i8*%HZ to i32*
store i32 3,i32*%H0,align 4
%H1=call i8*@sml_alloc(i32 inreg 20)#0
%H2=getelementptr inbounds i8,i8*%H1,i64 -4
%H3=bitcast i8*%H2 to i32*
store i32 1342177296,i32*%H3,align 4
store i8*%H1,i8**%h,align 8
%H4=getelementptr inbounds i8,i8*%H1,i64 4
%H5=bitcast i8*%H4 to i32*
store i32 0,i32*%H5,align 1
%H6=bitcast i8*%H1 to i32*
store i32 8,i32*%H6,align 4
%H7=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%H8=getelementptr inbounds i8,i8*%H1,i64 8
%H9=bitcast i8*%H8 to i8**
store i8*%H7,i8**%H9,align 8
%Ia=getelementptr inbounds i8,i8*%H1,i64 16
%Ib=bitcast i8*%Ia to i32*
store i32 2,i32*%Ib,align 4
%Ic=call i8*@sml_alloc(i32 inreg 12)#0
%Id=getelementptr inbounds i8,i8*%Ic,i64 -4
%Ie=bitcast i8*%Id to i32*
store i32 1342177288,i32*%Ie,align 4
%If=load i8*,i8**%h,align 8
%Ig=bitcast i8*%Ic to i8**
store i8*%If,i8**%Ig,align 8
%Ih=getelementptr inbounds i8,i8*%Ic,i64 8
%Ii=bitcast i8*%Ih to i32*
store i32 1,i32*%Ii,align 4
%Ij=load i8*,i8**%g,align 8
br label%Ik
Ik:
%Il=phi i8*[%Ij,%HO],[%HD,%HG]
%Im=phi i8*[%Ic,%HO],[null,%HG]
store i8*%Im,i8**%h,align 8
%In=call fastcc i8*@_SMLLN19DatatypeCompilation13extractLayoutE_243(i8*inreg%Il)
%Io=bitcast i8*%In to i32*
%Ip=load i32,i32*%Io,align 4
switch i32%Ip,label%IK[
i32 5,label%Ol
i32 0,label%M0
i32 4,label%LG
i32 1,label%Kr
i32 3,label%JJ
i32 2,label%I2
]
Iq:
%Ir=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%Ir,i8**%f,align 8
%Is=call i8*@sml_alloc(i32 inreg 28)#0
%It=getelementptr inbounds i8,i8*%Is,i64 -4
%Iu=bitcast i8*%It to i32*
store i32 1342177304,i32*%Iu,align 4
store i8*%Is,i8**%g,align 8
%Iv=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Iw=bitcast i8*%Is to i8**
store i8*%Iv,i8**%Iw,align 8
%Ix=getelementptr inbounds i8,i8*%Is,i64 8
%Iy=bitcast i8*%Ix to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@i,i64 0,i32 2,i64 0),i8**%Iy,align 8
%Iz=getelementptr inbounds i8,i8*%Is,i64 16
%IA=bitcast i8*%Iz to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[11x i8]}>,<{[4x i8],i32,[11x i8]}>*@j,i64 0,i32 2,i64 0),i8**%IA,align 8
%IB=getelementptr inbounds i8,i8*%Is,i64 24
%IC=bitcast i8*%IB to i32*
store i32 7,i32*%IC,align 4
%ID=call i8*@sml_alloc(i32 inreg 60)#0
%IE=getelementptr inbounds i8,i8*%ID,i64 -4
%IF=bitcast i8*%IE to i32*
store i32 1342177336,i32*%IF,align 4
%IG=getelementptr inbounds i8,i8*%ID,i64 56
%IH=bitcast i8*%IG to i32*
store i32 1,i32*%IH,align 4
%II=load i8*,i8**%g,align 8
%IJ=bitcast i8*%ID to i8**
store i8*%II,i8**%IJ,align 8
call void@sml_raise(i8*inreg%ID)#1
unreachable
IK:
store i8*null,i8**%g,align 8
store i8*null,i8**%h,align 8
store i8*null,i8**%i,align 8
call void@sml_matchcomp_bug()
%IL=load i8*,i8**@_SMLZ5Match,align 8
store i8*%IL,i8**%f,align 8
%IM=call i8*@sml_alloc(i32 inreg 20)#0
%IN=getelementptr inbounds i8,i8*%IM,i64 -4
%IO=bitcast i8*%IN to i32*
store i32 1342177296,i32*%IO,align 4
store i8*%IM,i8**%g,align 8
%IP=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%IQ=bitcast i8*%IM to i8**
store i8*%IP,i8**%IQ,align 8
%IR=getelementptr inbounds i8,i8*%IM,i64 8
%IS=bitcast i8*%IR to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[88x i8]}>,<{[4x i8],i32,[88x i8]}>*@x,i64 0,i32 2,i64 0),i8**%IS,align 8
%IT=getelementptr inbounds i8,i8*%IM,i64 16
%IU=bitcast i8*%IT to i32*
store i32 3,i32*%IU,align 4
%IV=call i8*@sml_alloc(i32 inreg 60)#0
%IW=getelementptr inbounds i8,i8*%IV,i64 -4
%IX=bitcast i8*%IW to i32*
store i32 1342177336,i32*%IX,align 4
%IY=getelementptr inbounds i8,i8*%IV,i64 56
%IZ=bitcast i8*%IY to i32*
store i32 1,i32*%IZ,align 4
%I0=load i8*,i8**%g,align 8
%I1=bitcast i8*%IV to i8**
store i8*%I0,i8**%I1,align 8
call void@sml_raise(i8*inreg%IV)#1
unreachable
I2:
store i8*null,i8**%i,align 8
%I3=load i8*,i8**%h,align 8
%I4=icmp eq i8*%I3,null
store i8*null,i8**%h,align 8
br i1%I4,label%Jp,label%I5
I5:
%I6=bitcast i8*%I3 to i8**
%I7=load i8*,i8**%I6,align 8
store i8*%I7,i8**%g,align 8
%I8=load i8*,i8**%f,align 8
%I9=icmp eq i8*%I8,null
br i1%I9,label%Ja,label%Jb
Ja:
store i8*null,i8**%g,align 8
br label%Jp
Jb:
%Jc=bitcast i8*%I8 to i8**
%Jd=load i8*,i8**%Jc,align 8
store i8*%Jd,i8**%f,align 8
%Je=call i8*@sml_alloc(i32 inreg 20)#0
%Jf=getelementptr inbounds i8,i8*%Je,i64 -4
%Jg=bitcast i8*%Jf to i32*
store i32 1342177296,i32*%Jg,align 4
%Jh=load i8*,i8**%f,align 8
%Ji=bitcast i8*%Je to i8**
store i8*%Jh,i8**%Ji,align 8
%Jj=load i8*,i8**%g,align 8
%Jk=getelementptr inbounds i8,i8*%Je,i64 8
%Jl=bitcast i8*%Jk to i8**
store i8*%Jj,i8**%Jl,align 8
%Jm=getelementptr inbounds i8,i8*%Je,i64 16
%Jn=bitcast i8*%Jm to i32*
store i32 3,i32*%Jn,align 4
%Jo=call fastcc i8*@_SMLFN15EmitTypedLambda9Ref__allocE(i8*inreg%Je)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
Jp:
%Jq=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%Jq,i8**%f,align 8
%Jr=call i8*@sml_alloc(i32 inreg 28)#0
%Js=getelementptr inbounds i8,i8*%Jr,i64 -4
%Jt=bitcast i8*%Js to i32*
store i32 1342177304,i32*%Jt,align 4
store i8*%Jr,i8**%g,align 8
%Ju=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Jv=bitcast i8*%Jr to i8**
store i8*%Ju,i8**%Jv,align 8
%Jw=getelementptr inbounds i8,i8*%Jr,i64 8
%Jx=bitcast i8*%Jw to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@v,i64 0,i32 2,i64 0),i8**%Jx,align 8
%Jy=getelementptr inbounds i8,i8*%Jr,i64 16
%Jz=bitcast i8*%Jy to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[23x i8]}>,<{[4x i8],i32,[23x i8]}>*@w,i64 0,i32 2,i64 0),i8**%Jz,align 8
%JA=getelementptr inbounds i8,i8*%Jr,i64 24
%JB=bitcast i8*%JA to i32*
store i32 7,i32*%JB,align 4
%JC=call i8*@sml_alloc(i32 inreg 60)#0
%JD=getelementptr inbounds i8,i8*%JC,i64 -4
%JE=bitcast i8*%JD to i32*
store i32 1342177336,i32*%JE,align 4
%JF=getelementptr inbounds i8,i8*%JC,i64 56
%JG=bitcast i8*%JF to i32*
store i32 1,i32*%JG,align 4
%JH=load i8*,i8**%g,align 8
%JI=bitcast i8*%JC to i8**
store i8*%JH,i8**%JI,align 8
call void@sml_raise(i8*inreg%JC)#1
unreachable
JJ:
store i8*null,i8**%i,align 8
%JK=load i8*,i8**%h,align 8
%JL=icmp eq i8*%JK,null
br i1%JL,label%JM,label%J7
JM:
store i8*null,i8**%h,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
store i8*%JN,i8**%f,align 8
%JQ=bitcast i8*%JN to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@u,i64 0,i32 2)to i8*),i8**%JQ,align 8
%JR=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%JS=getelementptr inbounds i8,i8*%JN,i64 8
%JT=bitcast i8*%JS to i8**
store i8*%JR,i8**%JT,align 8
%JU=getelementptr inbounds i8,i8*%JN,i64 16
%JV=bitcast i8*%JU to i32*
store i32 3,i32*%JV,align 4
%JW=call i8*@sml_alloc(i32 inreg 20)#0
%JX=bitcast i8*%JW to i32*
%JY=getelementptr inbounds i8,i8*%JW,i64 -4
%JZ=bitcast i8*%JY to i32*
store i32 1342177296,i32*%JZ,align 4
%J0=getelementptr inbounds i8,i8*%JW,i64 4
%J1=bitcast i8*%J0 to i32*
store i32 0,i32*%J1,align 1
store i32 3,i32*%JX,align 4
%J2=load i8*,i8**%f,align 8
%J3=getelementptr inbounds i8,i8*%JW,i64 8
%J4=bitcast i8*%J3 to i8**
store i8*%J2,i8**%J4,align 8
%J5=getelementptr inbounds i8,i8*%JW,i64 16
%J6=bitcast i8*%J5 to i32*
store i32 2,i32*%J6,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
J7:
store i8*null,i8**%g,align 8
store i8*null,i8**%h,align 8
%J8=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%J8,i8**%f,align 8
%J9=call i8*@sml_alloc(i32 inreg 28)#0
%Ka=getelementptr inbounds i8,i8*%J9,i64 -4
%Kb=bitcast i8*%Ka to i32*
store i32 1342177304,i32*%Kb,align 4
store i8*%J9,i8**%g,align 8
%Kc=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Kd=bitcast i8*%J9 to i8**
store i8*%Kc,i8**%Kd,align 8
%Ke=getelementptr inbounds i8,i8*%J9,i64 8
%Kf=bitcast i8*%Ke to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@s,i64 0,i32 2,i64 0),i8**%Kf,align 8
%Kg=getelementptr inbounds i8,i8*%J9,i64 16
%Kh=bitcast i8*%Kg to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[26x i8]}>,<{[4x i8],i32,[26x i8]}>*@t,i64 0,i32 2,i64 0),i8**%Kh,align 8
%Ki=getelementptr inbounds i8,i8*%J9,i64 24
%Kj=bitcast i8*%Ki to i32*
store i32 7,i32*%Kj,align 4
%Kk=call i8*@sml_alloc(i32 inreg 60)#0
%Kl=getelementptr inbounds i8,i8*%Kk,i64 -4
%Km=bitcast i8*%Kl to i32*
store i32 1342177336,i32*%Km,align 4
%Kn=getelementptr inbounds i8,i8*%Kk,i64 56
%Ko=bitcast i8*%Kn to i32*
store i32 1,i32*%Ko,align 4
%Kp=load i8*,i8**%g,align 8
%Kq=bitcast i8*%Kk to i8**
store i8*%Kp,i8**%Kq,align 8
call void@sml_raise(i8*inreg%Kk)#1
unreachable
Kr:
%Ks=getelementptr inbounds i8,i8*%In,i64 8
%Kt=bitcast i8*%Ks to i8**
%Ku=load i8*,i8**%Kt,align 8
store i8*%Ku,i8**%j,align 8
%Kv=load i8*,i8**%h,align 8
%Kw=icmp eq i8*%Kv,null
br i1%Kw,label%Kx,label%Lm
Kx:
store i8*null,i8**%h,align 8
%Ky=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%Kz=getelementptr inbounds i8,i8*%Ky,i64 8
%KA=bitcast i8*%Kz to i8**
%KB=load i8*,i8**%KA,align 8
%KC=call fastcc i8*@_SMLFN6Symbol10lastSymbolE(i8*inreg%KB)
store i8*%KC,i8**%f,align 8
%KD=bitcast i8**%j to i8***
%KE=load i8**,i8***%KD,align 8
store i8*null,i8**%j,align 8
%KF=load i8*,i8**%KE,align 8
%KG=call fastcc i8*@_SMLFN6Symbol8mkSymbolE(i8*inreg%KF)
%KH=getelementptr inbounds i8,i8*%KG,i64 16
%KI=bitcast i8*%KH to i8*(i8*,i8*)**
%KJ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%KI,align 8
%KK=bitcast i8*%KG to i8**
%KL=load i8*,i8**%KK,align 8
%KM=load i8*,i8**@_SMLZN3Loc5nolocE,align 8
%KN=call fastcc i8*%KJ(i8*inreg%KL,i8*inreg%KM)
store i8*%KN,i8**%h,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
%KR=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%KS=bitcast i8*%KO to i8**
store i8*%KR,i8**%KS,align 8
%KT=load i8*,i8**%h,align 8
store i8*null,i8**%h,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 fastcc i32@_SMLFN6Symbol8eqSymbolE(i8*inreg%KO)
%KZ=icmp eq i32%KY,0
%K0=select i1%KZ,i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,i32,i32}>,<{[4x i8],i32,i32,i32,i32}>*@q,i64 0,i32 2)to i8*),i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,i32,i32}>,<{[4x i8],i32,i32,i32,i32}>*@r,i64 0,i32 2)to i8*)
store i8*%K0,i8**%f,align 8
%K1=call i8*@sml_alloc(i32 inreg 20)#0
%K2=getelementptr inbounds i8,i8*%K1,i64 -4
%K3=bitcast i8*%K2 to i32*
store i32 1342177296,i32*%K3,align 4
store i8*%K1,i8**%h,align 8
%K4=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%K5=bitcast i8*%K1 to i8**
store i8*%K4,i8**%K5,align 8
%K6=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%K7=getelementptr inbounds i8,i8*%K1,i64 8
%K8=bitcast i8*%K7 to i8**
store i8*%K6,i8**%K8,align 8
%K9=getelementptr inbounds i8,i8*%K1,i64 16
%La=bitcast i8*%K9 to i32*
store i32 3,i32*%La,align 4
%Lb=call i8*@sml_alloc(i32 inreg 20)#0
%Lc=bitcast i8*%Lb to i32*
%Ld=getelementptr inbounds i8,i8*%Lb,i64 -4
%Le=bitcast i8*%Ld to i32*
store i32 1342177296,i32*%Le,align 4
%Lf=getelementptr inbounds i8,i8*%Lb,i64 4
%Lg=bitcast i8*%Lf to i32*
store i32 0,i32*%Lg,align 1
store i32 3,i32*%Lc,align 4
%Lh=load i8*,i8**%h,align 8
%Li=getelementptr inbounds i8,i8*%Lb,i64 8
%Lj=bitcast i8*%Li to i8**
store i8*%Lh,i8**%Lj,align 8
%Lk=getelementptr inbounds i8,i8*%Lb,i64 16
%Ll=bitcast i8*%Lk to i32*
store i32 2,i32*%Ll,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
Lm:
store i8*null,i8**%g,align 8
store i8*null,i8**%i,align 8
store i8*null,i8**%j,align 8
store i8*null,i8**%h,align 8
%Ln=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%Ln,i8**%f,align 8
%Lo=call i8*@sml_alloc(i32 inreg 28)#0
%Lp=getelementptr inbounds i8,i8*%Lo,i64 -4
%Lq=bitcast i8*%Lp to i32*
store i32 1342177304,i32*%Lq,align 4
store i8*%Lo,i8**%g,align 8
%Lr=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Ls=bitcast i8*%Lo to i8**
store i8*%Lr,i8**%Ls,align 8
%Lt=getelementptr inbounds i8,i8*%Lo,i64 8
%Lu=bitcast i8*%Lt to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@o,i64 0,i32 2,i64 0),i8**%Lu,align 8
%Lv=getelementptr inbounds i8,i8*%Lo,i64 16
%Lw=bitcast i8*%Lv to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[26x i8]}>,<{[4x i8],i32,[26x i8]}>*@p,i64 0,i32 2,i64 0),i8**%Lw,align 8
%Lx=getelementptr inbounds i8,i8*%Lo,i64 24
%Ly=bitcast i8*%Lx to i32*
store i32 7,i32*%Ly,align 4
%Lz=call i8*@sml_alloc(i32 inreg 60)#0
%LA=getelementptr inbounds i8,i8*%Lz,i64 -4
%LB=bitcast i8*%LA to i32*
store i32 1342177336,i32*%LB,align 4
%LC=getelementptr inbounds i8,i8*%Lz,i64 56
%LD=bitcast i8*%LC to i32*
store i32 1,i32*%LD,align 4
%LE=load i8*,i8**%g,align 8
%LF=bitcast i8*%Lz to i8**
store i8*%LE,i8**%LF,align 8
call void@sml_raise(i8*inreg%Lz)#1
unreachable
LG:
store i8*null,i8**%i,align 8
%LH=load i8*,i8**%h,align 8
%LI=icmp eq i8*%LH,null
br i1%LI,label%LJ,label%L3
LJ:
store i8*null,i8**%g,align 8
store i8*null,i8**%h,align 8
%LK=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%LK,i8**%f,align 8
%LL=call i8*@sml_alloc(i32 inreg 28)#0
%LM=getelementptr inbounds i8,i8*%LL,i64 -4
%LN=bitcast i8*%LM to i32*
store i32 1342177304,i32*%LN,align 4
store i8*%LL,i8**%g,align 8
%LO=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%LP=bitcast i8*%LL to i8**
store i8*%LO,i8**%LP,align 8
%LQ=getelementptr inbounds i8,i8*%LL,i64 8
%LR=bitcast i8*%LQ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@m,i64 0,i32 2,i64 0),i8**%LR,align 8
%LS=getelementptr inbounds i8,i8*%LL,i64 16
%LT=bitcast i8*%LS to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[30x i8]}>,<{[4x i8],i32,[30x i8]}>*@n,i64 0,i32 2,i64 0),i8**%LT,align 8
%LU=getelementptr inbounds i8,i8*%LL,i64 24
%LV=bitcast i8*%LU to i32*
store i32 7,i32*%LV,align 4
%LW=call i8*@sml_alloc(i32 inreg 60)#0
%LX=getelementptr inbounds i8,i8*%LW,i64 -4
%LY=bitcast i8*%LX to i32*
store i32 1342177336,i32*%LY,align 4
%LZ=getelementptr inbounds i8,i8*%LW,i64 56
%L0=bitcast i8*%LZ to i32*
store i32 1,i32*%L0,align 4
%L1=load i8*,i8**%g,align 8
%L2=bitcast i8*%LW to i8**
store i8*%L1,i8**%L2,align 8
call void@sml_raise(i8*inreg%LW)#1
unreachable
L3:
%L4=getelementptr inbounds i8,i8*%In,i64 8
%L5=bitcast i8*%L4 to i32**
%L6=load i32*,i32**%L5,align 8
store i8*null,i8**%h,align 8
%L7=bitcast i8*%LH to i8**
%L8=load i8*,i8**%L7,align 8
store i8*%L8,i8**%f,align 8
%L9=load i32,i32*%L6,align 4
%Ma=icmp eq i32%L9,0
%Mb=call i8*@sml_alloc(i32 inreg 20)#0
%Mc=getelementptr inbounds i8,i8*%Mb,i64 -4
%Md=bitcast i8*%Mc to i32*
store i32 1342177296,i32*%Md,align 4
br i1%Ma,label%MH,label%Me
Me:
%Mf=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Mg=bitcast i8*%Mb to i8**
store i8*%Mf,i8**%Mg,align 8
%Mh=getelementptr inbounds i8,i8*%Mb,i64 8
%Mi=bitcast i8*%Mh to i8**
store i8*null,i8**%Mi,align 8
%Mj=getelementptr inbounds i8,i8*%Mb,i64 16
%Mk=bitcast i8*%Mj to i32*
store i32 3,i32*%Mk,align 4
%Ml=call fastcc i8*@_SMLFN15EmitTypedLambda5TupleE(i8*inreg%Mb)
store i8*%Ml,i8**%f,align 8
%Mm=call i8*@sml_alloc(i32 inreg 20)#0
%Mn=getelementptr inbounds i8,i8*%Mm,i64 -4
%Mo=bitcast i8*%Mn to i32*
store i32 1342177296,i32*%Mo,align 4
store i8*%Mm,i8**%h,align 8
%Mp=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Mq=bitcast i8*%Mm to i8**
store i8*%Mp,i8**%Mq,align 8
%Mr=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%Ms=getelementptr inbounds i8,i8*%Mm,i64 8
%Mt=bitcast i8*%Ms to i8**
store i8*%Mr,i8**%Mt,align 8
%Mu=getelementptr inbounds i8,i8*%Mm,i64 16
%Mv=bitcast i8*%Mu to i32*
store i32 3,i32*%Mv,align 4
%Mw=call i8*@sml_alloc(i32 inreg 20)#0
%Mx=bitcast i8*%Mw to i32*
%My=getelementptr inbounds i8,i8*%Mw,i64 -4
%Mz=bitcast i8*%My to i32*
store i32 1342177296,i32*%Mz,align 4
%MA=getelementptr inbounds i8,i8*%Mw,i64 4
%MB=bitcast i8*%MA to i32*
store i32 0,i32*%MB,align 1
store i32 3,i32*%Mx,align 4
%MC=load i8*,i8**%h,align 8
%MD=getelementptr inbounds i8,i8*%Mw,i64 8
%ME=bitcast i8*%MD to i8**
store i8*%MC,i8**%ME,align 8
%MF=getelementptr inbounds i8,i8*%Mw,i64 16
%MG=bitcast i8*%MF to i32*
store i32 2,i32*%MG,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
MH:
store i8*%Mb,i8**%h,align 8
%MI=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%MJ=bitcast i8*%Mb to i8**
store i8*%MI,i8**%MJ,align 8
%MK=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%ML=getelementptr inbounds i8,i8*%Mb,i64 8
%MM=bitcast i8*%ML to i8**
store i8*%MK,i8**%MM,align 8
%MN=getelementptr inbounds i8,i8*%Mb,i64 16
%MO=bitcast i8*%MN to i32*
store i32 3,i32*%MO,align 4
%MP=call i8*@sml_alloc(i32 inreg 20)#0
%MQ=bitcast i8*%MP to i32*
%MR=getelementptr inbounds i8,i8*%MP,i64 -4
%MS=bitcast i8*%MR to i32*
store i32 1342177296,i32*%MS,align 4
%MT=getelementptr inbounds i8,i8*%MP,i64 4
%MU=bitcast i8*%MT to i32*
store i32 0,i32*%MU,align 1
store i32 3,i32*%MQ,align 4
%MV=load i8*,i8**%h,align 8
%MW=getelementptr inbounds i8,i8*%MP,i64 8
%MX=bitcast i8*%MW to i8**
store i8*%MV,i8**%MX,align 8
%MY=getelementptr inbounds i8,i8*%MP,i64 16
%MZ=bitcast i8*%MY to i32*
store i32 2,i32*%MZ,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
M0:
store i8*null,i8**%i,align 8
%M1=load i8*,i8**%h,align 8
%M2=icmp eq i8*%M1,null
br i1%M2,label%M3,label%No
M3:
store i8*null,i8**%h,align 8
%M4=call i8*@sml_alloc(i32 inreg 20)#0
%M5=getelementptr inbounds i8,i8*%M4,i64 -4
%M6=bitcast i8*%M5 to i32*
store i32 1342177296,i32*%M6,align 4
store i8*%M4,i8**%f,align 8
%M7=bitcast i8*%M4 to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@av,i64 0,i32 2)to i8*),i8**%M7,align 8
%M8=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%M9=getelementptr inbounds i8,i8*%M4,i64 8
%Na=bitcast i8*%M9 to i8**
store i8*%M8,i8**%Na,align 8
%Nb=getelementptr inbounds i8,i8*%M4,i64 16
%Nc=bitcast i8*%Nb to i32*
store i32 3,i32*%Nc,align 4
%Nd=call i8*@sml_alloc(i32 inreg 20)#0
%Ne=bitcast i8*%Nd to i32*
%Nf=getelementptr inbounds i8,i8*%Nd,i64 -4
%Ng=bitcast i8*%Nf to i32*
store i32 1342177296,i32*%Ng,align 4
%Nh=getelementptr inbounds i8,i8*%Nd,i64 4
%Ni=bitcast i8*%Nh to i32*
store i32 0,i32*%Ni,align 1
store i32 3,i32*%Ne,align 4
%Nj=load i8*,i8**%f,align 8
%Nk=getelementptr inbounds i8,i8*%Nd,i64 8
%Nl=bitcast i8*%Nk to i8**
store i8*%Nj,i8**%Nl,align 8
%Nm=getelementptr inbounds i8,i8*%Nd,i64 16
%Nn=bitcast i8*%Nm to i32*
store i32 2,i32*%Nn,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
No:
%Np=getelementptr inbounds i8,i8*%In,i64 8
%Nq=bitcast i8*%Np to i32**
%Nr=load i32*,i32**%Nq,align 8
store i8*null,i8**%h,align 8
%Ns=bitcast i8*%M1 to i8**
%Nt=load i8*,i8**%Ns,align 8
store i8*%Nt,i8**%f,align 8
%Nu=load i32,i32*%Nr,align 4
%Nv=icmp eq i32%Nu,0
%Nw=call i8*@sml_alloc(i32 inreg 20)#0
%Nx=getelementptr inbounds i8,i8*%Nw,i64 -4
%Ny=bitcast i8*%Nx to i32*
store i32 1342177296,i32*%Ny,align 4
br i1%Nv,label%N2,label%Nz
Nz:
%NA=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%NB=bitcast i8*%Nw to i8**
store i8*%NA,i8**%NB,align 8
%NC=getelementptr inbounds i8,i8*%Nw,i64 8
%ND=bitcast i8*%NC to i8**
store i8*null,i8**%ND,align 8
%NE=getelementptr inbounds i8,i8*%Nw,i64 16
%NF=bitcast i8*%NE to i32*
store i32 3,i32*%NF,align 4
%NG=call fastcc i8*@_SMLFN15EmitTypedLambda5TupleE(i8*inreg%Nw)
store i8*%NG,i8**%f,align 8
%NH=call i8*@sml_alloc(i32 inreg 20)#0
%NI=getelementptr inbounds i8,i8*%NH,i64 -4
%NJ=bitcast i8*%NI to i32*
store i32 1342177296,i32*%NJ,align 4
store i8*%NH,i8**%h,align 8
%NK=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%NL=bitcast i8*%NH to i8**
store i8*%NK,i8**%NL,align 8
%NM=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%NN=getelementptr inbounds i8,i8*%NH,i64 8
%NO=bitcast i8*%NN to i8**
store i8*%NM,i8**%NO,align 8
%NP=getelementptr inbounds i8,i8*%NH,i64 16
%NQ=bitcast i8*%NP to i32*
store i32 3,i32*%NQ,align 4
%NR=call i8*@sml_alloc(i32 inreg 20)#0
%NS=bitcast i8*%NR to i32*
%NT=getelementptr inbounds i8,i8*%NR,i64 -4
%NU=bitcast i8*%NT to i32*
store i32 1342177296,i32*%NU,align 4
%NV=getelementptr inbounds i8,i8*%NR,i64 4
%NW=bitcast i8*%NV to i32*
store i32 0,i32*%NW,align 1
store i32 3,i32*%NS,align 4
%NX=load i8*,i8**%h,align 8
%NY=getelementptr inbounds i8,i8*%NR,i64 8
%NZ=bitcast i8*%NY to i8**
store i8*%NX,i8**%NZ,align 8
%N0=getelementptr inbounds i8,i8*%NR,i64 16
%N1=bitcast i8*%N0 to i32*
store i32 2,i32*%N1,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
N2:
store i8*%Nw,i8**%h,align 8
%N3=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%N4=bitcast i8*%Nw to i8**
store i8*%N3,i8**%N4,align 8
%N5=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%N6=getelementptr inbounds i8,i8*%Nw,i64 8
%N7=bitcast i8*%N6 to i8**
store i8*%N5,i8**%N7,align 8
%N8=getelementptr inbounds i8,i8*%Nw,i64 16
%N9=bitcast i8*%N8 to i32*
store i32 3,i32*%N9,align 4
%Oa=call i8*@sml_alloc(i32 inreg 20)#0
%Ob=bitcast i8*%Oa to i32*
%Oc=getelementptr inbounds i8,i8*%Oa,i64 -4
%Od=bitcast i8*%Oc to i32*
store i32 1342177296,i32*%Od,align 4
%Oe=getelementptr inbounds i8,i8*%Oa,i64 4
%Of=bitcast i8*%Oe to i32*
store i32 0,i32*%Of,align 1
store i32 3,i32*%Ob,align 4
%Og=load i8*,i8**%h,align 8
%Oh=getelementptr inbounds i8,i8*%Oa,i64 8
%Oi=bitcast i8*%Oh to i8**
store i8*%Og,i8**%Oi,align 8
%Oj=getelementptr inbounds i8,i8*%Oa,i64 16
%Ok=bitcast i8*%Oj to i32*
store i32 2,i32*%Ok,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
Ol:
%Om=getelementptr inbounds i8,i8*%In,i64 8
%On=bitcast i8*%Om to i8**
%Oo=load i8*,i8**%On,align 8
store i8*%Oo,i8**%f,align 8
%Op=bitcast i8*%Oo to i32*
%Oq=load i32,i32*%Op,align 4
switch i32%Oq,label%Or[
i32 1,label%Qv
i32 0,label%PP
i32 2,label%OJ
]
Or:
store i8*null,i8**%g,align 8
store i8*null,i8**%h,align 8
store i8*null,i8**%i,align 8
call void@sml_matchcomp_bug()
%Os=load i8*,i8**@_SMLZ5Match,align 8
store i8*%Os,i8**%f,align 8
%Ot=call i8*@sml_alloc(i32 inreg 20)#0
%Ou=getelementptr inbounds i8,i8*%Ot,i64 -4
%Ov=bitcast i8*%Ou to i32*
store i32 1342177296,i32*%Ov,align 4
store i8*%Ot,i8**%g,align 8
%Ow=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%Ox=bitcast i8*%Ot to i8**
store i8*%Ow,i8**%Ox,align 8
%Oy=getelementptr inbounds i8,i8*%Ot,i64 8
%Oz=bitcast i8*%Oy to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[88x i8]}>,<{[4x i8],i32,[88x i8]}>*@x,i64 0,i32 2,i64 0),i8**%Oz,align 8
%OA=getelementptr inbounds i8,i8*%Ot,i64 16
%OB=bitcast i8*%OA to i32*
store i32 3,i32*%OB,align 4
%OC=call i8*@sml_alloc(i32 inreg 60)#0
%OD=getelementptr inbounds i8,i8*%OC,i64 -4
%OE=bitcast i8*%OD to i32*
store i32 1342177336,i32*%OE,align 4
%OF=getelementptr inbounds i8,i8*%OC,i64 56
%OG=bitcast i8*%OF to i32*
store i32 1,i32*%OG,align 4
%OH=load i8*,i8**%g,align 8
%OI=bitcast i8*%OC to i8**
store i8*%OH,i8**%OI,align 8
call void@sml_raise(i8*inreg%OC)#1
unreachable
OJ:
%OK=load i8*,i8**%h,align 8
%OL=icmp eq i8*%OK,null
br i1%OL,label%OM,label%Pv
OM:
%ON=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%OO=getelementptr inbounds i8,i8*%ON,i64 8
%OP=bitcast i8*%OO to i8**
%OQ=load i8*,i8**%OP,align 8
store i8*%OQ,i8**%h,align 8
%OR=call i8*@sml_alloc(i32 inreg 20)#0
%OS=getelementptr inbounds i8,i8*%OR,i64 -4
%OT=bitcast i8*%OS to i32*
store i32 1342177296,i32*%OT,align 4
%OU=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%OV=bitcast i8*%OR to i8**
store i8*%OU,i8**%OV,align 8
%OW=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%OX=getelementptr inbounds i8,i8*%OR,i64 8
%OY=bitcast i8*%OX to i8**
store i8*%OW,i8**%OY,align 8
%OZ=getelementptr inbounds i8,i8*%OR,i64 16
%O0=bitcast i8*%OZ to i32*
store i32 3,i32*%O0,align 4
%O1=call fastcc i32@_SMLLN19DatatypeCompilation12lookupConTagE_254(i8*inreg%OR)
%O2=call i8*@sml_alloc(i32 inreg 12)#0
%O3=bitcast i8*%O2 to i32*
%O4=getelementptr inbounds i8,i8*%O2,i64 -4
%O5=bitcast i8*%O4 to i32*
store i32 1342177288,i32*%O5,align 4
store i8*%O2,i8**%h,align 8
store i32 5,i32*%O3,align 4
%O6=getelementptr inbounds i8,i8*%O2,i64 4
%O7=bitcast i8*%O6 to i32*
store i32%O1,i32*%O7,align 4
%O8=getelementptr inbounds i8,i8*%O2,i64 8
%O9=bitcast i8*%O8 to i32*
store i32 0,i32*%O9,align 4
%Pa=call i8*@sml_alloc(i32 inreg 20)#0
%Pb=getelementptr inbounds i8,i8*%Pa,i64 -4
%Pc=bitcast i8*%Pb to i32*
store i32 1342177296,i32*%Pc,align 4
store i8*%Pa,i8**%f,align 8
%Pd=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%Pe=bitcast i8*%Pa to i8**
store i8*%Pd,i8**%Pe,align 8
%Pf=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%Pg=getelementptr inbounds i8,i8*%Pa,i64 8
%Ph=bitcast i8*%Pg to i8**
store i8*%Pf,i8**%Ph,align 8
%Pi=getelementptr inbounds i8,i8*%Pa,i64 16
%Pj=bitcast i8*%Pi to i32*
store i32 3,i32*%Pj,align 4
%Pk=call i8*@sml_alloc(i32 inreg 20)#0
%Pl=bitcast i8*%Pk to i32*
%Pm=getelementptr inbounds i8,i8*%Pk,i64 -4
%Pn=bitcast i8*%Pm to i32*
store i32 1342177296,i32*%Pn,align 4
%Po=getelementptr inbounds i8,i8*%Pk,i64 4
%Pp=bitcast i8*%Po to i32*
store i32 0,i32*%Pp,align 1
store i32 3,i32*%Pl,align 4
%Pq=load i8*,i8**%f,align 8
%Pr=getelementptr inbounds i8,i8*%Pk,i64 8
%Ps=bitcast i8*%Pr to i8**
store i8*%Pq,i8**%Ps,align 8
%Pt=getelementptr inbounds i8,i8*%Pk,i64 16
%Pu=bitcast i8*%Pt to i32*
store i32 2,i32*%Pu,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
Pv:
store i8*null,i8**%g,align 8
store i8*null,i8**%i,align 8
store i8*null,i8**%h,align 8
%Pw=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%Pw,i8**%f,align 8
%Px=call i8*@sml_alloc(i32 inreg 28)#0
%Py=getelementptr inbounds i8,i8*%Px,i64 -4
%Pz=bitcast i8*%Py to i32*
store i32 1342177304,i32*%Pz,align 4
store i8*%Px,i8**%g,align 8
%PA=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%PB=bitcast i8*%Px to i8**
store i8*%PA,i8**%PB,align 8
%PC=getelementptr inbounds i8,i8*%Px,i64 8
%PD=bitcast i8*%PC to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@k,i64 0,i32 2,i64 0),i8**%PD,align 8
%PE=getelementptr inbounds i8,i8*%Px,i64 16
%PF=bitcast i8*%PE to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[27x i8]}>,<{[4x i8],i32,[27x i8]}>*@l,i64 0,i32 2,i64 0),i8**%PF,align 8
%PG=getelementptr inbounds i8,i8*%Px,i64 24
%PH=bitcast i8*%PG to i32*
store i32 7,i32*%PH,align 4
%PI=call i8*@sml_alloc(i32 inreg 60)#0
%PJ=getelementptr inbounds i8,i8*%PI,i64 -4
%PK=bitcast i8*%PJ to i32*
store i32 1342177336,i32*%PK,align 4
%PL=getelementptr inbounds i8,i8*%PI,i64 56
%PM=bitcast i8*%PL to i32*
store i32 1,i32*%PM,align 4
%PN=load i8*,i8**%g,align 8
%PO=bitcast i8*%PI to i8**
store i8*%PN,i8**%PO,align 8
call void@sml_raise(i8*inreg%PI)#1
unreachable
PP:
%PQ=load i8*,i8**%h,align 8
%PR=icmp eq i8*%PQ,null
br i1%PR,label%PS,label%Qd
PS:
store i8*null,i8**%h,align 8
store i8*null,i8**%i,align 8
store i8*null,i8**%f,align 8
%PT=call i8*@sml_alloc(i32 inreg 20)#0
%PU=getelementptr inbounds i8,i8*%PT,i64 -4
%PV=bitcast i8*%PU to i32*
store i32 1342177296,i32*%PV,align 4
store i8*%PT,i8**%f,align 8
%PW=bitcast i8*%PT to i8**
store i8*bitcast(i32*getelementptr inbounds(<{[4x i8],i32,i32,[4x i8],i32}>,<{[4x i8],i32,i32,[4x i8],i32}>*@av,i64 0,i32 2)to i8*),i8**%PW,align 8
%PX=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%PY=getelementptr inbounds i8,i8*%PT,i64 8
%PZ=bitcast i8*%PY to i8**
store i8*%PX,i8**%PZ,align 8
%P0=getelementptr inbounds i8,i8*%PT,i64 16
%P1=bitcast i8*%P0 to i32*
store i32 3,i32*%P1,align 4
%P2=call i8*@sml_alloc(i32 inreg 20)#0
%P3=bitcast i8*%P2 to i32*
%P4=getelementptr inbounds i8,i8*%P2,i64 -4
%P5=bitcast i8*%P4 to i32*
store i32 1342177296,i32*%P5,align 4
%P6=getelementptr inbounds i8,i8*%P2,i64 4
%P7=bitcast i8*%P6 to i32*
store i32 0,i32*%P7,align 1
store i32 3,i32*%P3,align 4
%P8=load i8*,i8**%f,align 8
%P9=getelementptr inbounds i8,i8*%P2,i64 8
%Qa=bitcast i8*%P9 to i8**
store i8*%P8,i8**%Qa,align 8
%Qb=getelementptr inbounds i8,i8*%P2,i64 16
%Qc=bitcast i8*%Qb to i32*
store i32 2,i32*%Qc,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
Qd:
%Qe=call i8*@sml_alloc(i32 inreg 36)#0
%Qf=getelementptr inbounds i8,i8*%Qe,i64 -4
%Qg=bitcast i8*%Qf to i32*
store i32 1342177312,i32*%Qg,align 4
%Qh=load i8*,i8**%f,align 8
%Qi=bitcast i8*%Qe to i8**
store i8*%Qh,i8**%Qi,align 8
%Qj=load i8*,i8**%i,align 8
%Qk=getelementptr inbounds i8,i8*%Qe,i64 8
%Ql=bitcast i8*%Qk to i8**
store i8*%Qj,i8**%Ql,align 8
%Qm=load i8*,i8**%h,align 8
%Qn=getelementptr inbounds i8,i8*%Qe,i64 16
%Qo=bitcast i8*%Qn to i8**
store i8*%Qm,i8**%Qo,align 8
%Qp=load i8*,i8**%g,align 8
%Qq=getelementptr inbounds i8,i8*%Qe,i64 24
%Qr=bitcast i8*%Qq to i8**
store i8*%Qp,i8**%Qr,align 8
%Qs=getelementptr inbounds i8,i8*%Qe,i64 32
%Qt=bitcast i8*%Qs to i32*
store i32 15,i32*%Qt,align 4
%Qu=call fastcc i8*@_SMLLN19DatatypeCompilation16composeTaggedConE_259(i8*inreg%Qe)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
Qv:
%Qw=call i8*@sml_alloc(i32 inreg 36)#0
%Qx=getelementptr inbounds i8,i8*%Qw,i64 -4
%Qy=bitcast i8*%Qx to i32*
store i32 1342177312,i32*%Qy,align 4
%Qz=load i8*,i8**%f,align 8
%QA=bitcast i8*%Qw to i8**
store i8*%Qz,i8**%QA,align 8
%QB=load i8*,i8**%i,align 8
%QC=getelementptr inbounds i8,i8*%Qw,i64 8
%QD=bitcast i8*%QC to i8**
store i8*%QB,i8**%QD,align 8
%QE=load i8*,i8**%h,align 8
%QF=getelementptr inbounds i8,i8*%Qw,i64 16
%QG=bitcast i8*%QF to i8**
store i8*%QE,i8**%QG,align 8
%QH=load i8*,i8**%g,align 8
%QI=getelementptr inbounds i8,i8*%Qw,i64 24
%QJ=bitcast i8*%QI to i8**
store i8*%QH,i8**%QJ,align 8
%QK=getelementptr inbounds i8,i8*%Qw,i64 32
%QL=bitcast i8*%QK to i32*
store i32 15,i32*%QL,align 4
%QM=call fastcc i8*@_SMLLN19DatatypeCompilation16composeTaggedConE_259(i8*inreg%Qw)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GR)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%GS)
br label%QN
QN:
%QO=phi i8*[%Jo,%Jb],[%JW,%JM],[%Lb,%Kx],[%Mw,%Me],[%MP,%MH],[%Nd,%M3],[%NR,%Nz],[%Oa,%N2],[%Pk,%OM],[%P2,%PS],[%Qu,%Qd],[%QM,%Qv]
%QP=load i8*,i8**%E,align 8
%QQ=tail call fastcc i8*%Gx(i8*inreg%QP,i8*inreg%QO)
ret i8*%QQ
QR:
%QS=getelementptr inbounds i8,i8*%W,i64 8
%QT=bitcast i8*%QS to i8**
%QU=load i8*,i8**%QT,align 8
%QV=bitcast i8*%QU to i8**
%QW=load i8*,i8**%QV,align 8
store i8*%QW,i8**%D,align 8
%QX=getelementptr inbounds i8,i8*%QU,i64 8
%QY=bitcast i8*%QX to i8**
%QZ=load i8*,i8**%QY,align 8
store i8*%QZ,i8**%E,align 8
%Q0=getelementptr inbounds i8,i8*%QU,i64 16
%Q1=bitcast i8*%Q0 to i8**
%Q2=load i8*,i8**%Q1,align 8
store i8*%Q2,i8**%F,align 8
%Q3=bitcast i8**%M to i8***
%Q4=load i8**,i8***%Q3,align 8
store i8*null,i8**%M,align 8
%Q5=load i8*,i8**%Q4,align 8
store i8*%Q5,i8**%G,align 8
%Q6=call i8*@sml_alloc(i32 inreg 28)#0
%Q7=getelementptr inbounds i8,i8*%Q6,i64 -4
%Q8=bitcast i8*%Q7 to i32*
store i32 1342177304,i32*%Q8,align 4
%Q9=load i8*,i8**%D,align 8
%Ra=bitcast i8*%Q6 to i8**
store i8*%Q9,i8**%Ra,align 8
%Rb=load i8*,i8**%F,align 8
%Rc=getelementptr inbounds i8,i8*%Q6,i64 8
%Rd=bitcast i8*%Rc to i8**
store i8*%Rb,i8**%Rd,align 8
%Re=load i8*,i8**%E,align 8
%Rf=getelementptr inbounds i8,i8*%Q6,i64 16
%Rg=bitcast i8*%Rf to i8**
store i8*%Re,i8**%Rg,align 8
%Rh=getelementptr inbounds i8,i8*%Q6,i64 24
%Ri=bitcast i8*%Rh to i32*
store i32 7,i32*%Ri,align 4
%Rj=load i8*,i8**%G,align 8
%Rk=tail call fastcc i8*@_SMLLN19DatatypeCompilation8fixConstE_326(i8*inreg%Rj,i8*inreg%Q6)
ret i8*%Rk
Rl:
%Rm=getelementptr inbounds i8,i8*%W,i64 8
%Rn=bitcast i8*%Rm to i8**
%Ro=load i8*,i8**%Rn,align 8
%Rp=bitcast i8*%Ro to i8**
%Rq=load i8*,i8**%Rp,align 8
%Rr=getelementptr inbounds i8,i8*%Rq,i64 8
%Rs=bitcast i8*%Rr to i8**
%Rt=load i8*,i8**%Rs,align 8
store i8*%Rt,i8**%E,align 8
%Ru=getelementptr inbounds i8,i8*%Ro,i64 8
%Rv=bitcast i8*%Ru to i8**
%Rw=load i8*,i8**%Rv,align 8
store i8*%Rw,i8**%F,align 8
%Rx=getelementptr inbounds i8,i8*%Ro,i64 16
%Ry=bitcast i8*%Rx to i8**
%Rz=load i8*,i8**%Ry,align 8
store i8*%Rz,i8**%H,align 8
%RA=bitcast i8*%Ro to i8***
%RB=load i8**,i8***%RA,align 8
%RC=load i8*,i8**%RB,align 8
%RD=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%RE=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%RD,i8*inreg%U,i8*inreg%RC)
store i8*%RE,i8**%D,align 8
%RF=call i8*@sml_alloc(i32 inreg 44)#0
%RG=getelementptr inbounds i8,i8*%RF,i64 -4
%RH=bitcast i8*%RG to i32*
store i32 1342177320,i32*%RH,align 4
store i8*%RF,i8**%G,align 8
%RI=getelementptr inbounds i8,i8*%RF,i64 4
%RJ=bitcast i8*%RI to i32*
store i32 0,i32*%RJ,align 1
%RK=bitcast i8*%RF to i32*
store i32 1,i32*%RK,align 4
%RL=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%RM=getelementptr inbounds i8,i8*%RF,i64 8
%RN=bitcast i8*%RM to i8**
store i8*%RL,i8**%RN,align 8
%RO=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%RP=getelementptr inbounds i8,i8*%RF,i64 16
%RQ=bitcast i8*%RP to i8**
store i8*%RO,i8**%RQ,align 8
%RR=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%RS=getelementptr inbounds i8,i8*%RF,i64 24
%RT=bitcast i8*%RS to i8**
store i8*%RR,i8**%RT,align 8
%RU=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%RV=getelementptr inbounds i8,i8*%RF,i64 32
%RW=bitcast i8*%RV to i8**
store i8*%RU,i8**%RW,align 8
%RX=getelementptr inbounds i8,i8*%RF,i64 40
%RY=bitcast i8*%RX to i32*
store i32 30,i32*%RY,align 4
%RZ=call i8*@sml_alloc(i32 inreg 20)#0
%R0=bitcast i8*%RZ to i32*
%R1=getelementptr inbounds i8,i8*%RZ,i64 -4
%R2=bitcast i8*%R1 to i32*
store i32 1342177296,i32*%R2,align 4
%R3=getelementptr inbounds i8,i8*%RZ,i64 4
%R4=bitcast i8*%R3 to i32*
store i32 0,i32*%R4,align 1
store i32 2,i32*%R0,align 4
%R5=load i8*,i8**%G,align 8
%R6=getelementptr inbounds i8,i8*%RZ,i64 8
%R7=bitcast i8*%R6 to i8**
store i8*%R5,i8**%R7,align 8
%R8=getelementptr inbounds i8,i8*%RZ,i64 16
%R9=bitcast i8*%R8 to i32*
store i32 2,i32*%R9,align 4
ret i8*%RZ
Sa:
%Sb=getelementptr inbounds i8,i8*%W,i64 8
%Sc=bitcast i8*%Sb to i8**
%Sd=load i8*,i8**%Sc,align 8
store i8*%Sd,i8**%F,align 8
%Se=getelementptr inbounds i8,i8*%Sd,i64 16
%Sf=bitcast i8*%Se to i8**
%Sg=load i8*,i8**%Sf,align 8
store i8*%Sg,i8**%H,align 8
%Sh=getelementptr inbounds i8,i8*%Sd,i64 24
%Si=bitcast i8*%Sh to i8**
%Sj=load i8*,i8**%Si,align 8
store i8*%Sj,i8**%I,align 8
%Sk=getelementptr inbounds i8,i8*%Sd,i64 32
%Sl=bitcast i8*%Sk to i8**
%Sm=load i8*,i8**%Sl,align 8
store i8*%Sm,i8**%J,align 8
%Sn=getelementptr inbounds i8,i8*%Sd,i64 40
%So=bitcast i8*%Sn to i8**
%Sp=load i8*,i8**%So,align 8
%Sq=bitcast i8*%Sp to i32*
%Sr=load i32,i32*%Sq,align 4
switch i32%Sr,label%Ss[
i32 1,label%arE
i32 0,label%Uo
i32 2,label%SK
]
Ss:
store i8*null,i8**%G,align 8
store i8*null,i8**%F,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**%M,align 8
call void@sml_matchcomp_bug()
%St=load i8*,i8**@_SMLZ5Match,align 8
store i8*%St,i8**%D,align 8
%Su=call i8*@sml_alloc(i32 inreg 20)#0
%Sv=getelementptr inbounds i8,i8*%Su,i64 -4
%Sw=bitcast i8*%Sv to i32*
store i32 1342177296,i32*%Sw,align 4
store i8*%Su,i8**%E,align 8
%Sx=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%Sy=bitcast i8*%Su to i8**
store i8*%Sx,i8**%Sy,align 8
%Sz=getelementptr inbounds i8,i8*%Su,i64 8
%SA=bitcast i8*%Sz to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@aI,i64 0,i32 2,i64 0),i8**%SA,align 8
%SB=getelementptr inbounds i8,i8*%Su,i64 16
%SC=bitcast i8*%SB to i32*
store i32 3,i32*%SC,align 4
%SD=call i8*@sml_alloc(i32 inreg 60)#0
%SE=getelementptr inbounds i8,i8*%SD,i64 -4
%SF=bitcast i8*%SE to i32*
store i32 1342177336,i32*%SF,align 4
%SG=getelementptr inbounds i8,i8*%SD,i64 56
%SH=bitcast i8*%SG to i32*
store i32 1,i32*%SH,align 4
%SI=load i8*,i8**%E,align 8
%SJ=bitcast i8*%SD to i8**
store i8*%SI,i8**%SJ,align 8
call void@sml_raise(i8*inreg%SD)#1
unreachable
SK:
%SL=getelementptr inbounds i8,i8*%Sp,i64 8
%SM=bitcast i8*%SL to i8**
%SN=load i8*,i8**%SM,align 8
store i8*%SN,i8**%E,align 8
%SO=getelementptr inbounds i8,i8*%Sd,i64 8
%SP=bitcast i8*%SO to i8**
%SQ=load i8*,i8**%SP,align 8
%SR=load i8*,i8**%M,align 8
%SS=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%SR,i8*inreg%U,i8*inreg%SQ)
store i8*%SS,i8**%D,align 8
%ST=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%SU=getelementptr inbounds i8,i8*%ST,i64 16
%SV=bitcast i8*%SU to i8*(i8*,i8*)**
%SW=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%SV,align 8
%SX=bitcast i8*%ST to i8**
%SY=load i8*,i8**%SX,align 8
store i8*%SY,i8**%K,align 8
%SZ=call i8*@sml_alloc(i32 inreg 20)#0
%S0=getelementptr inbounds i8,i8*%SZ,i64 -4
%S1=bitcast i8*%S0 to i32*
store i32 1342177296,i32*%S1,align 4
store i8*%SZ,i8**%L,align 8
%S2=load i8*,i8**%G,align 8
%S3=bitcast i8*%SZ to i8**
store i8*%S2,i8**%S3,align 8
%S4=load i8*,i8**%M,align 8
%S5=getelementptr inbounds i8,i8*%SZ,i64 8
%S6=bitcast i8*%S5 to i8**
store i8*%S4,i8**%S6,align 8
%S7=getelementptr inbounds i8,i8*%SZ,i64 16
%S8=bitcast i8*%S7 to i32*
store i32 3,i32*%S8,align 4
%S9=call i8*@sml_alloc(i32 inreg 28)#0
%Ta=getelementptr inbounds i8,i8*%S9,i64 -4
%Tb=bitcast i8*%Ta to i32*
store i32 1342177304,i32*%Tb,align 4
%Tc=load i8*,i8**%L,align 8
store i8*null,i8**%L,align 8
%Td=bitcast i8*%S9 to i8**
store i8*%Tc,i8**%Td,align 8
%Te=getelementptr inbounds i8,i8*%S9,i64 8
%Tf=bitcast i8*%Te to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8ruleList_355 to void(...)*),void(...)**%Tf,align 8
%Tg=getelementptr inbounds i8,i8*%S9,i64 16
%Th=bitcast i8*%Tg to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8ruleList_355 to void(...)*),void(...)**%Th,align 8
%Ti=getelementptr inbounds i8,i8*%S9,i64 24
%Tj=bitcast i8*%Ti to i32*
store i32 -2147483647,i32*%Tj,align 4
%Tk=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%Tl=call fastcc i8*%SW(i8*inreg%Tk,i8*inreg%S9)
%Tm=getelementptr inbounds i8,i8*%Tl,i64 16
%Tn=bitcast i8*%Tm to i8*(i8*,i8*)**
%To=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Tn,align 8
%Tp=bitcast i8*%Tl to i8**
%Tq=load i8*,i8**%Tp,align 8
%Tr=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%Ts=call fastcc i8*%To(i8*inreg%Tq,i8*inreg%Tr)
store i8*%Ts,i8**%E,align 8
%Tt=bitcast i8**%F to i8***
%Tu=load i8**,i8***%Tt,align 8
store i8*null,i8**%F,align 8
%Tv=load i8*,i8**%Tu,align 8
%Tw=load i8*,i8**%G,align 8
%Tx=load i8*,i8**%M,align 8
store i8*null,i8**%M,align 8
%Ty=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%Tx,i8*inreg%Tw,i8*inreg%Tv)
store i8*%Ty,i8**%F,align 8
%Tz=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%TA=call fastcc i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg%Tz)
%TB=getelementptr inbounds i8,i8*%TA,i64 16
%TC=bitcast i8*%TB to i8*(i8*,i8*)**
%TD=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%TC,align 8
%TE=bitcast i8*%TA to i8**
%TF=load i8*,i8**%TE,align 8
store i8*%TF,i8**%I,align 8
%TG=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%TH=bitcast i8**%l to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%TH)
%TI=bitcast i8**%m to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%TI)
call void@llvm.gcroot(i8**%l,i8*null)#0
call void@llvm.gcroot(i8**%m,i8*null)#0
store i8*%TG,i8**%l,align 8
%TJ=call i8*@sml_alloc(i32 inreg 12)#0
%TK=getelementptr inbounds i8,i8*%TJ,i64 -4
%TL=bitcast i8*%TK to i32*
store i32 1342177288,i32*%TL,align 4
store i8*%TJ,i8**%m,align 8
%TM=load i8*,i8**%l,align 8
store i8*null,i8**%l,align 8
%TN=bitcast i8*%TJ to i8**
store i8*%TM,i8**%TN,align 8
%TO=getelementptr inbounds i8,i8*%TJ,i64 8
%TP=bitcast i8*%TO to i32*
store i32 1,i32*%TP,align 4
%TQ=call i8*@sml_alloc(i32 inreg 28)#0
%TR=getelementptr inbounds i8,i8*%TQ,i64 -4
%TS=bitcast i8*%TR to i32*
store i32 1342177304,i32*%TS,align 4
%TT=load i8*,i8**%m,align 8
%TU=bitcast i8*%TQ to i8**
store i8*%TT,i8**%TU,align 8
%TV=getelementptr inbounds i8,i8*%TQ,i64 8
%TW=bitcast i8*%TV to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchExnE_322 to void(...)*),void(...)**%TW,align 8
%TX=getelementptr inbounds i8,i8*%TQ,i64 16
%TY=bitcast i8*%TX to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchExnE_322 to void(...)*),void(...)**%TY,align 8
%TZ=getelementptr inbounds i8,i8*%TQ,i64 24
%T0=bitcast i8*%TZ to i32*
store i32 -2147483647,i32*%T0,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%TH)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%TI)
store i8*%TT,i8**%G,align 8
%T1=call i8*@sml_alloc(i32 inreg 44)#0
%T2=getelementptr inbounds i8,i8*%T1,i64 -4
%T3=bitcast i8*%T2 to i32*
store i32 1342177320,i32*%T3,align 4
%T4=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%T5=bitcast i8*%T1 to i8**
store i8*%T4,i8**%T5,align 8
%T6=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%T7=getelementptr inbounds i8,i8*%T1,i64 8
%T8=bitcast i8*%T7 to i8**
store i8*%T6,i8**%T8,align 8
%T9=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%Ua=getelementptr inbounds i8,i8*%T1,i64 16
%Ub=bitcast i8*%Ua to i8**
store i8*%T9,i8**%Ub,align 8
%Uc=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%Ud=getelementptr inbounds i8,i8*%T1,i64 24
%Ue=bitcast i8*%Ud to i8**
store i8*%Uc,i8**%Ue,align 8
%Uf=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%Ug=getelementptr inbounds i8,i8*%T1,i64 32
%Uh=bitcast i8*%Ug to i8**
store i8*%Uf,i8**%Uh,align 8
%Ui=getelementptr inbounds i8,i8*%T1,i64 40
%Uj=bitcast i8*%Ui to i32*
store i32 31,i32*%Uj,align 4
%Uk=load i8*,i8**%G,align 8
store i8*null,i8**%G,align 8
%Ul=call fastcc i8*@_SMLLN19DatatypeCompilation9switchExnE_322(i8*inreg%Uk,i8*inreg%T1)
%Um=load i8*,i8**%I,align 8
%Un=tail call fastcc i8*%TD(i8*inreg%Um,i8*inreg%Ul)
ret i8*%Un
Uo:
%Up=getelementptr inbounds i8,i8*%Sp,i64 8
%Uq=bitcast i8*%Up to i8**
%Ur=load i8*,i8**%Uq,align 8
store i8*%Ur,i8**%E,align 8
%Us=getelementptr inbounds i8,i8*%Sd,i64 8
%Ut=bitcast i8*%Us to i8**
%Uu=load i8*,i8**%Ut,align 8
%Uv=load i8*,i8**%M,align 8
%Uw=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%Uv,i8*inreg%U,i8*inreg%Uu)
store i8*%Uw,i8**%D,align 8
%Ux=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%Uy=getelementptr inbounds i8,i8*%Ux,i64 16
%Uz=bitcast i8*%Uy to i8*(i8*,i8*)**
%UA=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Uz,align 8
%UB=bitcast i8*%Ux to i8**
%UC=load i8*,i8**%UB,align 8
store i8*%UC,i8**%K,align 8
%UD=call i8*@sml_alloc(i32 inreg 20)#0
%UE=getelementptr inbounds i8,i8*%UD,i64 -4
%UF=bitcast i8*%UE to i32*
store i32 1342177296,i32*%UF,align 4
store i8*%UD,i8**%L,align 8
%UG=load i8*,i8**%G,align 8
%UH=bitcast i8*%UD to i8**
store i8*%UG,i8**%UH,align 8
%UI=load i8*,i8**%M,align 8
%UJ=getelementptr inbounds i8,i8*%UD,i64 8
%UK=bitcast i8*%UJ to i8**
store i8*%UI,i8**%UK,align 8
%UL=getelementptr inbounds i8,i8*%UD,i64 16
%UM=bitcast i8*%UL to i32*
store i32 3,i32*%UM,align 4
%UN=call i8*@sml_alloc(i32 inreg 28)#0
%UO=getelementptr inbounds i8,i8*%UN,i64 -4
%UP=bitcast i8*%UO to i32*
store i32 1342177304,i32*%UP,align 4
%UQ=load i8*,i8**%L,align 8
store i8*null,i8**%L,align 8
%UR=bitcast i8*%UN to i8**
store i8*%UQ,i8**%UR,align 8
%US=getelementptr inbounds i8,i8*%UN,i64 8
%UT=bitcast i8*%US to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8ruleList_352 to void(...)*),void(...)**%UT,align 8
%UU=getelementptr inbounds i8,i8*%UN,i64 16
%UV=bitcast i8*%UU to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8ruleList_352 to void(...)*),void(...)**%UV,align 8
%UW=getelementptr inbounds i8,i8*%UN,i64 24
%UX=bitcast i8*%UW to i32*
store i32 -2147483647,i32*%UX,align 4
%UY=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%UZ=call fastcc i8*%UA(i8*inreg%UY,i8*inreg%UN)
%U0=getelementptr inbounds i8,i8*%UZ,i64 16
%U1=bitcast i8*%U0 to i8*(i8*,i8*)**
%U2=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%U1,align 8
%U3=bitcast i8*%UZ to i8**
%U4=load i8*,i8**%U3,align 8
%U5=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%U6=call fastcc i8*%U2(i8*inreg%U4,i8*inreg%U5)
store i8*%U6,i8**%E,align 8
%U7=bitcast i8**%F to i8***
%U8=load i8**,i8***%U7,align 8
store i8*null,i8**%F,align 8
%U9=load i8*,i8**%U8,align 8
%Va=load i8*,i8**%G,align 8
%Vb=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%Vc=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%Vb,i8*inreg%Va,i8*inreg%U9)
store i8*%Vc,i8**%F,align 8
%Vd=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%Ve=call fastcc i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg%Vd)
%Vf=getelementptr inbounds i8,i8*%Ve,i64 16
%Vg=bitcast i8*%Vf to i8*(i8*,i8*)**
%Vh=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Vg,align 8
%Vi=bitcast i8*%Ve to i8**
%Vj=load i8*,i8**%Vi,align 8
store i8*%Vj,i8**%G,align 8
%Vk=call i8*@sml_alloc(i32 inreg 44)#0
%Vl=getelementptr inbounds i8,i8*%Vk,i64 -4
%Vm=bitcast i8*%Vl to i32*
store i32 1342177320,i32*%Vm,align 4
%Vn=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%Vo=bitcast i8*%Vk to i8**
store i8*%Vn,i8**%Vo,align 8
%Vp=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%Vq=getelementptr inbounds i8,i8*%Vk,i64 8
%Vr=bitcast i8*%Vq to i8**
store i8*%Vp,i8**%Vr,align 8
%Vs=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%Vt=getelementptr inbounds i8,i8*%Vk,i64 16
%Vu=bitcast i8*%Vt to i8**
store i8*%Vs,i8**%Vu,align 8
%Vv=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%Vw=getelementptr inbounds i8,i8*%Vk,i64 24
%Vx=bitcast i8*%Vw to i8**
store i8*%Vv,i8**%Vx,align 8
%Vy=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%Vz=getelementptr inbounds i8,i8*%Vk,i64 32
%VA=bitcast i8*%Vz to i8**
store i8*%Vy,i8**%VA,align 8
%VB=getelementptr inbounds i8,i8*%Vk,i64 40
%VC=bitcast i8*%VB to i32*
store i32 31,i32*%VC,align 4
%VD=bitcast i8**%u to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VD)
%VE=bitcast i8**%v to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VE)
%VF=bitcast i8**%w to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VF)
%VG=bitcast i8**%x to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VG)
%VH=bitcast i8**%y to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VH)
%VI=bitcast i8**%z to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VI)
%VJ=bitcast i8**%A to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VJ)
%VK=bitcast i8**%B to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VK)
%VL=bitcast i8**%C to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%VL)
call void@llvm.gcroot(i8**%u,i8*null)#0
call void@llvm.gcroot(i8**%v,i8*null)#0
call void@llvm.gcroot(i8**%w,i8*null)#0
call void@llvm.gcroot(i8**%x,i8*null)#0
call void@llvm.gcroot(i8**%y,i8*null)#0
call void@llvm.gcroot(i8**%z,i8*null)#0
call void@llvm.gcroot(i8**%A,i8*null)#0
call void@llvm.gcroot(i8**%B,i8*null)#0
call void@llvm.gcroot(i8**%C,i8*null)#0
store i8*%Vk,i8**%u,align 8
%VM=load atomic i32,i32*@sml_check_flag unordered,align 4
%VN=icmp eq i32%VM,0
br i1%VN,label%VX,label%VO
VO:
call void@sml_check(i32 inreg%VM)
%VP=load i8*,i8**%u,align 8
%VQ=bitcast i8*%VP to i8**
%VR=getelementptr inbounds i8,i8*%VP,i64 8
%VS=bitcast i8*%VR to i8**
%VT=getelementptr inbounds i8,i8*%VP,i64 24
%VU=bitcast i8*%VT to i8**
%VV=getelementptr inbounds i8,i8*%VP,i64 32
%VW=bitcast i8*%VV to i8**
br label%VX
VX:
%VY=phi i8**[%VW,%VO],[%VA,%Uo]
%VZ=phi i8**[%VU,%VO],[%Vx,%Uo]
%V0=phi i8**[%VS,%VO],[%Vr,%Uo]
%V1=phi i8**[%VQ,%VO],[%Vo,%Uo]
%V2=phi i8*[%VP,%VO],[%Vk,%Uo]
store i8*%V2,i8**%v,align 8
%V3=load i8*,i8**%V1,align 8
store i8*%V3,i8**%u,align 8
%V4=load i8*,i8**%V0,align 8
store i8*%V4,i8**%w,align 8
%V5=load i8*,i8**%VZ,align 8
store i8*%V5,i8**%x,align 8
%V6=load i8*,i8**%VY,align 8
store i8*%V6,i8**%y,align 8
%V7=call i8*@sml_alloc(i32 inreg 20)#0
%V8=getelementptr inbounds i8,i8*%V7,i64 -4
%V9=bitcast i8*%V8 to i32*
store i32 1342177296,i32*%V9,align 4
store i8*%V7,i8**%z,align 8
%Wa=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%Wb=bitcast i8*%V7 to i8**
store i8*%Wa,i8**%Wb,align 8
%Wc=load i8*,i8**%w,align 8
%Wd=getelementptr inbounds i8,i8*%V7,i64 8
%We=bitcast i8*%Wd to i8**
store i8*%Wc,i8**%We,align 8
%Wf=getelementptr inbounds i8,i8*%V7,i64 16
%Wg=bitcast i8*%Wf to i32*
store i32 3,i32*%Wg,align 4
%Wh=call i8*@sml_alloc(i32 inreg 20)#0
%Wi=getelementptr inbounds i8,i8*%Wh,i64 -4
%Wj=bitcast i8*%Wi to i32*
store i32 1342177296,i32*%Wj,align 4
store i8*%Wh,i8**%B,align 8
%Wk=getelementptr inbounds i8,i8*%Wh,i64 4
%Wl=bitcast i8*%Wk to i32*
store i32 0,i32*%Wl,align 1
%Wm=bitcast i8*%Wh to i32*
store i32 8,i32*%Wm,align 4
%Wn=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
%Wo=getelementptr inbounds i8,i8*%Wh,i64 8
%Wp=bitcast i8*%Wo to i8**
store i8*%Wn,i8**%Wp,align 8
%Wq=getelementptr inbounds i8,i8*%Wh,i64 16
%Wr=bitcast i8*%Wq to i32*
store i32 2,i32*%Wr,align 4
%Ws=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%Wt=call fastcc i8*@_SMLLN19DatatypeCompilation13extractLayoutE_243(i8*inreg%Ws)
%Wu=bitcast i8*%Wt to i32*
%Wv=load i32,i32*%Wu,align 4
switch i32%Wv,label%Ww[
i32 5,label%akq
i32 0,label%aeW
i32 4,label%adt
i32 1,label%Z2
i32 3,label%Y6
i32 2,label%WO
]
Ww:
store i8*null,i8**%v,align 8
store i8*null,i8**%x,align 8
store i8*null,i8**%y,align 8
store i8*null,i8**%B,align 8
call void@sml_matchcomp_bug()
%Wx=load i8*,i8**@_SMLZ5Match,align 8
store i8*%Wx,i8**%u,align 8
%Wy=call i8*@sml_alloc(i32 inreg 20)#0
%Wz=getelementptr inbounds i8,i8*%Wy,i64 -4
%WA=bitcast i8*%Wz to i32*
store i32 1342177296,i32*%WA,align 4
store i8*%Wy,i8**%v,align 8
%WB=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%WC=bitcast i8*%Wy to i8**
store i8*%WB,i8**%WC,align 8
%WD=getelementptr inbounds i8,i8*%Wy,i64 8
%WE=bitcast i8*%WD to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[88x i8]}>,<{[4x i8],i32,[88x i8]}>*@I,i64 0,i32 2,i64 0),i8**%WE,align 8
%WF=getelementptr inbounds i8,i8*%Wy,i64 16
%WG=bitcast i8*%WF to i32*
store i32 3,i32*%WG,align 4
%WH=call i8*@sml_alloc(i32 inreg 60)#0
%WI=getelementptr inbounds i8,i8*%WH,i64 -4
%WJ=bitcast i8*%WI to i32*
store i32 1342177336,i32*%WJ,align 4
%WK=getelementptr inbounds i8,i8*%WH,i64 56
%WL=bitcast i8*%WK to i32*
store i32 1,i32*%WL,align 4
%WM=load i8*,i8**%v,align 8
%WN=bitcast i8*%WH to i8**
store i8*%WM,i8**%WN,align 8
call void@sml_raise(i8*inreg%WH)#1
unreachable
WO:
store i8*null,i8**%x,align 8
%WP=load i8*,i8**%v,align 8
%WQ=getelementptr inbounds i8,i8*%WP,i64 16
%WR=bitcast i8*%WQ to i8**
%WS=load i8*,i8**%WR,align 8
%WT=icmp eq i8*%WS,null
br i1%WT,label%WU,label%WV
WU:
store i8*null,i8**%v,align 8
store i8*null,i8**%y,align 8
store i8*null,i8**%B,align 8
br label%YM
WV:
%WW=bitcast i8*%WS to i8**
%WX=load i8*,i8**%WW,align 8
%WY=getelementptr inbounds i8,i8*%WX,i64 8
%WZ=bitcast i8*%WY to i8**
%W0=load i8*,i8**%WZ,align 8
%W1=icmp eq i8*%W0,null
br i1%W1,label%W2,label%W3
W2:
store i8*null,i8**%y,align 8
store i8*null,i8**%B,align 8
br label%YM
W3:
%W4=bitcast i8*%W0 to i8**
%W5=load i8*,i8**%W4,align 8
store i8*%W5,i8**%v,align 8
%W6=load i8*,i8**%WW,align 8
%W7=getelementptr inbounds i8,i8*%W6,i64 16
%W8=bitcast i8*%W7 to i8**
%W9=load i8*,i8**%W8,align 8
store i8*%W9,i8**%w,align 8
%Xa=getelementptr inbounds i8,i8*%WS,i64 8
%Xb=bitcast i8*%Xa to i8**
%Xc=load i8*,i8**%Xb,align 8
%Xd=icmp eq i8*%Xc,null
br i1%Xd,label%Xe,label%YL
Xe:
%Xf=getelementptr inbounds i8,i8*%W5,i64 16
%Xg=bitcast i8*%Xf to i8**
%Xh=load i8*,i8**%Xg,align 8
store i8*%Xh,i8**%u,align 8
%Xi=call i8*@sml_alloc(i32 inreg 20)#0
%Xj=getelementptr inbounds i8,i8*%Xi,i64 -4
%Xk=bitcast i8*%Xj to i32*
store i32 1342177296,i32*%Xk,align 4
%Xl=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%Xm=bitcast i8*%Xi to i8**
store i8*%Xl,i8**%Xm,align 8
%Xn=load i8*,i8**%B,align 8
store i8*null,i8**%B,align 8
%Xo=getelementptr inbounds i8,i8*%Xi,i64 8
%Xp=bitcast i8*%Xo to i8**
store i8*%Xn,i8**%Xp,align 8
%Xq=getelementptr inbounds i8,i8*%Xi,i64 16
%Xr=bitcast i8*%Xq to i32*
store i32 3,i32*%Xr,align 4
%Xs=call fastcc i8*@_SMLFN15EmitTypedLambda9Ref__derefE(i8*inreg%Xi)
store i8*%Xs,i8**%u,align 8
%Xt=call i8*@sml_alloc(i32 inreg 20)#0
%Xu=getelementptr inbounds i8,i8*%Xt,i64 -4
%Xv=bitcast i8*%Xu to i32*
store i32 1342177296,i32*%Xv,align 4
store i8*%Xt,i8**%x,align 8
%Xw=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%Xx=bitcast i8*%Xt to i8**
store i8*%Xw,i8**%Xx,align 8
%Xy=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%Xz=getelementptr inbounds i8,i8*%Xt,i64 8
%XA=bitcast i8*%Xz to i8**
store i8*%Xy,i8**%XA,align 8
%XB=getelementptr inbounds i8,i8*%Xt,i64 16
%XC=bitcast i8*%XB to i32*
store i32 3,i32*%XC,align 4
%XD=call i8*@sml_alloc(i32 inreg 20)#0
%XE=getelementptr inbounds i8,i8*%XD,i64 -4
%XF=bitcast i8*%XE to i32*
store i32 1342177296,i32*%XF,align 4
store i8*%XD,i8**%u,align 8
%XG=bitcast i8*%XD to i64*
store i64 0,i64*%XG,align 4
%XH=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%XI=getelementptr inbounds i8,i8*%XD,i64 8
%XJ=bitcast i8*%XI to i8**
store i8*%XH,i8**%XJ,align 8
%XK=getelementptr inbounds i8,i8*%XD,i64 16
%XL=bitcast i8*%XK to i32*
store i32 2,i32*%XL,align 4
%XM=call i8*@sml_alloc(i32 inreg 20)#0
%XN=getelementptr inbounds i8,i8*%XM,i64 -4
%XO=bitcast i8*%XN to i32*
store i32 1342177296,i32*%XO,align 4
%XP=load i8*,i8**%u,align 8
%XQ=bitcast i8*%XM to i8**
store i8*%XP,i8**%XQ,align 8
%XR=getelementptr inbounds i8,i8*%XM,i64 8
%XS=bitcast i8*%XR to i8**
store i8*null,i8**%XS,align 8
%XT=getelementptr inbounds i8,i8*%XM,i64 16
%XU=bitcast i8*%XT to i32*
store i32 3,i32*%XU,align 4
store i8*null,i8**%v,align 8
%XV=call i8*@sml_alloc(i32 inreg 20)#0
%XW=getelementptr inbounds i8,i8*%XV,i64 -4
%XX=bitcast i8*%XW to i32*
store i32 1342177296,i32*%XX,align 4
store i8*%XV,i8**%x,align 8
%XY=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%XZ=bitcast i8*%XV to i8**
store i8*%XY,i8**%XZ,align 8
%X0=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%X1=getelementptr inbounds i8,i8*%XV,i64 8
%X2=bitcast i8*%X1 to i8**
store i8*%X0,i8**%X2,align 8
%X3=getelementptr inbounds i8,i8*%XV,i64 16
%X4=bitcast i8*%X3 to i32*
store i32 3,i32*%X4,align 4
%X5=call i8*@sml_alloc(i32 inreg 20)#0
%X6=getelementptr inbounds i8,i8*%X5,i64 -4
%X7=bitcast i8*%X6 to i32*
store i32 1342177296,i32*%X7,align 4
store i8*%X5,i8**%u,align 8
%X8=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%X9=bitcast i8*%X5 to i8**
store i8*%X8,i8**%X9,align 8
%Ya=load i8*,i8**%y,align 8
store i8*null,i8**%y,align 8
%Yb=getelementptr inbounds i8,i8*%X5,i64 8
%Yc=bitcast i8*%Yb to i8**
store i8*%Ya,i8**%Yc,align 8
%Yd=getelementptr inbounds i8,i8*%X5,i64 16
%Ye=bitcast i8*%Yd to i32*
store i32 3,i32*%Ye,align 4
%Yf=call i8*@sml_alloc(i32 inreg 20)#0
%Yg=getelementptr inbounds i8,i8*%Yf,i64 -4
%Yh=bitcast i8*%Yg to i32*
store i32 1342177296,i32*%Yh,align 4
store i8*%Yf,i8**%v,align 8
%Yi=getelementptr inbounds i8,i8*%Yf,i64 4
%Yj=bitcast i8*%Yi to i32*
store i32 0,i32*%Yj,align 1
%Yk=bitcast i8*%Yf to i32*
store i32 8,i32*%Yk,align 4
%Yl=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%Ym=getelementptr inbounds i8,i8*%Yf,i64 8
%Yn=bitcast i8*%Ym to i8**
store i8*%Yl,i8**%Yn,align 8
%Yo=getelementptr inbounds i8,i8*%Yf,i64 16
%Yp=bitcast i8*%Yo to i32*
store i32 2,i32*%Yp,align 4
%Yq=call i8*@sml_alloc(i32 inreg 20)#0
%Yr=getelementptr inbounds i8,i8*%Yq,i64 -4
%Ys=bitcast i8*%Yr to i32*
store i32 1342177296,i32*%Ys,align 4
store i8*%Yq,i8**%u,align 8
%Yt=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%Yu=bitcast i8*%Yq to i8**
store i8*%Yt,i8**%Yu,align 8
%Yv=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%Yw=getelementptr inbounds i8,i8*%Yq,i64 8
%Yx=bitcast i8*%Yw to i8**
store i8*%Yv,i8**%Yx,align 8
%Yy=getelementptr inbounds i8,i8*%Yq,i64 16
%Yz=bitcast i8*%Yy to i32*
store i32 3,i32*%Yz,align 4
%YA=call i8*@sml_alloc(i32 inreg 20)#0
%YB=bitcast i8*%YA to i32*
%YC=getelementptr inbounds i8,i8*%YA,i64 -4
%YD=bitcast i8*%YC to i32*
store i32 1342177296,i32*%YD,align 4
%YE=getelementptr inbounds i8,i8*%YA,i64 4
%YF=bitcast i8*%YE to i32*
store i32 0,i32*%YF,align 1
store i32 29,i32*%YB,align 4
%YG=load i8*,i8**%u,align 8
%YH=getelementptr inbounds i8,i8*%YA,i64 8
%YI=bitcast i8*%YH to i8**
store i8*%YG,i8**%YI,align 8
%YJ=getelementptr inbounds i8,i8*%YA,i64 16
%YK=bitcast i8*%YJ to i32*
store i32 2,i32*%YK,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VD)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VE)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VF)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VG)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VH)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VI)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VL)
br label%arA
YL:
store i8*null,i8**%y,align 8
store i8*null,i8**%v,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%B,align 8
br label%YM
YM:
%YN=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%YN,i8**%u,align 8
%YO=call i8*@sml_alloc(i32 inreg 28)#0
%YP=getelementptr inbounds i8,i8*%YO,i64 -4
%YQ=bitcast i8*%YP to i32*
store i32 1342177304,i32*%YQ,align 4
store i8*%YO,i8**%v,align 8
%YR=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%YS=bitcast i8*%YO to i8**
store i8*%YR,i8**%YS,align 8
%YT=getelementptr inbounds i8,i8*%YO,i64 8
%YU=bitcast i8*%YT to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@G,i64 0,i32 2,i64 0),i8**%YU,align 8
%YV=getelementptr inbounds i8,i8*%YO,i64 16
%YW=bitcast i8*%YV to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[35x i8]}>,<{[4x i8],i32,[35x i8]}>*@H,i64 0,i32 2,i64 0),i8**%YW,align 8
%YX=getelementptr inbounds i8,i8*%YO,i64 24
%YY=bitcast i8*%YX to i32*
store i32 7,i32*%YY,align 4
%YZ=call i8*@sml_alloc(i32 inreg 60)#0
%Y0=getelementptr inbounds i8,i8*%YZ,i64 -4
%Y1=bitcast i8*%Y0 to i32*
store i32 1342177336,i32*%Y1,align 4
%Y2=getelementptr inbounds i8,i8*%YZ,i64 56
%Y3=bitcast i8*%Y2 to i32*
store i32 1,i32*%Y3,align 4
%Y4=load i8*,i8**%v,align 8
%Y5=bitcast i8*%YZ to i8**
store i8*%Y4,i8**%Y5,align 8
call void@sml_raise(i8*inreg%YZ)#1
unreachable
Y6:
store i8*null,i8**%x,align 8
store i8*null,i8**%B,align 8
%Y7=load i8*,i8**%v,align 8
%Y8=getelementptr inbounds i8,i8*%Y7,i64 16
%Y9=bitcast i8*%Y8 to i8**
%Za=load i8*,i8**%Y9,align 8
%Zb=icmp eq i8*%Za,null
store i8*null,i8**%v,align 8
br i1%Zb,label%ZI,label%Zc
Zc:
%Zd=bitcast i8*%Za to i8**
%Ze=load i8*,i8**%Zd,align 8
%Zf=getelementptr inbounds i8,i8*%Ze,i64 16
%Zg=bitcast i8*%Zf to i8**
%Zh=load i8*,i8**%Zg,align 8
store i8*%Zh,i8**%u,align 8
%Zi=getelementptr inbounds i8,i8*%Za,i64 8
%Zj=bitcast i8*%Zi to i8**
%Zk=load i8*,i8**%Zj,align 8
%Zl=icmp eq i8*%Zk,null
br i1%Zl,label%Zm,label%ZI
Zm:
%Zn=call i8*@sml_alloc(i32 inreg 20)#0
%Zo=getelementptr inbounds i8,i8*%Zn,i64 -4
%Zp=bitcast i8*%Zo to i32*
store i32 1342177296,i32*%Zp,align 4
store i8*%Zn,i8**%v,align 8
%Zq=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%Zr=bitcast i8*%Zn to i8**
store i8*%Zq,i8**%Zr,align 8
%Zs=load i8*,i8**%y,align 8
store i8*null,i8**%y,align 8
%Zt=getelementptr inbounds i8,i8*%Zn,i64 8
%Zu=bitcast i8*%Zt to i8**
store i8*%Zs,i8**%Zu,align 8
%Zv=getelementptr inbounds i8,i8*%Zn,i64 16
%Zw=bitcast i8*%Zv to i32*
store i32 3,i32*%Zw,align 4
%Zx=call i8*@sml_alloc(i32 inreg 20)#0
%Zy=bitcast i8*%Zx to i32*
%Zz=getelementptr inbounds i8,i8*%Zx,i64 -4
%ZA=bitcast i8*%Zz to i32*
store i32 1342177296,i32*%ZA,align 4
%ZB=getelementptr inbounds i8,i8*%Zx,i64 4
%ZC=bitcast i8*%ZB to i32*
store i32 0,i32*%ZC,align 1
store i32 8,i32*%Zy,align 4
%ZD=load i8*,i8**%v,align 8
%ZE=getelementptr inbounds i8,i8*%Zx,i64 8
%ZF=bitcast i8*%ZE to i8**
store i8*%ZD,i8**%ZF,align 8
%ZG=getelementptr inbounds i8,i8*%Zx,i64 16
%ZH=bitcast i8*%ZG to i32*
store i32 2,i32*%ZH,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VD)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VE)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VF)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VG)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VH)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VI)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VL)
br label%arA
ZI:
store i8*null,i8**%y,align 8
%ZJ=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%ZJ,i8**%u,align 8
%ZK=call i8*@sml_alloc(i32 inreg 28)#0
%ZL=getelementptr inbounds i8,i8*%ZK,i64 -4
%ZM=bitcast i8*%ZL to i32*
store i32 1342177304,i32*%ZM,align 4
store i8*%ZK,i8**%v,align 8
%ZN=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%ZO=bitcast i8*%ZK to i8**
store i8*%ZN,i8**%ZO,align 8
%ZP=getelementptr inbounds i8,i8*%ZK,i64 8
%ZQ=bitcast i8*%ZP to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@E,i64 0,i32 2,i64 0),i8**%ZQ,align 8
%ZR=getelementptr inbounds i8,i8*%ZK,i64 16
%ZS=bitcast i8*%ZR to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[25x i8]}>,<{[4x i8],i32,[25x i8]}>*@F,i64 0,i32 2,i64 0),i8**%ZS,align 8
%ZT=getelementptr inbounds i8,i8*%ZK,i64 24
%ZU=bitcast i8*%ZT to i32*
store i32 7,i32*%ZU,align 4
%ZV=call i8*@sml_alloc(i32 inreg 60)#0
%ZW=getelementptr inbounds i8,i8*%ZV,i64 -4
%ZX=bitcast i8*%ZW to i32*
store i32 1342177336,i32*%ZX,align 4
%ZY=getelementptr inbounds i8,i8*%ZV,i64 56
%ZZ=bitcast i8*%ZY to i32*
store i32 1,i32*%ZZ,align 4
%Z0=load i8*,i8**%v,align 8
%Z1=bitcast i8*%ZV to i8**
store i8*%Z0,i8**%Z1,align 8
call void@sml_raise(i8*inreg%ZV)#1
unreachable
Z2:
%Z3=getelementptr inbounds i8,i8*%Wt,i64 8
%Z4=bitcast i8*%Z3 to i8***
%Z5=load i8**,i8***%Z4,align 8
%Z6=load i8*,i8**%Z5,align 8
%Z7=call fastcc i8*@_SMLFN6Symbol8mkSymbolE(i8*inreg%Z6)
%Z8=getelementptr inbounds i8,i8*%Z7,i64 16
%Z9=bitcast i8*%Z8 to i8*(i8*,i8*)**
%aaa=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%Z9,align 8
%aab=bitcast i8*%Z7 to i8**
%aac=load i8*,i8**%aab,align 8
%aad=load i8*,i8**@_SMLZN3Loc5nolocE,align 8
%aae=call fastcc i8*%aaa(i8*inreg%aac,i8*inreg%aad)
store i8*%aae,i8**%u,align 8
%aaf=load i8*,i8**%v,align 8
%aag=getelementptr inbounds i8,i8*%aaf,i64 16
%aah=bitcast i8*%aag to i8**
%aai=load i8*,i8**%aah,align 8
%aaj=icmp eq i8*%aai,null
store i8*null,i8**%v,align 8
br i1%aaj,label%aak,label%aal
aak:
store i8*null,i8**%x,align 8
store i8*null,i8**%y,align 8
store i8*null,i8**%B,align 8
br label%abX
aal:
%aam=bitcast i8*%aai to i8**
%aan=bitcast i8*%aai to i8***
%aao=load i8**,i8***%aan,align 8
%aap=load i8*,i8**%aao,align 8
store i8*%aap,i8**%w,align 8
%aaq=load i8*,i8**%aam,align 8
%aar=getelementptr inbounds i8,i8*%aaq,i64 8
%aas=bitcast i8*%aar to i8**
%aat=load i8*,i8**%aas,align 8
%aau=icmp eq i8*%aat,null
br i1%aau,label%aav,label%abW
aav:
%aaw=getelementptr inbounds i8,i8*%aaq,i64 16
%aax=bitcast i8*%aaw to i8**
%aay=load i8*,i8**%aax,align 8
store i8*%aay,i8**%z,align 8
%aaz=getelementptr inbounds i8,i8*%aai,i64 8
%aaA=bitcast i8*%aaz to i8**
%aaB=load i8*,i8**%aaA,align 8
%aaC=icmp eq i8*%aaB,null
br i1%aaC,label%aaD,label%aa9
aaD:
%aaE=getelementptr inbounds i8,i8*%aap,i64 8
%aaF=bitcast i8*%aaE to i8**
%aaG=load i8*,i8**%aaF,align 8
%aaH=call fastcc i8*@_SMLFN6Symbol10lastSymbolE(i8*inreg%aaG)
store i8*%aaH,i8**%v,align 8
%aaI=call i8*@sml_alloc(i32 inreg 20)#0
%aaJ=getelementptr inbounds i8,i8*%aaI,i64 -4
%aaK=bitcast i8*%aaJ to i32*
store i32 1342177296,i32*%aaK,align 4
%aaL=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%aaM=bitcast i8*%aaI to i8**
store i8*%aaL,i8**%aaM,align 8
%aaN=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%aaO=getelementptr inbounds i8,i8*%aaI,i64 8
%aaP=bitcast i8*%aaO to i8**
store i8*%aaN,i8**%aaP,align 8
%aaQ=getelementptr inbounds i8,i8*%aaI,i64 16
%aaR=bitcast i8*%aaQ to i32*
store i32 3,i32*%aaR,align 4
%aaS=call fastcc i32@_SMLFN6Symbol8eqSymbolE(i8*inreg%aaI)
%aaT=icmp eq i32%aaS,0
%aaU=call i8*@sml_alloc(i32 inreg 28)#0
%aaV=getelementptr inbounds i8,i8*%aaU,i64 -4
%aaW=bitcast i8*%aaV to i32*
store i32 1342177304,i32*%aaW,align 4
%aaX=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%aaY=bitcast i8*%aaU to i8**
store i8*%aaX,i8**%aaY,align 8
br i1%aaT,label%aa4,label%aaZ
aaZ:
%aa0=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%aa1=getelementptr inbounds i8,i8*%aaU,i64 8
%aa2=bitcast i8*%aa1 to i8**
store i8*%aa0,i8**%aa2,align 8
%aa3=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
br label%ach
aa4:
%aa5=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
%aa6=getelementptr inbounds i8,i8*%aaU,i64 8
%aa7=bitcast i8*%aa6 to i8**
store i8*%aa5,i8**%aa7,align 8
%aa8=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
br label%ach
aa9:
%aba=bitcast i8*%aaB to i8**
%abb=load i8*,i8**%aba,align 8
%abc=getelementptr inbounds i8,i8*%abb,i64 8
%abd=bitcast i8*%abc to i8**
%abe=load i8*,i8**%abd,align 8
%abf=icmp eq i8*%abe,null
br i1%abf,label%abg,label%abV
abg:
%abh=getelementptr inbounds i8,i8*%abb,i64 16
%abi=bitcast i8*%abh to i8**
%abj=load i8*,i8**%abi,align 8
store i8*%abj,i8**%x,align 8
%abk=getelementptr inbounds i8,i8*%aaB,i64 8
%abl=bitcast i8*%abk to i8**
%abm=load i8*,i8**%abl,align 8
%abn=icmp eq i8*%abm,null
br i1%abn,label%abo,label%abU
abo:
%abp=getelementptr inbounds i8,i8*%aap,i64 8
%abq=bitcast i8*%abp to i8**
%abr=load i8*,i8**%abq,align 8
%abs=call fastcc i8*@_SMLFN6Symbol10lastSymbolE(i8*inreg%abr)
store i8*%abs,i8**%v,align 8
%abt=call i8*@sml_alloc(i32 inreg 20)#0
%abu=getelementptr inbounds i8,i8*%abt,i64 -4
%abv=bitcast i8*%abu to i32*
store i32 1342177296,i32*%abv,align 4
%abw=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%abx=bitcast i8*%abt to i8**
store i8*%abw,i8**%abx,align 8
%aby=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%abz=getelementptr inbounds i8,i8*%abt,i64 8
%abA=bitcast i8*%abz to i8**
store i8*%aby,i8**%abA,align 8
%abB=getelementptr inbounds i8,i8*%abt,i64 16
%abC=bitcast i8*%abB to i32*
store i32 3,i32*%abC,align 4
%abD=call fastcc i32@_SMLFN6Symbol8eqSymbolE(i8*inreg%abt)
%abE=icmp eq i32%abD,0
%abF=call i8*@sml_alloc(i32 inreg 28)#0
%abG=getelementptr inbounds i8,i8*%abF,i64 -4
%abH=bitcast i8*%abG to i32*
store i32 1342177304,i32*%abH,align 4
%abI=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%abJ=bitcast i8*%abF to i8**
store i8*%abI,i8**%abJ,align 8
br i1%abE,label%abP,label%abK
abK:
%abL=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%abM=getelementptr inbounds i8,i8*%abF,i64 8
%abN=bitcast i8*%abM to i8**
store i8*%abL,i8**%abN,align 8
%abO=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
br label%ach
abP:
%abQ=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
%abR=getelementptr inbounds i8,i8*%abF,i64 8
%abS=bitcast i8*%abR to i8**
store i8*%abQ,i8**%abS,align 8
%abT=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
br label%ach
abU:
store i8*null,i8**%y,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%z,align 8
store i8*null,i8**%x,align 8
store i8*null,i8**%B,align 8
br label%abX
abV:
store i8*null,i8**%y,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%z,align 8
store i8*null,i8**%B,align 8
br label%abX
abW:
store i8*null,i8**%x,align 8
store i8*null,i8**%y,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%B,align 8
br label%abX
abX:
%abY=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%abY,i8**%u,align 8
%abZ=call i8*@sml_alloc(i32 inreg 28)#0
%ab0=getelementptr inbounds i8,i8*%abZ,i64 -4
%ab1=bitcast i8*%ab0 to i32*
store i32 1342177304,i32*%ab1,align 4
store i8*%abZ,i8**%v,align 8
%ab2=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%ab3=bitcast i8*%abZ to i8**
store i8*%ab2,i8**%ab3,align 8
%ab4=getelementptr inbounds i8,i8*%abZ,i64 8
%ab5=bitcast i8*%ab4 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@C,i64 0,i32 2,i64 0),i8**%ab5,align 8
%ab6=getelementptr inbounds i8,i8*%abZ,i64 16
%ab7=bitcast i8*%ab6 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[25x i8]}>,<{[4x i8],i32,[25x i8]}>*@D,i64 0,i32 2,i64 0),i8**%ab7,align 8
%ab8=getelementptr inbounds i8,i8*%abZ,i64 24
%ab9=bitcast i8*%ab8 to i32*
store i32 7,i32*%ab9,align 4
%aca=call i8*@sml_alloc(i32 inreg 60)#0
%acb=getelementptr inbounds i8,i8*%aca,i64 -4
%acc=bitcast i8*%acb to i32*
store i32 1342177336,i32*%acc,align 4
%acd=getelementptr inbounds i8,i8*%aca,i64 56
%ace=bitcast i8*%acd to i32*
store i32 1,i32*%ace,align 4
%acf=load i8*,i8**%v,align 8
%acg=bitcast i8*%aca to i8**
store i8*%acf,i8**%acg,align 8
call void@sml_raise(i8*inreg%aca)#1
unreachable
ach:
%aci=phi i8*[%abF,%abP],[%abF,%abK],[%aaU,%aa4],[%aaU,%aaZ]
%acj=phi i8*[%abT,%abP],[%abO,%abK],[%aa8,%aa4],[%aa3,%aaZ]
%ack=phi i8*[%abQ,%abP],[%abL,%abK],[%aa5,%aa4],[%aa0,%aaZ]
%acl=getelementptr inbounds i8,i8*%aci,i64 16
%acm=bitcast i8*%acl to i8**
store i8*%acj,i8**%acm,align 8
%acn=getelementptr inbounds i8,i8*%aci,i64 24
%aco=bitcast i8*%acn to i32*
store i32 7,i32*%aco,align 4
store i8*%ack,i8**%u,align 8
store i8*%acj,i8**%v,align 8
%acp=call i8*@sml_alloc(i32 inreg 20)#0
%acq=getelementptr inbounds i8,i8*%acp,i64 -4
%acr=bitcast i8*%acq to i32*
store i32 1342177296,i32*%acr,align 4
store i8*%acp,i8**%w,align 8
%acs=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%act=bitcast i8*%acp to i8**
store i8*%acs,i8**%act,align 8
%acu=load i8*,i8**%y,align 8
%acv=getelementptr inbounds i8,i8*%acp,i64 8
%acw=bitcast i8*%acv to i8**
store i8*%acu,i8**%acw,align 8
%acx=getelementptr inbounds i8,i8*%acp,i64 16
%acy=bitcast i8*%acx to i32*
store i32 3,i32*%acy,align 4
%acz=call i8*@sml_alloc(i32 inreg 20)#0
%acA=getelementptr inbounds i8,i8*%acz,i64 -4
%acB=bitcast i8*%acA to i32*
store i32 1342177296,i32*%acB,align 4
store i8*%acz,i8**%x,align 8
%acC=getelementptr inbounds i8,i8*%acz,i64 4
%acD=bitcast i8*%acC to i32*
store i32 0,i32*%acD,align 1
%acE=bitcast i8*%acz to i32*
store i32 8,i32*%acE,align 4
%acF=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%acG=getelementptr inbounds i8,i8*%acz,i64 8
%acH=bitcast i8*%acG to i8**
store i8*%acF,i8**%acH,align 8
%acI=getelementptr inbounds i8,i8*%acz,i64 16
%acJ=bitcast i8*%acI to i32*
store i32 2,i32*%acJ,align 4
%acK=call i8*@sml_alloc(i32 inreg 20)#0
%acL=getelementptr inbounds i8,i8*%acK,i64 -4
%acM=bitcast i8*%acL to i32*
store i32 1342177296,i32*%acM,align 4
store i8*%acK,i8**%u,align 8
%acN=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%acO=bitcast i8*%acK to i8**
store i8*%acN,i8**%acO,align 8
%acP=load i8*,i8**%y,align 8
store i8*null,i8**%y,align 8
%acQ=getelementptr inbounds i8,i8*%acK,i64 8
%acR=bitcast i8*%acQ to i8**
store i8*%acP,i8**%acR,align 8
%acS=getelementptr inbounds i8,i8*%acK,i64 16
%acT=bitcast i8*%acS to i32*
store i32 3,i32*%acT,align 4
%acU=call i8*@sml_alloc(i32 inreg 20)#0
%acV=getelementptr inbounds i8,i8*%acU,i64 -4
%acW=bitcast i8*%acV to i32*
store i32 1342177296,i32*%acW,align 4
store i8*%acU,i8**%v,align 8
%acX=getelementptr inbounds i8,i8*%acU,i64 4
%acY=bitcast i8*%acX to i32*
store i32 0,i32*%acY,align 1
%acZ=bitcast i8*%acU to i32*
store i32 8,i32*%acZ,align 4
%ac0=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%ac1=getelementptr inbounds i8,i8*%acU,i64 8
%ac2=bitcast i8*%ac1 to i8**
store i8*%ac0,i8**%ac2,align 8
%ac3=getelementptr inbounds i8,i8*%acU,i64 16
%ac4=bitcast i8*%ac3 to i32*
store i32 2,i32*%ac4,align 4
%ac5=call i8*@sml_alloc(i32 inreg 28)#0
%ac6=getelementptr inbounds i8,i8*%ac5,i64 -4
%ac7=bitcast i8*%ac6 to i32*
store i32 1342177304,i32*%ac7,align 4
store i8*%ac5,i8**%u,align 8
%ac8=load i8*,i8**%B,align 8
store i8*null,i8**%B,align 8
%ac9=bitcast i8*%ac5 to i8**
store i8*%ac8,i8**%ac9,align 8
%ada=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%adb=getelementptr inbounds i8,i8*%ac5,i64 8
%adc=bitcast i8*%adb to i8**
store i8*%ada,i8**%adc,align 8
%add=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%ade=getelementptr inbounds i8,i8*%ac5,i64 16
%adf=bitcast i8*%ade to i8**
store i8*%add,i8**%adf,align 8
%adg=getelementptr inbounds i8,i8*%ac5,i64 24
%adh=bitcast i8*%adg to i32*
store i32 7,i32*%adh,align 4
%adi=call i8*@sml_alloc(i32 inreg 20)#0
%adj=bitcast i8*%adi to i32*
%adk=getelementptr inbounds i8,i8*%adi,i64 -4
%adl=bitcast i8*%adk to i32*
store i32 1342177296,i32*%adl,align 4
%adm=getelementptr inbounds i8,i8*%adi,i64 4
%adn=bitcast i8*%adm to i32*
store i32 0,i32*%adn,align 1
store i32 11,i32*%adj,align 4
%ado=load i8*,i8**%u,align 8
%adp=getelementptr inbounds i8,i8*%adi,i64 8
%adq=bitcast i8*%adp to i8**
store i8*%ado,i8**%adq,align 8
%adr=getelementptr inbounds i8,i8*%adi,i64 16
%ads=bitcast i8*%adr to i32*
store i32 2,i32*%ads,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VD)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VE)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VF)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VG)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VH)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VI)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VL)
br label%arA
adt:
store i8*null,i8**%x,align 8
%adu=getelementptr inbounds i8,i8*%Wt,i64 8
%adv=bitcast i8*%adu to i8**
%adw=load i8*,i8**%adv,align 8
store i8*%adw,i8**%u,align 8
%adx=load i8*,i8**%v,align 8
%ady=getelementptr inbounds i8,i8*%adx,i64 16
%adz=bitcast i8*%ady to i8**
%adA=load i8*,i8**%adz,align 8
%adB=icmp eq i8*%adA,null
br i1%adB,label%adC,label%adD
adC:
store i8*null,i8**%v,align 8
store i8*null,i8**%y,align 8
store i8*null,i8**%B,align 8
br label%aeC
adD:
%adE=bitcast i8*%adA to i8**
%adF=load i8*,i8**%adE,align 8
%adG=getelementptr inbounds i8,i8*%adF,i64 8
%adH=bitcast i8*%adG to i8**
%adI=load i8*,i8**%adH,align 8
store i8*%adI,i8**%v,align 8
%adJ=icmp eq i8*%adI,null
br i1%adJ,label%adK,label%adL
adK:
store i8*null,i8**%y,align 8
store i8*null,i8**%v,align 8
store i8*null,i8**%B,align 8
br label%aeC
adL:
%adM=load i8*,i8**%adE,align 8
%adN=getelementptr inbounds i8,i8*%adM,i64 16
%adO=bitcast i8*%adN to i8**
%adP=load i8*,i8**%adO,align 8
store i8*%adP,i8**%w,align 8
%adQ=getelementptr inbounds i8,i8*%adA,i64 8
%adR=bitcast i8*%adQ to i8**
%adS=load i8*,i8**%adR,align 8
%adT=icmp eq i8*%adS,null
br i1%adT,label%adU,label%aeB
adU:
%adV=call i8*@sml_alloc(i32 inreg 20)#0
%adW=getelementptr inbounds i8,i8*%adV,i64 -4
%adX=bitcast i8*%adW to i32*
store i32 1342177296,i32*%adX,align 4
store i8*%adV,i8**%x,align 8
%adY=load i8*,i8**%B,align 8
store i8*null,i8**%B,align 8
%adZ=bitcast i8*%adV to i8**
store i8*%adY,i8**%adZ,align 8
%ad0=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%ad1=getelementptr inbounds i8,i8*%adV,i64 8
%ad2=bitcast i8*%ad1 to i8**
store i8*%ad0,i8**%ad2,align 8
%ad3=getelementptr inbounds i8,i8*%adV,i64 16
%ad4=bitcast i8*%ad3 to i32*
store i32 3,i32*%ad4,align 4
%ad5=call i8*@sml_alloc(i32 inreg 28)#0
%ad6=getelementptr inbounds i8,i8*%ad5,i64 -4
%ad7=bitcast i8*%ad6 to i32*
store i32 1342177304,i32*%ad7,align 4
%ad8=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%ad9=bitcast i8*%ad5 to i8**
store i8*%ad8,i8**%ad9,align 8
%aea=getelementptr inbounds i8,i8*%ad5,i64 8
%aeb=bitcast i8*%aea to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchConE_294 to void(...)*),void(...)**%aeb,align 8
%aec=getelementptr inbounds i8,i8*%ad5,i64 16
%aed=bitcast i8*%aec to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchConE_294 to void(...)*),void(...)**%aed,align 8
%aee=getelementptr inbounds i8,i8*%ad5,i64 24
%aef=bitcast i8*%aee to i32*
store i32 -2147483647,i32*%aef,align 4
%aeg=call fastcc i8*@_SMLLN19DatatypeCompilation10makeBranchE_286(i8*inreg%ad5)
%aeh=getelementptr inbounds i8,i8*%aeg,i64 16
%aei=bitcast i8*%aeh to i8*(i8*,i8*)**
%aej=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aei,align 8
%aek=bitcast i8*%aeg to i8**
%ael=load i8*,i8**%aek,align 8
store i8*%ael,i8**%u,align 8
%aem=call i8*@sml_alloc(i32 inreg 28)#0
%aen=getelementptr inbounds i8,i8*%aem,i64 -4
%aeo=bitcast i8*%aen to i32*
store i32 1342177304,i32*%aeo,align 4
%aep=load i8*,i8**%v,align 8
%aeq=bitcast i8*%aem to i8**
store i8*%aep,i8**%aeq,align 8
%aer=load i8*,i8**%w,align 8
%aes=getelementptr inbounds i8,i8*%aem,i64 8
%aet=bitcast i8*%aes to i8**
store i8*%aer,i8**%aet,align 8
%aeu=load i8*,i8**%y,align 8
%aev=getelementptr inbounds i8,i8*%aem,i64 16
%aew=bitcast i8*%aev to i8**
store i8*%aeu,i8**%aew,align 8
%aex=getelementptr inbounds i8,i8*%aem,i64 24
%aey=bitcast i8*%aex to i32*
store i32 7,i32*%aey,align 4
%aez=load i8*,i8**%u,align 8
%aeA=call fastcc i8*%aej(i8*inreg%aez,i8*inreg%aem)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VD)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VE)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VF)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VG)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VH)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VI)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VL)
br label%arA
aeB:
store i8*null,i8**%y,align 8
store i8*null,i8**%v,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%B,align 8
br label%aeC
aeC:
%aeD=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%aeD,i8**%u,align 8
%aeE=call i8*@sml_alloc(i32 inreg 28)#0
%aeF=getelementptr inbounds i8,i8*%aeE,i64 -4
%aeG=bitcast i8*%aeF to i32*
store i32 1342177304,i32*%aeG,align 4
store i8*%aeE,i8**%v,align 8
%aeH=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%aeI=bitcast i8*%aeE to i8**
store i8*%aeH,i8**%aeI,align 8
%aeJ=getelementptr inbounds i8,i8*%aeE,i64 8
%aeK=bitcast i8*%aeJ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@A,i64 0,i32 2,i64 0),i8**%aeK,align 8
%aeL=getelementptr inbounds i8,i8*%aeE,i64 16
%aeM=bitcast i8*%aeL to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[29x i8]}>,<{[4x i8],i32,[29x i8]}>*@B,i64 0,i32 2,i64 0),i8**%aeM,align 8
%aeN=getelementptr inbounds i8,i8*%aeE,i64 24
%aeO=bitcast i8*%aeN to i32*
store i32 7,i32*%aeO,align 4
%aeP=call i8*@sml_alloc(i32 inreg 60)#0
%aeQ=getelementptr inbounds i8,i8*%aeP,i64 -4
%aeR=bitcast i8*%aeQ to i32*
store i32 1342177336,i32*%aeR,align 4
%aeS=getelementptr inbounds i8,i8*%aeP,i64 56
%aeT=bitcast i8*%aeS to i32*
store i32 1,i32*%aeT,align 4
%aeU=load i8*,i8**%v,align 8
%aeV=bitcast i8*%aeP to i8**
store i8*%aeU,i8**%aeV,align 8
call void@sml_raise(i8*inreg%aeP)#1
unreachable
aeW:
%aeX=getelementptr inbounds i8,i8*%Wt,i64 8
%aeY=bitcast i8*%aeX to i8**
%aeZ=load i8*,i8**%aeY,align 8
store i8*%aeZ,i8**%z,align 8
%ae0=load i8*,i8**%v,align 8
%ae1=getelementptr inbounds i8,i8*%ae0,i64 16
%ae2=bitcast i8*%ae1 to i8**
%ae3=load i8*,i8**%ae2,align 8
%ae4=icmp eq i8*%ae3,null
br i1%ae4,label%ae5,label%ae6
ae5:
store i8*null,i8**%v,align 8
store i8*null,i8**%x,align 8
store i8*null,i8**%y,align 8
store i8*null,i8**%z,align 8
store i8*null,i8**%B,align 8
br label%ahn
ae6:
%ae7=bitcast i8*%ae3 to i8**
%ae8=bitcast i8*%ae3 to i8***
%ae9=load i8**,i8***%ae8,align 8
%afa=load i8*,i8**%ae9,align 8
store i8*%afa,i8**%u,align 8
%afb=load i8*,i8**%ae7,align 8
%afc=getelementptr inbounds i8,i8*%afb,i64 8
%afd=bitcast i8*%afc to i8**
%afe=load i8*,i8**%afd,align 8
%aff=icmp eq i8*%afe,null
br i1%aff,label%afg,label%agh
afg:
%afh=getelementptr inbounds i8,i8*%afb,i64 16
%afi=bitcast i8*%afh to i8**
%afj=load i8*,i8**%afi,align 8
store i8*%afj,i8**%v,align 8
%afk=getelementptr inbounds i8,i8*%ae3,i64 8
%afl=bitcast i8*%afk to i8**
%afm=load i8*,i8**%afl,align 8
%afn=icmp eq i8*%afm,null
br i1%afn,label%afo,label%afA
afo:
%afp=call i8*@sml_alloc(i32 inreg 36)#0
%afq=getelementptr inbounds i8,i8*%afp,i64 -4
%afr=bitcast i8*%afq to i32*
store i32 1342177312,i32*%afr,align 4
%afs=load i8*,i8**%u,align 8
%aft=bitcast i8*%afp to i8**
store i8*%afs,i8**%aft,align 8
%afu=getelementptr inbounds i8,i8*%afp,i64 8
%afv=bitcast i8*%afu to i8**
store i8*null,i8**%afv,align 8
%afw=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%afx=getelementptr inbounds i8,i8*%afp,i64 16
%afy=bitcast i8*%afx to i8**
store i8*%afw,i8**%afy,align 8
%afz=load i8*,i8**%v,align 8
br label%ahH
afA:
%afB=bitcast i8*%afm to i8**
%afC=bitcast i8*%afm to i8***
%afD=load i8**,i8***%afC,align 8
%afE=load i8*,i8**%afD,align 8
store i8*%afE,i8**%u,align 8
%afF=load i8*,i8**%afB,align 8
%afG=getelementptr inbounds i8,i8*%afF,i64 8
%afH=bitcast i8*%afG to i8**
%afI=load i8*,i8**%afH,align 8
%afJ=icmp eq i8*%afI,null
br i1%afJ,label%afK,label%afL
afK:
store i8*null,i8**%y,align 8
store i8*null,i8**%z,align 8
store i8*null,i8**%v,align 8
store i8*null,i8**%B,align 8
br label%ahn
afL:
%afM=bitcast i8*%afI to i8**
%afN=load i8*,i8**%afM,align 8
store i8*%afN,i8**%w,align 8
%afO=load i8*,i8**%afB,align 8
%afP=getelementptr inbounds i8,i8*%afO,i64 16
%afQ=bitcast i8*%afP to i8**
%afR=load i8*,i8**%afQ,align 8
store i8*%afR,i8**%x,align 8
%afS=getelementptr inbounds i8,i8*%afm,i64 8
%afT=bitcast i8*%afS to i8**
%afU=load i8*,i8**%afT,align 8
%afV=icmp eq i8*%afU,null
br i1%afV,label%afW,label%agg
afW:
%afX=call i8*@sml_alloc(i32 inreg 12)#0
%afY=getelementptr inbounds i8,i8*%afX,i64 -4
%afZ=bitcast i8*%afY to i32*
store i32 1342177288,i32*%afZ,align 4
store i8*%afX,i8**%A,align 8
%af0=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%af1=bitcast i8*%afX to i8**
store i8*%af0,i8**%af1,align 8
%af2=getelementptr inbounds i8,i8*%afX,i64 8
%af3=bitcast i8*%af2 to i32*
store i32 1,i32*%af3,align 4
%af4=call i8*@sml_alloc(i32 inreg 36)#0
%af5=getelementptr inbounds i8,i8*%af4,i64 -4
%af6=bitcast i8*%af5 to i32*
store i32 1342177312,i32*%af6,align 4
%af7=load i8*,i8**%u,align 8
%af8=bitcast i8*%af4 to i8**
store i8*%af7,i8**%af8,align 8
%af9=load i8*,i8**%A,align 8
store i8*null,i8**%A,align 8
%aga=getelementptr inbounds i8,i8*%af4,i64 8
%agb=bitcast i8*%aga to i8**
store i8*%af9,i8**%agb,align 8
%agc=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%agd=getelementptr inbounds i8,i8*%af4,i64 16
%age=bitcast i8*%agd to i8**
store i8*%agc,i8**%age,align 8
%agf=load i8*,i8**%v,align 8
br label%ahH
agg:
store i8*null,i8**%y,align 8
store i8*null,i8**%z,align 8
store i8*null,i8**%v,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%x,align 8
store i8*null,i8**%B,align 8
br label%ahn
agh:
%agi=bitcast i8*%afe to i8**
%agj=load i8*,i8**%agi,align 8
store i8*%agj,i8**%v,align 8
%agk=load i8*,i8**%ae7,align 8
%agl=getelementptr inbounds i8,i8*%agk,i64 16
%agm=bitcast i8*%agl to i8**
%agn=load i8*,i8**%agm,align 8
store i8*%agn,i8**%w,align 8
%ago=getelementptr inbounds i8,i8*%ae3,i64 8
%agp=bitcast i8*%ago to i8**
%agq=load i8*,i8**%agp,align 8
%agr=icmp eq i8*%agq,null
br i1%agr,label%ags,label%agM
ags:
%agt=call i8*@sml_alloc(i32 inreg 12)#0
%agu=getelementptr inbounds i8,i8*%agt,i64 -4
%agv=bitcast i8*%agu to i32*
store i32 1342177288,i32*%agv,align 4
store i8*%agt,i8**%A,align 8
%agw=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%agx=bitcast i8*%agt to i8**
store i8*%agw,i8**%agx,align 8
%agy=getelementptr inbounds i8,i8*%agt,i64 8
%agz=bitcast i8*%agy to i32*
store i32 1,i32*%agz,align 4
%agA=call i8*@sml_alloc(i32 inreg 36)#0
%agB=getelementptr inbounds i8,i8*%agA,i64 -4
%agC=bitcast i8*%agB to i32*
store i32 1342177312,i32*%agC,align 4
%agD=load i8*,i8**%u,align 8
%agE=bitcast i8*%agA to i8**
store i8*%agD,i8**%agE,align 8
%agF=load i8*,i8**%A,align 8
store i8*null,i8**%A,align 8
%agG=getelementptr inbounds i8,i8*%agA,i64 8
%agH=bitcast i8*%agG to i8**
store i8*%agF,i8**%agH,align 8
%agI=load i8*,i8**%w,align 8
%agJ=getelementptr inbounds i8,i8*%agA,i64 16
%agK=bitcast i8*%agJ to i8**
store i8*%agI,i8**%agK,align 8
%agL=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
br label%ahH
agM:
%agN=bitcast i8*%agq to i8**
%agO=load i8*,i8**%agN,align 8
%agP=getelementptr inbounds i8,i8*%agO,i64 8
%agQ=bitcast i8*%agP to i8**
%agR=load i8*,i8**%agQ,align 8
%agS=icmp eq i8*%agR,null
br i1%agS,label%agT,label%ahm
agT:
%agU=getelementptr inbounds i8,i8*%agO,i64 16
%agV=bitcast i8*%agU to i8**
%agW=load i8*,i8**%agV,align 8
store i8*%agW,i8**%x,align 8
%agX=getelementptr inbounds i8,i8*%agq,i64 8
%agY=bitcast i8*%agX to i8**
%agZ=load i8*,i8**%agY,align 8
%ag0=icmp eq i8*%agZ,null
br i1%ag0,label%ag1,label%ahl
ag1:
%ag2=call i8*@sml_alloc(i32 inreg 12)#0
%ag3=getelementptr inbounds i8,i8*%ag2,i64 -4
%ag4=bitcast i8*%ag3 to i32*
store i32 1342177288,i32*%ag4,align 4
store i8*%ag2,i8**%A,align 8
%ag5=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%ag6=bitcast i8*%ag2 to i8**
store i8*%ag5,i8**%ag6,align 8
%ag7=getelementptr inbounds i8,i8*%ag2,i64 8
%ag8=bitcast i8*%ag7 to i32*
store i32 1,i32*%ag8,align 4
%ag9=call i8*@sml_alloc(i32 inreg 36)#0
%aha=getelementptr inbounds i8,i8*%ag9,i64 -4
%ahb=bitcast i8*%aha to i32*
store i32 1342177312,i32*%ahb,align 4
%ahc=load i8*,i8**%u,align 8
%ahd=bitcast i8*%ag9 to i8**
store i8*%ahc,i8**%ahd,align 8
%ahe=load i8*,i8**%A,align 8
store i8*null,i8**%A,align 8
%ahf=getelementptr inbounds i8,i8*%ag9,i64 8
%ahg=bitcast i8*%ahf to i8**
store i8*%ahe,i8**%ahg,align 8
%ahh=load i8*,i8**%w,align 8
%ahi=getelementptr inbounds i8,i8*%ag9,i64 16
%ahj=bitcast i8*%ahi to i8**
store i8*%ahh,i8**%ahj,align 8
%ahk=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
br label%ahH
ahl:
store i8*null,i8**%y,align 8
store i8*null,i8**%z,align 8
store i8*null,i8**%v,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%x,align 8
store i8*null,i8**%B,align 8
br label%ahn
ahm:
store i8*null,i8**%y,align 8
store i8*null,i8**%z,align 8
store i8*null,i8**%v,align 8
store i8*null,i8**%w,align 8
store i8*null,i8**%B,align 8
br label%ahn
ahn:
%aho=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%aho,i8**%u,align 8
%ahp=call i8*@sml_alloc(i32 inreg 28)#0
%ahq=getelementptr inbounds i8,i8*%ahp,i64 -4
%ahr=bitcast i8*%ahq to i32*
store i32 1342177304,i32*%ahr,align 4
store i8*%ahp,i8**%v,align 8
%ahs=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%aht=bitcast i8*%ahp to i8**
store i8*%ahs,i8**%aht,align 8
%ahu=getelementptr inbounds i8,i8*%ahp,i64 8
%ahv=bitcast i8*%ahu to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@y,i64 0,i32 2,i64 0),i8**%ahv,align 8
%ahw=getelementptr inbounds i8,i8*%ahp,i64 16
%ahx=bitcast i8*%ahw to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[16x i8]}>,<{[4x i8],i32,[16x i8]}>*@z,i64 0,i32 2,i64 0),i8**%ahx,align 8
%ahy=getelementptr inbounds i8,i8*%ahp,i64 24
%ahz=bitcast i8*%ahy to i32*
store i32 7,i32*%ahz,align 4
%ahA=call i8*@sml_alloc(i32 inreg 60)#0
%ahB=getelementptr inbounds i8,i8*%ahA,i64 -4
%ahC=bitcast i8*%ahB to i32*
store i32 1342177336,i32*%ahC,align 4
%ahD=getelementptr inbounds i8,i8*%ahA,i64 56
%ahE=bitcast i8*%ahD to i32*
store i32 1,i32*%ahE,align 4
%ahF=load i8*,i8**%v,align 8
%ahG=bitcast i8*%ahA to i8**
store i8*%ahF,i8**%ahG,align 8
call void@sml_raise(i8*inreg%ahA)#1
unreachable
ahH:
%ahI=phi i8*[%ag9,%ag1],[%agA,%ags],[%af4,%afW],[%afp,%afo]
%ahJ=phi i8*[%ahk,%ag1],[%agL,%ags],[%agf,%afW],[%afz,%afo]
%ahK=phi i8*[%ahh,%ag1],[%agI,%ags],[%agc,%afW],[%afw,%afo]
%ahL=phi i8*[%ahe,%ag1],[%agF,%ags],[%af9,%afW],[null,%afo]
%ahM=getelementptr inbounds i8,i8*%ahI,i64 24
%ahN=bitcast i8*%ahM to i8**
store i8*%ahJ,i8**%ahN,align 8
%ahO=getelementptr inbounds i8,i8*%ahI,i64 32
%ahP=bitcast i8*%ahO to i32*
store i32 15,i32*%ahP,align 4
store i8*%ahL,i8**%u,align 8
store i8*%ahK,i8**%v,align 8
store i8*%ahJ,i8**%w,align 8
%ahQ=call fastcc i32@_SMLFN15EmitTypedLambda5newIdE(i32 inreg 0)
%ahR=call i8*@sml_alloc(i32 inreg 12)#0
%ahS=bitcast i8*%ahR to i32*
%ahT=getelementptr inbounds i8,i8*%ahR,i64 -4
%ahU=bitcast i8*%ahT to i32*
store i32 1342177288,i32*%ahU,align 4
store i8*%ahR,i8**%C,align 8
store i32 33,i32*%ahS,align 4
%ahV=getelementptr inbounds i8,i8*%ahR,i64 4
%ahW=bitcast i8*%ahV to i32*
store i32%ahQ,i32*%ahW,align 4
%ahX=getelementptr inbounds i8,i8*%ahR,i64 8
%ahY=bitcast i8*%ahX to i32*
store i32 0,i32*%ahY,align 4
%ahZ=load i8*,i8**@_SMLZN12BuiltinTypes7boxedTyE,align 8
store i8*%ahZ,i8**%x,align 8
%ah0=call i8*@sml_alloc(i32 inreg 20)#0
%ah1=getelementptr inbounds i8,i8*%ah0,i64 -4
%ah2=bitcast i8*%ah1 to i32*
store i32 1342177296,i32*%ah2,align 4
store i8*%ah0,i8**%A,align 8
%ah3=load i8*,i8**%C,align 8
store i8*null,i8**%C,align 8
%ah4=bitcast i8*%ah0 to i8**
store i8*%ah3,i8**%ah4,align 8
%ah5=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%ah6=getelementptr inbounds i8,i8*%ah0,i64 8
%ah7=bitcast i8*%ah6 to i8**
store i8*%ah5,i8**%ah7,align 8
%ah8=getelementptr inbounds i8,i8*%ah0,i64 16
%ah9=bitcast i8*%ah8 to i32*
store i32 3,i32*%ah9,align 4
%aia=call i8*@sml_alloc(i32 inreg 20)#0
%aib=bitcast i8*%aia to i32*
%aic=getelementptr inbounds i8,i8*%aia,i64 -4
%aid=bitcast i8*%aic to i32*
store i32 1342177296,i32*%aid,align 4
%aie=getelementptr inbounds i8,i8*%aia,i64 4
%aif=bitcast i8*%aie to i32*
store i32 0,i32*%aif,align 1
store i32 3,i32*%aib,align 4
%aig=load i8*,i8**%A,align 8
store i8*null,i8**%A,align 8
%aih=getelementptr inbounds i8,i8*%aia,i64 8
%aii=bitcast i8*%aih to i8**
store i8*%aig,i8**%aii,align 8
%aij=getelementptr inbounds i8,i8*%aia,i64 16
%aik=bitcast i8*%aij to i32*
store i32 2,i32*%aik,align 4
%ail=call fastcc i8*@_SMLFN15EmitTypedLambda6IsNullE(i8*inreg%aia)
store i8*%ail,i8**%x,align 8
%aim=call i8*@sml_alloc(i32 inreg 20)#0
%ain=getelementptr inbounds i8,i8*%aim,i64 -4
%aio=bitcast i8*%ain to i32*
store i32 1342177296,i32*%aio,align 4
store i8*%aim,i8**%A,align 8
%aip=load i8*,i8**%B,align 8
%aiq=bitcast i8*%aim to i8**
store i8*%aip,i8**%aiq,align 8
%air=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
%ais=getelementptr inbounds i8,i8*%aim,i64 8
%ait=bitcast i8*%ais to i8**
store i8*%air,i8**%ait,align 8
%aiu=getelementptr inbounds i8,i8*%aim,i64 16
%aiv=bitcast i8*%aiu to i32*
store i32 3,i32*%aiv,align 4
%aiw=call i8*@sml_alloc(i32 inreg 28)#0
%aix=getelementptr inbounds i8,i8*%aiw,i64 -4
%aiy=bitcast i8*%aix to i32*
store i32 1342177304,i32*%aiy,align 4
%aiz=load i8*,i8**%A,align 8
store i8*null,i8**%A,align 8
%aiA=bitcast i8*%aiw to i8**
store i8*%aiz,i8**%aiA,align 8
%aiB=getelementptr inbounds i8,i8*%aiw,i64 8
%aiC=bitcast i8*%aiB to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchConE_291 to void(...)*),void(...)**%aiC,align 8
%aiD=getelementptr inbounds i8,i8*%aiw,i64 16
%aiE=bitcast i8*%aiD to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchConE_291 to void(...)*),void(...)**%aiE,align 8
%aiF=getelementptr inbounds i8,i8*%aiw,i64 24
%aiG=bitcast i8*%aiF to i32*
store i32 -2147483647,i32*%aiG,align 4
%aiH=call fastcc i8*@_SMLLN19DatatypeCompilation10makeBranchE_286(i8*inreg%aiw)
%aiI=getelementptr inbounds i8,i8*%aiH,i64 16
%aiJ=bitcast i8*%aiI to i8*(i8*,i8*)**
%aiK=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aiJ,align 8
%aiL=bitcast i8*%aiH to i8**
%aiM=load i8*,i8**%aiL,align 8
store i8*%aiM,i8**%z,align 8
%aiN=call i8*@sml_alloc(i32 inreg 28)#0
%aiO=getelementptr inbounds i8,i8*%aiN,i64 -4
%aiP=bitcast i8*%aiO to i32*
store i32 1342177304,i32*%aiP,align 4
%aiQ=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%aiR=bitcast i8*%aiN to i8**
store i8*%aiQ,i8**%aiR,align 8
%aiS=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%aiT=getelementptr inbounds i8,i8*%aiN,i64 8
%aiU=bitcast i8*%aiT to i8**
store i8*%aiS,i8**%aiU,align 8
%aiV=load i8*,i8**%y,align 8
%aiW=getelementptr inbounds i8,i8*%aiN,i64 16
%aiX=bitcast i8*%aiW to i8**
store i8*%aiV,i8**%aiX,align 8
%aiY=getelementptr inbounds i8,i8*%aiN,i64 24
%aiZ=bitcast i8*%aiY to i32*
store i32 7,i32*%aiZ,align 4
%ai0=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
%ai1=call fastcc i8*%aiK(i8*inreg%ai0,i8*inreg%aiN)
store i8*%ai1,i8**%u,align 8
%ai2=call i8*@sml_alloc(i32 inreg 20)#0
%ai3=getelementptr inbounds i8,i8*%ai2,i64 -4
%ai4=bitcast i8*%ai3 to i32*
store i32 1342177296,i32*%ai4,align 4
store i8*%ai2,i8**%v,align 8
%ai5=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%ai6=bitcast i8*%ai2 to i8**
store i8*%ai5,i8**%ai6,align 8
%ai7=load i8*,i8**%y,align 8
store i8*null,i8**%y,align 8
%ai8=getelementptr inbounds i8,i8*%ai2,i64 8
%ai9=bitcast i8*%ai8 to i8**
store i8*%ai7,i8**%ai9,align 8
%aja=getelementptr inbounds i8,i8*%ai2,i64 16
%ajb=bitcast i8*%aja to i32*
store i32 3,i32*%ajb,align 4
%ajc=call i8*@sml_alloc(i32 inreg 20)#0
%ajd=getelementptr inbounds i8,i8*%ajc,i64 -4
%aje=bitcast i8*%ajd to i32*
store i32 1342177296,i32*%aje,align 4
store i8*%ajc,i8**%w,align 8
%ajf=getelementptr inbounds i8,i8*%ajc,i64 4
%ajg=bitcast i8*%ajf to i32*
store i32 0,i32*%ajg,align 1
%ajh=bitcast i8*%ajc to i32*
store i32 8,i32*%ajh,align 4
%aji=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%ajj=getelementptr inbounds i8,i8*%ajc,i64 8
%ajk=bitcast i8*%ajj to i8**
store i8*%aji,i8**%ajk,align 8
%ajl=getelementptr inbounds i8,i8*%ajc,i64 16
%ajm=bitcast i8*%ajl to i32*
store i32 2,i32*%ajm,align 4
%ajn=call i8*@sml_alloc(i32 inreg 28)#0
%ajo=getelementptr inbounds i8,i8*%ajn,i64 -4
%ajp=bitcast i8*%ajo to i32*
store i32 1342177304,i32*%ajp,align 4
store i8*%ajn,i8**%v,align 8
%ajq=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%ajr=bitcast i8*%ajn to i8**
store i8*%ajq,i8**%ajr,align 8
%ajs=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%ajt=getelementptr inbounds i8,i8*%ajn,i64 8
%aju=bitcast i8*%ajt to i8**
store i8*%ajs,i8**%aju,align 8
%ajv=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%ajw=getelementptr inbounds i8,i8*%ajn,i64 16
%ajx=bitcast i8*%ajw to i8**
store i8*%ajv,i8**%ajx,align 8
%ajy=getelementptr inbounds i8,i8*%ajn,i64 24
%ajz=bitcast i8*%ajy to i32*
store i32 7,i32*%ajz,align 4
%ajA=call i8*@sml_alloc(i32 inreg 20)#0
%ajB=getelementptr inbounds i8,i8*%ajA,i64 -4
%ajC=bitcast i8*%ajB to i32*
store i32 1342177296,i32*%ajC,align 4
store i8*%ajA,i8**%w,align 8
%ajD=getelementptr inbounds i8,i8*%ajA,i64 4
%ajE=bitcast i8*%ajD to i32*
store i32 0,i32*%ajE,align 1
%ajF=bitcast i8*%ajA to i32*
store i32 11,i32*%ajF,align 4
%ajG=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%ajH=getelementptr inbounds i8,i8*%ajA,i64 8
%ajI=bitcast i8*%ajH to i8**
store i8*%ajG,i8**%ajI,align 8
%ajJ=getelementptr inbounds i8,i8*%ajA,i64 16
%ajK=bitcast i8*%ajJ to i32*
store i32 2,i32*%ajK,align 4
%ajL=call i8*@sml_alloc(i32 inreg 20)#0
%ajM=getelementptr inbounds i8,i8*%ajL,i64 -4
%ajN=bitcast i8*%ajM to i32*
store i32 1342177296,i32*%ajN,align 4
store i8*%ajL,i8**%u,align 8
%ajO=getelementptr inbounds i8,i8*%ajL,i64 4
%ajP=bitcast i8*%ajO to i32*
store i32 0,i32*%ajP,align 1
%ajQ=bitcast i8*%ajL to i32*
store i32%ahQ,i32*%ajQ,align 4
%ajR=load i8*,i8**%B,align 8
store i8*null,i8**%B,align 8
%ajS=getelementptr inbounds i8,i8*%ajL,i64 8
%ajT=bitcast i8*%ajS to i8**
store i8*%ajR,i8**%ajT,align 8
%ajU=getelementptr inbounds i8,i8*%ajL,i64 16
%ajV=bitcast i8*%ajU to i32*
store i32 2,i32*%ajV,align 4
%ajW=call i8*@sml_alloc(i32 inreg 20)#0
%ajX=getelementptr inbounds i8,i8*%ajW,i64 -4
%ajY=bitcast i8*%ajX to i32*
store i32 1342177296,i32*%ajY,align 4
store i8*%ajW,i8**%v,align 8
%ajZ=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%aj0=bitcast i8*%ajW to i8**
store i8*%ajZ,i8**%aj0,align 8
%aj1=getelementptr inbounds i8,i8*%ajW,i64 8
%aj2=bitcast i8*%aj1 to i8**
store i8*null,i8**%aj2,align 8
%aj3=getelementptr inbounds i8,i8*%ajW,i64 16
%aj4=bitcast i8*%aj3 to i32*
store i32 3,i32*%aj4,align 4
%aj5=call i8*@sml_alloc(i32 inreg 20)#0
%aj6=getelementptr inbounds i8,i8*%aj5,i64 -4
%aj7=bitcast i8*%aj6 to i32*
store i32 1342177296,i32*%aj7,align 4
store i8*%aj5,i8**%u,align 8
%aj8=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%aj9=bitcast i8*%aj5 to i8**
store i8*%aj8,i8**%aj9,align 8
%aka=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%akb=getelementptr inbounds i8,i8*%aj5,i64 8
%akc=bitcast i8*%akb to i8**
store i8*%aka,i8**%akc,align 8
%akd=getelementptr inbounds i8,i8*%aj5,i64 16
%ake=bitcast i8*%akd to i32*
store i32 3,i32*%ake,align 4
%akf=call i8*@sml_alloc(i32 inreg 20)#0
%akg=bitcast i8*%akf to i32*
%akh=getelementptr inbounds i8,i8*%akf,i64 -4
%aki=bitcast i8*%akh to i32*
store i32 1342177296,i32*%aki,align 4
%akj=getelementptr inbounds i8,i8*%akf,i64 4
%akk=bitcast i8*%akj to i32*
store i32 0,i32*%akk,align 1
store i32 18,i32*%akg,align 4
%akl=load i8*,i8**%u,align 8
%akm=getelementptr inbounds i8,i8*%akf,i64 8
%akn=bitcast i8*%akm to i8**
store i8*%akl,i8**%akn,align 8
%ako=getelementptr inbounds i8,i8*%akf,i64 16
%akp=bitcast i8*%ako to i32*
store i32 2,i32*%akp,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VD)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VE)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VF)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VG)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VH)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VI)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VL)
br label%arA
akq:
%akr=getelementptr inbounds i8,i8*%Wt,i64 8
%aks=bitcast i8*%akr to i8**
%akt=load i8*,i8**%aks,align 8
store i8*%akt,i8**%w,align 8
%aku=call fastcc i32@_SMLFN15EmitTypedLambda5newIdE(i32 inreg 0)
%akv=call i8*@sml_alloc(i32 inreg 12)#0
%akw=bitcast i8*%akv to i32*
%akx=getelementptr inbounds i8,i8*%akv,i64 -4
%aky=bitcast i8*%akx to i32*
store i32 1342177288,i32*%aky,align 4
store i8*%akv,i8**%A,align 8
store i32 33,i32*%akw,align 4
%akz=getelementptr inbounds i8,i8*%akv,i64 4
%akA=bitcast i8*%akz to i32*
store i32%aku,i32*%akA,align 4
%akB=getelementptr inbounds i8,i8*%akv,i64 8
%akC=bitcast i8*%akB to i32*
store i32 0,i32*%akC,align 4
%akD=call i8*@sml_alloc(i32 inreg 20)#0
%akE=getelementptr inbounds i8,i8*%akD,i64 -4
%akF=bitcast i8*%akE to i32*
store i32 1342177296,i32*%akF,align 4
%akG=load i8*,i8**%w,align 8
%akH=bitcast i8*%akD to i8**
store i8*%akG,i8**%akH,align 8
%akI=load i8*,i8**%A,align 8
%akJ=getelementptr inbounds i8,i8*%akD,i64 8
%akK=bitcast i8*%akJ to i8**
store i8*%akI,i8**%akK,align 8
%akL=getelementptr inbounds i8,i8*%akD,i64 16
%akM=bitcast i8*%akL to i32*
store i32 3,i32*%akM,align 4
%akN=bitcast i8**%p to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%akN)
%akO=bitcast i8**%q to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%akO)
%akP=bitcast i8**%r to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%akP)
%akQ=bitcast i8**%s to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%akQ)
%akR=bitcast i8**%t to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%akR)
call void@llvm.gcroot(i8**%p,i8*null)#0
call void@llvm.gcroot(i8**%q,i8*null)#0
call void@llvm.gcroot(i8**%r,i8*null)#0
call void@llvm.gcroot(i8**%s,i8*null)#0
call void@llvm.gcroot(i8**%t,i8*null)#0
store i8*%akD,i8**%p,align 8
%akS=load atomic i32,i32*@sml_check_flag unordered,align 4
%akT=icmp eq i32%akS,0
br i1%akT,label%ak1,label%akU
akU:
call void@sml_check(i32 inreg%akS)
%akV=load i8*,i8**%p,align 8
%akW=bitcast i8*%akV to i8**
%akX=load i8*,i8**%akW,align 8
%akY=getelementptr inbounds i8,i8*%akV,i64 8
%akZ=bitcast i8*%akY to i8**
%ak0=load i8*,i8**%akZ,align 8
br label%ak1
ak1:
%ak2=phi i8*[%ak0,%akU],[%akI,%akq]
%ak3=phi i8*[%akX,%akU],[%akG,%akq]
store i8*%ak3,i8**%r,align 8
store i8*%ak2,i8**%s,align 8
%ak4=bitcast i8*%ak3 to i32*
%ak5=load i32,i32*%ak4,align 4
switch i32%ak5,label%ak6[
i32 1,label%aoL
i32 0,label%alL
i32 2,label%alo
]
ak6:
store i8*null,i8**%r,align 8
store i8*null,i8**%s,align 8
call void@sml_matchcomp_bug()
%ak7=load i8*,i8**@_SMLZ5Match,align 8
store i8*%ak7,i8**%p,align 8
%ak8=call i8*@sml_alloc(i32 inreg 20)#0
%ak9=getelementptr inbounds i8,i8*%ak8,i64 -4
%ala=bitcast i8*%ak9 to i32*
store i32 1342177296,i32*%ala,align 4
store i8*%ak8,i8**%q,align 8
%alb=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%alc=bitcast i8*%ak8 to i8**
store i8*%alb,i8**%alc,align 8
%ald=getelementptr inbounds i8,i8*%ak8,i64 8
%ale=bitcast i8*%ald to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[87x i8]}>,<{[4x i8],i32,[87x i8]}>*@h,i64 0,i32 2,i64 0),i8**%ale,align 8
%alf=getelementptr inbounds i8,i8*%ak8,i64 16
%alg=bitcast i8*%alf to i32*
store i32 3,i32*%alg,align 4
%alh=call i8*@sml_alloc(i32 inreg 60)#0
%ali=getelementptr inbounds i8,i8*%alh,i64 -4
%alj=bitcast i8*%ali to i32*
store i32 1342177336,i32*%alj,align 4
%alk=getelementptr inbounds i8,i8*%alh,i64 56
%all=bitcast i8*%alk to i32*
store i32 1,i32*%all,align 4
%alm=load i8*,i8**%q,align 8
%aln=bitcast i8*%alh to i8**
store i8*%alm,i8**%aln,align 8
call void@sml_raise(i8*inreg%alh)#1
unreachable
alo:
store i8*null,i8**%r,align 8
%alp=load i8*,i8**@_SMLZN12BuiltinTypes8contagTyE,align 8
store i8*%alp,i8**%p,align 8
%alq=call i8*@sml_alloc(i32 inreg 20)#0
%alr=getelementptr inbounds i8,i8*%alq,i64 -4
%als=bitcast i8*%alr to i32*
store i32 1342177296,i32*%als,align 4
store i8*%alq,i8**%q,align 8
%alt=load i8*,i8**%s,align 8
store i8*null,i8**%s,align 8
%alu=bitcast i8*%alq to i8**
store i8*%alt,i8**%alu,align 8
%alv=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%alw=getelementptr inbounds i8,i8*%alq,i64 8
%alx=bitcast i8*%alw to i8**
store i8*%alv,i8**%alx,align 8
%aly=getelementptr inbounds i8,i8*%alq,i64 16
%alz=bitcast i8*%aly to i32*
store i32 3,i32*%alz,align 4
%alA=call i8*@sml_alloc(i32 inreg 20)#0
%alB=bitcast i8*%alA to i32*
%alC=getelementptr inbounds i8,i8*%alA,i64 -4
%alD=bitcast i8*%alC to i32*
store i32 1342177296,i32*%alD,align 4
%alE=getelementptr inbounds i8,i8*%alA,i64 4
%alF=bitcast i8*%alE to i32*
store i32 0,i32*%alF,align 1
store i32 3,i32*%alB,align 4
%alG=load i8*,i8**%q,align 8
%alH=getelementptr inbounds i8,i8*%alA,i64 8
%alI=bitcast i8*%alH to i8**
store i8*%alG,i8**%alI,align 8
%alJ=getelementptr inbounds i8,i8*%alA,i64 16
%alK=bitcast i8*%alJ to i32*
store i32 2,i32*%alK,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akR)
br label%apu
alL:
%alM=getelementptr inbounds i8,i8*%ak3,i64 8
%alN=bitcast i8*%alM to i8**
%alO=load i8*,i8**%alN,align 8
store i8*%alO,i8**%p,align 8
%alP=call fastcc i32@_SMLFN15EmitTypedLambda5newIdE(i32 inreg 0)
%alQ=bitcast i8**%p to i8***
%alR=load i8**,i8***%alQ,align 8
store i8*null,i8**%p,align 8
%alS=load i8*,i8**%alR,align 8
%alT=call fastcc i8*@_SMLFN6Symbol8mkSymbolE(i8*inreg%alS)
%alU=getelementptr inbounds i8,i8*%alT,i64 16
%alV=bitcast i8*%alU to i8*(i8*,i8*)**
%alW=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%alV,align 8
%alX=bitcast i8*%alT to i8**
%alY=load i8*,i8**%alX,align 8
%alZ=load i8*,i8**@_SMLZN3Loc5nolocE,align 8
%al0=call fastcc i8*%alW(i8*inreg%alY,i8*inreg%alZ)
store i8*%al0,i8**%p,align 8
%al1=call i8*@sml_alloc(i32 inreg 20)#0
%al2=getelementptr inbounds i8,i8*%al1,i64 -4
%al3=bitcast i8*%al2 to i32*
store i32 1342177296,i32*%al3,align 4
%al4=load i8*,i8**%p,align 8
%al5=bitcast i8*%al1 to i8**
store i8*%al4,i8**%al5,align 8
%al6=getelementptr inbounds i8,i8*%al1,i64 8
%al7=bitcast i8*%al6 to i8**
store i8*null,i8**%al7,align 8
%al8=getelementptr inbounds i8,i8*%al1,i64 16
%al9=bitcast i8*%al8 to i32*
store i32 3,i32*%al9,align 4
store i8*null,i8**%q,align 8
%ama=call i8*@sml_alloc(i32 inreg 20)#0
%amb=getelementptr inbounds i8,i8*%ama,i64 -4
%amc=bitcast i8*%amb to i32*
store i32 1342177296,i32*%amc,align 4
store i8*%ama,i8**%t,align 8
%amd=load i8*,i8**%p,align 8
%ame=bitcast i8*%ama to i8**
store i8*%amd,i8**%ame,align 8
%amf=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%amg=getelementptr inbounds i8,i8*%ama,i64 8
%amh=bitcast i8*%amg to i8**
store i8*%amf,i8**%amh,align 8
%ami=getelementptr inbounds i8,i8*%ama,i64 16
%amj=bitcast i8*%ami to i32*
store i32 3,i32*%amj,align 4
%amk=load i8*,i8**@_SMLZN12BuiltinTypes7boxedTyE,align 8
store i8*%amk,i8**%p,align 8
%aml=call i8*@sml_alloc(i32 inreg 20)#0
%amm=getelementptr inbounds i8,i8*%aml,i64 -4
%amn=bitcast i8*%amm to i32*
store i32 1342177296,i32*%amn,align 4
store i8*%aml,i8**%q,align 8
%amo=load i8*,i8**%s,align 8
%amp=bitcast i8*%aml to i8**
store i8*%amo,i8**%amp,align 8
%amq=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%amr=getelementptr inbounds i8,i8*%aml,i64 8
%ams=bitcast i8*%amr to i8**
store i8*%amq,i8**%ams,align 8
%amt=getelementptr inbounds i8,i8*%aml,i64 16
%amu=bitcast i8*%amt to i32*
store i32 3,i32*%amu,align 4
%amv=call i8*@sml_alloc(i32 inreg 20)#0
%amw=bitcast i8*%amv to i32*
%amx=getelementptr inbounds i8,i8*%amv,i64 -4
%amy=bitcast i8*%amx to i32*
store i32 1342177296,i32*%amy,align 4
%amz=getelementptr inbounds i8,i8*%amv,i64 4
%amA=bitcast i8*%amz to i32*
store i32 0,i32*%amA,align 1
store i32 3,i32*%amw,align 4
%amB=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%amC=getelementptr inbounds i8,i8*%amv,i64 8
%amD=bitcast i8*%amC to i8**
store i8*%amB,i8**%amD,align 8
%amE=getelementptr inbounds i8,i8*%amv,i64 16
%amF=bitcast i8*%amE to i32*
store i32 2,i32*%amF,align 4
%amG=call fastcc i8*@_SMLFN15EmitTypedLambda6IsNullE(i8*inreg%amv)
store i8*%amG,i8**%q,align 8
%amH=call i8*@sml_alloc(i32 inreg 20)#0
%amI=getelementptr inbounds i8,i8*%amH,i64 -4
%amJ=bitcast i8*%amI to i32*
store i32 1342177296,i32*%amJ,align 4
%amK=load i8*,i8**%r,align 8
store i8*null,i8**%r,align 8
%amL=bitcast i8*%amH to i8**
store i8*%amK,i8**%amL,align 8
%amM=load i8*,i8**%t,align 8
store i8*null,i8**%t,align 8
%amN=getelementptr inbounds i8,i8*%amH,i64 8
%amO=bitcast i8*%amN to i8**
store i8*%amM,i8**%amO,align 8
%amP=getelementptr inbounds i8,i8*%amH,i64 16
%amQ=bitcast i8*%amP to i32*
store i32 3,i32*%amQ,align 4
%amR=call fastcc i32@_SMLLN19DatatypeCompilation12lookupConTagE_254(i8*inreg%amH)
%amS=call i8*@sml_alloc(i32 inreg 12)#0
%amT=bitcast i8*%amS to i32*
%amU=getelementptr inbounds i8,i8*%amS,i64 -4
%amV=bitcast i8*%amU to i32*
store i32 1342177288,i32*%amV,align 4
store i8*%amS,i8**%t,align 8
store i32 5,i32*%amT,align 4
%amW=getelementptr inbounds i8,i8*%amS,i64 4
%amX=bitcast i8*%amW to i32*
store i32%amR,i32*%amX,align 4
%amY=getelementptr inbounds i8,i8*%amS,i64 8
%amZ=bitcast i8*%amY to i32*
store i32 0,i32*%amZ,align 4
%am0=load i8*,i8**@_SMLZN12BuiltinTypes8contagTyE,align 8
store i8*%am0,i8**%p,align 8
%am1=call i8*@sml_alloc(i32 inreg 20)#0
%am2=getelementptr inbounds i8,i8*%am1,i64 -4
%am3=bitcast i8*%am2 to i32*
store i32 1342177296,i32*%am3,align 4
%am4=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%am5=bitcast i8*%am1 to i8**
store i8*%am4,i8**%am5,align 8
%am6=getelementptr inbounds i8,i8*%am1,i64 8
%am7=bitcast i8*%am6 to i8**
store i8*null,i8**%am7,align 8
%am8=getelementptr inbounds i8,i8*%am1,i64 16
%am9=bitcast i8*%am8 to i32*
store i32 3,i32*%am9,align 4
%ana=call fastcc i8*@_SMLFN15EmitTypedLambda7tupleTyE(i8*inreg%am1)
store i8*%ana,i8**%p,align 8
%anb=call i8*@sml_alloc(i32 inreg 20)#0
%anc=getelementptr inbounds i8,i8*%anb,i64 -4
%and=bitcast i8*%anc to i32*
store i32 1342177296,i32*%and,align 4
store i8*%anb,i8**%r,align 8
%ane=load i8*,i8**%s,align 8
%anf=bitcast i8*%anb to i8**
store i8*%ane,i8**%anf,align 8
%ang=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%anh=getelementptr inbounds i8,i8*%anb,i64 8
%ani=bitcast i8*%anh to i8**
store i8*%ang,i8**%ani,align 8
%anj=getelementptr inbounds i8,i8*%anb,i64 16
%ank=bitcast i8*%anj to i32*
store i32 3,i32*%ank,align 4
%anl=call i8*@sml_alloc(i32 inreg 20)#0
%anm=getelementptr inbounds i8,i8*%anl,i64 -4
%ann=bitcast i8*%anm to i32*
store i32 1342177296,i32*%ann,align 4
store i8*%anl,i8**%p,align 8
%ano=getelementptr inbounds i8,i8*%anl,i64 4
%anp=bitcast i8*%ano to i32*
store i32 0,i32*%anp,align 1
%anq=bitcast i8*%anl to i32*
store i32 3,i32*%anq,align 4
%anr=load i8*,i8**%r,align 8
store i8*null,i8**%r,align 8
%ans=getelementptr inbounds i8,i8*%anl,i64 8
%ant=bitcast i8*%ans to i8**
store i8*%anr,i8**%ant,align 8
%anu=getelementptr inbounds i8,i8*%anl,i64 16
%anv=bitcast i8*%anu to i32*
store i32 2,i32*%anv,align 4
%anw=call i8*@sml_alloc(i32 inreg 20)#0
%anx=bitcast i8*%anw to i32*
%any=getelementptr inbounds i8,i8*%anw,i64 -4
%anz=bitcast i8*%any to i32*
store i32 1342177296,i32*%anz,align 4
%anA=getelementptr inbounds i8,i8*%anw,i64 4
%anB=bitcast i8*%anA to i32*
store i32 0,i32*%anB,align 1
store i32 1,i32*%anx,align 4
%anC=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%anD=getelementptr inbounds i8,i8*%anw,i64 8
%anE=bitcast i8*%anD to i8**
store i8*%anC,i8**%anE,align 8
%anF=getelementptr inbounds i8,i8*%anw,i64 16
%anG=bitcast i8*%anF to i32*
store i32 2,i32*%anG,align 4
%anH=call fastcc i8*@_SMLFN15EmitTypedLambda7SelectNE(i8*inreg%anw)
store i8*%anH,i8**%p,align 8
%anI=call i8*@sml_alloc(i32 inreg 28)#0
%anJ=getelementptr inbounds i8,i8*%anI,i64 -4
%anK=bitcast i8*%anJ to i32*
store i32 1342177304,i32*%anK,align 4
store i8*%anI,i8**%r,align 8
%anL=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%anM=bitcast i8*%anI to i8**
store i8*%anL,i8**%anM,align 8
%anN=load i8*,i8**%t,align 8
store i8*null,i8**%t,align 8
%anO=getelementptr inbounds i8,i8*%anI,i64 8
%anP=bitcast i8*%anO to i8**
store i8*%anN,i8**%anP,align 8
%anQ=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%anR=getelementptr inbounds i8,i8*%anI,i64 16
%anS=bitcast i8*%anR to i8**
store i8*%anQ,i8**%anS,align 8
%anT=getelementptr inbounds i8,i8*%anI,i64 24
%anU=bitcast i8*%anT to i32*
store i32 7,i32*%anU,align 4
%anV=call i8*@sml_alloc(i32 inreg 20)#0
%anW=getelementptr inbounds i8,i8*%anV,i64 -4
%anX=bitcast i8*%anW to i32*
store i32 1342177296,i32*%anX,align 4
store i8*%anV,i8**%q,align 8
%anY=getelementptr inbounds i8,i8*%anV,i64 4
%anZ=bitcast i8*%anY to i32*
store i32 0,i32*%anZ,align 1
%an0=bitcast i8*%anV to i32*
store i32 11,i32*%an0,align 4
%an1=load i8*,i8**%r,align 8
store i8*null,i8**%r,align 8
%an2=getelementptr inbounds i8,i8*%anV,i64 8
%an3=bitcast i8*%an2 to i8**
store i8*%an1,i8**%an3,align 8
%an4=getelementptr inbounds i8,i8*%anV,i64 16
%an5=bitcast i8*%an4 to i32*
store i32 2,i32*%an5,align 4
%an6=call i8*@sml_alloc(i32 inreg 20)#0
%an7=getelementptr inbounds i8,i8*%an6,i64 -4
%an8=bitcast i8*%an7 to i32*
store i32 1342177296,i32*%an8,align 4
store i8*%an6,i8**%p,align 8
%an9=getelementptr inbounds i8,i8*%an6,i64 4
%aoa=bitcast i8*%an9 to i32*
store i32 0,i32*%aoa,align 1
%aob=bitcast i8*%an6 to i32*
store i32%alP,i32*%aob,align 4
%aoc=load i8*,i8**%s,align 8
store i8*null,i8**%s,align 8
%aod=getelementptr inbounds i8,i8*%an6,i64 8
%aoe=bitcast i8*%aod to i8**
store i8*%aoc,i8**%aoe,align 8
%aof=getelementptr inbounds i8,i8*%an6,i64 16
%aog=bitcast i8*%aof to i32*
store i32 2,i32*%aog,align 4
%aoh=call i8*@sml_alloc(i32 inreg 20)#0
%aoi=getelementptr inbounds i8,i8*%aoh,i64 -4
%aoj=bitcast i8*%aoi to i32*
store i32 1342177296,i32*%aoj,align 4
store i8*%aoh,i8**%r,align 8
%aok=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%aol=bitcast i8*%aoh to i8**
store i8*%aok,i8**%aol,align 8
%aom=getelementptr inbounds i8,i8*%aoh,i64 8
%aon=bitcast i8*%aom to i8**
store i8*null,i8**%aon,align 8
%aoo=getelementptr inbounds i8,i8*%aoh,i64 16
%aop=bitcast i8*%aoo to i32*
store i32 3,i32*%aop,align 4
%aoq=call i8*@sml_alloc(i32 inreg 20)#0
%aor=getelementptr inbounds i8,i8*%aoq,i64 -4
%aos=bitcast i8*%aor to i32*
store i32 1342177296,i32*%aos,align 4
store i8*%aoq,i8**%p,align 8
%aot=load i8*,i8**%r,align 8
store i8*null,i8**%r,align 8
%aou=bitcast i8*%aoq to i8**
store i8*%aot,i8**%aou,align 8
%aov=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%aow=getelementptr inbounds i8,i8*%aoq,i64 8
%aox=bitcast i8*%aow to i8**
store i8*%aov,i8**%aox,align 8
%aoy=getelementptr inbounds i8,i8*%aoq,i64 16
%aoz=bitcast i8*%aoy to i32*
store i32 3,i32*%aoz,align 4
%aoA=call i8*@sml_alloc(i32 inreg 20)#0
%aoB=bitcast i8*%aoA to i32*
%aoC=getelementptr inbounds i8,i8*%aoA,i64 -4
%aoD=bitcast i8*%aoC to i32*
store i32 1342177296,i32*%aoD,align 4
%aoE=getelementptr inbounds i8,i8*%aoA,i64 4
%aoF=bitcast i8*%aoE to i32*
store i32 0,i32*%aoF,align 1
store i32 18,i32*%aoB,align 4
%aoG=load i8*,i8**%p,align 8
%aoH=getelementptr inbounds i8,i8*%aoA,i64 8
%aoI=bitcast i8*%aoH to i8**
store i8*%aoG,i8**%aoI,align 8
%aoJ=getelementptr inbounds i8,i8*%aoA,i64 16
%aoK=bitcast i8*%aoJ to i32*
store i32 2,i32*%aoK,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akR)
br label%apu
aoL:
store i8*null,i8**%r,align 8
%aoM=load i8*,i8**@_SMLZN12BuiltinTypes8contagTyE,align 8
store i8*%aoM,i8**%p,align 8
%aoN=call i8*@sml_alloc(i32 inreg 20)#0
%aoO=getelementptr inbounds i8,i8*%aoN,i64 -4
%aoP=bitcast i8*%aoO to i32*
store i32 1342177296,i32*%aoP,align 4
%aoQ=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%aoR=bitcast i8*%aoN to i8**
store i8*%aoQ,i8**%aoR,align 8
%aoS=getelementptr inbounds i8,i8*%aoN,i64 8
%aoT=bitcast i8*%aoS to i8**
store i8*null,i8**%aoT,align 8
%aoU=getelementptr inbounds i8,i8*%aoN,i64 16
%aoV=bitcast i8*%aoU to i32*
store i32 3,i32*%aoV,align 4
%aoW=call fastcc i8*@_SMLFN15EmitTypedLambda7tupleTyE(i8*inreg%aoN)
store i8*%aoW,i8**%p,align 8
%aoX=call i8*@sml_alloc(i32 inreg 20)#0
%aoY=getelementptr inbounds i8,i8*%aoX,i64 -4
%aoZ=bitcast i8*%aoY to i32*
store i32 1342177296,i32*%aoZ,align 4
store i8*%aoX,i8**%q,align 8
%ao0=load i8*,i8**%s,align 8
store i8*null,i8**%s,align 8
%ao1=bitcast i8*%aoX to i8**
store i8*%ao0,i8**%ao1,align 8
%ao2=load i8*,i8**%p,align 8
store i8*null,i8**%p,align 8
%ao3=getelementptr inbounds i8,i8*%aoX,i64 8
%ao4=bitcast i8*%ao3 to i8**
store i8*%ao2,i8**%ao4,align 8
%ao5=getelementptr inbounds i8,i8*%aoX,i64 16
%ao6=bitcast i8*%ao5 to i32*
store i32 3,i32*%ao6,align 4
%ao7=call i8*@sml_alloc(i32 inreg 20)#0
%ao8=getelementptr inbounds i8,i8*%ao7,i64 -4
%ao9=bitcast i8*%ao8 to i32*
store i32 1342177296,i32*%ao9,align 4
store i8*%ao7,i8**%p,align 8
%apa=getelementptr inbounds i8,i8*%ao7,i64 4
%apb=bitcast i8*%apa to i32*
store i32 0,i32*%apb,align 1
%apc=bitcast i8*%ao7 to i32*
store i32 3,i32*%apc,align 4
%apd=load i8*,i8**%q,align 8
store i8*null,i8**%q,align 8
%ape=getelementptr inbounds i8,i8*%ao7,i64 8
%apf=bitcast i8*%ape to i8**
store i8*%apd,i8**%apf,align 8
%apg=getelementptr inbounds i8,i8*%ao7,i64 16
%aph=bitcast i8*%apg to i32*
store i32 2,i32*%aph,align 4
%api=call i8*@sml_alloc(i32 inreg 20)#0
%apj=bitcast i8*%api to i32*
%apk=getelementptr inbounds i8,i8*%api,i64 -4
%apl=bitcast i8*%apk to i32*
store i32 1342177296,i32*%apl,align 4
%apm=getelementptr inbounds i8,i8*%api,i64 4
%apn=bitcast i8*%apm to i32*
store i32 0,i32*%apn,align 1
store i32 1,i32*%apj,align 4
%apo=load i8*,i8**%p,align 8
%app=getelementptr inbounds i8,i8*%api,i64 8
%apq=bitcast i8*%app to i8**
store i8*%apo,i8**%apq,align 8
%apr=getelementptr inbounds i8,i8*%api,i64 16
%aps=bitcast i8*%apr to i32*
store i32 2,i32*%aps,align 4
%apt=call fastcc i8*@_SMLFN15EmitTypedLambda7SelectNE(i8*inreg%api)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akN)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akO)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akP)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%akR)
br label%apu
apu:
%apv=phi i8*[%alA,%alo],[%aoA,%alL],[%apt,%aoL]
store i8*%apv,i8**%u,align 8
%apw=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%apx=getelementptr inbounds i8,i8*%apw,i64 16
%apy=bitcast i8*%apx to i8*(i8*,i8*)**
%apz=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%apy,align 8
%apA=bitcast i8*%apw to i8**
%apB=load i8*,i8**%apA,align 8
store i8*%apB,i8**%z,align 8
%apC=call i8*@sml_alloc(i32 inreg 28)#0
%apD=getelementptr inbounds i8,i8*%apC,i64 -4
%apE=bitcast i8*%apD to i32*
store i32 1342177304,i32*%apE,align 4
store i8*%apC,i8**%C,align 8
%apF=load i8*,i8**%A,align 8
store i8*null,i8**%A,align 8
%apG=bitcast i8*%apC to i8**
store i8*%apF,i8**%apG,align 8
%apH=load i8*,i8**%y,align 8
%apI=getelementptr inbounds i8,i8*%apC,i64 8
%apJ=bitcast i8*%apI to i8**
store i8*%apH,i8**%apJ,align 8
%apK=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%apL=getelementptr inbounds i8,i8*%apC,i64 16
%apM=bitcast i8*%apL to i8**
store i8*%apK,i8**%apM,align 8
%apN=getelementptr inbounds i8,i8*%apC,i64 24
%apO=bitcast i8*%apN to i32*
store i32 7,i32*%apO,align 4
%apP=call i8*@sml_alloc(i32 inreg 28)#0
%apQ=getelementptr inbounds i8,i8*%apP,i64 -4
%apR=bitcast i8*%apQ to i32*
store i32 1342177304,i32*%apR,align 4
%apS=load i8*,i8**%C,align 8
store i8*null,i8**%C,align 8
%apT=bitcast i8*%apP to i8**
store i8*%apS,i8**%apT,align 8
%apU=getelementptr inbounds i8,i8*%apP,i64 8
%apV=bitcast i8*%apU to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchConE_288 to void(...)*),void(...)**%apV,align 8
%apW=getelementptr inbounds i8,i8*%apP,i64 16
%apX=bitcast i8*%apW to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation9switchConE_288 to void(...)*),void(...)**%apX,align 8
%apY=getelementptr inbounds i8,i8*%apP,i64 24
%apZ=bitcast i8*%apY to i32*
store i32 -2147483647,i32*%apZ,align 4
%ap0=load i8*,i8**%z,align 8
store i8*null,i8**%z,align 8
%ap1=call fastcc i8*%apz(i8*inreg%ap0,i8*inreg%apP)
%ap2=getelementptr inbounds i8,i8*%ap1,i64 16
%ap3=bitcast i8*%ap2 to i8*(i8*,i8*)**
%ap4=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ap3,align 8
%ap5=bitcast i8*%ap1 to i8**
%ap6=load i8*,i8**%ap5,align 8
%ap7=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%ap8=getelementptr inbounds i8,i8*%ap7,i64 16
%ap9=bitcast i8*%ap8 to i8**
%aqa=load i8*,i8**%ap9,align 8
%aqb=call fastcc i8*%ap4(i8*inreg%ap6,i8*inreg%aqa)
store i8*%aqb,i8**%v,align 8
%aqc=call i8*@sml_alloc(i32 inreg 20)#0
%aqd=getelementptr inbounds i8,i8*%aqc,i64 -4
%aqe=bitcast i8*%aqd to i32*
store i32 1342177296,i32*%aqe,align 4
store i8*%aqc,i8**%w,align 8
%aqf=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%aqg=bitcast i8*%aqc to i8**
store i8*%aqf,i8**%aqg,align 8
%aqh=load i8*,i8**%y,align 8
store i8*null,i8**%y,align 8
%aqi=getelementptr inbounds i8,i8*%aqc,i64 8
%aqj=bitcast i8*%aqi to i8**
store i8*%aqh,i8**%aqj,align 8
%aqk=getelementptr inbounds i8,i8*%aqc,i64 16
%aql=bitcast i8*%aqk to i32*
store i32 3,i32*%aql,align 4
%aqm=call i8*@sml_alloc(i32 inreg 20)#0
%aqn=getelementptr inbounds i8,i8*%aqm,i64 -4
%aqo=bitcast i8*%aqn to i32*
store i32 1342177296,i32*%aqo,align 4
store i8*%aqm,i8**%x,align 8
%aqp=getelementptr inbounds i8,i8*%aqm,i64 4
%aqq=bitcast i8*%aqp to i32*
store i32 0,i32*%aqq,align 1
%aqr=bitcast i8*%aqm to i32*
store i32 8,i32*%aqr,align 4
%aqs=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%aqt=getelementptr inbounds i8,i8*%aqm,i64 8
%aqu=bitcast i8*%aqt to i8**
store i8*%aqs,i8**%aqu,align 8
%aqv=getelementptr inbounds i8,i8*%aqm,i64 16
%aqw=bitcast i8*%aqv to i32*
store i32 2,i32*%aqw,align 4
%aqx=call i8*@sml_alloc(i32 inreg 28)#0
%aqy=getelementptr inbounds i8,i8*%aqx,i64 -4
%aqz=bitcast i8*%aqy to i32*
store i32 1342177304,i32*%aqz,align 4
store i8*%aqx,i8**%w,align 8
%aqA=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%aqB=bitcast i8*%aqx to i8**
store i8*%aqA,i8**%aqB,align 8
%aqC=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%aqD=getelementptr inbounds i8,i8*%aqx,i64 8
%aqE=bitcast i8*%aqD to i8**
store i8*%aqC,i8**%aqE,align 8
%aqF=load i8*,i8**%x,align 8
store i8*null,i8**%x,align 8
%aqG=getelementptr inbounds i8,i8*%aqx,i64 16
%aqH=bitcast i8*%aqG to i8**
store i8*%aqF,i8**%aqH,align 8
%aqI=getelementptr inbounds i8,i8*%aqx,i64 24
%aqJ=bitcast i8*%aqI to i32*
store i32 7,i32*%aqJ,align 4
%aqK=call i8*@sml_alloc(i32 inreg 20)#0
%aqL=getelementptr inbounds i8,i8*%aqK,i64 -4
%aqM=bitcast i8*%aqL to i32*
store i32 1342177296,i32*%aqM,align 4
store i8*%aqK,i8**%v,align 8
%aqN=getelementptr inbounds i8,i8*%aqK,i64 4
%aqO=bitcast i8*%aqN to i32*
store i32 0,i32*%aqO,align 1
%aqP=bitcast i8*%aqK to i32*
store i32 28,i32*%aqP,align 4
%aqQ=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%aqR=getelementptr inbounds i8,i8*%aqK,i64 8
%aqS=bitcast i8*%aqR to i8**
store i8*%aqQ,i8**%aqS,align 8
%aqT=getelementptr inbounds i8,i8*%aqK,i64 16
%aqU=bitcast i8*%aqT to i32*
store i32 2,i32*%aqU,align 4
%aqV=call i8*@sml_alloc(i32 inreg 20)#0
%aqW=getelementptr inbounds i8,i8*%aqV,i64 -4
%aqX=bitcast i8*%aqW to i32*
store i32 1342177296,i32*%aqX,align 4
store i8*%aqV,i8**%u,align 8
%aqY=getelementptr inbounds i8,i8*%aqV,i64 4
%aqZ=bitcast i8*%aqY to i32*
store i32 0,i32*%aqZ,align 1
%aq0=bitcast i8*%aqV to i32*
store i32%aku,i32*%aq0,align 4
%aq1=load i8*,i8**%B,align 8
store i8*null,i8**%B,align 8
%aq2=getelementptr inbounds i8,i8*%aqV,i64 8
%aq3=bitcast i8*%aq2 to i8**
store i8*%aq1,i8**%aq3,align 8
%aq4=getelementptr inbounds i8,i8*%aqV,i64 16
%aq5=bitcast i8*%aq4 to i32*
store i32 2,i32*%aq5,align 4
%aq6=call i8*@sml_alloc(i32 inreg 20)#0
%aq7=getelementptr inbounds i8,i8*%aq6,i64 -4
%aq8=bitcast i8*%aq7 to i32*
store i32 1342177296,i32*%aq8,align 4
store i8*%aq6,i8**%w,align 8
%aq9=load i8*,i8**%u,align 8
store i8*null,i8**%u,align 8
%ara=bitcast i8*%aq6 to i8**
store i8*%aq9,i8**%ara,align 8
%arb=getelementptr inbounds i8,i8*%aq6,i64 8
%arc=bitcast i8*%arb to i8**
store i8*null,i8**%arc,align 8
%ard=getelementptr inbounds i8,i8*%aq6,i64 16
%are=bitcast i8*%ard to i32*
store i32 3,i32*%are,align 4
%arf=call i8*@sml_alloc(i32 inreg 20)#0
%arg=getelementptr inbounds i8,i8*%arf,i64 -4
%arh=bitcast i8*%arg to i32*
store i32 1342177296,i32*%arh,align 4
store i8*%arf,i8**%u,align 8
%ari=load i8*,i8**%w,align 8
store i8*null,i8**%w,align 8
%arj=bitcast i8*%arf to i8**
store i8*%ari,i8**%arj,align 8
%ark=load i8*,i8**%v,align 8
store i8*null,i8**%v,align 8
%arl=getelementptr inbounds i8,i8*%arf,i64 8
%arm=bitcast i8*%arl to i8**
store i8*%ark,i8**%arm,align 8
%arn=getelementptr inbounds i8,i8*%arf,i64 16
%aro=bitcast i8*%arn to i32*
store i32 3,i32*%aro,align 4
%arp=call i8*@sml_alloc(i32 inreg 20)#0
%arq=bitcast i8*%arp to i32*
%arr=getelementptr inbounds i8,i8*%arp,i64 -4
%ars=bitcast i8*%arr to i32*
store i32 1342177296,i32*%ars,align 4
%art=getelementptr inbounds i8,i8*%arp,i64 4
%aru=bitcast i8*%art to i32*
store i32 0,i32*%aru,align 1
store i32 18,i32*%arq,align 4
%arv=load i8*,i8**%u,align 8
%arw=getelementptr inbounds i8,i8*%arp,i64 8
%arx=bitcast i8*%arw to i8**
store i8*%arv,i8**%arx,align 8
%ary=getelementptr inbounds i8,i8*%arp,i64 16
%arz=bitcast i8*%ary to i32*
store i32 2,i32*%arz,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VD)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VE)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VF)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VG)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VH)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VI)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VJ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VK)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%VL)
br label%arA
arA:
%arB=phi i8*[%YA,%Xe],[%Zx,%Zm],[%adi,%ach],[%aeA,%adU],[%akf,%ahH],[%arp,%apu]
%arC=load i8*,i8**%G,align 8
%arD=tail call fastcc i8*%Vh(i8*inreg%arC,i8*inreg%arB)
ret i8*%arD
arE:
%arF=getelementptr inbounds i8,i8*%Sp,i64 8
%arG=bitcast i8*%arF to i8**
%arH=load i8*,i8**%arG,align 8
store i8*%arH,i8**%E,align 8
%arI=getelementptr inbounds i8,i8*%Sd,i64 8
%arJ=bitcast i8*%arI to i8**
%arK=load i8*,i8**%arJ,align 8
%arL=load i8*,i8**%M,align 8
%arM=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%arL,i8*inreg%U,i8*inreg%arK)
store i8*%arM,i8**%D,align 8
%arN=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%arO=getelementptr inbounds i8,i8*%arN,i64 16
%arP=bitcast i8*%arO to i8*(i8*,i8*)**
%arQ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%arP,align 8
%arR=bitcast i8*%arN to i8**
%arS=load i8*,i8**%arR,align 8
store i8*%arS,i8**%L,align 8
%arT=bitcast i8**%M to i8***
%arU=load i8**,i8***%arT,align 8
%arV=load i8*,i8**%arU,align 8
store i8*%arV,i8**%K,align 8
%arW=call i8*@sml_alloc(i32 inreg 36)#0
%arX=getelementptr inbounds i8,i8*%arW,i64 -4
%arY=bitcast i8*%arX to i32*
store i32 1342177312,i32*%arY,align 4
store i8*%arW,i8**%N,align 8
%arZ=load i8*,i8**%G,align 8
%ar0=bitcast i8*%arW to i8**
store i8*%arZ,i8**%ar0,align 8
%ar1=load i8*,i8**%I,align 8
%ar2=getelementptr inbounds i8,i8*%arW,i64 8
%ar3=bitcast i8*%ar2 to i8**
store i8*%ar1,i8**%ar3,align 8
%ar4=load i8*,i8**%K,align 8
store i8*null,i8**%K,align 8
%ar5=getelementptr inbounds i8,i8*%arW,i64 16
%ar6=bitcast i8*%ar5 to i8**
store i8*%ar4,i8**%ar6,align 8
%ar7=load i8*,i8**%M,align 8
%ar8=getelementptr inbounds i8,i8*%arW,i64 24
%ar9=bitcast i8*%ar8 to i8**
store i8*%ar7,i8**%ar9,align 8
%asa=getelementptr inbounds i8,i8*%arW,i64 32
%asb=bitcast i8*%asa to i32*
store i32 15,i32*%asb,align 4
%asc=call i8*@sml_alloc(i32 inreg 28)#0
%asd=getelementptr inbounds i8,i8*%asc,i64 -4
%ase=bitcast i8*%asd to i32*
store i32 1342177304,i32*%ase,align 4
%asf=load i8*,i8**%N,align 8
store i8*null,i8**%N,align 8
%asg=bitcast i8*%asc to i8**
store i8*%asf,i8**%asg,align 8
%ash=getelementptr inbounds i8,i8*%asc,i64 8
%asi=bitcast i8*%ash to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8branches_335 to void(...)*),void(...)**%asi,align 8
%asj=getelementptr inbounds i8,i8*%asc,i64 16
%ask=bitcast i8*%asj to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL8branches_335 to void(...)*),void(...)**%ask,align 8
%asl=getelementptr inbounds i8,i8*%asc,i64 24
%asm=bitcast i8*%asl to i32*
store i32 -2147483647,i32*%asm,align 4
%asn=load i8*,i8**%L,align 8
store i8*null,i8**%L,align 8
%aso=call fastcc i8*%arQ(i8*inreg%asn,i8*inreg%asc)
%asp=getelementptr inbounds i8,i8*%aso,i64 16
%asq=bitcast i8*%asp to i8*(i8*,i8*)**
%asr=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%asq,align 8
%ass=bitcast i8*%aso to i8**
%ast=load i8*,i8**%ass,align 8
%asu=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%asv=call fastcc i8*%asr(i8*inreg%ast,i8*inreg%asu)
store i8*%asv,i8**%E,align 8
%asw=bitcast i8**%F to i8***
%asx=load i8**,i8***%asw,align 8
store i8*null,i8**%F,align 8
%asy=load i8*,i8**%asx,align 8
%asz=load i8*,i8**%G,align 8
%asA=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%asB=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%asA,i8*inreg%asz,i8*inreg%asy)
store i8*%asB,i8**%F,align 8
%asC=load i8*,i8**%E,align 8
%asD=icmp eq i8*%asC,null
br i1%asD,label%asE,label%atb
asE:
store i8*null,i8**%E,align 8
%asF=call i8*@sml_alloc(i32 inreg 52)#0
%asG=getelementptr inbounds i8,i8*%asF,i64 -4
%asH=bitcast i8*%asG to i32*
store i32 1342177328,i32*%asH,align 4
store i8*%asF,i8**%E,align 8
%asI=bitcast i8*%asF to i8**
store i8*null,i8**%asI,align 8
%asJ=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%asK=getelementptr inbounds i8,i8*%asF,i64 8
%asL=bitcast i8*%asK to i8**
store i8*%asJ,i8**%asL,align 8
%asM=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%asN=getelementptr inbounds i8,i8*%asF,i64 16
%asO=bitcast i8*%asN to i8**
store i8*%asM,i8**%asO,align 8
%asP=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%asQ=getelementptr inbounds i8,i8*%asF,i64 24
%asR=bitcast i8*%asQ to i8**
store i8*%asP,i8**%asR,align 8
%asS=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%asT=getelementptr inbounds i8,i8*%asF,i64 32
%asU=bitcast i8*%asT to i8**
store i8*%asS,i8**%asU,align 8
%asV=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%asW=getelementptr inbounds i8,i8*%asF,i64 40
%asX=bitcast i8*%asW to i8**
store i8*%asV,i8**%asX,align 8
%asY=getelementptr inbounds i8,i8*%asF,i64 48
%asZ=bitcast i8*%asY to i32*
store i32 63,i32*%asZ,align 4
%as0=call i8*@sml_alloc(i32 inreg 20)#0
%as1=bitcast i8*%as0 to i32*
%as2=getelementptr inbounds i8,i8*%as0,i64 -4
%as3=bitcast i8*%as2 to i32*
store i32 1342177296,i32*%as3,align 4
%as4=getelementptr inbounds i8,i8*%as0,i64 4
%as5=bitcast i8*%as4 to i32*
store i32 0,i32*%as5,align 1
store i32 23,i32*%as1,align 4
%as6=load i8*,i8**%E,align 8
%as7=getelementptr inbounds i8,i8*%as0,i64 8
%as8=bitcast i8*%as7 to i8**
store i8*%as6,i8**%as8,align 8
%as9=getelementptr inbounds i8,i8*%as0,i64 16
%ata=bitcast i8*%as9 to i32*
store i32 2,i32*%ata,align 4
ret i8*%as0
atb:
%atc=bitcast i8*%asC to i8***
%atd=load i8**,i8***%atc,align 8
%ate=load i8*,i8**%atd,align 8
%atf=bitcast i8*%ate to i32*
%atg=load i32,i32*%atf,align 4
switch i32%atg,label%ath[
i32 1,label%aul
i32 0,label%atz
]
ath:
store i8*null,i8**%E,align 8
store i8*null,i8**%F,align 8
store i8*null,i8**%H,align 8
store i8*null,i8**%I,align 8
store i8*null,i8**%J,align 8
call void@sml_matchcomp_bug()
%ati=load i8*,i8**@_SMLZ5Match,align 8
store i8*%ati,i8**%D,align 8
%atj=call i8*@sml_alloc(i32 inreg 20)#0
%atk=getelementptr inbounds i8,i8*%atj,i64 -4
%atl=bitcast i8*%atk to i32*
store i32 1342177296,i32*%atl,align 4
store i8*%atj,i8**%E,align 8
%atm=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%atn=bitcast i8*%atj to i8**
store i8*%atm,i8**%atn,align 8
%ato=getelementptr inbounds i8,i8*%atj,i64 8
%atp=bitcast i8*%ato to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@af,i64 0,i32 2,i64 0),i8**%atp,align 8
%atq=getelementptr inbounds i8,i8*%atj,i64 16
%atr=bitcast i8*%atq to i32*
store i32 3,i32*%atr,align 4
%ats=call i8*@sml_alloc(i32 inreg 60)#0
%att=getelementptr inbounds i8,i8*%ats,i64 -4
%atu=bitcast i8*%att to i32*
store i32 1342177336,i32*%atu,align 4
%atv=getelementptr inbounds i8,i8*%ats,i64 56
%atw=bitcast i8*%atv to i32*
store i32 1,i32*%atw,align 4
%atx=load i8*,i8**%E,align 8
%aty=bitcast i8*%ats to i8**
store i8*%atx,i8**%aty,align 8
call void@sml_raise(i8*inreg%ats)#1
unreachable
atz:
%atA=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%atB=getelementptr inbounds i8,i8*%atA,i64 16
%atC=bitcast i8*%atB to i8*(i8*,i8*)**
%atD=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%atC,align 8
%atE=bitcast i8*%atA to i8**
%atF=load i8*,i8**%atE,align 8
%atG=call fastcc i8*%atD(i8*inreg%atF,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ae,i64 0,i32 2)to i8*))
%atH=getelementptr inbounds i8,i8*%atG,i64 16
%atI=bitcast i8*%atH to i8*(i8*,i8*)**
%atJ=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%atI,align 8
%atK=bitcast i8*%atG to i8**
%atL=load i8*,i8**%atK,align 8
%atM=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%atN=call fastcc i8*%atJ(i8*inreg%atL,i8*inreg%atM)
store i8*%atN,i8**%E,align 8
%atO=call i8*@sml_alloc(i32 inreg 52)#0
%atP=getelementptr inbounds i8,i8*%atO,i64 -4
%atQ=bitcast i8*%atP to i32*
store i32 1342177328,i32*%atQ,align 4
store i8*%atO,i8**%G,align 8
%atR=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%atS=bitcast i8*%atO to i8**
store i8*%atR,i8**%atS,align 8
%atT=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%atU=getelementptr inbounds i8,i8*%atO,i64 8
%atV=bitcast i8*%atU to i8**
store i8*%atT,i8**%atV,align 8
%atW=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%atX=getelementptr inbounds i8,i8*%atO,i64 16
%atY=bitcast i8*%atX to i8**
store i8*%atW,i8**%atY,align 8
%atZ=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%at0=getelementptr inbounds i8,i8*%atO,i64 24
%at1=bitcast i8*%at0 to i8**
store i8*%atZ,i8**%at1,align 8
%at2=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%at3=getelementptr inbounds i8,i8*%atO,i64 32
%at4=bitcast i8*%at3 to i8**
store i8*%at2,i8**%at4,align 8
%at5=load i8*,i8**%J,align 8
store i8*null,i8**%J,align 8
%at6=getelementptr inbounds i8,i8*%atO,i64 40
%at7=bitcast i8*%at6 to i8**
store i8*%at5,i8**%at7,align 8
%at8=getelementptr inbounds i8,i8*%atO,i64 48
%at9=bitcast i8*%at8 to i32*
store i32 63,i32*%at9,align 4
%aua=call i8*@sml_alloc(i32 inreg 20)#0
%aub=bitcast i8*%aua to i32*
%auc=getelementptr inbounds i8,i8*%aua,i64 -4
%aud=bitcast i8*%auc to i32*
store i32 1342177296,i32*%aud,align 4
%aue=getelementptr inbounds i8,i8*%aua,i64 4
%auf=bitcast i8*%aue to i32*
store i32 0,i32*%auf,align 1
store i32 23,i32*%aub,align 4
%aug=load i8*,i8**%G,align 8
%auh=getelementptr inbounds i8,i8*%aua,i64 8
%aui=bitcast i8*%auh to i8**
store i8*%aug,i8**%aui,align 8
%auj=getelementptr inbounds i8,i8*%aua,i64 16
%auk=bitcast i8*%auj to i32*
store i32 2,i32*%auk,align 4
ret i8*%aua
aul:
%aum=getelementptr inbounds i8,i8*%ate,i64 8
%aun=bitcast i8*%aum to i32**
%auo=load i32*,i32**%aun,align 8
%aup=load i32,i32*%auo,align 4
switch i32%aup,label%auq[
i32 1,label%avk
i32 0,label%auI
]
auq:
store i8*null,i8**%E,align 8
store i8*null,i8**%F,align 8
store i8*null,i8**%H,align 8
store i8*null,i8**%I,align 8
store i8*null,i8**%J,align 8
call void@sml_matchcomp_bug()
%aur=load i8*,i8**@_SMLZ5Match,align 8
store i8*%aur,i8**%D,align 8
%aus=call i8*@sml_alloc(i32 inreg 20)#0
%aut=getelementptr inbounds i8,i8*%aus,i64 -4
%auu=bitcast i8*%aut to i32*
store i32 1342177296,i32*%auu,align 4
store i8*%aus,i8**%E,align 8
%auv=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%auw=bitcast i8*%aus to i8**
store i8*%auv,i8**%auw,align 8
%aux=getelementptr inbounds i8,i8*%aus,i64 8
%auy=bitcast i8*%aux to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@af,i64 0,i32 2,i64 0),i8**%auy,align 8
%auz=getelementptr inbounds i8,i8*%aus,i64 16
%auA=bitcast i8*%auz to i32*
store i32 3,i32*%auA,align 4
%auB=call i8*@sml_alloc(i32 inreg 60)#0
%auC=getelementptr inbounds i8,i8*%auB,i64 -4
%auD=bitcast i8*%auC to i32*
store i32 1342177336,i32*%auD,align 4
%auE=getelementptr inbounds i8,i8*%auB,i64 56
%auF=bitcast i8*%auE to i32*
store i32 1,i32*%auF,align 4
%auG=load i8*,i8**%E,align 8
%auH=bitcast i8*%auB to i8**
store i8*%auG,i8**%auH,align 8
call void@sml_raise(i8*inreg%auB)#1
unreachable
auI:
%auJ=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%auK=getelementptr inbounds i8,i8*%auJ,i64 16
%auL=bitcast i8*%auK to i8*(i8*,i8*)**
%auM=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%auL,align 8
%auN=bitcast i8*%auJ to i8**
%auO=load i8*,i8**%auN,align 8
%auP=call fastcc i8*%auM(i8*inreg%auO,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@ab,i64 0,i32 2)to i8*))
%auQ=getelementptr inbounds i8,i8*%auP,i64 16
%auR=bitcast i8*%auQ to i8*(i8*,i8*)**
%auS=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%auR,align 8
%auT=bitcast i8*%auP to i8**
%auU=load i8*,i8**%auT,align 8
%auV=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%auW=call fastcc i8*%auS(i8*inreg%auU,i8*inreg%auV)
store i8*%auW,i8**%E,align 8
%auX=call i8*@sml_alloc(i32 inreg 52)#0
%auY=getelementptr inbounds i8,i8*%auX,i64 -4
%auZ=bitcast i8*%auY to i32*
store i32 1342177328,i32*%auZ,align 4
%au0=load i8*,i8**%E,align 8
%au1=bitcast i8*%auX to i8**
store i8*%au0,i8**%au1,align 8
%au2=load i8*,i8**%F,align 8
%au3=getelementptr inbounds i8,i8*%auX,i64 8
%au4=bitcast i8*%au3 to i8**
store i8*%au2,i8**%au4,align 8
%au5=load i8*,i8**%H,align 8
%au6=getelementptr inbounds i8,i8*%auX,i64 16
%au7=bitcast i8*%au6 to i8**
store i8*%au5,i8**%au7,align 8
%au8=load i8*,i8**%I,align 8
%au9=getelementptr inbounds i8,i8*%auX,i64 24
%ava=bitcast i8*%au9 to i8**
store i8*%au8,i8**%ava,align 8
%avb=load i8*,i8**%J,align 8
%avc=getelementptr inbounds i8,i8*%auX,i64 32
%avd=bitcast i8*%avc to i8**
store i8*%avb,i8**%avd,align 8
%ave=load i8*,i8**%D,align 8
%avf=getelementptr inbounds i8,i8*%auX,i64 40
%avg=bitcast i8*%avf to i8**
store i8*%ave,i8**%avg,align 8
%avh=getelementptr inbounds i8,i8*%auX,i64 48
%avi=bitcast i8*%avh to i32*
store i32 63,i32*%avi,align 4
%avj=tail call fastcc i8*@_SMLFN13SwitchCompile19compileIntInfSwitchE(i8*inreg%auX)
ret i8*%avj
avk:
%avl=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%avm=getelementptr inbounds i8,i8*%avl,i64 16
%avn=bitcast i8*%avm to i8*(i8*,i8*)**
%avo=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%avn,align 8
%avp=bitcast i8*%avl to i8**
%avq=load i8*,i8**%avp,align 8
%avr=call fastcc i8*%avo(i8*inreg%avq,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@Y,i64 0,i32 2)to i8*))
%avs=getelementptr inbounds i8,i8*%avr,i64 16
%avt=bitcast i8*%avs to i8*(i8*,i8*)**
%avu=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%avt,align 8
%avv=bitcast i8*%avr to i8**
%avw=load i8*,i8**%avv,align 8
%avx=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%avy=call fastcc i8*%avu(i8*inreg%avw,i8*inreg%avx)
store i8*%avy,i8**%E,align 8
%avz=call i8*@sml_alloc(i32 inreg 52)#0
%avA=getelementptr inbounds i8,i8*%avz,i64 -4
%avB=bitcast i8*%avA to i32*
store i32 1342177328,i32*%avB,align 4
%avC=load i8*,i8**%E,align 8
%avD=bitcast i8*%avz to i8**
store i8*%avC,i8**%avD,align 8
%avE=load i8*,i8**%F,align 8
%avF=getelementptr inbounds i8,i8*%avz,i64 8
%avG=bitcast i8*%avF to i8**
store i8*%avE,i8**%avG,align 8
%avH=load i8*,i8**%H,align 8
%avI=getelementptr inbounds i8,i8*%avz,i64 16
%avJ=bitcast i8*%avI to i8**
store i8*%avH,i8**%avJ,align 8
%avK=load i8*,i8**%I,align 8
%avL=getelementptr inbounds i8,i8*%avz,i64 24
%avM=bitcast i8*%avL to i8**
store i8*%avK,i8**%avM,align 8
%avN=load i8*,i8**%J,align 8
%avO=getelementptr inbounds i8,i8*%avz,i64 32
%avP=bitcast i8*%avO to i8**
store i8*%avN,i8**%avP,align 8
%avQ=load i8*,i8**%D,align 8
%avR=getelementptr inbounds i8,i8*%avz,i64 40
%avS=bitcast i8*%avR to i8**
store i8*%avQ,i8**%avS,align 8
%avT=getelementptr inbounds i8,i8*%avz,i64 48
%avU=bitcast i8*%avT to i32*
store i32 63,i32*%avU,align 4
%avV=tail call fastcc i8*@_SMLFN13SwitchCompile19compileStringSwitchE(i8*inreg%avz)
ret i8*%avV
avW:
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%avX=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%avX,i8**%D,align 8
%avY=call i8*@sml_alloc(i32 inreg 28)#0
%avZ=getelementptr inbounds i8,i8*%avY,i64 -4
%av0=bitcast i8*%avZ to i32*
store i32 1342177304,i32*%av0,align 4
store i8*%avY,i8**%E,align 8
%av1=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%av2=bitcast i8*%avY to i8**
store i8*%av1,i8**%av2,align 8
%av3=getelementptr inbounds i8,i8*%avY,i64 8
%av4=bitcast i8*%av3 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@S,i64 0,i32 2,i64 0),i8**%av4,align 8
%av5=getelementptr inbounds i8,i8*%avY,i64 16
%av6=bitcast i8*%av5 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[20x i8]}>,<{[4x i8],i32,[20x i8]}>*@T,i64 0,i32 2,i64 0),i8**%av6,align 8
%av7=getelementptr inbounds i8,i8*%avY,i64 24
%av8=bitcast i8*%av7 to i32*
store i32 7,i32*%av8,align 4
%av9=call i8*@sml_alloc(i32 inreg 60)#0
%awa=getelementptr inbounds i8,i8*%av9,i64 -4
%awb=bitcast i8*%awa to i32*
store i32 1342177336,i32*%awb,align 4
%awc=getelementptr inbounds i8,i8*%av9,i64 56
%awd=bitcast i8*%awc to i32*
store i32 1,i32*%awd,align 4
%awe=load i8*,i8**%E,align 8
%awf=bitcast i8*%av9 to i8**
store i8*%awe,i8**%awf,align 8
call void@sml_raise(i8*inreg%av9)#1
unreachable
awg:
%awh=getelementptr inbounds i8,i8*%W,i64 8
%awi=bitcast i8*%awh to i8**
%awj=load i8*,i8**%awi,align 8
store i8*%awj,i8**%E,align 8
%awk=getelementptr inbounds i8,i8*%awj,i64 16
%awl=bitcast i8*%awk to i8**
%awm=load i8*,i8**%awl,align 8
store i8*%awm,i8**%F,align 8
%awn=getelementptr inbounds i8,i8*%awj,i64 24
%awo=bitcast i8*%awn to i8**
%awp=load i8*,i8**%awo,align 8
store i8*%awp,i8**%H,align 8
%awq=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%awr=getelementptr inbounds i8,i8*%awq,i64 16
%aws=bitcast i8*%awr to i8*(i8*,i8*)**
%awt=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%aws,align 8
%awu=bitcast i8*%awq to i8**
%awv=load i8*,i8**%awu,align 8
store i8*%awv,i8**%D,align 8
%aww=call i8*@sml_alloc(i32 inreg 20)#0
%awx=getelementptr inbounds i8,i8*%aww,i64 -4
%awy=bitcast i8*%awx to i32*
store i32 1342177296,i32*%awy,align 4
store i8*%aww,i8**%I,align 8
%awz=load i8*,i8**%G,align 8
%awA=bitcast i8*%aww to i8**
store i8*%awz,i8**%awA,align 8
%awB=load i8*,i8**%M,align 8
%awC=getelementptr inbounds i8,i8*%aww,i64 8
%awD=bitcast i8*%awC to i8**
store i8*%awB,i8**%awD,align 8
%awE=getelementptr inbounds i8,i8*%aww,i64 16
%awF=bitcast i8*%awE to i32*
store i32 3,i32*%awF,align 4
%awG=call i8*@sml_alloc(i32 inreg 28)#0
%awH=getelementptr inbounds i8,i8*%awG,i64 -4
%awI=bitcast i8*%awH to i32*
store i32 1342177304,i32*%awI,align 4
%awJ=load i8*,i8**%I,align 8
store i8*null,i8**%I,align 8
%awK=bitcast i8*%awG to i8**
store i8*%awJ,i8**%awK,align 8
%awL=getelementptr inbounds i8,i8*%awG,i64 8
%awM=bitcast i8*%awL to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL10argExpList_330 to void(...)*),void(...)**%awM,align 8
%awN=getelementptr inbounds i8,i8*%awG,i64 16
%awO=bitcast i8*%awN to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLL10argExpList_330 to void(...)*),void(...)**%awO,align 8
%awP=getelementptr inbounds i8,i8*%awG,i64 24
%awQ=bitcast i8*%awP to i32*
store i32 -2147483647,i32*%awQ,align 4
%awR=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%awS=call fastcc i8*%awt(i8*inreg%awR,i8*inreg%awG)
%awT=getelementptr inbounds i8,i8*%awS,i64 16
%awU=bitcast i8*%awT to i8*(i8*,i8*)**
%awV=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%awU,align 8
%awW=bitcast i8*%awS to i8**
%awX=load i8*,i8**%awW,align 8
%awY=bitcast i8**%E to i8***
%awZ=load i8**,i8***%awY,align 8
%aw0=load i8*,i8**%awZ,align 8
%aw1=call fastcc i8*%awV(i8*inreg%awX,i8*inreg%aw0)
store i8*%aw1,i8**%D,align 8
%aw2=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%aw3=getelementptr inbounds i8,i8*%aw2,i64 8
%aw4=bitcast i8*%aw3 to i8**
%aw5=load i8*,i8**%aw4,align 8
%aw6=load i8*,i8**%G,align 8
%aw7=load i8*,i8**%M,align 8
store i8*null,i8**%G,align 8
store i8*null,i8**%M,align 8
%aw8=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%aw7,i8*inreg%aw6,i8*inreg%aw5)
store i8*%aw8,i8**%E,align 8
%aw9=call i8*@sml_alloc(i32 inreg 36)#0
%axa=getelementptr inbounds i8,i8*%aw9,i64 -4
%axb=bitcast i8*%axa to i32*
store i32 1342177312,i32*%axb,align 4
store i8*%aw9,i8**%G,align 8
%axc=load i8*,i8**%D,align 8
store i8*null,i8**%D,align 8
%axd=bitcast i8*%aw9 to i8**
store i8*%axc,i8**%axd,align 8
%axe=load i8*,i8**%E,align 8
store i8*null,i8**%E,align 8
%axf=getelementptr inbounds i8,i8*%aw9,i64 8
%axg=bitcast i8*%axf to i8**
store i8*%axe,i8**%axg,align 8
%axh=load i8*,i8**%F,align 8
store i8*null,i8**%F,align 8
%axi=getelementptr inbounds i8,i8*%aw9,i64 16
%axj=bitcast i8*%axi to i8**
store i8*%axh,i8**%axj,align 8
%axk=load i8*,i8**%H,align 8
store i8*null,i8**%H,align 8
%axl=getelementptr inbounds i8,i8*%aw9,i64 24
%axm=bitcast i8*%axl to i8**
store i8*%axk,i8**%axm,align 8
%axn=getelementptr inbounds i8,i8*%aw9,i64 32
%axo=bitcast i8*%axn to i32*
store i32 15,i32*%axo,align 4
%axp=call i8*@sml_alloc(i32 inreg 20)#0
%axq=getelementptr inbounds i8,i8*%axp,i64 -4
%axr=bitcast i8*%axq to i32*
store i32 1342177296,i32*%axr,align 4
%axs=bitcast i8*%axp to i64*
store i64 0,i64*%axs,align 4
%axt=load i8*,i8**%G,align 8
%axu=getelementptr inbounds i8,i8*%axp,i64 8
%axv=bitcast i8*%axu to i8**
store i8*%axt,i8**%axv,align 8
%axw=getelementptr inbounds i8,i8*%axp,i64 16
%axx=bitcast i8*%axw to i32*
store i32 2,i32*%axx,align 4
ret i8*%axp
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation15compileDeclListE_328(i8*inreg%a,i8*inreg%b,i8*inreg%c)#2 gc"smlsharp"{
n:
%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**%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**%d,align 8
store i8*%c,i8**%e,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**%e,align 8
br label%l
l:
%m=phi i8*[%k,%j],[%c,%n]
%o=icmp eq i8*%m,null
br i1%o,label%p,label%z
p:
store i8*null,i8**%e,align 8
store i8*null,i8**%f,align 8
%q=call i8*@sml_alloc(i32 inreg 20)#0
%r=getelementptr inbounds i8,i8*%q,i64 -4
%s=bitcast i8*%r to i32*
store i32 1342177296,i32*%s,align 4
%t=load i8*,i8**%d,align 8
%u=bitcast i8*%q to i8**
store i8*%t,i8**%u,align 8
%v=getelementptr inbounds i8,i8*%q,i64 8
%w=bitcast i8*%v to i8**
store i8*null,i8**%w,align 8
%x=getelementptr inbounds i8,i8*%q,i64 16
%y=bitcast i8*%x to i32*
store i32 3,i32*%y,align 4
ret i8*%q
z:
%A=load i8*,i8**%d,align 8
%B=bitcast i8*%m to i8**
%C=load i8*,i8**%B,align 8
%D=load i8*,i8**%f,align 8
store i8*null,i8**%d,align 8
%E=call fastcc i8*@_SMLLN19DatatypeCompilation11compileDeclE_329(i8*inreg%D,i8*inreg%A,i8*inreg%C)
%F=getelementptr inbounds i8,i8*%E,i64 8
%G=bitcast i8*%F to i8**
%H=load i8*,i8**%G,align 8
store i8*%H,i8**%d,align 8
%I=bitcast i8*%E to i8**
%J=load i8*,i8**%I,align 8
%K=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%L=getelementptr inbounds i8,i8*%K,i64 8
%M=bitcast i8*%L to i8**
%N=load i8*,i8**%M,align 8
%O=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%P=call fastcc i8*@_SMLLN19DatatypeCompilation15compileDeclListE_328(i8*inreg%O,i8*inreg%J,i8*inreg%N)
%Q=bitcast i8*%P to i8**
%R=load i8*,i8**%Q,align 8
store i8*%R,i8**%e,align 8
%S=getelementptr inbounds i8,i8*%P,i64 8
%T=bitcast i8*%S to i8**
%U=load i8*,i8**%T,align 8
store i8*%U,i8**%f,align 8
%V=call fastcc i8*@_SMLFN4List1_VE(i32 inreg 1,i32 inreg 8)
%W=getelementptr inbounds i8,i8*%V,i64 16
%X=bitcast i8*%W to i8*(i8*,i8*)**
%Y=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%X,align 8
%Z=bitcast i8*%V to i8**
%aa=load i8*,i8**%Z,align 8
store i8*%aa,i8**%g,align 8
%ab=call i8*@sml_alloc(i32 inreg 20)#0
%ac=getelementptr inbounds i8,i8*%ab,i64 -4
%ad=bitcast i8*%ac to i32*
store i32 1342177296,i32*%ad,align 4
%ae=load i8*,i8**%d,align 8
store i8*null,i8**%d,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**%g,align 8
store i8*null,i8**%g,align 8
%am=call fastcc i8*%Y(i8*inreg%al,i8*inreg%ab)
store i8*%am,i8**%d,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
%aq=load i8*,i8**%e,align 8
%ar=bitcast i8*%an to i8**
store i8*%aq,i8**%ar,align 8
%as=load i8*,i8**%d,align 8
%at=getelementptr inbounds i8,i8*%an,i64 8
%au=bitcast i8*%at to i8**
store i8*%as,i8**%au,align 8
%av=getelementptr inbounds i8,i8*%an,i64 16
%aw=bitcast i8*%av to i32*
store i32 3,i32*%aw,align 4
ret i8*%an
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation11compileDeclE_329(i8*inreg%a,i8*inreg%b,i8*inreg%c)#2 gc"smlsharp"{
s:
%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
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
call void@llvm.gcroot(i8**%h,i8*null)#0
call void@llvm.gcroot(i8**%i,i8*null)#0
call void@llvm.gcroot(i8**%j,i8*null)#0
call void@llvm.gcroot(i8**%k,i8*null)#0
store i8*%b,i8**%d,align 8
store i8*%c,i8**%e,align 8
store i8*%a,i8**%j,align 8
%l=load atomic i32,i32*@sml_check_flag unordered,align 4
%m=icmp eq i32%l,0
br i1%m,label%q,label%n
n:
call void@sml_check(i32 inreg%l)
%o=load i8*,i8**%e,align 8
%p=load i8*,i8**%d,align 8
br label%q
q:
%r=phi i8*[%p,%n],[%b,%s]
%t=phi i8*[%o,%n],[%c,%s]
store i8*%r,i8**%f,align 8
%u=bitcast i8*%t to i32*
%v=load i32,i32*%u,align 4
switch i32%v,label%w[
i32 1,label%ok
i32 2,label%mc
i32 3,label%j2
i32 4,label%i1
i32 5,label%hY
i32 0,label%gd
i32 6,label%fq
i32 7,label%e6
i32 8,label%eM
i32 9,label%de
i32 10,label%bv
i32 11,label%O
]
w:
store i8*null,i8**%f,align 8
store i8*null,i8**%j,align 8
call void@sml_matchcomp_bug()
%x=load i8*,i8**@_SMLZ5Match,align 8
store i8*%x,i8**%d,align 8
%y=call i8*@sml_alloc(i32 inreg 20)#0
%z=getelementptr inbounds i8,i8*%y,i64 -4
%A=bitcast i8*%z to i32*
store i32 1342177296,i32*%A,align 4
store i8*%y,i8**%e,align 8
%B=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%C=bitcast i8*%y to i8**
store i8*%B,i8**%C,align 8
%D=getelementptr inbounds i8,i8*%y,i64 8
%E=bitcast i8*%D to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[89x i8]}>,<{[4x i8],i32,[89x i8]}>*@aP,i64 0,i32 2,i64 0),i8**%E,align 8
%F=getelementptr inbounds i8,i8*%y,i64 16
%G=bitcast i8*%F to i32*
store i32 3,i32*%G,align 4
%H=call i8*@sml_alloc(i32 inreg 60)#0
%I=getelementptr inbounds i8,i8*%H,i64 -4
%J=bitcast i8*%I to i32*
store i32 1342177336,i32*%J,align 4
%K=getelementptr inbounds i8,i8*%H,i64 56
%L=bitcast i8*%K to i32*
store i32 1,i32*%L,align 4
%M=load i8*,i8**%e,align 8
%N=bitcast i8*%H to i8**
store i8*%M,i8**%N,align 8
call void@sml_raise(i8*inreg%H)#1
unreachable
O:
%P=getelementptr inbounds i8,i8*%t,i64 8
%Q=bitcast i8*%P to i8**
%R=load i8*,i8**%Q,align 8
store i8*%R,i8**%d,align 8
%S=getelementptr inbounds i8,i8*%R,i64 8
%T=bitcast i8*%S to i8**
%U=load i8*,i8**%T,align 8
store i8*%U,i8**%e,align 8
%V=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%W=getelementptr inbounds i8,i8*%V,i64 16
%X=bitcast i8*%W to i8*(i8*,i8*)**
%Y=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%X,align 8
%Z=bitcast i8*%V to i8**
%aa=load i8*,i8**%Z,align 8
store i8*%aa,i8**%g,align 8
%ab=call i8*@sml_alloc(i32 inreg 20)#0
%ac=getelementptr inbounds i8,i8*%ab,i64 -4
%ad=bitcast i8*%ac to i32*
store i32 1342177296,i32*%ad,align 4
store i8*%ab,i8**%h,align 8
%ae=load i8*,i8**%f,align 8
%af=bitcast i8*%ab to i8**
store i8*%ae,i8**%af,align 8
%ag=load i8*,i8**%j,align 8
store i8*null,i8**%j,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=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**%h,align 8
store i8*null,i8**%h,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*)*@_SMLLN19DatatypeCompilation11compileDeclE_402 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*)*@_SMLLN19DatatypeCompilation11compileDeclE_402 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=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%ax=call fastcc i8*%Y(i8*inreg%aw,i8*inreg%al)
%ay=getelementptr inbounds i8,i8*%ax,i64 16
%az=bitcast i8*%ay to i8*(i8*,i8*)**
%aA=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%az,align 8
%aB=bitcast i8*%ax to i8**
%aC=load i8*,i8**%aB,align 8
%aD=bitcast i8**%d to i8***
%aE=load i8**,i8***%aD,align 8
store i8*null,i8**%d,align 8
%aF=load i8*,i8**%aE,align 8
%aG=call fastcc i8*%aA(i8*inreg%aC,i8*inreg%aF)
store i8*%aG,i8**%d,align 8
%aH=call i8*@sml_alloc(i32 inreg 20)#0
%aI=getelementptr inbounds i8,i8*%aH,i64 -4
%aJ=bitcast i8*%aI to i32*
store i32 1342177296,i32*%aJ,align 4
store i8*%aH,i8**%g,align 8
%aK=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%aL=bitcast i8*%aH to i8**
store i8*%aK,i8**%aL,align 8
%aM=load i8*,i8**%e,align 8
store i8*null,i8**%e,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=call i8*@sml_alloc(i32 inreg 20)#0
%aS=getelementptr inbounds i8,i8*%aR,i64 -4
%aT=bitcast i8*%aS to i32*
store i32 1342177296,i32*%aT,align 4
store i8*%aR,i8**%d,align 8
%aU=getelementptr inbounds i8,i8*%aR,i64 4
%aV=bitcast i8*%aU to i32*
store i32 0,i32*%aV,align 1
%aW=bitcast i8*%aR to i32*
store i32 4,i32*%aW,align 4
%aX=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%aY=getelementptr inbounds i8,i8*%aR,i64 8
%aZ=bitcast i8*%aY to i8**
store i8*%aX,i8**%aZ,align 8
%a0=getelementptr inbounds i8,i8*%aR,i64 16
%a1=bitcast i8*%a0 to i32*
store i32 2,i32*%a1,align 4
%a2=call i8*@sml_alloc(i32 inreg 20)#0
%a3=getelementptr inbounds i8,i8*%a2,i64 -4
%a4=bitcast i8*%a3 to i32*
store i32 1342177296,i32*%a4,align 4
%a5=load i8*,i8**%d,align 8
%a6=bitcast i8*%a2 to i8**
store i8*%a5,i8**%a6,align 8
%a7=getelementptr inbounds i8,i8*%a2,i64 8
%a8=bitcast i8*%a7 to i8**
store i8*null,i8**%a8,align 8
%a9=getelementptr inbounds i8,i8*%a2,i64 16
%ba=bitcast i8*%a9 to i32*
store i32 3,i32*%ba,align 4
store i8*null,i8**%e,align 8
%bb=call i8*@sml_alloc(i32 inreg 20)#0
%bc=getelementptr inbounds i8,i8*%bb,i64 -4
%bd=bitcast i8*%bc to i32*
store i32 1342177296,i32*%bd,align 4
store i8*%bb,i8**%g,align 8
%be=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bf=bitcast i8*%bb to i8**
store i8*%be,i8**%bf,align 8
%bg=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%bh=getelementptr inbounds i8,i8*%bb,i64 8
%bi=bitcast i8*%bh to i8**
store i8*%bg,i8**%bi,align 8
%bj=getelementptr inbounds i8,i8*%bb,i64 16
%bk=bitcast i8*%bj to i32*
store i32 3,i32*%bk,align 4
%bl=call i8*@sml_alloc(i32 inreg 20)#0
%bm=getelementptr inbounds i8,i8*%bl,i64 -4
%bn=bitcast i8*%bm to i32*
store i32 1342177296,i32*%bn,align 4
%bo=load i8*,i8**%f,align 8
%bp=bitcast i8*%bl to i8**
store i8*%bo,i8**%bp,align 8
%bq=load i8*,i8**%g,align 8
%br=getelementptr inbounds i8,i8*%bl,i64 8
%bs=bitcast i8*%br to i8**
store i8*%bq,i8**%bs,align 8
%bt=getelementptr inbounds i8,i8*%bl,i64 16
%bu=bitcast i8*%bt to i32*
store i32 3,i32*%bu,align 4
ret i8*%bl
bv:
%bw=getelementptr inbounds i8,i8*%t,i64 8
%bx=bitcast i8*%bw to i8**
%by=load i8*,i8**%bx,align 8
store i8*%by,i8**%d,align 8
%bz=bitcast i8*%by to i8**
%bA=load i8*,i8**%bz,align 8
store i8*%bA,i8**%e,align 8
%bB=getelementptr inbounds i8,i8*%by,i64 8
%bC=bitcast i8*%bB to i8**
%bD=load i8*,i8**%bC,align 8
store i8*%bD,i8**%g,align 8
%bE=getelementptr inbounds i8,i8*%by,i64 16
%bF=bitcast i8*%bE to i8**
%bG=load i8*,i8**%bF,align 8
store i8*%bG,i8**%h,align 8
%bH=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%bI=getelementptr inbounds i8,i8*%bH,i64 16
%bJ=bitcast i8*%bI to i8*(i8*,i8*)**
%bK=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bJ,align 8
%bL=bitcast i8*%bH to i8**
%bM=load i8*,i8**%bL,align 8
store i8*%bM,i8**%i,align 8
%bN=call i8*@sml_alloc(i32 inreg 20)#0
%bO=getelementptr inbounds i8,i8*%bN,i64 -4
%bP=bitcast i8*%bO to i32*
store i32 1342177296,i32*%bP,align 4
store i8*%bN,i8**%k,align 8
%bQ=load i8*,i8**%f,align 8
%bR=bitcast i8*%bN to i8**
store i8*%bQ,i8**%bR,align 8
%bS=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%bT=getelementptr inbounds i8,i8*%bN,i64 8
%bU=bitcast i8*%bT to i8**
store i8*%bS,i8**%bU,align 8
%bV=getelementptr inbounds i8,i8*%bN,i64 16
%bW=bitcast i8*%bV to i32*
store i32 3,i32*%bW,align 4
%bX=call i8*@sml_alloc(i32 inreg 28)#0
%bY=getelementptr inbounds i8,i8*%bX,i64 -4
%bZ=bitcast i8*%bY to i32*
store i32 1342177304,i32*%bZ,align 4
%b0=load i8*,i8**%k,align 8
store i8*null,i8**%k,align 8
%b1=bitcast i8*%bX to i8**
store i8*%b0,i8**%b1,align 8
%b2=getelementptr inbounds i8,i8*%bX,i64 8
%b3=bitcast i8*%b2 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation11compileDeclE_401 to void(...)*),void(...)**%b3,align 8
%b4=getelementptr inbounds i8,i8*%bX,i64 16
%b5=bitcast i8*%b4 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation11compileDeclE_401 to void(...)*),void(...)**%b5,align 8
%b6=getelementptr inbounds i8,i8*%bX,i64 24
%b7=bitcast i8*%b6 to i32*
store i32 -2147483647,i32*%b7,align 4
%b8=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%b9=call fastcc i8*%bK(i8*inreg%b8,i8*inreg%bX)
%ca=getelementptr inbounds i8,i8*%b9,i64 16
%cb=bitcast i8*%ca to i8*(i8*,i8*)**
%cc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%cb,align 8
%cd=bitcast i8*%b9 to i8**
%ce=load i8*,i8**%cd,align 8
%cf=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cg=getelementptr inbounds i8,i8*%cf,i64 24
%ch=bitcast i8*%cg to i8**
%ci=load i8*,i8**%ch,align 8
%cj=call fastcc i8*%cc(i8*inreg%ce,i8*inreg%ci)
store i8*%cj,i8**%d,align 8
%ck=call i8*@sml_alloc(i32 inreg 36)#0
%cl=getelementptr inbounds i8,i8*%ck,i64 -4
%cm=bitcast i8*%cl to i32*
store i32 1342177312,i32*%cm,align 4
store i8*%ck,i8**%i,align 8
%cn=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%co=bitcast i8*%ck to i8**
store i8*%cn,i8**%co,align 8
%cp=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%cq=getelementptr inbounds i8,i8*%ck,i64 8
%cr=bitcast i8*%cq to i8**
store i8*%cp,i8**%cr,align 8
%cs=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%ct=getelementptr inbounds i8,i8*%ck,i64 16
%cu=bitcast i8*%ct to i8**
store i8*%cs,i8**%cu,align 8
%cv=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cw=getelementptr inbounds i8,i8*%ck,i64 24
%cx=bitcast i8*%cw to i8**
store i8*%cv,i8**%cx,align 8
%cy=getelementptr inbounds i8,i8*%ck,i64 32
%cz=bitcast i8*%cy to i32*
store i32 15,i32*%cz,align 4
%cA=call i8*@sml_alloc(i32 inreg 20)#0
%cB=getelementptr inbounds i8,i8*%cA,i64 -4
%cC=bitcast i8*%cB to i32*
store i32 1342177296,i32*%cC,align 4
store i8*%cA,i8**%d,align 8
%cD=getelementptr inbounds i8,i8*%cA,i64 4
%cE=bitcast i8*%cD to i32*
store i32 0,i32*%cE,align 1
%cF=bitcast i8*%cA to i32*
store i32 3,i32*%cF,align 4
%cG=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%cH=getelementptr inbounds i8,i8*%cA,i64 8
%cI=bitcast i8*%cH to i8**
store i8*%cG,i8**%cI,align 8
%cJ=getelementptr inbounds i8,i8*%cA,i64 16
%cK=bitcast i8*%cJ to i32*
store i32 2,i32*%cK,align 4
%cL=call i8*@sml_alloc(i32 inreg 20)#0
%cM=getelementptr inbounds i8,i8*%cL,i64 -4
%cN=bitcast i8*%cM to i32*
store i32 1342177296,i32*%cN,align 4
%cO=load i8*,i8**%d,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*null,i8**%cR,align 8
%cS=getelementptr inbounds i8,i8*%cL,i64 16
%cT=bitcast i8*%cS to i32*
store i32 3,i32*%cT,align 4
store i8*null,i8**%e,align 8
%cU=call i8*@sml_alloc(i32 inreg 20)#0
%cV=getelementptr inbounds i8,i8*%cU,i64 -4
%cW=bitcast i8*%cV to i32*
store i32 1342177296,i32*%cW,align 4
store i8*%cU,i8**%g,align 8
%cX=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%cY=bitcast i8*%cU to i8**
store i8*%cX,i8**%cY,align 8
%cZ=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%c0=getelementptr inbounds i8,i8*%cU,i64 8
%c1=bitcast i8*%c0 to i8**
store i8*%cZ,i8**%c1,align 8
%c2=getelementptr inbounds i8,i8*%cU,i64 16
%c3=bitcast i8*%c2 to i32*
store i32 3,i32*%c3,align 4
%c4=call i8*@sml_alloc(i32 inreg 20)#0
%c5=getelementptr inbounds i8,i8*%c4,i64 -4
%c6=bitcast i8*%c5 to i32*
store i32 1342177296,i32*%c6,align 4
%c7=load i8*,i8**%f,align 8
%c8=bitcast i8*%c4 to i8**
store i8*%c7,i8**%c8,align 8
%c9=load i8*,i8**%g,align 8
%da=getelementptr inbounds i8,i8*%c4,i64 8
%db=bitcast i8*%da to i8**
store i8*%c9,i8**%db,align 8
%dc=getelementptr inbounds i8,i8*%c4,i64 16
%dd=bitcast i8*%dc to i32*
store i32 3,i32*%dd,align 4
ret i8*%c4
de:
%df=getelementptr inbounds i8,i8*%t,i64 8
%dg=bitcast i8*%df to i8**
%dh=load i8*,i8**%dg,align 8
store i8*%dh,i8**%e,align 8
%di=getelementptr inbounds i8,i8*%dh,i64 8
%dj=bitcast i8*%di to i8**
%dk=load i8*,i8**%dj,align 8
store i8*%dk,i8**%g,align 8
%dl=bitcast i8*%dh to i8***
%dm=load i8**,i8***%dl,align 8
%dn=load i8*,i8**%dm,align 8
%do=bitcast i8*%dn to i32*
%dp=load i32,i32*%do,align 4
%dq=getelementptr inbounds i8,i8*%dn,i64 8
%dr=bitcast i8*%dq to i8**
%ds=load i8*,i8**%dr,align 8
store i8*%ds,i8**%h,align 8
%dt=load i8**,i8***%dl,align 8
%du=load i8*,i8**%dt,align 8
%dv=getelementptr inbounds i8,i8*%du,i64 16
%dw=bitcast i8*%dv to i8**
%dx=load i8*,i8**%dw,align 8
store i8*%dx,i8**%i,align 8
%dy=call i8*@sml_alloc(i32 inreg 28)#0
%dz=getelementptr inbounds i8,i8*%dy,i64 -4
%dA=bitcast i8*%dz to i32*
store i32 1342177304,i32*%dA,align 4
store i8*%dy,i8**%d,align 8
%dB=getelementptr inbounds i8,i8*%dy,i64 4
%dC=bitcast i8*%dB to i32*
store i32 0,i32*%dC,align 1
%dD=bitcast i8*%dy to i32*
store i32%dp,i32*%dD,align 4
%dE=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%dF=getelementptr inbounds i8,i8*%dy,i64 8
%dG=bitcast i8*%dF to i8**
store i8*%dE,i8**%dG,align 8
%dH=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%dI=getelementptr inbounds i8,i8*%dy,i64 16
%dJ=bitcast i8*%dI to i8**
store i8*%dH,i8**%dJ,align 8
%dK=getelementptr inbounds i8,i8*%dy,i64 24
%dL=bitcast i8*%dK to i32*
store i32 6,i32*%dL,align 4
%dM=bitcast i8**%e to i8***
%dN=load i8**,i8***%dM,align 8
store i8*null,i8**%e,align 8
%dO=load i8*,i8**%dN,align 8
%dP=getelementptr inbounds i8,i8*%dO,i64 8
%dQ=bitcast i8*%dP to i8**
%dR=load i8*,i8**%dQ,align 8
%dS=load i8*,i8**%f,align 8
%dT=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%dU=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%dT,i8*inreg%dS,i8*inreg%dR)
store i8*%dU,i8**%e,align 8
%dV=call i8*@sml_alloc(i32 inreg 28)#0
%dW=getelementptr inbounds i8,i8*%dV,i64 -4
%dX=bitcast i8*%dW to i32*
store i32 1342177304,i32*%dX,align 4
store i8*%dV,i8**%h,align 8
%dY=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dZ=bitcast i8*%dV to i8**
store i8*%dY,i8**%dZ,align 8
%d0=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%d1=getelementptr inbounds i8,i8*%dV,i64 8
%d2=bitcast i8*%d1 to i8**
store i8*%d0,i8**%d2,align 8
%d3=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%d4=getelementptr inbounds i8,i8*%dV,i64 16
%d5=bitcast i8*%d4 to i8**
store i8*%d3,i8**%d5,align 8
%d6=getelementptr inbounds i8,i8*%dV,i64 24
%d7=bitcast i8*%d6 to i32*
store i32 7,i32*%d7,align 4
%d8=call i8*@sml_alloc(i32 inreg 20)#0
%d9=getelementptr inbounds i8,i8*%d8,i64 -4
%ea=bitcast i8*%d9 to i32*
store i32 1342177296,i32*%ea,align 4
store i8*%d8,i8**%d,align 8
%eb=getelementptr inbounds i8,i8*%d8,i64 4
%ec=bitcast i8*%eb to i32*
store i32 0,i32*%ec,align 1
%ed=bitcast i8*%d8 to i32*
store i32 2,i32*%ed,align 4
%ee=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%ef=getelementptr inbounds i8,i8*%d8,i64 8
%eg=bitcast i8*%ef to i8**
store i8*%ee,i8**%eg,align 8
%eh=getelementptr inbounds i8,i8*%d8,i64 16
%ei=bitcast i8*%eh to i32*
store i32 2,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**%d,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 i8**
store i8*null,i8**%ep,align 8
%eq=getelementptr inbounds i8,i8*%ej,i64 16
%er=bitcast i8*%eq to i32*
store i32 3,i32*%er,align 4
store i8*null,i8**%e,align 8
%es=call i8*@sml_alloc(i32 inreg 20)#0
%et=getelementptr inbounds i8,i8*%es,i64 -4
%eu=bitcast i8*%et to i32*
store i32 1342177296,i32*%eu,align 4
store i8*%es,i8**%g,align 8
%ev=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ew=bitcast i8*%es to i8**
store i8*%ev,i8**%ew,align 8
%ex=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ey=getelementptr inbounds i8,i8*%es,i64 8
%ez=bitcast i8*%ey to i8**
store i8*%ex,i8**%ez,align 8
%eA=getelementptr inbounds i8,i8*%es,i64 16
%eB=bitcast i8*%eA to i32*
store i32 3,i32*%eB,align 4
%eC=call i8*@sml_alloc(i32 inreg 20)#0
%eD=getelementptr inbounds i8,i8*%eC,i64 -4
%eE=bitcast i8*%eD to i32*
store i32 1342177296,i32*%eE,align 4
%eF=load i8*,i8**%f,align 8
%eG=bitcast i8*%eC to i8**
store i8*%eF,i8**%eG,align 8
%eH=load i8*,i8**%g,align 8
%eI=getelementptr inbounds i8,i8*%eC,i64 8
%eJ=bitcast i8*%eI to i8**
store i8*%eH,i8**%eJ,align 8
%eK=getelementptr inbounds i8,i8*%eC,i64 16
%eL=bitcast i8*%eK to i32*
store i32 3,i32*%eL,align 4
ret i8*%eC
eM:
store i8*null,i8**%f,align 8
store i8*null,i8**%j,align 8
%eN=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%eN,i8**%d,align 8
%eO=call i8*@sml_alloc(i32 inreg 28)#0
%eP=getelementptr inbounds i8,i8*%eO,i64 -4
%eQ=bitcast i8*%eP to i32*
store i32 1342177304,i32*%eQ,align 4
store i8*%eO,i8**%e,align 8
%eR=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%eS=bitcast i8*%eO to i8**
store i8*%eR,i8**%eS,align 8
%eT=getelementptr inbounds i8,i8*%eO,i64 8
%eU=bitcast i8*%eT to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aN,i64 0,i32 2,i64 0),i8**%eU,align 8
%eV=getelementptr inbounds i8,i8*%eO,i64 16
%eW=bitcast i8*%eV to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[27x i8]}>,<{[4x i8],i32,[27x i8]}>*@aO,i64 0,i32 2,i64 0),i8**%eW,align 8
%eX=getelementptr inbounds i8,i8*%eO,i64 24
%eY=bitcast i8*%eX to i32*
store i32 7,i32*%eY,align 4
%eZ=call i8*@sml_alloc(i32 inreg 60)#0
%e0=getelementptr inbounds i8,i8*%eZ,i64 -4
%e1=bitcast i8*%e0 to i32*
store i32 1342177336,i32*%e1,align 4
%e2=getelementptr inbounds i8,i8*%eZ,i64 56
%e3=bitcast i8*%e2 to i32*
store i32 1,i32*%e3,align 4
%e4=load i8*,i8**%e,align 8
%e5=bitcast i8*%eZ to i8**
store i8*%e4,i8**%e5,align 8
call void@sml_raise(i8*inreg%eZ)#1
unreachable
e6:
store i8*null,i8**%f,align 8
store i8*null,i8**%j,align 8
%e7=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%e7,i8**%d,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
store i8*%e8,i8**%e,align 8
%fb=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%fc=bitcast i8*%e8 to i8**
store i8*%fb,i8**%fc,align 8
%fd=getelementptr inbounds i8,i8*%e8,i64 8
%fe=bitcast i8*%fd to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aL,i64 0,i32 2,i64 0),i8**%fe,align 8
%ff=getelementptr inbounds i8,i8*%e8,i64 16
%fg=bitcast i8*%ff to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[23x i8]}>,<{[4x i8],i32,[23x i8]}>*@aM,i64 0,i32 2,i64 0),i8**%fg,align 8
%fh=getelementptr inbounds i8,i8*%e8,i64 24
%fi=bitcast i8*%fh to i32*
store i32 7,i32*%fi,align 4
%fj=call i8*@sml_alloc(i32 inreg 60)#0
%fk=getelementptr inbounds i8,i8*%fj,i64 -4
%fl=bitcast i8*%fk to i32*
store i32 1342177336,i32*%fl,align 4
%fm=getelementptr inbounds i8,i8*%fj,i64 56
%fn=bitcast i8*%fm to i32*
store i32 1,i32*%fn,align 4
%fo=load i8*,i8**%e,align 8
%fp=bitcast i8*%fj to i8**
store i8*%fo,i8**%fp,align 8
call void@sml_raise(i8*inreg%fj)#1
unreachable
fq:
store i8*null,i8**%j,align 8
%fr=getelementptr inbounds i8,i8*%t,i64 8
%fs=bitcast i8*%fr to i8**
%ft=load i8*,i8**%fs,align 8
%fu=bitcast i8*%ft to i8**
%fv=load i8*,i8**%fu,align 8
store i8*%fv,i8**%d,align 8
%fw=getelementptr inbounds i8,i8*%ft,i64 8
%fx=bitcast i8*%fw to i8**
%fy=load i8*,i8**%fx,align 8
store i8*%fy,i8**%e,align 8
%fz=call i8*@sml_alloc(i32 inreg 20)#0
%fA=getelementptr inbounds i8,i8*%fz,i64 -4
%fB=bitcast i8*%fA to i32*
store i32 1342177296,i32*%fB,align 4
store i8*%fz,i8**%g,align 8
%fC=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%fD=bitcast i8*%fz to i8**
store i8*%fC,i8**%fD,align 8
%fE=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%fF=getelementptr inbounds i8,i8*%fz,i64 8
%fG=bitcast i8*%fF to i8**
store i8*%fE,i8**%fG,align 8
%fH=getelementptr inbounds i8,i8*%fz,i64 16
%fI=bitcast i8*%fH to i32*
store i32 3,i32*%fI,align 4
%fJ=call i8*@sml_alloc(i32 inreg 20)#0
%fK=getelementptr inbounds i8,i8*%fJ,i64 -4
%fL=bitcast i8*%fK to i32*
store i32 1342177296,i32*%fL,align 4
store i8*%fJ,i8**%d,align 8
%fM=getelementptr inbounds i8,i8*%fJ,i64 4
%fN=bitcast i8*%fM to i32*
store i32 0,i32*%fN,align 1
%fO=bitcast i8*%fJ to i32*
store i32 1,i32*%fO,align 4
%fP=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%fQ=getelementptr inbounds i8,i8*%fJ,i64 8
%fR=bitcast i8*%fQ to i8**
store i8*%fP,i8**%fR,align 8
%fS=getelementptr inbounds i8,i8*%fJ,i64 16
%fT=bitcast i8*%fS to i32*
store i32 2,i32*%fT,align 4
%fU=call i8*@sml_alloc(i32 inreg 20)#0
%fV=getelementptr inbounds i8,i8*%fU,i64 -4
%fW=bitcast i8*%fV to i32*
store i32 1342177296,i32*%fW,align 4
store i8*%fU,i8**%e,align 8
%fX=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%fY=bitcast i8*%fU to i8**
store i8*%fX,i8**%fY,align 8
%fZ=getelementptr inbounds i8,i8*%fU,i64 8
%f0=bitcast i8*%fZ to i8**
store i8*null,i8**%f0,align 8
%f1=getelementptr inbounds i8,i8*%fU,i64 16
%f2=bitcast i8*%f1 to i32*
store i32 3,i32*%f2,align 4
%f3=call i8*@sml_alloc(i32 inreg 20)#0
%f4=getelementptr inbounds i8,i8*%f3,i64 -4
%f5=bitcast i8*%f4 to i32*
store i32 1342177296,i32*%f5,align 4
%f6=load i8*,i8**%f,align 8
%f7=bitcast i8*%f3 to i8**
store i8*%f6,i8**%f7,align 8
%f8=load i8*,i8**%e,align 8
%f9=getelementptr inbounds i8,i8*%f3,i64 8
%ga=bitcast i8*%f9 to i8**
store i8*%f8,i8**%ga,align 8
%gb=getelementptr inbounds i8,i8*%f3,i64 16
%gc=bitcast i8*%gb to i32*
store i32 3,i32*%gc,align 4
ret i8*%f3
gd:
store i8*null,i8**%j,align 8
%ge=getelementptr inbounds i8,i8*%t,i64 8
%gf=bitcast i8*%ge to i8**
%gg=load i8*,i8**%gf,align 8
store i8*%gg,i8**%e,align 8
%gh=bitcast i8*%gg to i8**
%gi=load i8*,i8**%gh,align 8
store i8*%gi,i8**%g,align 8
%gj=getelementptr inbounds i8,i8*%gg,i64 8
%gk=bitcast i8*%gj to i8**
%gl=load i8*,i8**%gk,align 8
store i8*%gl,i8**%d,align 8
%gm=call i8*@sml_alloc(i32 inreg 28)#0
%gn=bitcast i8*%gm to i32*
%go=getelementptr inbounds i8,i8*%gm,i64 -4
%gp=bitcast i8*%go to i32*
store i32 1342177304,i32*%gp,align 4
%gq=getelementptr inbounds i8,i8*%gm,i64 4
%gr=bitcast i8*%gq to i32*
store i32 0,i32*%gr,align 1
store i32 1,i32*%gn,align 4
%gs=load i8*,i8**%g,align 8
%gt=getelementptr inbounds i8,i8*%gm,i64 8
%gu=bitcast i8*%gt to i8**
store i8*%gs,i8**%gu,align 8
%gv=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%gw=getelementptr inbounds i8,i8*%gm,i64 16
%gx=bitcast i8*%gw to i8**
store i8*%gv,i8**%gx,align 8
%gy=getelementptr inbounds i8,i8*%gm,i64 24
%gz=bitcast i8*%gy to i32*
store i32 6,i32*%gz,align 4
%gA=call fastcc i8*@_SMLFN15EmitTypedLambda11allocExnTagE(i8*inreg%gm)
store i8*%gA,i8**%d,align 8
%gB=call i8*@sml_alloc(i32 inreg 20)#0
%gC=getelementptr inbounds i8,i8*%gB,i64 -4
%gD=bitcast i8*%gC to i32*
store i32 1342177296,i32*%gD,align 4
%gE=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%gF=bitcast i8*%gB to i8**
store i8*%gE,i8**%gF,align 8
%gG=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%gH=getelementptr inbounds i8,i8*%gB,i64 8
%gI=bitcast i8*%gH to i8**
store i8*%gG,i8**%gI,align 8
%gJ=getelementptr inbounds i8,i8*%gB,i64 16
%gK=bitcast i8*%gJ to i32*
store i32 3,i32*%gK,align 4
%gL=call fastcc i8*@_SMLLN19DatatypeCompilation12addExternExnE_306(i8*inreg%gB)
%gM=bitcast i8*%gL to i8**
%gN=load i8*,i8**%gM,align 8
store i8*%gN,i8**%e,align 8
%gO=load i8*,i8**@_SMLZN3Loc5nolocE,align 8
%gP=call fastcc i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg%gO)
%gQ=getelementptr inbounds i8,i8*%gP,i64 16
%gR=bitcast i8*%gQ to i8*(i8*,i8*)**
%gS=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%gR,align 8
%gT=bitcast i8*%gP to i8**
%gU=load i8*,i8**%gT,align 8
%gV=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%gW=call fastcc i8*%gS(i8*inreg%gU,i8*inreg%gV)
store i8*%gW,i8**%d,align 8
%gX=load i8*,i8**@_SMLZN12BuiltinTypes8exntagTyE,align 8
store i8*%gX,i8**%f,align 8
%gY=call i8*@sml_alloc(i32 inreg 20)#0
%gZ=getelementptr inbounds i8,i8*%gY,i64 -4
%g0=bitcast i8*%gZ to i32*
store i32 1342177296,i32*%g0,align 4
store i8*%gY,i8**%h,align 8
%g1=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%g2=bitcast i8*%gY to i8**
store i8*%g1,i8**%g2,align 8
%g3=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%g4=getelementptr inbounds i8,i8*%gY,i64 8
%g5=bitcast i8*%g4 to i8**
store i8*%g3,i8**%g5,align 8
%g6=getelementptr inbounds i8,i8*%gY,i64 16
%g7=bitcast i8*%g6 to i32*
store i32 3,i32*%g7,align 4
%g8=call i8*@sml_alloc(i32 inreg 28)#0
%g9=getelementptr inbounds i8,i8*%g8,i64 -4
%ha=bitcast i8*%g9 to i32*
store i32 1342177304,i32*%ha,align 4
store i8*%g8,i8**%f,align 8
%hb=getelementptr inbounds i8,i8*%g8,i64 20
%hc=bitcast i8*%hb to i32*
store i32 0,i32*%hc,align 1
%hd=load i8*,i8**%d,align 8
%he=bitcast i8*%g8 to i8**
store i8*null,i8**%d,align 8
store i8*%hd,i8**%he,align 8
%hf=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%hg=getelementptr inbounds i8,i8*%g8,i64 8
%hh=bitcast i8*%hg to i8**
store i8*%hf,i8**%hh,align 8
%hi=getelementptr inbounds i8,i8*%g8,i64 16
%hj=bitcast i8*%hi to i32*
store i32 1,i32*%hj,align 4
%hk=getelementptr inbounds i8,i8*%g8,i64 24
%hl=bitcast i8*%hk to i32*
store i32 3,i32*%hl,align 4
%hm=call i8*@sml_alloc(i32 inreg 20)#0
%hn=getelementptr inbounds i8,i8*%hm,i64 -4
%ho=bitcast i8*%hn to i32*
store i32 1342177296,i32*%ho,align 4
store i8*%hm,i8**%d,align 8
%hp=bitcast i8*%hm to i64*
store i64 0,i64*%hp,align 4
%hq=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%hr=getelementptr inbounds i8,i8*%hm,i64 8
%hs=bitcast i8*%hr to i8**
store i8*%hq,i8**%hs,align 8
%ht=getelementptr inbounds i8,i8*%hm,i64 16
%hu=bitcast i8*%ht to i32*
store i32 2,i32*%hu,align 4
%hv=call i8*@sml_alloc(i32 inreg 20)#0
%hw=getelementptr inbounds i8,i8*%hv,i64 -4
%hx=bitcast i8*%hw to i32*
store i32 1342177296,i32*%hx,align 4
%hy=load i8*,i8**%d,align 8
%hz=bitcast i8*%hv to i8**
store i8*%hy,i8**%hz,align 8
%hA=getelementptr inbounds i8,i8*%hv,i64 8
%hB=bitcast i8*%hA to i8**
store i8*null,i8**%hB,align 8
%hC=getelementptr inbounds i8,i8*%hv,i64 16
%hD=bitcast i8*%hC to i32*
store i32 3,i32*%hD,align 4
store i8*null,i8**%f,align 8
%hE=call i8*@sml_alloc(i32 inreg 20)#0
%hF=getelementptr inbounds i8,i8*%hE,i64 -4
%hG=bitcast i8*%hF to i32*
store i32 1342177296,i32*%hG,align 4
store i8*%hE,i8**%g,align 8
%hH=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%hI=bitcast i8*%hE to i8**
store i8*%hH,i8**%hI,align 8
%hJ=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%hK=getelementptr inbounds i8,i8*%hE,i64 8
%hL=bitcast i8*%hK to i8**
store i8*%hJ,i8**%hL,align 8
%hM=getelementptr inbounds i8,i8*%hE,i64 16
%hN=bitcast i8*%hM to i32*
store i32 3,i32*%hN,align 4
%hO=call i8*@sml_alloc(i32 inreg 20)#0
%hP=getelementptr inbounds i8,i8*%hO,i64 -4
%hQ=bitcast i8*%hP to i32*
store i32 1342177296,i32*%hQ,align 4
%hR=load i8*,i8**%e,align 8
%hS=bitcast i8*%hO to i8**
store i8*%hR,i8**%hS,align 8
%hT=load i8*,i8**%g,align 8
%hU=getelementptr inbounds i8,i8*%hO,i64 8
%hV=bitcast i8*%hU to i8**
store i8*%hT,i8**%hV,align 8
%hW=getelementptr inbounds i8,i8*%hO,i64 16
%hX=bitcast i8*%hW to i32*
store i32 3,i32*%hX,align 4
ret i8*%hO
hY:
store i8*null,i8**%j,align 8
%hZ=getelementptr inbounds i8,i8*%t,i64 8
%h0=bitcast i8*%hZ to i8**
%h1=load i8*,i8**%h0,align 8
%h2=bitcast i8*%h1 to i8**
%h3=load i8*,i8**%h2,align 8
store i8*%h3,i8**%d,align 8
%h4=getelementptr inbounds i8,i8*%h1,i64 8
%h5=bitcast i8*%h4 to i8**
%h6=load i8*,i8**%h5,align 8
store i8*%h6,i8**%g,align 8
%h7=call i8*@sml_alloc(i32 inreg 20)#0
%h8=getelementptr inbounds i8,i8*%h7,i64 -4
%h9=bitcast i8*%h8 to i32*
store i32 1342177296,i32*%h9,align 4
%ia=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%ib=bitcast i8*%h7 to i8**
store i8*%ia,i8**%ib,align 8
%ic=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%id=getelementptr inbounds i8,i8*%h7,i64 8
%ie=bitcast i8*%id to i8**
store i8*%ic,i8**%ie,align 8
%if=getelementptr inbounds i8,i8*%h7,i64 16
%ig=bitcast i8*%if to i32*
store i32 3,i32*%ig,align 4
%ih=call fastcc i8*@_SMLLN19DatatypeCompilation12addExternExnE_306(i8*inreg%h7)
%ii=bitcast i8*%ih to i8**
%ij=load i8*,i8**%ii,align 8
store i8*%ij,i8**%d,align 8
%ik=getelementptr inbounds i8,i8*%ih,i64 8
%il=bitcast i8*%ik to i8**
%im=load i8*,i8**%il,align 8
store i8*%im,i8**%e,align 8
%in=call i8*@sml_alloc(i32 inreg 20)#0
%io=getelementptr inbounds i8,i8*%in,i64 -4
%ip=bitcast i8*%io to i32*
store i32 1342177296,i32*%ip,align 4
store i8*%in,i8**%f,align 8
%iq=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ir=bitcast i8*%in to i8**
store i8*%iq,i8**%ir,align 8
%is=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%it=getelementptr inbounds i8,i8*%in,i64 8
%iu=bitcast i8*%it to i8**
store i8*%is,i8**%iu,align 8
%iv=getelementptr inbounds i8,i8*%in,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**%e,align 8
%iA=getelementptr inbounds i8,i8*%ix,i64 4
%iB=bitcast i8*%iA to i32*
store i32 0,i32*%iB,align 1
%iC=bitcast i8*%ix to i32*
store i32 1,i32*%iC,align 4
%iD=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%iE=getelementptr inbounds i8,i8*%ix,i64 8
%iF=bitcast i8*%iE to i8**
store i8*%iD,i8**%iF,align 8
%iG=getelementptr inbounds i8,i8*%ix,i64 16
%iH=bitcast i8*%iG to i32*
store i32 2,i32*%iH,align 4
%iI=call i8*@sml_alloc(i32 inreg 20)#0
%iJ=getelementptr inbounds i8,i8*%iI,i64 -4
%iK=bitcast i8*%iJ to i32*
store i32 1342177296,i32*%iK,align 4
store i8*%iI,i8**%f,align 8
%iL=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%iM=bitcast i8*%iI to i8**
store i8*%iL,i8**%iM,align 8
%iN=getelementptr inbounds i8,i8*%iI,i64 8
%iO=bitcast i8*%iN to i8**
store i8*null,i8**%iO,align 8
%iP=getelementptr inbounds i8,i8*%iI,i64 16
%iQ=bitcast i8*%iP to i32*
store i32 3,i32*%iQ,align 4
%iR=call i8*@sml_alloc(i32 inreg 20)#0
%iS=getelementptr inbounds i8,i8*%iR,i64 -4
%iT=bitcast i8*%iS to i32*
store i32 1342177296,i32*%iT,align 4
%iU=load i8*,i8**%d,align 8
%iV=bitcast i8*%iR to i8**
store i8*%iU,i8**%iV,align 8
%iW=load i8*,i8**%f,align 8
%iX=getelementptr inbounds i8,i8*%iR,i64 8
%iY=bitcast i8*%iX to i8**
store i8*%iW,i8**%iY,align 8
%iZ=getelementptr inbounds i8,i8*%iR,i64 16
%i0=bitcast i8*%iZ to i32*
store i32 3,i32*%i0,align 4
ret i8*%iR
i1:
%i2=getelementptr inbounds i8,i8*%t,i64 8
%i3=bitcast i8*%i2 to i8**
%i4=load i8*,i8**%i3,align 8
%i5=getelementptr inbounds i8,i8*%i4,i64 8
%i6=bitcast i8*%i5 to i8**
%i7=load i8*,i8**%i6,align 8
store i8*%i7,i8**%e,align 8
%i8=bitcast i8*%i4 to i8**
%i9=load i8*,i8**%i8,align 8
%ja=load i8*,i8**%j,align 8
store i8*null,i8**%j,align 8
%jb=call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%ja,i8*inreg%r,i8*inreg%i9)
store i8*%jb,i8**%d,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**%g,align 8
%jf=getelementptr inbounds i8,i8*%jc,i64 20
%jg=bitcast i8*%jf to i32*
store i32 0,i32*%jg,align 1
%jh=load i8*,i8**%d,align 8
%ji=bitcast i8*%jc to i8**
store i8*null,i8**%d,align 8
store i8*%jh,i8**%ji,align 8
%jj=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%jk=getelementptr inbounds i8,i8*%jc,i64 8
%jl=bitcast i8*%jk to i8**
store i8*%jj,i8**%jl,align 8
%jm=getelementptr inbounds i8,i8*%jc,i64 16
%jn=bitcast i8*%jm to i32*
store i32 0,i32*%jn,align 4
%jo=getelementptr inbounds i8,i8*%jc,i64 24
%jp=bitcast i8*%jo to i32*
store i32 3,i32*%jp,align 4
%jq=call i8*@sml_alloc(i32 inreg 20)#0
%jr=getelementptr inbounds i8,i8*%jq,i64 -4
%js=bitcast i8*%jr to i32*
store i32 1342177296,i32*%js,align 4
store i8*%jq,i8**%d,align 8
%jt=bitcast i8*%jq to i64*
store i64 0,i64*%jt,align 4
%ju=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%jv=getelementptr inbounds i8,i8*%jq,i64 8
%jw=bitcast i8*%jv to i8**
store i8*%ju,i8**%jw,align 8
%jx=getelementptr inbounds i8,i8*%jq,i64 16
%jy=bitcast i8*%jx to i32*
store i32 2,i32*%jy,align 4
%jz=call i8*@sml_alloc(i32 inreg 20)#0
%jA=getelementptr inbounds i8,i8*%jz,i64 -4
%jB=bitcast i8*%jA to i32*
store i32 1342177296,i32*%jB,align 4
%jC=load i8*,i8**%d,align 8
%jD=bitcast i8*%jz to i8**
store i8*%jC,i8**%jD,align 8
%jE=getelementptr inbounds i8,i8*%jz,i64 8
%jF=bitcast i8*%jE to i8**
store i8*null,i8**%jF,align 8
%jG=getelementptr inbounds i8,i8*%jz,i64 16
%jH=bitcast i8*%jG to i32*
store i32 3,i32*%jH,align 4
store i8*null,i8**%e,align 8
%jI=call i8*@sml_alloc(i32 inreg 20)#0
%jJ=getelementptr inbounds i8,i8*%jI,i64 -4
%jK=bitcast i8*%jJ to i32*
store i32 1342177296,i32*%jK,align 4
store i8*%jI,i8**%g,align 8
%jL=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%jM=bitcast i8*%jI to i8**
store i8*%jL,i8**%jM,align 8
%jN=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%jO=getelementptr inbounds i8,i8*%jI,i64 8
%jP=bitcast i8*%jO to i8**
store i8*%jN,i8**%jP,align 8
%jQ=getelementptr inbounds i8,i8*%jI,i64 16
%jR=bitcast i8*%jQ to i32*
store i32 3,i32*%jR,align 4
%jS=call i8*@sml_alloc(i32 inreg 20)#0
%jT=getelementptr inbounds i8,i8*%jS,i64 -4
%jU=bitcast i8*%jT to i32*
store i32 1342177296,i32*%jU,align 4
%jV=load i8*,i8**%f,align 8
%jW=bitcast i8*%jS to i8**
store i8*%jV,i8**%jW,align 8
%jX=load i8*,i8**%g,align 8
%jY=getelementptr inbounds i8,i8*%jS,i64 8
%jZ=bitcast i8*%jY to i8**
store i8*%jX,i8**%jZ,align 8
%j0=getelementptr inbounds i8,i8*%jS,i64 16
%j1=bitcast i8*%j0 to i32*
store i32 3,i32*%j1,align 4
ret i8*%jS
j2:
store i8*null,i8**%j,align 8
%j3=getelementptr inbounds i8,i8*%t,i64 8
%j4=bitcast i8*%j3 to i8**
%j5=load i8*,i8**%j4,align 8
store i8*%j5,i8**%d,align 8
%j6=getelementptr inbounds i8,i8*%j5,i64 8
%j7=bitcast i8*%j6 to i8**
%j8=load i8*,i8**%j7,align 8
store i8*%j8,i8**%e,align 8
%j9=call fastcc i8*@_SMLFN5ExnID3Map4findE(i32 inreg 1,i32 inreg 8)
%ka=getelementptr inbounds i8,i8*%j9,i64 16
%kb=bitcast i8*%ka to i8*(i8*,i8*)**
%kc=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%kb,align 8
%kd=bitcast i8*%j9 to i8**
%ke=load i8*,i8**%kd,align 8
store i8*%ke,i8**%h,align 8
%kf=load i8*,i8**%f,align 8
%kg=getelementptr inbounds i8,i8*%kf,i64 8
%kh=bitcast i8*%kg to i8**
%ki=load i8*,i8**%kh,align 8
store i8*%ki,i8**%g,align 8
%kj=bitcast i8**%d to i32**
%kk=load i32*,i32**%kj,align 8
store i8*null,i8**%d,align 8
%kl=load i32,i32*%kk,align 4
%km=call i8*@sml_alloc(i32 inreg 20)#0
%kn=getelementptr inbounds i8,i8*%km,i64 -4
%ko=bitcast i8*%kn to i32*
store i32 1342177296,i32*%ko,align 4
%kp=getelementptr inbounds i8,i8*%km,i64 12
%kq=bitcast i8*%kp to i32*
store i32 0,i32*%kq,align 1
%kr=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%ks=bitcast i8*%km to i8**
store i8*%kr,i8**%ks,align 8
%kt=getelementptr inbounds i8,i8*%km,i64 8
%ku=bitcast i8*%kt to i32*
store i32%kl,i32*%ku,align 4
%kv=getelementptr inbounds i8,i8*%km,i64 16
%kw=bitcast i8*%kv to i32*
store i32 1,i32*%kw,align 4
%kx=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%ky=call fastcc i8*%kc(i8*inreg%kx,i8*inreg%km)
%kz=icmp eq i8*%ky,null
br i1%kz,label%kA,label%kU
kA:
store i8*null,i8**%f,align 8
store i8*null,i8**%e,align 8
%kB=load i8*,i8**@_SMLZN3Bug3BugE,align 8
store i8*%kB,i8**%d,align 8
%kC=call i8*@sml_alloc(i32 inreg 28)#0
%kD=getelementptr inbounds i8,i8*%kC,i64 -4
%kE=bitcast i8*%kD to i32*
store i32 1342177304,i32*%kE,align 4
store i8*%kC,i8**%e,align 8
%kF=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%kG=bitcast i8*%kC to i8**
store i8*%kF,i8**%kG,align 8
%kH=getelementptr inbounds i8,i8*%kC,i64 8
%kI=bitcast i8*%kH to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aJ,i64 0,i32 2,i64 0),i8**%kI,align 8
%kJ=getelementptr inbounds i8,i8*%kC,i64 16
%kK=bitcast i8*%kJ to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[25x i8]}>,<{[4x i8],i32,[25x i8]}>*@aK,i64 0,i32 2,i64 0),i8**%kK,align 8
%kL=getelementptr inbounds i8,i8*%kC,i64 24
%kM=bitcast i8*%kL to i32*
store i32 7,i32*%kM,align 4
%kN=call i8*@sml_alloc(i32 inreg 60)#0
%kO=getelementptr inbounds i8,i8*%kN,i64 -4
%kP=bitcast i8*%kO to i32*
store i32 1342177336,i32*%kP,align 4
%kQ=getelementptr inbounds i8,i8*%kN,i64 56
%kR=bitcast i8*%kQ to i32*
store i32 1,i32*%kR,align 4
%kS=load i8*,i8**%e,align 8
%kT=bitcast i8*%kN to i8**
store i8*%kS,i8**%kT,align 8
call void@sml_raise(i8*inreg%kN)#1
unreachable
kU:
%kV=bitcast i8*%ky to i8**
%kW=load i8*,i8**%kV,align 8
store i8*%kW,i8**%d,align 8
%kX=getelementptr inbounds i8,i8*%kW,i64 16
%kY=bitcast i8*%kX to i8**
%kZ=load i8*,i8**%kY,align 8
store i8*%kZ,i8**%g,align 8
%k0=load i8*,i8**@_SMLZN3Loc5nolocE,align 8
store i8*%k0,i8**%h,align 8
%k1=call i8*@sml_alloc(i32 inreg 20)#0
%k2=getelementptr inbounds i8,i8*%k1,i64 -4
%k3=bitcast i8*%k2 to i32*
store i32 1342177296,i32*%k3,align 4
store i8*%k1,i8**%i,align 8
%k4=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%k5=bitcast i8*%k1 to i8**
store i8*%k4,i8**%k5,align 8
%k6=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%k7=getelementptr inbounds i8,i8*%k1,i64 8
%k8=bitcast i8*%k7 to i8**
store i8*%k6,i8**%k8,align 8
%k9=getelementptr inbounds i8,i8*%k1,i64 16
%la=bitcast i8*%k9 to i32*
store i32 3,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**%h,align 8
%le=getelementptr inbounds i8,i8*%lb,i64 4
%lf=bitcast i8*%le to i32*
store i32 0,i32*%lf,align 1
%lg=bitcast i8*%lb to i32*
store i32 26,i32*%lg,align 4
%lh=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%li=getelementptr inbounds i8,i8*%lb,i64 8
%lj=bitcast i8*%li to i8**
store i8*%lh,i8**%lj,align 8
%lk=getelementptr inbounds i8,i8*%lb,i64 16
%ll=bitcast i8*%lk to i32*
store i32 2,i32*%ll,align 4
%lm=call i8*@sml_alloc(i32 inreg 20)#0
%ln=getelementptr inbounds i8,i8*%lm,i64 -4
%lo=bitcast i8*%ln to i32*
store i32 1342177296,i32*%lo,align 4
store i8*%lm,i8**%d,align 8
%lp=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%lq=bitcast i8*%lm to i8**
store i8*%lp,i8**%lq,align 8
%lr=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%ls=getelementptr inbounds i8,i8*%lm,i64 8
%lt=bitcast i8*%ls to i8**
store i8*%lr,i8**%lt,align 8
%lu=getelementptr inbounds i8,i8*%lm,i64 16
%lv=bitcast i8*%lu to i32*
store i32 3,i32*%lv,align 4
%lw=call i8*@sml_alloc(i32 inreg 28)#0
%lx=getelementptr inbounds i8,i8*%lw,i64 -4
%ly=bitcast i8*%lx to i32*
store i32 1342177304,i32*%ly,align 4
store i8*%lw,i8**%e,align 8
%lz=getelementptr inbounds i8,i8*%lw,i64 20
%lA=bitcast i8*%lz to i32*
store i32 0,i32*%lA,align 1
%lB=bitcast i8*%lw to i8**
%lC=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
store i8*%lC,i8**%lB,align 8
%lD=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%lE=getelementptr inbounds i8,i8*%lw,i64 8
%lF=bitcast i8*%lE to i8**
store i8*%lD,i8**%lF,align 8
%lG=getelementptr inbounds i8,i8*%lw,i64 16
%lH=bitcast i8*%lG to i32*
store i32 0,i32*%lH,align 4
%lI=getelementptr inbounds i8,i8*%lw,i64 24
%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=bitcast i8*%lK to i64*
store i64 0,i64*%lN,align 4
%lO=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%lP=getelementptr inbounds i8,i8*%lK,i64 8
%lQ=bitcast i8*%lP to i8**
store i8*%lO,i8**%lQ,align 8
%lR=getelementptr inbounds i8,i8*%lK,i64 16
%lS=bitcast i8*%lR to i32*
store i32 2,i32*%lS,align 4
%lT=call i8*@sml_alloc(i32 inreg 20)#0
%lU=getelementptr inbounds i8,i8*%lT,i64 -4
%lV=bitcast i8*%lU to i32*
store i32 1342177296,i32*%lV,align 4
store i8*%lT,i8**%e,align 8
%lW=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%lX=bitcast i8*%lT to i8**
store i8*%lW,i8**%lX,align 8
%lY=getelementptr inbounds i8,i8*%lT,i64 8
%lZ=bitcast i8*%lY to i8**
store i8*null,i8**%lZ,align 8
%l0=getelementptr inbounds i8,i8*%lT,i64 16
%l1=bitcast i8*%l0 to i32*
store i32 3,i32*%l1,align 4
%l2=call i8*@sml_alloc(i32 inreg 20)#0
%l3=getelementptr inbounds i8,i8*%l2,i64 -4
%l4=bitcast i8*%l3 to i32*
store i32 1342177296,i32*%l4,align 4
%l5=load i8*,i8**%f,align 8
%l6=bitcast i8*%l2 to i8**
store i8*%l5,i8**%l6,align 8
%l7=load i8*,i8**%e,align 8
%l8=getelementptr inbounds i8,i8*%l2,i64 8
%l9=bitcast i8*%l8 to i8**
store i8*%l7,i8**%l9,align 8
%ma=getelementptr inbounds i8,i8*%l2,i64 16
%mb=bitcast i8*%ma to i32*
store i32 3,i32*%mb,align 4
ret i8*%l2
mc:
store i8*null,i8**%j,align 8
%md=getelementptr inbounds i8,i8*%t,i64 8
%me=bitcast i8*%md to i8**
%mf=load i8*,i8**%me,align 8
store i8*%mf,i8**%g,align 8
%mg=bitcast i8*%mf to i8***
%mh=load i8**,i8***%mg,align 8
%mi=load i8*,i8**%mh,align 8
store i8*%mi,i8**%d,align 8
%mj=getelementptr inbounds i8,i8*%mf,i64 8
%mk=bitcast i8*%mj to i8**
%ml=load i8*,i8**%mk,align 8
store i8*%ml,i8**%h,align 8
%mm=call i8*@sml_alloc(i32 inreg 20)#0
%mn=getelementptr inbounds i8,i8*%mm,i64 -4
%mo=bitcast i8*%mn to i32*
store i32 1342177296,i32*%mo,align 4
%mp=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%mq=bitcast i8*%mm to i8**
store i8*%mp,i8**%mq,align 8
%mr=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%ms=getelementptr inbounds i8,i8*%mm,i64 8
%mt=bitcast i8*%ms to i8**
store i8*%mr,i8**%mt,align 8
%mu=getelementptr inbounds i8,i8*%mm,i64 16
%mv=bitcast i8*%mu to i32*
store i32 3,i32*%mv,align 4
%mw=call fastcc i8*@_SMLLN19DatatypeCompilation11newLocalExnE_304(i8*inreg%mm)
%mx=bitcast i8*%mw to i8**
%my=load i8*,i8**%mx,align 8
store i8*%my,i8**%d,align 8
%mz=getelementptr inbounds i8,i8*%mw,i64 8
%mA=bitcast i8*%mz to i8**
%mB=load i8*,i8**%mA,align 8
store i8*%mB,i8**%e,align 8
%mC=bitcast i8**%g to i8***
%mD=load i8**,i8***%mC,align 8
%mE=load i8*,i8**%mD,align 8
%mF=getelementptr inbounds i8,i8*%mE,i64 8
%mG=bitcast i8*%mF to i8**
%mH=load i8*,i8**%mG,align 8
%mI=bitcast i8*%mH to i32*
%mJ=load i32,i32*%mI,align 4
%mK=getelementptr inbounds i8,i8*%mH,i64 8
%mL=bitcast i8*%mK to i8**
%mM=load i8*,i8**%mL,align 8
store i8*%mM,i8**%i,align 8
%mN=load i8*,i8**%mD,align 8
%mO=getelementptr inbounds i8,i8*%mN,i64 8
%mP=bitcast i8*%mO to i8**
%mQ=load i8*,i8**%mP,align 8
%mR=getelementptr inbounds i8,i8*%mQ,i64 16
%mS=bitcast i8*%mR to i8**
%mT=load i8*,i8**%mS,align 8
store i8*%mT,i8**%g,align 8
%mU=call i8*@sml_alloc(i32 inreg 28)#0
%mV=getelementptr inbounds i8,i8*%mU,i64 -4
%mW=bitcast i8*%mV to i32*
store i32 1342177304,i32*%mW,align 4
store i8*%mU,i8**%f,align 8
%mX=getelementptr inbounds i8,i8*%mU,i64 4
%mY=bitcast i8*%mX to i32*
store i32 0,i32*%mY,align 1
%mZ=bitcast i8*%mU to i32*
store i32%mJ,i32*%mZ,align 4
%m0=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%m1=getelementptr inbounds i8,i8*%mU,i64 8
%m2=bitcast i8*%m1 to i8**
store i8*%m0,i8**%m2,align 8
%m3=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%m4=getelementptr inbounds i8,i8*%mU,i64 16
%m5=bitcast i8*%m4 to i8**
store i8*%m3,i8**%m5,align 8
%m6=getelementptr inbounds i8,i8*%mU,i64 24
%m7=bitcast i8*%m6 to i32*
store i32 6,i32*%m7,align 4
%m8=call i8*@sml_alloc(i32 inreg 20)#0
%m9=getelementptr inbounds i8,i8*%m8,i64 -4
%na=bitcast i8*%m9 to i32*
store i32 1342177296,i32*%na,align 4
store i8*%m8,i8**%g,align 8
%nb=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%nc=bitcast i8*%m8 to i8**
store i8*%nb,i8**%nc,align 8
%nd=load i8*,i8**%h,align 8
%ne=getelementptr inbounds i8,i8*%m8,i64 8
%nf=bitcast i8*%ne to i8**
store i8*%nd,i8**%nf,align 8
%ng=getelementptr inbounds i8,i8*%m8,i64 16
%nh=bitcast i8*%ng to i32*
store i32 3,i32*%nh,align 4
%ni=call i8*@sml_alloc(i32 inreg 20)#0
%nj=getelementptr inbounds i8,i8*%ni,i64 -4
%nk=bitcast i8*%nj to i32*
store i32 1342177296,i32*%nk,align 4
store i8*%ni,i8**%i,align 8
%nl=getelementptr inbounds i8,i8*%ni,i64 4
%nm=bitcast i8*%nl to i32*
store i32 0,i32*%nm,align 1
%nn=bitcast i8*%ni to i32*
store i32 26,i32*%nn,align 4
%no=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%np=getelementptr inbounds i8,i8*%ni,i64 8
%nq=bitcast i8*%np to i8**
store i8*%no,i8**%nq,align 8
%nr=getelementptr inbounds i8,i8*%ni,i64 16
%ns=bitcast i8*%nr to i32*
store i32 2,i32*%ns,align 4
%nt=call i8*@sml_alloc(i32 inreg 28)#0
%nu=getelementptr inbounds i8,i8*%nt,i64 -4
%nv=bitcast i8*%nu to i32*
store i32 1342177304,i32*%nv,align 4
store i8*%nt,i8**%f,align 8
%nw=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%nx=bitcast i8*%nt to i8**
store i8*%nw,i8**%nx,align 8
%ny=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%nz=getelementptr inbounds i8,i8*%nt,i64 8
%nA=bitcast i8*%nz to i8**
store i8*%ny,i8**%nA,align 8
%nB=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%nC=getelementptr inbounds i8,i8*%nt,i64 16
%nD=bitcast i8*%nC to i8**
store i8*%nB,i8**%nD,align 8
%nE=getelementptr inbounds i8,i8*%nt,i64 24
%nF=bitcast i8*%nE to i32*
store i32 7,i32*%nF,align 4
%nG=call i8*@sml_alloc(i32 inreg 20)#0
%nH=getelementptr inbounds i8,i8*%nG,i64 -4
%nI=bitcast i8*%nH to i32*
store i32 1342177296,i32*%nI,align 4
store i8*%nG,i8**%e,align 8
%nJ=getelementptr inbounds i8,i8*%nG,i64 4
%nK=bitcast i8*%nJ to i32*
store i32 0,i32*%nK,align 1
%nL=bitcast i8*%nG to i32*
store i32 2,i32*%nL,align 4
%nM=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%nN=getelementptr inbounds i8,i8*%nG,i64 8
%nO=bitcast i8*%nN to i8**
store i8*%nM,i8**%nO,align 8
%nP=getelementptr inbounds i8,i8*%nG,i64 16
%nQ=bitcast i8*%nP to i32*
store i32 2,i32*%nQ,align 4
%nR=call i8*@sml_alloc(i32 inreg 20)#0
%nS=getelementptr inbounds i8,i8*%nR,i64 -4
%nT=bitcast i8*%nS to i32*
store i32 1342177296,i32*%nT,align 4
%nU=load i8*,i8**%e,align 8
%nV=bitcast i8*%nR to i8**
store i8*%nU,i8**%nV,align 8
%nW=getelementptr inbounds i8,i8*%nR,i64 8
%nX=bitcast i8*%nW to i8**
store i8*null,i8**%nX,align 8
%nY=getelementptr inbounds i8,i8*%nR,i64 16
%nZ=bitcast i8*%nY to i32*
store i32 3,i32*%nZ,align 4
store i8*null,i8**%f,align 8
%n0=call i8*@sml_alloc(i32 inreg 20)#0
%n1=getelementptr inbounds i8,i8*%n0,i64 -4
%n2=bitcast i8*%n1 to i32*
store i32 1342177296,i32*%n2,align 4
store i8*%n0,i8**%g,align 8
%n3=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%n4=bitcast i8*%n0 to i8**
store i8*%n3,i8**%n4,align 8
%n5=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%n6=getelementptr inbounds i8,i8*%n0,i64 8
%n7=bitcast i8*%n6 to i8**
store i8*%n5,i8**%n7,align 8
%n8=getelementptr inbounds i8,i8*%n0,i64 16
%n9=bitcast i8*%n8 to i32*
store i32 3,i32*%n9,align 4
%oa=call i8*@sml_alloc(i32 inreg 20)#0
%ob=getelementptr inbounds i8,i8*%oa,i64 -4
%oc=bitcast i8*%ob to i32*
store i32 1342177296,i32*%oc,align 4
%od=load i8*,i8**%d,align 8
%oe=bitcast i8*%oa to i8**
store i8*%od,i8**%oe,align 8
%of=load i8*,i8**%g,align 8
%og=getelementptr inbounds i8,i8*%oa,i64 8
%oh=bitcast i8*%og to i8**
store i8*%of,i8**%oh,align 8
%oi=getelementptr inbounds i8,i8*%oa,i64 16
%oj=bitcast i8*%oi to i32*
store i32 3,i32*%oj,align 4
ret i8*%oa
ok:
store i8*null,i8**%j,align 8
%ol=getelementptr inbounds i8,i8*%t,i64 8
%om=bitcast i8*%ol to i8**
%on=load i8*,i8**%om,align 8
%oo=bitcast i8*%on to i8**
%op=load i8*,i8**%oo,align 8
store i8*%op,i8**%d,align 8
%oq=getelementptr inbounds i8,i8*%op,i64 8
%or=bitcast i8*%oq to i8**
%os=load i8*,i8**%or,align 8
store i8*%os,i8**%g,align 8
%ot=getelementptr inbounds i8,i8*%op,i64 16
%ou=bitcast i8*%ot to i8**
%ov=load i8*,i8**%ou,align 8
store i8*%ov,i8**%h,align 8
%ow=getelementptr inbounds i8,i8*%on,i64 8
%ox=bitcast i8*%ow to i8**
%oy=load i8*,i8**%ox,align 8
store i8*%oy,i8**%i,align 8
%oz=call i8*@sml_alloc(i32 inreg 20)#0
%oA=getelementptr inbounds i8,i8*%oz,i64 -4
%oB=bitcast i8*%oA to i32*
store i32 1342177296,i32*%oB,align 4
%oC=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%oD=bitcast i8*%oz to i8**
store i8*%oC,i8**%oD,align 8
%oE=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%oF=getelementptr inbounds i8,i8*%oz,i64 8
%oG=bitcast i8*%oF to i8**
store i8*%oE,i8**%oG,align 8
%oH=getelementptr inbounds i8,i8*%oz,i64 16
%oI=bitcast i8*%oH to i32*
store i32 3,i32*%oI,align 4
%oJ=call fastcc i8*@_SMLLN19DatatypeCompilation11newLocalExnE_304(i8*inreg%oz)
%oK=bitcast i8*%oJ to i8**
%oL=load i8*,i8**%oK,align 8
store i8*%oL,i8**%d,align 8
%oM=getelementptr inbounds i8,i8*%oJ,i64 8
%oN=bitcast i8*%oM to i8**
%oO=load i8*,i8**%oN,align 8
store i8*%oO,i8**%e,align 8
%oP=call i8*@sml_alloc(i32 inreg 28)#0
%oQ=getelementptr inbounds i8,i8*%oP,i64 -4
%oR=bitcast i8*%oQ to i32*
store i32 1342177304,i32*%oR,align 4
%oS=bitcast i8*%oP to i64*
store i64 0,i64*%oS,align 4
%oT=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%oU=getelementptr inbounds i8,i8*%oP,i64 8
%oV=bitcast i8*%oU to i8**
store i8*%oT,i8**%oV,align 8
%oW=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%oX=getelementptr inbounds i8,i8*%oP,i64 16
%oY=bitcast i8*%oX to i8**
store i8*%oW,i8**%oY,align 8
%oZ=getelementptr inbounds i8,i8*%oP,i64 24
%o0=bitcast i8*%oZ to i32*
store i32 6,i32*%o0,align 4
%o1=call fastcc i8*@_SMLFN15EmitTypedLambda11allocExnTagE(i8*inreg%oP)
store i8*%o1,i8**%f,align 8
%o2=load i8*,i8**%i,align 8
%o3=call fastcc i8*@_SMLFN15EmitTypedLambda4emitE(i8*inreg%o2)
%o4=getelementptr inbounds i8,i8*%o3,i64 16
%o5=bitcast i8*%o4 to i8*(i8*,i8*)**
%o6=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%o5,align 8
%o7=bitcast i8*%o3 to i8**
%o8=load i8*,i8**%o7,align 8
%o9=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%pa=call fastcc i8*%o6(i8*inreg%o8,i8*inreg%o9)
store i8*%pa,i8**%f,align 8
%pb=call i8*@sml_alloc(i32 inreg 28)#0
%pc=getelementptr inbounds i8,i8*%pb,i64 -4
%pd=bitcast i8*%pc to i32*
store i32 1342177304,i32*%pd,align 4
store i8*%pb,i8**%g,align 8
%pe=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%pf=bitcast i8*%pb to i8**
store i8*%pe,i8**%pf,align 8
%pg=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%ph=getelementptr inbounds i8,i8*%pb,i64 8
%pi=bitcast i8*%ph to i8**
store i8*%pg,i8**%pi,align 8
%pj=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%pk=getelementptr inbounds i8,i8*%pb,i64 16
%pl=bitcast i8*%pk to i8**
store i8*%pj,i8**%pl,align 8
%pm=getelementptr inbounds i8,i8*%pb,i64 24
%pn=bitcast i8*%pm to i32*
store i32 7,i32*%pn,align 4
%po=call i8*@sml_alloc(i32 inreg 20)#0
%pp=getelementptr inbounds i8,i8*%po,i64 -4
%pq=bitcast i8*%pp to i32*
store i32 1342177296,i32*%pq,align 4
store i8*%po,i8**%e,align 8
%pr=getelementptr inbounds i8,i8*%po,i64 4
%ps=bitcast i8*%pr to i32*
store i32 0,i32*%ps,align 1
%pt=bitcast i8*%po to i32*
store i32 2,i32*%pt,align 4
%pu=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%pv=getelementptr inbounds i8,i8*%po,i64 8
%pw=bitcast i8*%pv to i8**
store i8*%pu,i8**%pw,align 8
%px=getelementptr inbounds i8,i8*%po,i64 16
%py=bitcast i8*%px to i32*
store i32 2,i32*%py,align 4
%pz=call i8*@sml_alloc(i32 inreg 20)#0
%pA=getelementptr inbounds i8,i8*%pz,i64 -4
%pB=bitcast i8*%pA to i32*
store i32 1342177296,i32*%pB,align 4
%pC=load i8*,i8**%e,align 8
%pD=bitcast i8*%pz to i8**
store i8*%pC,i8**%pD,align 8
%pE=getelementptr inbounds i8,i8*%pz,i64 8
%pF=bitcast i8*%pE to i8**
store i8*null,i8**%pF,align 8
%pG=getelementptr inbounds i8,i8*%pz,i64 16
%pH=bitcast i8*%pG to i32*
store i32 3,i32*%pH,align 4
store i8*null,i8**%f,align 8
%pI=call i8*@sml_alloc(i32 inreg 20)#0
%pJ=getelementptr inbounds i8,i8*%pI,i64 -4
%pK=bitcast i8*%pJ to i32*
store i32 1342177296,i32*%pK,align 4
store i8*%pI,i8**%g,align 8
%pL=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%pM=bitcast i8*%pI to i8**
store i8*%pL,i8**%pM,align 8
%pN=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%pO=getelementptr inbounds i8,i8*%pI,i64 8
%pP=bitcast i8*%pO to i8**
store i8*%pN,i8**%pP,align 8
%pQ=getelementptr inbounds i8,i8*%pI,i64 16
%pR=bitcast i8*%pQ to i32*
store i32 3,i32*%pR,align 4
%pS=call i8*@sml_alloc(i32 inreg 20)#0
%pT=getelementptr inbounds i8,i8*%pS,i64 -4
%pU=bitcast i8*%pT to i32*
store i32 1342177296,i32*%pU,align 4
%pV=load i8*,i8**%d,align 8
%pW=bitcast i8*%pS to i8**
store i8*%pV,i8**%pW,align 8
%pX=load i8*,i8**%g,align 8
%pY=getelementptr inbounds i8,i8*%pS,i64 8
%pZ=bitcast i8*%pY to i8**
store i8*%pX,i8**%pZ,align 8
%p0=getelementptr inbounds i8,i8*%pS,i64 16
%p1=bitcast i8*%p0 to i32*
store i32 3,i32*%p1,align 4
ret i8*%pS
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation7compileE_405(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%h,label%k
h:
%i=bitcast i8*%a to i8**
%j=bitcast i8**%d to i8***
br label%n
k:
call void@sml_check(i32 inreg%f)
%l=bitcast i8**%d to i8***
%m=load i8**,i8***%l,align 8
br label%n
n:
%o=phi i8***[%j,%h],[%l,%k]
%p=phi i8**[%i,%h],[%m,%k]
%q=load i8*,i8**%p,align 8
call fastcc void@_SMLFN9UserError10clearQueueE(i8*inreg%q)
%r=load i8*,i8**%d,align 8
%s=getelementptr inbounds i8,i8*%r,i64 16
%t=bitcast i8*%s to i8**
%u=load i8*,i8**%t,align 8
%v=getelementptr inbounds i8,i8*%r,i64 8
%w=bitcast i8*%v to i8**
%x=load i8*,i8**%w,align 8
%y=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%z=call fastcc i8*@_SMLLN19DatatypeCompilation15compileDeclListE_328(i8*inreg%u,i8*inreg%x,i8*inreg%y)
store i8*%z,i8**%c,align 8
%A=load i8**,i8***%o,align 8
store i8*null,i8**%d,align 8
%B=load i8*,i8**%A,align 8
%C=call fastcc i8*@_SMLFN9UserError9getErrorsE(i8*inreg%B)
store i8*%C,i8**%d,align 8
%D=icmp eq i8*%C,null
br i1%D,label%E,label%J
E:
%F=load i8*,i8**%c,align 8
%G=getelementptr inbounds i8,i8*%F,i64 8
%H=bitcast i8*%G to i8**
%I=load i8*,i8**%H,align 8
ret i8*%I
J:
%K=load i8*,i8**@_SMLZN9UserError10UserErrorsE,align 8
store i8*%K,i8**%c,align 8
%L=call i8*@sml_alloc(i32 inreg 28)#0
%M=getelementptr inbounds i8,i8*%L,i64 -4
%N=bitcast i8*%M to i32*
store i32 1342177304,i32*%N,align 4
store i8*%L,i8**%e,align 8
%O=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%P=bitcast i8*%L to i8**
store i8*%O,i8**%P,align 8
%Q=getelementptr inbounds i8,i8*%L,i64 8
%R=bitcast i8*%Q to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[90x i8]}>,<{[4x i8],i32,[90x i8]}>*@aQ,i64 0,i32 2,i64 0),i8**%R,align 8
%S=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%T=getelementptr inbounds i8,i8*%L,i64 16
%U=bitcast i8*%T to i8**
store i8*%S,i8**%U,align 8
%V=getelementptr inbounds i8,i8*%L,i64 24
%W=bitcast i8*%V to i32*
store i32 7,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
%aa=getelementptr inbounds i8,i8*%X,i64 56
%ab=bitcast i8*%aa to i32*
store i32 1,i32*%ab,align 4
%ac=load i8*,i8**%e,align 8
%ad=bitcast i8*%X to i8**
store i8*%ac,i8**%ad,align 8
call void@sml_raise(i8*inreg%X)#1
unreachable
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_406(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
l:
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%c,align 8
store i8*%b,i8**%d,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%j,label%g
g:
call void@sml_check(i32 inreg%e)
%h=load i8*,i8**%d,align 8
%i=load i8*,i8**%c,align 8
br label%j
j:
%k=phi i8*[%i,%g],[%a,%l]
%m=phi i8*[%h,%g],[%b,%l]
%n=getelementptr inbounds i8,i8*%k,i64 8
%o=bitcast i8*%n to i8**
%p=load i8*,i8**%o,align 8
%q=bitcast i8*%k to i8**
%r=load i8*,i8**%q,align 8
%s=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_327(i8*inreg%p,i8*inreg%r,i8*inreg%m)
ret i8*%s
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_407(i8*inreg%a,i8*inreg%b)#4 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*%b,i8**%c,align 8
%f=bitcast i8*%a to i8**
%g=load i8*,i8**%f,align 8
store i8*%g,i8**%d,align 8
%h=call i8*@sml_alloc(i32 inreg 20)#0
%i=getelementptr inbounds i8,i8*%h,i64 -4
%j=bitcast i8*%i to i32*
store i32 1342177296,i32*%j,align 4
store i8*%h,i8**%e,align 8
%k=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%l=bitcast i8*%h to i8**
store i8*%k,i8**%l,align 8
%m=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%n=getelementptr inbounds i8,i8*%h,i64 8
%o=bitcast i8*%n to i8**
store i8*%m,i8**%o,align 8
%p=getelementptr inbounds i8,i8*%h,i64 16
%q=bitcast i8*%p to i32*
store i32 3,i32*%q,align 4
%r=call i8*@sml_alloc(i32 inreg 28)#0
%s=getelementptr inbounds i8,i8*%r,i64 -4
%t=bitcast i8*%s to i32*
store i32 1342177304,i32*%t,align 4
%u=load i8*,i8**%e,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 void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_406 to void(...)*),void(...)**%x,align 8
%y=getelementptr inbounds i8,i8*%r,i64 16
%z=bitcast i8*%y to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN19DatatypeCompilation10compileExpE_406 to void(...)*),void(...)**%z,align 8
%A=getelementptr inbounds i8,i8*%r,i64 24
%B=bitcast i8*%A to i32*
store i32 -2147483647,i32*%B,align 4
ret i8*%r
}
define fastcc i8*@_SMLFN19DatatypeCompilation10compileExpE(i8*inreg%a)local_unnamed_addr#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
%j=load i8*,i8**getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 1),align 8
%k=getelementptr inbounds i8,i8*%j,i64 16
%l=bitcast i8*%k to i8*(i8*,i8*)**
%m=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%l,align 8
%n=bitcast i8*%j to i8**
%o=load i8*,i8**%n,align 8
%p=tail call fastcc i8*%m(i8*inreg%o,i8*inreg%h)
ret i8*%p
}
define fastcc i8*@_SMLFN19DatatypeCompilation7compileE(i8*inreg%a)local_unnamed_addr#2 gc"smlsharp"{
i:
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%g,label%e
e:
call void@sml_check(i32 inreg%c)
%f=load i8*,i8**%b,align 8
br label%g
g:
%h=phi i8*[%f,%e],[%a,%i]
%j=load i8**,i8***bitcast(i8**getelementptr inbounds(<{[4x i8],i32,[3x i8*]}>,<{[4x i8],i32,[3x i8*]}>*@_SML_gvard79dd64f2e886d15_DatatypeCompilation,i64 0,i32 2,i64 2)to i8***),align 8
%k=load i8*,i8**%j,align 8
%l=tail call fastcc i8*@_SMLLN19DatatypeCompilation7compileE_405(i8*inreg%k,i8*inreg%h)
ret i8*%l
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_426(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_338(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_427(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_342(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_428(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_347(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLL8ruleList_429(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLL8ruleList_350(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLL8ruleList_430(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLL8ruleList_353(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_431(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_370(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_432(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_372(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_433(i8*inreg%a,i8*inreg%b)#4 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN19DatatypeCompilation10compileExpE_374(i8*inreg%b)
ret i8*%c
}
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}
