@sml_check_flag=external local_unnamed_addr global i32
@a=private unnamed_addr constant<{[4x i8],i32,[24x i8]}><{[4x i8]zeroinitializer,i32 -2147483624,[24x i8]c"AnalyzerUtils.OnStdPath\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,[24x i8]}>,<{[4x i8],i32,[24x i8]}>*@a,i32 0,i32 0,i32 0),i32 8),i32 0,[4x i8]zeroinitializer,i32 1}>,align 8
@_SMLDL38=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(void(i32)*@_SMLFN13AnalyzerUtils10analyzerOnE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN13AnalyzerUtils10analyzerOnE_51 to void(...)*),i32 -2147483647}>,align 8
@d=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(void(i32)*@_SMLFN13AnalyzerUtils11analyzerOffE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN13AnalyzerUtils11analyzerOffE_52 to void(...)*),i32 -2147483647}>,align 8
@e=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN13AnalyzerUtils9onStdpathE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN13AnalyzerUtils9onStdpathE_53 to void(...)*),i32 -2147483647}>,align 8
@f=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN13AnalyzerUtils10onUserpathE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN13AnalyzerUtils10onUserpathE_54 to void(...)*),i32 -2147483647}>,align 8
@g=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN13AnalyzerUtils13locToStartPosE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN13AnalyzerUtils13locToStartPosE_55 to void(...)*),i32 -2147483647}>,align 8
@h=private unnamed_addr constant<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}><{[4x i8]zeroinitializer,i32 -805306344,i8*null,void(...)*bitcast(i32(i8*)*@_SMLFN13AnalyzerUtils11locToEndPosE to void(...)*),void(...)*bitcast(i8*(i8*,i8*)*@_SMLLLN13AnalyzerUtils11locToEndPosE_56 to void(...)*),i32 -2147483647}>,align 8
@_SMLZN13AnalyzerUtils9OnStdPathE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*}>,<{[4x i8],i32,i8*}>*@_SMLDL38,i64 0,i32 2)to i8*)
@_SMLZN13AnalyzerUtils10analyzerOnE=local_unnamed_addr constant i8*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*)
@_SMLZN13AnalyzerUtils11analyzerOffE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@d,i64 0,i32 2)to i8*)
@_SMLZN13AnalyzerUtils9onStdpathE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@e,i64 0,i32 2)to i8*)
@_SMLZN13AnalyzerUtils10onUserpathE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@f,i64 0,i32 2)to i8*)
@_SMLZN13AnalyzerUtils13locToStartPosE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@g,i64 0,i32 2)to i8*)
@_SMLZN13AnalyzerUtils11locToEndPosE=local_unnamed_addr constant i8*bitcast(i8**getelementptr inbounds(<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>,<{[4x i8],i32,i8*,void(...)*,void(...)*,i32}>*@h,i64 0,i32 2)to i8*)
@_SML_ftabaedeca7de0243ec6_AnalyzerUtils=external global i8
@i=internal unnamed_addr global i1 false
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 i32@_SMLFN4Bool3notE(i32 inreg)local_unnamed_addr#1 gc"smlsharp"
declare void@_SML_maindaa180c1799f3810_Bool()local_unnamed_addr#1 gc"smlsharp"
declare void@_SML_loaddaa180c1799f3810_Bool(i8*)local_unnamed_addr
define private void@_SML_tabbaedeca7de0243ec6_AnalyzerUtils()#2{
unreachable
}
define void@_SML_loadaedeca7de0243ec6_AnalyzerUtils(i8*%a)local_unnamed_addr#0{
%b=load i1,i1*@i,align 1
br i1%b,label%c,label%d
c:
ret void
d:
store i1 true,i1*@i,align 1
tail call void@_SML_loaddaa180c1799f3810_Bool(i8*%a)#0
tail call void@sml_gcroot(i8*%a,void()*@_SML_tabbaedeca7de0243ec6_AnalyzerUtils,i8*@_SML_ftabaedeca7de0243ec6_AnalyzerUtils,i8*null)#0
ret void
}
define void@_SML_mainaedeca7de0243ec6_AnalyzerUtils()local_unnamed_addr#1 gc"smlsharp"{
tail call void@_SML_maindaa180c1799f3810_Bool()#1
ret void
}
define fastcc void@_SMLFN13AnalyzerUtils10analyzerOnE(i32 inreg%a)#3 gc"smlsharp"{
ret void
}
define fastcc void@_SMLFN13AnalyzerUtils11analyzerOffE(i32 inreg%a)#3 gc"smlsharp"{
ret void
}
define fastcc i32@_SMLFN13AnalyzerUtils9onStdpathE(i8*inreg%a)#3 gc"smlsharp"{
%b=bitcast i8*%a to i32*
%c=load i32,i32*%b,align 4
%d=icmp eq i32%c,0
%e=zext i1%d to i32
ret i32%e
}
define fastcc i32@_SMLFN13AnalyzerUtils10onUserpathE(i8*inreg%a)#1 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=load i32,i32*%k,align 4
%m=icmp eq i32%l,0
%n=zext i1%m to i32
%o=tail call fastcc i32@_SMLFN4Bool3notE(i32 inreg%n)
ret i32%o
}
define fastcc i32@_SMLFN13AnalyzerUtils13locToStartPosE(i8*inreg%a)#3 gc"smlsharp"{
%b=bitcast i8*%a to i8**
%c=load i8*,i8**%b,align 8
%d=icmp eq i8*%c,null
br i1%d,label%e,label%f
e:
ret i32 -1
f:
%g=getelementptr inbounds i8,i8*%c,i64 12
%h=bitcast i8*%g to i32*
%i=load i32,i32*%h,align 4
ret i32%i
}
define fastcc i32@_SMLFN13AnalyzerUtils11locToEndPosE(i8*inreg%a)#3 gc"smlsharp"{
%b=getelementptr inbounds i8,i8*%a,i64 8
%c=bitcast i8*%b to i8**
%d=load i8*,i8**%c,align 8
%e=icmp eq i8*%d,null
br i1%e,label%f,label%g
f:
ret i32 -2
g:
%h=getelementptr inbounds i8,i8*%d,i64 12
%i=bitcast i8*%h to i32*
%j=load i32,i32*%i,align 4
ret i32%j
}
define internal fastcc i8*@_SMLLLN13AnalyzerUtils10analyzerOnE_51(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=tail call i8*@sml_alloc(i32 inreg 4)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
store i32 0,i32*%d,align 4
ret i8*%c
}
define internal fastcc i8*@_SMLLLN13AnalyzerUtils11analyzerOffE_52(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=tail call i8*@sml_alloc(i32 inreg 4)#0
%d=bitcast i8*%c to i32*
%e=getelementptr inbounds i8,i8*%c,i64 -4
%f=bitcast i8*%e to i32*
store i32 4,i32*%f,align 4
store i32 0,i32*%d,align 4
ret i8*%c
}
define internal fastcc i8*@_SMLLLN13AnalyzerUtils9onStdpathE_53(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
%c=bitcast i8*%b to i32*
%d=load i32,i32*%c,align 4
%e=icmp eq i32%d,0
%f=zext i1%e to i32
%g=tail call i8*@sml_alloc(i32 inreg 4)#0
%h=bitcast i8*%g to i32*
%i=getelementptr inbounds i8,i8*%g,i64 -4
%j=bitcast i8*%i to i32*
store i32 4,i32*%j,align 4
store i32%f,i32*%h,align 4
ret i8*%g
}
define internal fastcc i8*@_SMLLLN13AnalyzerUtils10onUserpathE_54(i8*inreg%a,i8*inreg%b)#1 gc"smlsharp"{
%c=tail call fastcc i32@_SMLFN13AnalyzerUtils10onUserpathE(i8*inreg%b)
%d=tail call i8*@sml_alloc(i32 inreg 4)#0
%e=bitcast i8*%d to i32*
%f=getelementptr inbounds i8,i8*%d,i64 -4
%g=bitcast i8*%f to i32*
store i32 4,i32*%g,align 4
store i32%c,i32*%e,align 4
ret i8*%d
}
define internal fastcc i8*@_SMLLLN13AnalyzerUtils13locToStartPosE_55(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
l:
%c=bitcast i8*%b to i8**
%d=load i8*,i8**%c,align 8
%e=icmp eq i8*%d,null
br i1%e,label%j,label%f
f:
%g=getelementptr inbounds i8,i8*%d,i64 12
%h=bitcast i8*%g to i32*
%i=load i32,i32*%h,align 4
br label%j
j:
%k=phi i32[%i,%f],[-1,%l]
%m=tail call i8*@sml_alloc(i32 inreg 4)#0
%n=bitcast i8*%m to i32*
%o=getelementptr inbounds i8,i8*%m,i64 -4
%p=bitcast i8*%o to i32*
store i32 4,i32*%p,align 4
store i32%k,i32*%n,align 4
ret i8*%m
}
define internal fastcc i8*@_SMLLLN13AnalyzerUtils11locToEndPosE_56(i8*inreg%a,i8*inreg%b)#3 gc"smlsharp"{
m:
%c=getelementptr inbounds i8,i8*%b,i64 8
%d=bitcast i8*%c to i8**
%e=load i8*,i8**%d,align 8
%f=icmp eq i8*%e,null
br i1%f,label%k,label%g
g:
%h=getelementptr inbounds i8,i8*%e,i64 12
%i=bitcast i8*%h to i32*
%j=load i32,i32*%i,align 4
br label%k
k:
%l=phi i32[%j,%g],[-2,%m]
%n=tail call i8*@sml_alloc(i32 inreg 4)#0
%o=bitcast i8*%n to i32*
%p=getelementptr inbounds i8,i8*%n,i64 -4
%q=bitcast i8*%p to i32*
store i32 4,i32*%q,align 4
store i32%l,i32*%o,align 4
ret i8*%n
}
attributes#0={nounwind}
attributes#1={uwtable}
attributes#2={noreturn nounwind}
attributes#3={nounwind uwtable}
