@sml_check_flag=external local_unnamed_addr global i32
@_SMLZN6TextIO6stdErrE=external local_unnamed_addr global i8*
@_SMLZN7Control12printCommandE=external local_unnamed_addr global i8*
@_SMLZ5Match=external unnamed_addr constant i8*
@a=private unnamed_addr constant<{[4x i8],i32,[16x i8]}><{[4x i8]zeroinitializer,i32 -2147483632,[16x i8]c"ShellUtils.Fail\00"}>,align 8
@b=private unnamed_addr constant<{[4x i8],i32,i8*,i32,[4x i8],i32}><{[4x i8]zeroinitializer,i32 -805306352,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,[16x i8]}>,<{[4x i8],i32,[16x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 1,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL100=private constant<{[4x i8],i32,i8*}><{[4x i8]zeroinitializer,i32 -1879048184,i8*getelementptr inbounds(i8,i8*getelementptr inbounds(<{[4x i8],i32,i8*,i32,[4x i8],i32}>,<{[4x i8],i32,i8*,i32,[4x i8],i32}>*@b,i32 0,i32 0,i32 0),i32 8)}>,align 8
@c=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8)*@_SMLLN10ShellUtils11isPlainCharE_101 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils11isPlainCharE_155 to void(...)*),i32 -2147483647}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c"'\5C''\00"}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8)*@_SMLLN10ShellUtils8escapeShE_104 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils8escapeShE_156 to void(...)*),i32 -2147483647}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"'\00"}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\22\22\00"}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,[1x i8]}><{[4x i8]zeroinitializer,i32 -2147483647,[1x i8]zeroinitializer}>,align 8
@i=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"\5C\5C\00"}>,align 8
@j=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c"\5C^\22\00"}>,align 8
@k=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"^\00"}>,align 8
@l=private unnamed_addr constant<{[4x i8],i32,[3x i8]}><{[4x i8]zeroinitializer,i32 -2147483645,[3x i8]c"^\22\00"}>,align 8
@m=private unnamed_addr constant<{[4x i8],i32,[60x i8]}><{[4x i8]zeroinitializer,i32 -2147483588,[60x i8]c"src/compiler/libs/toolchain/main/ShellUtils.sml:65.11(2056)\00"}>,align 8
@n=private unnamed_addr constant<{[4x i8],i32,[59x i8]}><{[4x i8]zeroinitializer,i32 -2147483589,[59x i8]c"src/compiler/libs/toolchain/main/ShellUtils.sml:61.2(1926)\00"}>,align 8
@o=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLLN10ShellUtils6escapeE_133 to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils6escapeE_163 to void(...)*),i32 -2147483647}>,align 8
@p=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN10ShellUtils5splitE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils5splitE_166 to void(...)*),i32 -2147483647}>,align 8
@q=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c".txt\00"}>,align 8
@r=private unnamed_addr constant<{[4x i8],i32,[4x i8]}><{[4x i8]zeroinitializer,i32 -2147483644,[4x i8]c" > \00"}>,align 8
@s=private unnamed_addr constant<{[4x i8],i32,[5x i8]}><{[4x i8]zeroinitializer,i32 -2147483643,[5x i8]c" 2> \00"}>,align 8
@t=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c"\0A\00"}>,align 8
@u=private unnamed_addr constant<{[4x i8],i32,[61x i8]}><{[4x i8]zeroinitializer,i32 -2147483587,[61x i8]c"src/compiler/libs/toolchain/main/ShellUtils.sml:111.19(3505)\00"}>,align 8
@v=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN10ShellUtils6systemE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils6systemE_167 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN10ShellUtils4FailE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL100,i64 0,i32 2)to i8*)
@w=private unnamed_addr constant<{[4x i8],i32,[2x i8]}><{[4x i8]zeroinitializer,i32 -2147483646,[2x i8]c" \00"}>,align 8
@x=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i8*(i8*)*@_SMLFN10ShellUtils4joinE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils4joinE_168 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN10ShellUtils4joinE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@x,i64 0,i32 2)to i8*)
@_SMLZN10ShellUtils5splitE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@p,i64 0,i32 2)to i8*)
@_SMLZN10ShellUtils6systemE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@v,i64 0,i32 2)to i8*)
@_SML_ftaba043b859f1fb75d4_ShellUtils=external global i8
@y=private unnamed_addr global i8 0
declare void@llvm.gcroot(i8**,i8*)#0
declare i8*@sml_alloc(i32 inreg)local_unnamed_addr#0
declare void@sml_check(i32 inreg)local_unnamed_addr
declare void@sml_gcroot(i8*,void()*,i8*,i8*)local_unnamed_addr#0
declare void@sml_matchcomp_bug()local_unnamed_addr
declare void@sml_raise(i8*inreg)local_unnamed_addr#1
declare i8*@_SMLFN10CharVector3allE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN10CharVector6concatE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__OSProcess6systemE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN18SMLSharp__OSProcess9isSuccessE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN4Char10isAlphaNumE(i8 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List3mapE(i32 inreg,i32 inreg,i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN4List3revE(i32 inreg,i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i32@_SMLFN6Config12HOST__OS__TYPEE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6Config14CMDLINE__MAXLENE(i32 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String10concatWithE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String1_ZE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String3strE(i8 inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN6String9translateE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SMLFN6TextIO6outputE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN8Filename8toStringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN8TempFile6createE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9CoreUtils3catE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring4fullE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring4getcE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring4spanE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare i8*@_SMLFN9Substring6stringE(i8*inreg)local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main145db56e6796da5b_Substring()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main19a59bcdb325454c_SMLSharp_OSProcess()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maince7036f3433e1102_Char()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainadbb5309e852b68c_CharVector()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main03d87556ec7f64b2_List()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main1ef93e13728790b1_String()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main3446b7b079949ccf_text_io()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maine29d9c3af819282f_Filename()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_main12101773783ddc9e_Config()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_maina8c984cf5ab1458f_Control()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainca0e9aa4897964a8_TempFile()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_mainbda7a2fa42fa5d88_CoreUtils()local_unnamed_addr#2 gc"smlsharp"
declare void@_SML_load145db56e6796da5b_Substring(i8*)local_unnamed_addr
declare void@_SML_load19a59bcdb325454c_SMLSharp_OSProcess(i8*)local_unnamed_addr
declare void@_SML_loadce7036f3433e1102_Char(i8*)local_unnamed_addr
declare void@_SML_loadadbb5309e852b68c_CharVector(i8*)local_unnamed_addr
declare void@_SML_load03d87556ec7f64b2_List(i8*)local_unnamed_addr
declare void@_SML_load1ef93e13728790b1_String(i8*)local_unnamed_addr
declare void@_SML_load3446b7b079949ccf_text_io(i8*)local_unnamed_addr
declare void@_SML_loade29d9c3af819282f_Filename(i8*)local_unnamed_addr
declare void@_SML_load12101773783ddc9e_Config(i8*)local_unnamed_addr
declare void@_SML_loada8c984cf5ab1458f_Control(i8*)local_unnamed_addr
declare void@_SML_loadca0e9aa4897964a8_TempFile(i8*)local_unnamed_addr
declare void@_SML_loadbda7a2fa42fa5d88_CoreUtils(i8*)local_unnamed_addr
define private void@_SML_tabba043b859f1fb75d4_ShellUtils()#3{
unreachable
}
define void@_SML_loada043b859f1fb75d4_ShellUtils(i8*%a)local_unnamed_addr#0{
%b=load i8,i8*@y,align 1
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 1,i8*@y,align 1
tail call void@_SML_load145db56e6796da5b_Substring(i8*%a)#0
tail call void@_SML_load19a59bcdb325454c_SMLSharp_OSProcess(i8*%a)#0
tail call void@_SML_loadce7036f3433e1102_Char(i8*%a)#0
tail call void@_SML_loadadbb5309e852b68c_CharVector(i8*%a)#0
tail call void@_SML_load03d87556ec7f64b2_List(i8*%a)#0
tail call void@_SML_load1ef93e13728790b1_String(i8*%a)#0
tail call void@_SML_load3446b7b079949ccf_text_io(i8*%a)#0
tail call void@_SML_loade29d9c3af819282f_Filename(i8*%a)#0
tail call void@_SML_load12101773783ddc9e_Config(i8*%a)#0
tail call void@_SML_loada8c984cf5ab1458f_Control(i8*%a)#0
tail call void@_SML_loadca0e9aa4897964a8_TempFile(i8*%a)#0
tail call void@_SML_loadbda7a2fa42fa5d88_CoreUtils(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabba043b859f1fb75d4_ShellUtils,i8*@_SML_ftaba043b859f1fb75d4_ShellUtils,i8*null)#0
ret void
}
define void@_SML_maina043b859f1fb75d4_ShellUtils()local_unnamed_addr#2 gc"smlsharp"{
%a=load i8,i8*@y,align 1
%b=and i8%a,2
%c=icmp eq i8%b,0
br i1%c,label%e,label%d
d:
ret void
e:
store i8 3,i8*@y,align 1
tail call void@_SML_main145db56e6796da5b_Substring()#2
tail call void@_SML_main19a59bcdb325454c_SMLSharp_OSProcess()#2
tail call void@_SML_maince7036f3433e1102_Char()#2
tail call void@_SML_mainadbb5309e852b68c_CharVector()#2
tail call void@_SML_main03d87556ec7f64b2_List()#2
tail call void@_SML_main1ef93e13728790b1_String()#2
tail call void@_SML_main3446b7b079949ccf_text_io()#2
tail call void@_SML_maine29d9c3af819282f_Filename()#2
tail call void@_SML_main12101773783ddc9e_Config()#2
tail call void@_SML_maina8c984cf5ab1458f_Control()#2
tail call void@_SML_mainca0e9aa4897964a8_TempFile()#2
tail call void@_SML_mainbda7a2fa42fa5d88_CoreUtils()#2
br label%d
}
define internal fastcc i32@_SMLLN10ShellUtils11isPlainCharE_101(i8 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=tail call fastcc i32@_SMLFN4Char10isAlphaNumE(i8 inreg%a)
%g=icmp eq i32%f,0
br i1%g,label%h,label%i
h:
switch i8%a,label%j[
i8 95,label%i
i8 47,label%i
i8 46,label%i
i8 45,label%i
]
i:
ret i32 1
j:
%k=icmp eq i8%a,61
%l=zext i1%k to i32
ret i32%l
}
define internal fastcc i8*@_SMLLN10ShellUtils8escapeShE_104(i8 inreg%a)#2 gc"smlsharp"{
%b=load atomic i32,i32*@sml_check_flag unordered,align 4
%c=icmp eq i32%b,0
br i1%c,label%e,label%d
d:
tail call void@sml_check(i32 inreg%b)
br label%e
e:
%f=icmp eq i8%a,39
br i1%f,label%i,label%g
g:
%h=tail call fastcc i8*@_SMLFN6String3strE(i8 inreg%a)
ret i8*%h
i:
ret i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@d,i64 0,i32 2,i64 0)
}
define internal fastcc i8*@_SMLLN10ShellUtils8escapeShE_109(i8*inreg%a)unnamed_addr#2 gc"smlsharp"{
%b=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
store i8*%a,i8**%b,align 8
%c=load atomic i32,i32*@sml_check_flag unordered,align 4
%d=icmp eq i32%c,0
br i1%d,label%e,label%g
e:
%f=bitcast i8*%a to i32*
br label%j
g:
call void@sml_check(i32 inreg%c)
%h=bitcast i8**%b to i32**
%i=load i32*,i32**%h,align 8
br label%j
j:
%k=phi i32*[%i,%g],[%f,%e]
%l=getelementptr inbounds i32,i32*%k,i64 -1
%m=load i32,i32*%l,align 4
%n=and i32%m,268435455
%o=icmp eq i32%n,1
br i1%o,label%p,label%q
p:
ret i8*getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@g,i64 0,i32 2,i64 0)
q:
%r=call fastcc i8*@_SMLFN6String9translateE(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@e,i64 0,i32 2)to i8*))
%s=getelementptr inbounds i8,i8*%r,i64 16
%t=bitcast i8*%s to i8*(i8*,i8*)**
%u=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%t,align 8
%v=bitcast i8*%r to i8**
%w=load i8*,i8**%v,align 8
%x=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%y=call fastcc i8*%u(i8*inreg%w,i8*inreg%x)
store i8*%y,i8**%b,align 8
%z=call i8*@sml_alloc(i32 inreg 20)#0
%A=getelementptr inbounds i8,i8*%z,i64 -4
%B=bitcast i8*%A to i32*
store i32 1342177296,i32*%B,align 4
%C=bitcast i8*%z to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@f,i64 0,i32 2,i64 0),i8**%C,align 8
%D=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%E=getelementptr inbounds i8,i8*%z,i64 8
%F=bitcast i8*%E to i8**
store i8*%D,i8**%F,align 8
%G=getelementptr inbounds i8,i8*%z,i64 16
%H=bitcast i8*%G to i32*
store i32 3,i32*%H,align 4
%I=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%z)
store i8*%I,i8**%b,align 8
%J=call i8*@sml_alloc(i32 inreg 20)#0
%K=getelementptr inbounds i8,i8*%J,i64 -4
%L=bitcast i8*%K to i32*
store i32 1342177296,i32*%L,align 4
%M=load i8*,i8**%b,align 8
%N=bitcast i8*%J to i8**
store i8*%M,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%J,i64 8
%P=bitcast i8*%O to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@f,i64 0,i32 2,i64 0),i8**%P,align 8
%Q=getelementptr inbounds i8,i8*%J,i64 16
%R=bitcast i8*%Q to i32*
store i32 3,i32*%R,align 4
%S=tail call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%J)
ret i8*%S
}
define internal fastcc i8*@_SMLL15escapeBackslash_113(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]
%k=call fastcc i8*@_SMLFN9Substring4getcE(i8*inreg%i)
%l=icmp eq i8*%k,null
br i1%l,label%ao,label%m
m:
%n=bitcast i8*%k to i8**
%o=load i8*,i8**%n,align 8
%p=load i8,i8*%o,align 1
switch i8%p,label%ao[
i8 34,label%ab
i8 92,label%q
]
q:
store i8*null,i8**%b,align 8
%r=getelementptr inbounds i8,i8*%o,i64 8
%s=bitcast i8*%r to i8**
%t=load i8*,i8**%s,align 8
%u=call fastcc i8*@_SMLL15escapeBackslash_113(i8*inreg%t)
%v=bitcast i8*%u to i8**
%w=load i8*,i8**%v,align 8
store i8*%w,i8**%b,align 8
%x=getelementptr inbounds i8,i8*%w,i64 -4
%y=bitcast i8*%x to i32*
%z=load i32,i32*%y,align 4
%A=and i32%z,268435455
%B=icmp eq i32%A,1
br i1%B,label%C,label%D
C:
ret i8*%u
D:
%E=getelementptr inbounds i8,i8*%u,i64 8
%F=bitcast i8*%E to i8**
%G=load i8*,i8**%F,align 8
store i8*%G,i8**%c,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=bitcast i8*%H to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@i,i64 0,i32 2,i64 0),i8**%K,align 8
%L=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%M=getelementptr inbounds i8,i8*%H,i64 8
%N=bitcast i8*%M to i8**
store i8*%L,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%H,i64 16
%P=bitcast i8*%O to i32*
store i32 3,i32*%P,align 4
%Q=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%H)
store i8*%Q,i8**%b,align 8
%R=call i8*@sml_alloc(i32 inreg 20)#0
%S=getelementptr inbounds i8,i8*%R,i64 -4
%T=bitcast i8*%S to i32*
store i32 1342177296,i32*%T,align 4
%U=load i8*,i8**%b,align 8
%V=bitcast i8*%R to i8**
store i8*%U,i8**%V,align 8
%W=load i8*,i8**%c,align 8
%X=getelementptr inbounds i8,i8*%R,i64 8
%Y=bitcast i8*%X to i8**
store i8*%W,i8**%Y,align 8
%Z=getelementptr inbounds i8,i8*%R,i64 16
%aa=bitcast i8*%Z to i32*
store i32 3,i32*%aa,align 4
ret i8*%R
ab:
%ac=getelementptr inbounds i8,i8*%o,i64 8
%ad=bitcast i8*%ac to i8**
%ae=load i8*,i8**%ad,align 8
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
%ai=bitcast i8*%af to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@j,i64 0,i32 2,i64 0),i8**%ai,align 8
%aj=load i8*,i8**%b,align 8
%ak=getelementptr inbounds i8,i8*%af,i64 8
%al=bitcast i8*%ak to i8**
store i8*%aj,i8**%al,align 8
%am=getelementptr inbounds i8,i8*%af,i64 16
%an=bitcast i8*%am to i32*
store i32 3,i32*%an,align 4
ret i8*%af
ao:
%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
%as=bitcast i8*%ap to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[1x i8]}>,<{[4x i8],i32,[1x i8]}>*@h,i64 0,i32 2,i64 0),i8**%as,align 8
%at=load i8*,i8**%b,align 8
%au=getelementptr inbounds i8,i8*%ap,i64 8
%av=bitcast i8*%au to i8**
store i8*%at,i8**%av,align 8
%aw=getelementptr inbounds i8,i8*%ap,i64 16
%ax=bitcast i8*%aw to i32*
store i32 3,i32*%ax,align 4
ret i8*%ap
}
define internal fastcc i8*@_SMLLN10ShellUtils6escapeE_133(i8*inreg%a)#2 gc"smlsharp"{
q:
%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
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
%k=load atomic i32,i32*@sml_check_flag unordered,align 4
%l=icmp eq i32%k,0
br i1%l,label%o,label%m
m:
call void@sml_check(i32 inreg%k)
%n=load i8*,i8**%i,align 8
br label%o
o:
%p=phi i8*[%n,%m],[%a,%q]
%r=bitcast i8*%p to i32*
%s=load i32,i32*%r,align 4
switch i32%s,label%t[
i32 0,label%P
i32 1,label%L
]
t:
call void@sml_matchcomp_bug()
%u=load i8*,i8**@_SMLZ5Match,align 8
store i8*%u,i8**%i,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**%j,align 8
%y=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%z=bitcast i8*%v to i8**
store i8*%y,i8**%z,align 8
%A=getelementptr inbounds i8,i8*%v,i64 8
%B=bitcast i8*%A to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[59x i8]}>,<{[4x i8],i32,[59x i8]}>*@n,i64 0,i32 2,i64 0),i8**%B,align 8
%C=getelementptr inbounds i8,i8*%v,i64 16
%D=bitcast i8*%C to i32*
store i32 3,i32*%D,align 4
%E=call i8*@sml_alloc(i32 inreg 60)#0
%F=getelementptr inbounds i8,i8*%E,i64 -4
%G=bitcast i8*%F to i32*
store i32 1342177336,i32*%G,align 4
%H=getelementptr inbounds i8,i8*%E,i64 56
%I=bitcast i8*%H to i32*
store i32 1,i32*%I,align 4
%J=load i8*,i8**%j,align 8
%K=bitcast i8*%E to i8**
store i8*%J,i8**%K,align 8
call void@sml_raise(i8*inreg%E)#1
unreachable
L:
%M=getelementptr inbounds i8,i8*%p,i64 8
%N=bitcast i8*%M to i8**
%O=load i8*,i8**%N,align 8
ret i8*%O
P:
%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**%i,align 8
%T=getelementptr inbounds i8,i8*%S,i64 -4
%U=bitcast i8*%T to i32*
%V=load i32,i32*%U,align 4
%W=and i32%V,268435454
%X=icmp eq i32%W,0
br i1%X,label%am,label%Y
Y:
%Z=call fastcc i8*@_SMLFN10CharVector3allE(i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@c,i64 0,i32 2)to i8*))
%aa=getelementptr inbounds i8,i8*%Z,i64 16
%ab=bitcast i8*%aa to i8*(i8*,i8*)**
%ac=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ab,align 8
%ad=bitcast i8*%Z to i8**
%ae=load i8*,i8**%ad,align 8
%af=load i8*,i8**%i,align 8
%ag=call fastcc i8*%ac(i8*inreg%ae,i8*inreg%af)
%ah=bitcast i8*%ag to i32*
%ai=load i32,i32*%ah,align 4
%aj=icmp eq i32%ai,0
br i1%aj,label%am,label%ak
ak:
%al=load i8*,i8**%i,align 8
ret i8*%al
am:
%an=call fastcc i32@_SMLFN6Config12HOST__OS__TYPEE(i32 inreg 0)
switch i32%an,label%ao[
i32 1,label%aM
i32 0,label%aJ
i32 2,label%aG
]
ao:
call void@sml_matchcomp_bug()
%ap=load i8*,i8**@_SMLZ5Match,align 8
store i8*%ap,i8**%i,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**%j,align 8
%at=load i8*,i8**%i,align 8
store i8*null,i8**%i,align 8
%au=bitcast i8*%aq to i8**
store i8*%at,i8**%au,align 8
%av=getelementptr inbounds i8,i8*%aq,i64 8
%aw=bitcast i8*%av to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[60x i8]}>,<{[4x i8],i32,[60x i8]}>*@m,i64 0,i32 2,i64 0),i8**%aw,align 8
%ax=getelementptr inbounds i8,i8*%aq,i64 16
%ay=bitcast i8*%ax to i32*
store i32 3,i32*%ay,align 4
%az=call i8*@sml_alloc(i32 inreg 60)#0
%aA=getelementptr inbounds i8,i8*%az,i64 -4
%aB=bitcast i8*%aA to i32*
store i32 1342177336,i32*%aB,align 4
%aC=getelementptr inbounds i8,i8*%az,i64 56
%aD=bitcast i8*%aC to i32*
store i32 1,i32*%aD,align 4
%aE=load i8*,i8**%j,align 8
%aF=bitcast i8*%az to i8**
store i8*%aE,i8**%aF,align 8
call void@sml_raise(i8*inreg%az)#1
unreachable
aG:
%aH=load i8*,i8**%i,align 8
%aI=tail call fastcc i8*@_SMLLN10ShellUtils8escapeShE_109(i8*inreg%aH)
ret i8*%aI
aJ:
%aK=load i8*,i8**%i,align 8
%aL=tail call fastcc i8*@_SMLLN10ShellUtils8escapeShE_109(i8*inreg%aK)
ret i8*%aL
aM:
%aN=load i8*,i8**%i,align 8
%aO=bitcast i8**%h to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%aO)
call void@llvm.gcroot(i8**%h,i8*null)#0
store i8*%aN,i8**%h,align 8
%aP=load atomic i32,i32*@sml_check_flag unordered,align 4
%aQ=icmp eq i32%aP,0
br i1%aQ,label%aT,label%aR
aR:
call void@sml_check(i32 inreg%aP)
%aS=load i8*,i8**%h,align 8
br label%aT
aT:
%aU=phi i8*[%aS,%aR],[%aN,%aM]
store i8*null,i8**%h,align 8
%aV=call fastcc i8*@_SMLFN9Substring4fullE(i8*inreg%aU)
%aW=bitcast i8**%e to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%aW)
%aX=bitcast i8**%f to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%aX)
%aY=bitcast i8**%g to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%aY)
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
%aZ=bitcast i8**%b to i8*
%a0=bitcast i8**%c to i8*
%a1=bitcast i8**%d to i8*
br label%a2
a2:
%a3=phi i8*[null,%aT],[%du,%dr]
%a4=phi i8*[%aV,%aT],[%dH,%dr]
store i8*%a3,i8**%e,align 8
store i8*%a4,i8**%f,align 8
%a5=load atomic i32,i32*@sml_check_flag unordered,align 4
%a6=icmp eq i32%a5,0
br i1%a6,label%a9,label%a7
a7:
call void@sml_check(i32 inreg%a5)
%a8=load i8*,i8**%f,align 8
br label%a9
a9:
%ba=phi i8*[%a8,%a7],[%a4,%a2]
store i8*null,i8**%f,align 8
call void@llvm.lifetime.start.p0i8(i64 8,i8*%aZ)
call void@llvm.lifetime.start.p0i8(i64 8,i8*%a0)
call void@llvm.lifetime.start.p0i8(i64 8,i8*%a1)
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*%ba,i8**%b,align 8
%bb=load atomic i32,i32*@sml_check_flag unordered,align 4
%bc=icmp eq i32%bb,0
br i1%bc,label%bf,label%bd
bd:
call void@sml_check(i32 inreg%bb)
%be=load i8*,i8**%b,align 8
br label%bf
bf:
%bg=phi i8*[%be,%bd],[%ba,%a9]
%bh=call fastcc i8*@_SMLFN9Substring4getcE(i8*inreg%bg)
%bi=icmp eq i8*%bh,null
br i1%bi,label%bj,label%bk
bj:
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aZ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a0)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a1)
br label%dI
bk:
%bl=bitcast i8*%bh to i8**
%bm=load i8*,i8**%bl,align 8
store i8*%bm,i8**%c,align 8
%bn=load i8,i8*%bm,align 1
switch i8%bn,label%bo[
i8 34,label%c3
i8 92,label%cf
]
bo:
store i8*null,i8**%b,align 8
%bp=getelementptr inbounds i8,i8*%bm,i64 8
%bq=bitcast i8*%bp to i8**
%br=load i8*,i8**%bq,align 8
store i8*%br,i8**%d,align 8
%bs=load i8,i8*%bm,align 1
switch i8%bs,label%bt[
i8 124,label%bu
i8 94,label%bu
i8 62,label%bu
i8 60,label%bu
i8 41,label%bu
i8 40,label%bu
i8 38,label%bu
i8 37,label%bu
]
bt:
br label%bu
bu:
%bv=phi i1[true,%bt],[false,%bo],[false,%bo],[false,%bo],[false,%bo],[false,%bo],[false,%bo],[false,%bo],[false,%bo]
store i8*null,i8**%c,align 8
%bw=load i8,i8*%bm,align 1
%bx=call fastcc i8*@_SMLFN6String3strE(i8 inreg%bw)
store i8*%bx,i8**%b,align 8
%by=call i8*@sml_alloc(i32 inreg 20)#0
%bz=getelementptr inbounds i8,i8*%by,i64 -4
%bA=bitcast i8*%bz to i32*
store i32 1342177296,i32*%bA,align 4
br i1%bv,label%b0,label%bB
bB:
%bC=bitcast i8*%by to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@k,i64 0,i32 2,i64 0),i8**%bC,align 8
%bD=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bE=getelementptr inbounds i8,i8*%by,i64 8
%bF=bitcast i8*%bE to i8**
store i8*%bD,i8**%bF,align 8
%bG=getelementptr inbounds i8,i8*%by,i64 16
%bH=bitcast i8*%bG to i32*
store i32 3,i32*%bH,align 4
%bI=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%by)
store i8*%bI,i8**%b,align 8
%bJ=call i8*@sml_alloc(i32 inreg 20)#0
%bK=getelementptr inbounds i8,i8*%bJ,i64 -4
%bL=bitcast i8*%bK to i32*
store i32 1342177296,i32*%bL,align 4
store i8*%bJ,i8**%c,align 8
%bM=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%bN=bitcast i8*%bJ to i8**
store i8*%bM,i8**%bN,align 8
%bO=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bP=getelementptr inbounds i8,i8*%bJ,i64 8
%bQ=bitcast i8*%bP to i8**
store i8*%bO,i8**%bQ,align 8
%bR=getelementptr inbounds i8,i8*%bJ,i64 16
%bS=bitcast i8*%bR to i32*
store i32 3,i32*%bS,align 4
%bT=call i8*@sml_alloc(i32 inreg 12)#0
%bU=getelementptr inbounds i8,i8*%bT,i64 -4
%bV=bitcast i8*%bU to i32*
store i32 1342177288,i32*%bV,align 4
%bW=load i8*,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 i32*
store i32 1,i32*%bZ,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aZ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a0)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a1)
br label%dn
b0:
store i8*%by,i8**%c,align 8
%b1=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%b2=bitcast i8*%by to i8**
store i8*%b1,i8**%b2,align 8
%b3=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%b4=getelementptr inbounds i8,i8*%by,i64 8
%b5=bitcast i8*%b4 to i8**
store i8*%b3,i8**%b5,align 8
%b6=getelementptr inbounds i8,i8*%by,i64 16
%b7=bitcast i8*%b6 to i32*
store i32 3,i32*%b7,align 4
%b8=call i8*@sml_alloc(i32 inreg 12)#0
%b9=getelementptr inbounds i8,i8*%b8,i64 -4
%ca=bitcast i8*%b9 to i32*
store i32 1342177288,i32*%ca,align 4
%cb=load i8*,i8**%c,align 8
%cc=bitcast i8*%b8 to i8**
store i8*%cb,i8**%cc,align 8
%cd=getelementptr inbounds i8,i8*%b8,i64 8
%ce=bitcast i8*%cd to i32*
store i32 1,i32*%ce,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aZ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a0)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a1)
br label%dn
cf:
store i8*null,i8**%c,align 8
%cg=load i8*,i8**%b,align 8
%ch=call fastcc i8*@_SMLL15escapeBackslash_113(i8*inreg%cg)
store i8*%ch,i8**%c,align 8
%ci=bitcast i8*%ch to i32**
%cj=load i32*,i32**%ci,align 8
%ck=getelementptr inbounds i32,i32*%cj,i64 -1
%cl=load i32,i32*%ck,align 4
%cm=and i32%cl,268435455
%cn=icmp eq i32%cm,1
br i1%cn,label%cw,label%co
co:
store i8*null,i8**%b,align 8
%cp=call i8*@sml_alloc(i32 inreg 12)#0
%cq=getelementptr inbounds i8,i8*%cp,i64 -4
%cr=bitcast i8*%cq to i32*
store i32 1342177288,i32*%cr,align 4
%cs=load i8*,i8**%c,align 8
%ct=bitcast i8*%cp to i8**
store i8*%cs,i8**%ct,align 8
%cu=getelementptr inbounds i8,i8*%cp,i64 8
%cv=bitcast i8*%cu to i32*
store i32 1,i32*%cv,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aZ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a0)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a1)
br label%dn
cw:
%cx=getelementptr inbounds i8,i8*%ch,i64 8
%cy=bitcast i8*%cx to i8**
%cz=load i8*,i8**%cy,align 8
store i8*%cz,i8**%c,align 8
%cA=call i8*@sml_alloc(i32 inreg 20)#0
%cB=getelementptr inbounds i8,i8*%cA,i64 -4
%cC=bitcast i8*%cB to i32*
store i32 1342177296,i32*%cC,align 4
%cD=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%cE=bitcast i8*%cA to i8**
store i8*%cD,i8**%cE,align 8
%cF=load i8*,i8**%c,align 8
%cG=getelementptr inbounds i8,i8*%cA,i64 8
%cH=bitcast i8*%cG to i8**
store i8*%cF,i8**%cH,align 8
%cI=getelementptr inbounds i8,i8*%cA,i64 16
%cJ=bitcast i8*%cI to i32*
store i32 3,i32*%cJ,align 4
%cK=call fastcc i8*@_SMLFN9Substring4spanE(i8*inreg%cA)
%cL=call fastcc i8*@_SMLFN9Substring6stringE(i8*inreg%cK)
store i8*%cL,i8**%b,align 8
%cM=call i8*@sml_alloc(i32 inreg 20)#0
%cN=getelementptr inbounds i8,i8*%cM,i64 -4
%cO=bitcast i8*%cN to i32*
store i32 1342177296,i32*%cO,align 4
store i8*%cM,i8**%d,align 8
%cP=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%cQ=bitcast i8*%cM to i8**
store i8*%cP,i8**%cQ,align 8
%cR=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cS=getelementptr inbounds i8,i8*%cM,i64 8
%cT=bitcast i8*%cS to i8**
store i8*%cR,i8**%cT,align 8
%cU=getelementptr inbounds i8,i8*%cM,i64 16
%cV=bitcast i8*%cU to i32*
store i32 3,i32*%cV,align 4
%cW=call i8*@sml_alloc(i32 inreg 12)#0
%cX=getelementptr inbounds i8,i8*%cW,i64 -4
%cY=bitcast i8*%cX to i32*
store i32 1342177288,i32*%cY,align 4
%cZ=load i8*,i8**%d,align 8
%c0=bitcast i8*%cW to i8**
store i8*%cZ,i8**%c0,align 8
%c1=getelementptr inbounds i8,i8*%cW,i64 8
%c2=bitcast i8*%c1 to i32*
store i32 1,i32*%c2,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aZ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a0)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a1)
br label%dn
c3:
store i8*null,i8**%c,align 8
%c4=getelementptr inbounds i8,i8*%bm,i64 8
%c5=bitcast i8*%c4 to i8**
%c6=load i8*,i8**%c5,align 8
store i8*%c6,i8**%b,align 8
%c7=call i8*@sml_alloc(i32 inreg 20)#0
%c8=getelementptr inbounds i8,i8*%c7,i64 -4
%c9=bitcast i8*%c8 to i32*
store i32 1342177296,i32*%c9,align 4
store i8*%c7,i8**%c,align 8
%da=bitcast i8*%c7 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@j,i64 0,i32 2,i64 0),i8**%da,align 8
%db=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%dc=getelementptr inbounds i8,i8*%c7,i64 8
%dd=bitcast i8*%dc to i8**
store i8*%db,i8**%dd,align 8
%de=getelementptr inbounds i8,i8*%c7,i64 16
%df=bitcast i8*%de to i32*
store i32 3,i32*%df,align 4
%dg=call i8*@sml_alloc(i32 inreg 12)#0
%dh=getelementptr inbounds i8,i8*%dg,i64 -4
%di=bitcast i8*%dh to i32*
store i32 1342177288,i32*%di,align 4
%dj=load i8*,i8**%c,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 i32*
store i32 1,i32*%dm,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aZ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a0)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%a1)
br label%dn
dn:
%do=phi i8*[%bW,%bB],[%cb,%b0],[%cs,%co],[%cZ,%cw],[%dj,%c3]
%dp=phi i8*[%bT,%bB],[%b8,%b0],[%cp,%co],[%cW,%cw],[%dg,%c3]
%dq=icmp eq i8*%dp,null
br i1%dq,label%dI,label%dr
dr:
store i8*%do,i8**%f,align 8
%ds=bitcast i8*%do to i8**
%dt=load i8*,i8**%ds,align 8
store i8*%dt,i8**%g,align 8
%du=call i8*@sml_alloc(i32 inreg 20)#0
%dv=getelementptr inbounds i8,i8*%du,i64 -4
%dw=bitcast i8*%dv to i32*
store i32 1342177296,i32*%dw,align 4
%dx=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
%dy=bitcast i8*%du to i8**
store i8*%dx,i8**%dy,align 8
%dz=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dA=getelementptr inbounds i8,i8*%du,i64 8
%dB=bitcast i8*%dA to i8**
store i8*%dz,i8**%dB,align 8
%dC=getelementptr inbounds i8,i8*%du,i64 16
%dD=bitcast i8*%dC to i32*
store i32 3,i32*%dD,align 4
%dE=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%dF=getelementptr inbounds i8,i8*%dE,i64 8
%dG=bitcast i8*%dF to i8**
%dH=load i8*,i8**%dG,align 8
br label%a2
dI:
%dJ=call fastcc i8*@_SMLFN4List3revE(i32 inreg 1,i32 inreg 8)
%dK=getelementptr inbounds i8,i8*%dJ,i64 16
%dL=bitcast i8*%dK to i8*(i8*,i8*)**
%dM=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%dL,align 8
%dN=bitcast i8*%dJ to i8**
%dO=load i8*,i8**%dN,align 8
%dP=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%dQ=call fastcc i8*%dM(i8*inreg%dO,i8*inreg%dP)
%dR=call fastcc i8*@_SMLFN10CharVector6concatE(i8*inreg%dQ)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aW)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aX)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aY)
store i8*%dR,i8**%h,align 8
%dS=call i8*@sml_alloc(i32 inreg 20)#0
%dT=getelementptr inbounds i8,i8*%dS,i64 -4
%dU=bitcast i8*%dT to i32*
store i32 1342177296,i32*%dU,align 4
%dV=bitcast i8*%dS to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@l,i64 0,i32 2,i64 0),i8**%dV,align 8
%dW=load i8*,i8**%h,align 8
store i8*null,i8**%h,align 8
%dX=getelementptr inbounds i8,i8*%dS,i64 8
%dY=bitcast i8*%dX to i8**
store i8*%dW,i8**%dY,align 8
%dZ=getelementptr inbounds i8,i8*%dS,i64 16
%d0=bitcast i8*%dZ to i32*
store i32 3,i32*%d0,align 4
%d1=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%dS)
store i8*%d1,i8**%h,align 8
%d2=call i8*@sml_alloc(i32 inreg 20)#0
%d3=getelementptr inbounds i8,i8*%d2,i64 -4
%d4=bitcast i8*%d3 to i32*
store i32 1342177296,i32*%d4,align 4
%d5=load i8*,i8**%h,align 8
%d6=bitcast i8*%d2 to i8**
store i8*%d5,i8**%d6,align 8
%d7=getelementptr inbounds i8,i8*%d2,i64 8
%d8=bitcast i8*%d7 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[3x i8]}>,<{[4x i8],i32,[3x i8]}>*@l,i64 0,i32 2,i64 0),i8**%d8,align 8
%d9=getelementptr inbounds i8,i8*%d2,i64 16
%ea=bitcast i8*%d9 to i32*
store i32 3,i32*%ea,align 4
%eb=tail call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%d2)
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aO)
ret i8*%eb
}
define internal fastcc i8*@_SMLL4loop_135(i8*inreg%a,i32 inreg%b,i8*inreg%c,i8*inreg%d)#2 gc"smlsharp"{
l:
%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**%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**%h,align 8
%i=bitcast i8**%h to i32**
br label%j
j:
%k=phi i8*[%c,%l],[%aQ,%aP]
%m=phi i8*[%d,%l],[%a0,%aP]
%n=phi i32[%b,%l],[%ai,%aP]
store i8*%k,i8**%e,align 8
store i8*%m,i8**%f,align 8
%o=load atomic i32,i32*@sml_check_flag unordered,align 4
%p=icmp eq i32%o,0
br i1%p,label%s,label%q
q:
call void@sml_check(i32 inreg%o)
%r=load i8*,i8**%f,align 8
br label%s
s:
%t=phi i8*[%r,%q],[%m,%j]
%u=icmp eq i8*%t,null
br i1%u,label%v,label%X
v:
store i8*null,i8**%h,align 8
%w=call fastcc i8*@_SMLFN4List3revE(i32 inreg 1,i32 inreg 8)
%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=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%D=call fastcc i8*%z(i8*inreg%B,i8*inreg%C)
store i8*%D,i8**%e,align 8
%E=call i8*@sml_alloc(i32 inreg 20)#0
%F=getelementptr inbounds i8,i8*%E,i64 -4
%G=bitcast i8*%F to i32*
store i32 1342177296,i32*%G,align 4
%H=load i8*,i8**%e,align 8
%I=bitcast i8*%E to i8**
store i8*%H,i8**%I,align 8
%J=getelementptr inbounds i8,i8*%E,i64 8
%K=bitcast i8*%J to i8**
store i8*null,i8**%K,align 8
%L=getelementptr inbounds i8,i8*%E,i64 16
%M=bitcast i8*%L to i32*
store i32 3,i32*%M,align 4
store i8*null,i8**%f,align 8
%N=call i8*@sml_alloc(i32 inreg 20)#0
%O=getelementptr inbounds i8,i8*%N,i64 -4
%P=bitcast i8*%O to i32*
store i32 1342177296,i32*%P,align 4
%Q=load i8*,i8**%e,align 8
%R=bitcast i8*%N to i8**
store i8*%Q,i8**%R,align 8
%S=load i8*,i8**%f,align 8
%T=getelementptr inbounds i8,i8*%N,i64 8
%U=bitcast i8*%T to i8**
store i8*%S,i8**%U,align 8
%V=getelementptr inbounds i8,i8*%N,i64 16
%W=bitcast i8*%V to i32*
store i32 3,i32*%W,align 4
ret i8*%N
X:
%Y=bitcast i8*%t to i8**
%Z=load i8*,i8**%Y,align 8
store i8*%Z,i8**%f,align 8
%aa=getelementptr inbounds i8,i8*%t,i64 8
%ab=bitcast i8*%aa to i8**
%ac=load i8*,i8**%ab,align 8
store i8*%ac,i8**%g,align 8
%ad=call fastcc i8*@_SMLLN10ShellUtils6escapeE_133(i8*inreg%Z)
%ae=getelementptr inbounds i8,i8*%ad,i64 -4
%af=bitcast i8*%ae to i32*
%ag=load i32,i32*%af,align 4
%ah=and i32%ag,268435455
%ai=add i32%ah,%n
%aj=load i32*,i32**%i,align 8
%ak=load i32,i32*%aj,align 4
%al=icmp sgt i32%ai,%ak
br i1%al,label%am,label%aP
am:
store i8*null,i8**%h,align 8
%an=call fastcc i8*@_SMLFN4List3revE(i32 inreg 1,i32 inreg 8)
%ao=getelementptr inbounds i8,i8*%an,i64 16
%ap=bitcast i8*%ao to i8*(i8*,i8*)**
%aq=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ap,align 8
%ar=bitcast i8*%an to i8**
%as=load i8*,i8**%ar,align 8
%at=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%au=call fastcc i8*%aq(i8*inreg%as,i8*inreg%at)
store i8*%au,i8**%e,align 8
%av=call i8*@sml_alloc(i32 inreg 20)#0
%aw=getelementptr inbounds i8,i8*%av,i64 -4
%ax=bitcast i8*%aw to i32*
store i32 1342177296,i32*%ax,align 4
store i8*%av,i8**%h,align 8
%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
%aA=load i8*,i8**%g,align 8
store i8*null,i8**%g,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
%aF=call i8*@sml_alloc(i32 inreg 20)#0
%aG=getelementptr inbounds i8,i8*%aF,i64 -4
%aH=bitcast i8*%aG to i32*
store i32 1342177296,i32*%aH,align 4
%aI=load i8*,i8**%e,align 8
%aJ=bitcast i8*%aF to i8**
store i8*%aI,i8**%aJ,align 8
%aK=load i8*,i8**%h,align 8
%aL=getelementptr inbounds i8,i8*%aF,i64 8
%aM=bitcast i8*%aL to i8**
store i8*%aK,i8**%aM,align 8
%aN=getelementptr inbounds i8,i8*%aF,i64 16
%aO=bitcast i8*%aN to i32*
store i32 3,i32*%aO,align 4
ret i8*%aF
aP:
%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**%e,align 8
store i8*null,i8**%e,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
%a0=load i8*,i8**%g,align 8
store i8*null,i8**%g,align 8
br label%j
}
define internal fastcc i8*@_SMLLN10ShellUtils9splitArgsE_136(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=alloca i8*,align 8
%d=alloca i8*,align 8
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
store i8*%a,i8**%d,align 8
store i8*%b,i8**%c,align 8
%e=load atomic i32,i32*@sml_check_flag unordered,align 4
%f=icmp eq i32%e,0
br i1%f,label%g,label%i
g:
%h=bitcast i8*%a to i32*
br label%l
i:
call void@sml_check(i32 inreg%e)
%j=bitcast i8**%d to i32**
%k=load i32*,i32**%j,align 8
br label%l
l:
%m=phi i32*[%k,%i],[%h,%g]
store i8*null,i8**%d,align 8
%n=load i32,i32*%m,align 4
%o=call i8*@sml_alloc(i32 inreg 12)#0
%p=bitcast i8*%o to i32*
%q=getelementptr inbounds i8,i8*%o,i64 -4
%r=bitcast i8*%q to i32*
store i32 1342177288,i32*%r,align 4
store i8*%o,i8**%d,align 8
store i32%n,i32*%p,align 4
%s=getelementptr inbounds i8,i8*%o,i64 8
%t=bitcast i8*%s to i32*
store i32 0,i32*%t,align 4
%u=call i8*@sml_alloc(i32 inreg 28)#0
%v=getelementptr inbounds i8,i8*%u,i64 -4
%w=bitcast i8*%v to i32*
store i32 1342177304,i32*%w,align 4
%x=load i8*,i8**%d,align 8
%y=bitcast i8*%u to i8**
store i8*%x,i8**%y,align 8
%z=getelementptr inbounds i8,i8*%u,i64 8
%A=bitcast i8*%z to void(...)**
store void(...)*bitcast(i8*(i8*,i32,i8*,i8*)*@_SMLL4loop_135 to void(...)*),void(...)**%A,align 8
%B=getelementptr inbounds i8,i8*%u,i64 16
%C=bitcast i8*%B to void(...)**
store void(...)*bitcast(i8*(i8*,i8*,i8*,i8*)*@_SMLL4loop_164 to void(...)*),void(...)**%C,align 8
%D=getelementptr inbounds i8,i8*%u,i64 24
%E=bitcast i8*%D to i32*
store i32 -2147483647,i32*%E,align 4
%F=load i8*,i8**%c,align 8
%G=call fastcc i8*@_SMLL4loop_135(i8*inreg%x,i32 inreg 0,i8*inreg null,i8*inreg%F)
ret i8*%G
}
define fastcc i8*@_SMLFN10ShellUtils5splitE(i8*inreg%a)#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**%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**%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%j
h:
%i=bitcast i8*%a to i8**
br label%m
j:
call void@sml_check(i32 inreg%f)
%k=bitcast i8**%c 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**%d,align 8
%p=call fastcc i8*@_SMLFN6Config14CMDLINE__MAXLENE(i32 inreg 0)
%q=icmp eq i8*%p,null
br i1%q,label%r,label%B
r:
store i8*null,i8**%c,align 8
%s=call i8*@sml_alloc(i32 inreg 20)#0
%t=getelementptr inbounds i8,i8*%s,i64 -4
%u=bitcast i8*%t to i32*
store i32 1342177296,i32*%u,align 4
%v=load i8*,i8**%d,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
ret i8*%s
B:
%C=bitcast i8*%p to i32*
%D=load i32,i32*%C,align 4
%E=call fastcc i8*@_SMLFN6String10concatWithE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@w,i64 0,i32 2,i64 0))
%F=getelementptr inbounds i8,i8*%E,i64 16
%G=bitcast i8*%F to i8*(i8*,i8*)**
%H=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%G,align 8
%I=bitcast i8*%E to i8**
%J=load i8*,i8**%I,align 8
store i8*%J,i8**%e,align 8
%K=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%L=getelementptr inbounds i8,i8*%K,i64 16
%M=bitcast i8*%L to i8*(i8*,i8*)**
%N=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%M,align 8
%O=bitcast i8*%K to i8**
%P=load i8*,i8**%O,align 8
%Q=call fastcc i8*%N(i8*inreg%P,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@o,i64 0,i32 2)to i8*))
%R=getelementptr inbounds i8,i8*%Q,i64 16
%S=bitcast i8*%R to i8*(i8*,i8*)**
%T=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%S,align 8
%U=bitcast i8*%Q to i8**
%V=load i8*,i8**%U,align 8
%W=load i8*,i8**%c,align 8
%X=getelementptr inbounds i8,i8*%W,i64 16
%Y=bitcast i8*%X to i8**
%Z=load i8*,i8**%Y,align 8
%aa=call fastcc i8*%T(i8*inreg%V,i8*inreg%Z)
%ab=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ac=call fastcc i8*%H(i8*inreg%ab,i8*inreg%aa)
%ad=getelementptr inbounds i8,i8*%ac,i64 -4
%ae=bitcast i8*%ad to i32*
%af=load i32,i32*%ae,align 4
%ag=and i32%af,268435455
%ah=call fastcc i8*@_SMLFN6String10concatWithE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@w,i64 0,i32 2,i64 0))
%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**%e,align 8
%an=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%ao=getelementptr inbounds i8,i8*%an,i64 16
%ap=bitcast i8*%ao to i8*(i8*,i8*)**
%aq=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%ap,align 8
%ar=bitcast i8*%an to i8**
%as=load i8*,i8**%ar,align 8
%at=call fastcc i8*%aq(i8*inreg%as,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@o,i64 0,i32 2)to i8*))
%au=getelementptr inbounds i8,i8*%at,i64 16
%av=bitcast i8*%au to i8*(i8*,i8*)**
%aw=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%av,align 8
%ax=bitcast i8*%at to i8**
%ay=load i8*,i8**%ax,align 8
%az=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%aA=getelementptr inbounds i8,i8*%az,i64 8
%aB=bitcast i8*%aA to i8**
%aC=load i8*,i8**%aB,align 8
%aD=call fastcc i8*%aw(i8*inreg%ay,i8*inreg%aC)
%aE=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aF=call fastcc i8*%ak(i8*inreg%aE,i8*inreg%aD)
%aG=getelementptr inbounds i8,i8*%aF,i64 -4
%aH=bitcast i8*%aG to i32*
%aI=load i32,i32*%aH,align 4
%aJ=and i32%aI,268435455
%aK=add i32%D,1
%aL=sub i32%aK,%ag
%aM=sub i32%aL,%aJ
%aN=bitcast i8**%b to i8*
call void@llvm.lifetime.start.p0i8(i64 8,i8*%aN)
call void@llvm.gcroot(i8**%b,i8*null)#0
%aO=call i8*@sml_alloc(i32 inreg 12)#0
%aP=bitcast i8*%aO to i32*
%aQ=getelementptr inbounds i8,i8*%aO,i64 -4
%aR=bitcast i8*%aQ to i32*
store i32 1342177288,i32*%aR,align 4
store i8*%aO,i8**%b,align 8
store i32%aM,i32*%aP,align 4
%aS=getelementptr inbounds i8,i8*%aO,i64 8
%aT=bitcast i8*%aS to i32*
store i32 0,i32*%aT,align 4
%aU=call i8*@sml_alloc(i32 inreg 28)#0
%aV=getelementptr inbounds i8,i8*%aU,i64 -4
%aW=bitcast i8*%aV to i32*
store i32 1342177304,i32*%aW,align 4
%aX=load i8*,i8**%b,align 8
%aY=bitcast i8*%aU to i8**
store i8*%aX,i8**%aY,align 8
%aZ=getelementptr inbounds i8,i8*%aU,i64 8
%a0=bitcast i8*%aZ to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils9splitArgsE_136 to void(...)*),void(...)**%a0,align 8
%a1=getelementptr inbounds i8,i8*%aU,i64 16
%a2=bitcast i8*%a1 to void(...)**
store void(...)*bitcast(i8*(i8*,i8*)*@_SMLLN10ShellUtils9splitArgsE_136 to void(...)*),void(...)**%a2,align 8
%a3=getelementptr inbounds i8,i8*%aU,i64 24
%a4=bitcast i8*%a3 to i32*
store i32 -2147483647,i32*%a4,align 4
call void@llvm.lifetime.end.p0i8(i64 8,i8*%aN)
%a5=load i8*,i8**%d,align 8
%a6=tail call fastcc i8*@_SMLLN10ShellUtils9splitArgsE_136(i8*inreg%aX,i8*inreg%a5)
ret i8*%a6
}
define fastcc i8*@_SMLFN10ShellUtils6systemE(i8*inreg%a)#2 gc"smlsharp"{
%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
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
call void@llvm.gcroot(i8**%d,i8*null)#0
call void@llvm.gcroot(i8**%e,i8*null)#0
call void@llvm.gcroot(i8**%f,i8*null)#0
call void@llvm.gcroot(i8**%g,i8*null)#0
store i8*%a,i8**%b,align 8
%h=load atomic i32,i32*@sml_check_flag unordered,align 4
%i=icmp eq i32%h,0
br i1%i,label%k,label%j
j:
call void@sml_check(i32 inreg%h)
br label%k
k:
%l=call fastcc i8*@_SMLFN6String10concatWithE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@w,i64 0,i32 2,i64 0))
%m=getelementptr inbounds i8,i8*%l,i64 16
%n=bitcast i8*%m to i8*(i8*,i8*)**
%o=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%n,align 8
%p=bitcast i8*%l to i8**
%q=load i8*,i8**%p,align 8
store i8*%q,i8**%c,align 8
%r=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%s=getelementptr inbounds i8,i8*%r,i64 16
%t=bitcast i8*%s to i8*(i8*,i8*)**
%u=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%t,align 8
%v=bitcast i8*%r to i8**
%w=load i8*,i8**%v,align 8
%x=call fastcc i8*%u(i8*inreg%w,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@o,i64 0,i32 2)to i8*))
%y=getelementptr inbounds i8,i8*%x,i64 16
%z=bitcast i8*%y to i8*(i8*,i8*)**
%A=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%z,align 8
%B=bitcast i8*%x to i8**
%C=load i8*,i8**%B,align 8
%D=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%E=call fastcc i8*%A(i8*inreg%C,i8*inreg%D)
%F=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%G=call fastcc i8*%o(i8*inreg%F,i8*inreg%E)
store i8*%G,i8**%b,align 8
%H=call fastcc i8*@_SMLFN8TempFile6createE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@q,i64 0,i32 2,i64 0))
store i8*%H,i8**%c,align 8
%I=call fastcc i8*@_SMLFN8TempFile6createE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@q,i64 0,i32 2,i64 0))
store i8*%I,i8**%d,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**%b,align 8
%N=bitcast i8*%J to i8**
store i8*%M,i8**%N,align 8
%O=getelementptr inbounds i8,i8*%J,i64 8
%P=bitcast i8*%O to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[4x i8]}>,<{[4x i8],i32,[4x i8]}>*@r,i64 0,i32 2,i64 0),i8**%P,align 8
%Q=getelementptr inbounds i8,i8*%J,i64 16
%R=bitcast i8*%Q to i32*
store i32 3,i32*%R,align 4
%S=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%J)
store i8*%S,i8**%e,align 8
%T=load i8*,i8**%c,align 8
%U=call fastcc i8*@_SMLFN8Filename8toStringE(i8*inreg%T)
store i8*%U,i8**%f,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=bitcast i8*%V to i64*
store i64 0,i64*%Y,align 4
%Z=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aa=getelementptr inbounds i8,i8*%V,i64 8
%ab=bitcast i8*%aa to i8**
store i8*%Z,i8**%ab,align 8
%ac=getelementptr inbounds i8,i8*%V,i64 16
%ad=bitcast i8*%ac to i32*
store i32 2,i32*%ad,align 4
%ae=call fastcc i8*@_SMLLN10ShellUtils6escapeE_133(i8*inreg%V)
store i8*%ae,i8**%f,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
%ai=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%aj=bitcast i8*%af to i8**
store i8*%ai,i8**%aj,align 8
%ak=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%al=getelementptr inbounds i8,i8*%af,i64 8
%am=bitcast i8*%al to i8**
store i8*%ak,i8**%am,align 8
%an=getelementptr inbounds i8,i8*%af,i64 16
%ao=bitcast i8*%an to i32*
store i32 3,i32*%ao,align 4
%ap=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%af)
store i8*%ap,i8**%e,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**%e,align 8
store i8*null,i8**%e,align 8
%au=bitcast i8*%aq to i8**
store i8*%at,i8**%au,align 8
%av=getelementptr inbounds i8,i8*%aq,i64 8
%aw=bitcast i8*%av to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[5x i8]}>,<{[4x i8],i32,[5x i8]}>*@s,i64 0,i32 2,i64 0),i8**%aw,align 8
%ax=getelementptr inbounds i8,i8*%aq,i64 16
%ay=bitcast i8*%ax to i32*
store i32 3,i32*%ay,align 4
%az=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%aq)
store i8*%az,i8**%e,align 8
%aA=load i8*,i8**%d,align 8
%aB=call fastcc i8*@_SMLFN8Filename8toStringE(i8*inreg%aA)
store i8*%aB,i8**%f,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=bitcast i8*%aC to i64*
store i64 0,i64*%aF,align 4
%aG=load i8*,i8**%f,align 8
store i8*null,i8**%f,align 8
%aH=getelementptr inbounds i8,i8*%aC,i64 8
%aI=bitcast i8*%aH to i8**
store i8*%aG,i8**%aI,align 8
%aJ=getelementptr inbounds i8,i8*%aC,i64 16
%aK=bitcast i8*%aJ to i32*
store i32 2,i32*%aK,align 4
%aL=call fastcc i8*@_SMLLN10ShellUtils6escapeE_133(i8*inreg%aC)
store i8*%aL,i8**%f,align 8
%aM=call i8*@sml_alloc(i32 inreg 20)#0
%aN=getelementptr inbounds i8,i8*%aM,i64 -4
%aO=bitcast i8*%aN to i32*
store i32 1342177296,i32*%aO,align 4
%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**%f,align 8
store i8*null,i8**%f,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*@_SMLFN6String1_ZE(i8*inreg%aM)
store i8*%aW,i8**%e,align 8
%aX=load i32*,i32**bitcast(i8**@_SMLZN7Control12printCommandE to i32**),align 8
%aY=load i32,i32*%aX,align 4
%aZ=icmp eq i32%aY,0
br i1%aZ,label%bn,label%a0
a0:
%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
%a4=load i8*,i8**%b,align 8
%a5=bitcast i8*%a1 to i8**
store i8*%a4,i8**%a5,align 8
%a6=getelementptr inbounds i8,i8*%a1,i64 8
%a7=bitcast i8*%a6 to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@t,i64 0,i32 2,i64 0),i8**%a7,align 8
%a8=getelementptr inbounds i8,i8*%a1,i64 16
%a9=bitcast i8*%a8 to i32*
store i32 3,i32*%a9,align 4
%ba=call fastcc i8*@_SMLFN6String1_ZE(i8*inreg%a1)
store i8*%ba,i8**%f,align 8
%bb=load i8*,i8**@_SMLZN6TextIO6stdErrE,align 8
store i8*%bb,i8**%g,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**%g,align 8
store i8*null,i8**%g,align 8
%bg=bitcast i8*%bc to i8**
store i8*%bf,i8**%bg,align 8
%bh=load i8*,i8**%f,align 8
store i8*null,i8**%f,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
call fastcc void@_SMLFN6TextIO6outputE(i8*inreg%bc)
%bm=load i8*,i8**%e,align 8
br label%bn
bn:
%bo=phi i8*[%aW,%k],[%bm,%a0]
store i8*null,i8**%e,align 8
%bp=call fastcc i32@_SMLFN18SMLSharp__OSProcess6systemE(i8*inreg%bo)
%bq=call i8*@sml_alloc(i32 inreg 20)#0
%br=getelementptr inbounds i8,i8*%bq,i64 -4
%bs=bitcast i8*%br to i32*
store i32 1342177296,i32*%bs,align 4
store i8*%bq,i8**%e,align 8
%bt=load i8*,i8**%d,align 8
%bu=bitcast i8*%bq to i8**
store i8*%bt,i8**%bu,align 8
%bv=load i8*,i8**%c,align 8
%bw=getelementptr inbounds i8,i8*%bq,i64 8
%bx=bitcast i8*%bw to i8**
store i8*%bv,i8**%bx,align 8
%by=getelementptr inbounds i8,i8*%bq,i64 16
%bz=bitcast i8*%by to i32*
store i32 3,i32*%bz,align 4
%bA=load i32*,i32**bitcast(i8**@_SMLZN7Control12printCommandE to i32**),align 8
%bB=load i32,i32*%bA,align 4
%bC=icmp eq i32%bB,0
br i1%bC,label%b5,label%bD
bD:
%bE=call i8*@sml_alloc(i32 inreg 20)#0
%bF=getelementptr inbounds i8,i8*%bE,i64 -4
%bG=bitcast i8*%bF to i32*
store i32 1342177296,i32*%bG,align 4
store i8*%bE,i8**%f,align 8
%bH=load i8*,i8**%d,align 8
store i8*null,i8**%d,align 8
%bI=bitcast i8*%bE to i8**
store i8*%bH,i8**%bI,align 8
%bJ=getelementptr inbounds i8,i8*%bE,i64 8
%bK=bitcast i8*%bJ to i8**
store i8*null,i8**%bK,align 8
%bL=getelementptr inbounds i8,i8*%bE,i64 16
%bM=bitcast i8*%bL to i32*
store i32 3,i32*%bM,align 4
%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
%bQ=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%bR=bitcast i8*%bN to i8**
store i8*%bQ,i8**%bR,align 8
%bS=load i8*,i8**%f,align 8
store i8*null,i8**%f,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 fastcc i8*@_SMLFN9CoreUtils3catE(i8*inreg%bN)
%bY=getelementptr inbounds i8,i8*%bX,i64 16
%bZ=bitcast i8*%bY to i8*(i8*,i8*)**
%b0=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%bZ,align 8
%b1=bitcast i8*%bX to i8**
%b2=load i8*,i8**%b1,align 8
%b3=load i8*,i8**@_SMLZN6TextIO6stdErrE,align 8
%b4=call fastcc i8*%b0(i8*inreg%b2,i8*inreg%b3)
br label%b6
b5:
store i8*null,i8**%c,align 8
store i8*null,i8**%d,align 8
br label%b6
b6:
%b7=call fastcc i32@_SMLFN18SMLSharp__OSProcess9isSuccessE(i32 inreg%bp)
%b8=icmp eq i32%b7,0
br i1%b8,label%cb,label%b9
b9:
%ca=load i8*,i8**%e,align 8
ret i8*%ca
cb:
%cc=call i8*@sml_alloc(i32 inreg 28)#0
%cd=getelementptr inbounds i8,i8*%cc,i64 -4
%ce=bitcast i8*%cd to i32*
store i32 1342177304,i32*%ce,align 4
store i8*%cc,i8**%c,align 8
%cf=getelementptr inbounds i8,i8*%cc,i64 20
%cg=bitcast i8*%cf to i32*
store i32 0,i32*%cg,align 1
%ch=load i8*,i8**%b,align 8
%ci=bitcast i8*%cc to i8**
store i8*null,i8**%b,align 8
store i8*%ch,i8**%ci,align 8
%cj=load i8*,i8**%e,align 8
store i8*null,i8**%e,align 8
%ck=getelementptr inbounds i8,i8*%cc,i64 8
%cl=bitcast i8*%ck to i8**
store i8*%cj,i8**%cl,align 8
%cm=getelementptr inbounds i8,i8*%cc,i64 16
%cn=bitcast i8*%cm to i32*
store i32%bp,i32*%cn,align 4
%co=getelementptr inbounds i8,i8*%cc,i64 24
%cp=bitcast i8*%co to i32*
store i32 3,i32*%cp,align 4
%cq=call i8*@sml_alloc(i32 inreg 28)#0
%cr=getelementptr inbounds i8,i8*%cq,i64 -4
%cs=bitcast i8*%cr to i32*
store i32 1342177304,i32*%cs,align 4
store i8*%cq,i8**%b,align 8
%ct=bitcast i8*%cq to i8**
store i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL100,i64 0,i32 2)to i8*),i8**%ct,align 8
%cu=getelementptr inbounds i8,i8*%cq,i64 8
%cv=bitcast i8*%cu to i8**
store i8*getelementptr inbounds(<{[4x i8],i32,[61x i8]}>,<{[4x i8],i32,[61x i8]}>*@u,i64 0,i32 2,i64 0),i8**%cv,align 8
%cw=load i8*,i8**%c,align 8
store i8*null,i8**%c,align 8
%cx=getelementptr inbounds i8,i8*%cq,i64 16
%cy=bitcast i8*%cx to i8**
store i8*%cw,i8**%cy,align 8
%cz=getelementptr inbounds i8,i8*%cq,i64 24
%cA=bitcast i8*%cz to i32*
store i32 7,i32*%cA,align 4
%cB=call i8*@sml_alloc(i32 inreg 60)#0
%cC=getelementptr inbounds i8,i8*%cB,i64 -4
%cD=bitcast i8*%cC to i32*
store i32 1342177336,i32*%cD,align 4
%cE=getelementptr inbounds i8,i8*%cB,i64 56
%cF=bitcast i8*%cE to i32*
store i32 1,i32*%cF,align 4
%cG=load i8*,i8**%b,align 8
%cH=bitcast i8*%cB to i8**
store i8*%cG,i8**%cH,align 8
call void@sml_raise(i8*inreg%cB)#1
unreachable
}
define fastcc i8*@_SMLFN10ShellUtils4joinE(i8*inreg%a)#2 gc"smlsharp"{
%b=alloca i8*,align 8
%c=alloca i8*,align 8
call void@llvm.gcroot(i8**%b,i8*null)#0
call void@llvm.gcroot(i8**%c,i8*null)#0
store i8*%a,i8**%b,align 8
%d=load atomic i32,i32*@sml_check_flag unordered,align 4
%e=icmp eq i32%d,0
br i1%e,label%g,label%f
f:
call void@sml_check(i32 inreg%d)
br label%g
g:
%h=call fastcc i8*@_SMLFN6String10concatWithE(i8*inreg getelementptr inbounds(<{[4x i8],i32,[2x i8]}>,<{[4x i8],i32,[2x i8]}>*@w,i64 0,i32 2,i64 0))
%i=getelementptr inbounds i8,i8*%h,i64 16
%j=bitcast i8*%i to i8*(i8*,i8*)**
%k=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%j,align 8
%l=bitcast i8*%h to i8**
%m=load i8*,i8**%l,align 8
store i8*%m,i8**%c,align 8
%n=call fastcc i8*@_SMLFN4List3mapE(i32 inreg 1,i32 inreg 8,i32 inreg 1,i32 inreg 8)
%o=getelementptr inbounds i8,i8*%n,i64 16
%p=bitcast i8*%o to i8*(i8*,i8*)**
%q=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%p,align 8
%r=bitcast i8*%n to i8**
%s=load i8*,i8**%r,align 8
%t=call fastcc i8*%q(i8*inreg%s,i8*inreg bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@o,i64 0,i32 2)to i8*))
%u=getelementptr inbounds i8,i8*%t,i64 16
%v=bitcast i8*%u to i8*(i8*,i8*)**
%w=load i8*(i8*,i8*)*,i8*(i8*,i8*)**%v,align 8
%x=bitcast i8*%t to i8**
%y=load i8*,i8**%x,align 8
%z=load i8*,i8**%b,align 8
store i8*null,i8**%b,align 8
%A=call fastcc i8*%w(i8*inreg%y,i8*inreg%z)
%B=load i8*,i8**%c,align 8
%C=tail call fastcc i8*%k(i8*inreg%B,i8*inreg%A)
ret i8*%C
}
define internal fastcc i8*@_SMLLN10ShellUtils11isPlainCharE_155(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i32@_SMLLN10ShellUtils11isPlainCharE_101(i8 inreg%c)
%e=tail call i8*@sml_alloc(i32 inreg 4)#0
%f=bitcast i8*%e to i32*
%g=getelementptr inbounds i8,i8*%e,i64 -4
%h=bitcast i8*%g to i32*
store i32 4,i32*%h,align 4
store i32%d,i32*%f,align 4
ret i8*%e
}
define internal fastcc i8*@_SMLLN10ShellUtils8escapeShE_156(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=load i8,i8*%b,align 1
%d=tail call fastcc i8*@_SMLLN10ShellUtils8escapeShE_104(i8 inreg%c)
ret i8*%d
}
define internal fastcc i8*@_SMLLN10ShellUtils6escapeE_163(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLLN10ShellUtils6escapeE_133(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLL4loop_164(i8*inreg%a,i8*inreg%b,i8*inreg%c,i8*inreg%d)#2 gc"smlsharp"{
%e=bitcast i8*%b to i32*
%f=load i32,i32*%e,align 4
%g=tail call fastcc i8*@_SMLL4loop_135(i8*inreg%a,i32 inreg%f,i8*inreg%c,i8*inreg%d)
ret i8*%g
}
define internal fastcc i8*@_SMLLN10ShellUtils5splitE_166(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN10ShellUtils5splitE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN10ShellUtils6systemE_167(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN10ShellUtils6systemE(i8*inreg%b)
ret i8*%c
}
define internal fastcc i8*@_SMLLN10ShellUtils4joinE_168(i8*inreg%a,i8*inreg%b)#2 gc"smlsharp"{
%c=tail call fastcc i8*@_SMLFN10ShellUtils4joinE(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}
