Skip to content

Instantly share code, notes, and snippets.

@4ntoine
Created January 19, 2016 08:56
Show Gist options
  • Save 4ntoine/cabf1294838eab09a40e to your computer and use it in GitHub Desktop.
Save 4ntoine/cabf1294838eab09a40e to your computer and use it in GitHub Desktop.
; ModuleID = '/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Stream.cpp'
target datalayout = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-i64:8:8-f32:8:8-f64:8:8-n8"
target triple = "avr"
%class.Stream = type { %class.Print, i32, i32 }
%class.Print = type { i32 (...)**, i16 }
%"struct.Stream::MultiTarget" = type { i8*, i16, i16 }
%class.String = type { i8*, i16, i16 }
@.str = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !315, metadata !477), !dbg !478
%call = tail call i32 @millis() #5, !dbg !479
%_startMillis = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 2, !dbg !480
store i32 %call, i32* %_startMillis, align 2, !dbg !481, !tbaa !482
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !487
%_timeout = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 1, !dbg !489
br label %do.body, !dbg !490
do.body: ; preds = %do.cond, %entry
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !487, !tbaa !491
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !487
%1 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !487
%call2 = tail call i16 %1(%class.Stream* nonnull %this) #5, !dbg !487
tail call void @llvm.dbg.value(metadata i16 %call2, i64 0, metadata !317, metadata !477), !dbg !493
%cmp = icmp sgt i16 %call2, -1, !dbg !494
br i1 %cmp, label %cleanup, label %do.cond, !dbg !496
do.cond: ; preds = %do.body
%call3 = tail call i32 @millis() #5, !dbg !497
%2 = load i32, i32* %_startMillis, align 2, !dbg !499, !tbaa !482
%sub = sub i32 %call3, %2, !dbg !500
%3 = load i32, i32* %_timeout, align 2, !dbg !489, !tbaa !501
%cmp5 = icmp ult i32 %sub, %3, !dbg !502
br i1 %cmp5, label %do.body, label %cleanup, !dbg !503
cleanup: ; preds = %do.cond, %do.body
%retval.0 = phi i16 [ %call2, %do.body ], [ -1, %do.cond ]
ret i16 %retval.0, !dbg !504
}
; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
; Function Attrs: nounwind argmemonly
declare void @llvm.lifetime.start(i64, i8* nocapture) #2
; Function Attrs: optsize
declare i32 @millis() #3
; Function Attrs: nounwind argmemonly
declare void @llvm.lifetime.end(i64, i8* nocapture) #2
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !321, metadata !477), !dbg !505
%call = tail call i32 @millis() #5, !dbg !506
%_startMillis = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 2, !dbg !507
store i32 %call, i32* %_startMillis, align 2, !dbg !508, !tbaa !482
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !509
%_timeout = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 1, !dbg !511
br label %do.body, !dbg !512
do.body: ; preds = %do.cond, %entry
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !509, !tbaa !491
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 4, !dbg !509
%1 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !509
%call2 = tail call i16 %1(%class.Stream* nonnull %this) #5, !dbg !509
tail call void @llvm.dbg.value(metadata i16 %call2, i64 0, metadata !322, metadata !477), !dbg !513
%cmp = icmp sgt i16 %call2, -1, !dbg !514
br i1 %cmp, label %cleanup, label %do.cond, !dbg !516
do.cond: ; preds = %do.body
%call3 = tail call i32 @millis() #5, !dbg !517
%2 = load i32, i32* %_startMillis, align 2, !dbg !519, !tbaa !482
%sub = sub i32 %call3, %2, !dbg !520
%3 = load i32, i32* %_timeout, align 2, !dbg !511, !tbaa !501
%cmp5 = icmp ult i32 %sub, %3, !dbg !521
br i1 %cmp5, label %do.body, label %cleanup, !dbg !522
cleanup: ; preds = %do.cond, %do.body
%retval.0 = phi i16 [ %call2, %do.body ], [ -1, %do.cond ]
ret i16 %retval.0, !dbg !523
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream13peekNextDigitE13LookaheadModeb(%class.Stream* %this, i16 %lookahead, i1 zeroext %detectDecimal) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !329, metadata !477), !dbg !524
tail call void @llvm.dbg.value(metadata i16 %lookahead, i64 0, metadata !330, metadata !477), !dbg !525
tail call void @llvm.dbg.value(metadata i1 %detectDecimal, i64 0, metadata !331, metadata !477), !dbg !526
%call.25 = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #6, !dbg !527
tail call void @llvm.dbg.value(metadata i16 %call.25, i64 0, metadata !332, metadata !477), !dbg !529
%cmp.26 = icmp slt i16 %call.25, 0, !dbg !530
%cmp2.27 = icmp eq i16 %call.25, 45, !dbg !532
%or.cond.28 = or i1 %cmp.26, %cmp2.27, !dbg !533
%call.off.29 = add i16 %call.25, -48, !dbg !534
%0 = icmp ult i16 %call.off.29, 10, !dbg !534
%or.cond23.30 = or i1 %or.cond.28, %0, !dbg !533
%cmp8.31 = icmp eq i16 %call.25, 46, !dbg !535
%or.cond14.32 = and i1 %cmp8.31, %detectDecimal, !dbg !536
%or.cond24.33 = or i1 %or.cond14.32, %or.cond23.30, !dbg !533
br i1 %or.cond24.33, label %cleanup, label %if.end.lr.ph, !dbg !533
if.end.lr.ph: ; preds = %entry
%1 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !537
br label %if.end, !dbg !533
if.end: ; preds = %if.end.lr.ph, %sw.epilog.11
%call34 = phi i16 [ %call.25, %if.end.lr.ph ], [ %call, %sw.epilog.11 ]
switch i16 %lookahead, label %sw.epilog.11 [
i16 1, label %cleanup
i16 2, label %sw.bb.9
], !dbg !538
sw.bb.9: ; preds = %if.end
switch i16 %call34, label %cleanup [
i16 32, label %sw.epilog.11
i16 9, label %sw.epilog.11
i16 13, label %sw.epilog.11
i16 10, label %sw.epilog.11
], !dbg !539
sw.epilog.11: ; preds = %sw.bb.9, %sw.bb.9, %sw.bb.9, %sw.bb.9, %if.end
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %1, align 2, !dbg !537, !tbaa !491
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !537
%2 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !537
%call12 = tail call i16 %2(%class.Stream* %this) #5, !dbg !537
%call = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #6, !dbg !527
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !332, metadata !477), !dbg !529
%cmp = icmp slt i16 %call, 0, !dbg !530
%cmp2 = icmp eq i16 %call, 45, !dbg !532
%or.cond = or i1 %cmp, %cmp2, !dbg !533
%call.off = add i16 %call, -48, !dbg !534
%3 = icmp ult i16 %call.off, 10, !dbg !534
%or.cond23 = or i1 %or.cond, %3, !dbg !533
%cmp8 = icmp eq i16 %call, 46, !dbg !535
%or.cond14 = and i1 %cmp8, %detectDecimal, !dbg !536
%or.cond24 = or i1 %or.cond14, %or.cond23, !dbg !533
br i1 %or.cond24, label %cleanup, label %if.end, !dbg !533
cleanup: ; preds = %sw.epilog.11, %if.end, %sw.bb.9, %entry
%retval.0 = phi i16 [ %call.25, %entry ], [ %call, %sw.epilog.11 ], [ -1, %if.end ], [ -1, %sw.bb.9 ]
ret i16 %retval.0, !dbg !541
}
; Function Attrs: nounwind optsize
define void @_ZN6Stream10setTimeoutEm(%class.Stream* nocapture %this, i32 %timeout) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !338, metadata !477), !dbg !542
tail call void @llvm.dbg.value(metadata i32 %timeout, i64 0, metadata !339, metadata !477), !dbg !543
%_timeout = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 1, !dbg !544
store i32 %timeout, i32* %_timeout, align 2, !dbg !545, !tbaa !501
ret void, !dbg !546
}
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream4findEPc(%class.Stream* %this, i8* %target) #0 align 2 {
entry:
%t.i = alloca [1 x %"struct.Stream::MultiTarget"], align 2
tail call void @llvm.dbg.declare(metadata [1 x %"struct.Stream::MultiTarget"]* %t.i, metadata !373, metadata !477), !dbg !547
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !345, metadata !477), !dbg !549
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !346, metadata !477), !dbg !550
%call = tail call i16 @strlen(i8* %target) #7, !dbg !551
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !368, metadata !477) #8, !dbg !552
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !369, metadata !477) #8, !dbg !553
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !370, metadata !477) #8, !dbg !554
tail call void @llvm.dbg.value(metadata i8* null, i64 0, metadata !371, metadata !477) #8, !dbg !555
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !372, metadata !477) #8, !dbg !556
%0 = bitcast [1 x %"struct.Stream::MultiTarget"]* %t.i to i8*, !dbg !557
call void @llvm.lifetime.start(i64 6, i8* %0) #8, !dbg !557
%str.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 0, !dbg !558
store i8* %target, i8** %str.i, align 2, !dbg !558, !tbaa !559
%len.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 1, !dbg !558
store i16 %call, i16* %len.i, align 2, !dbg !558, !tbaa !563
%index.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 2, !dbg !558
store i16 0, i16* %index.i, align 2, !dbg !558, !tbaa !564
%arraydecay.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, !dbg !565
%call.i = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay.i, i16 1) #5, !dbg !566
call void @llvm.lifetime.end(i64 6, i8* %0) #8, !dbg !567
%retval.0.i = icmp eq i16 %call.i, 0, !dbg !568
ret i1 %retval.0.i, !dbg !569
}
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream9findUntilEPcjS0_j(%class.Stream* %this, i8* %target, i16 %targetLen, i8* %terminator, i16 %termLen) #0 align 2 {
entry:
%t = alloca [1 x %"struct.Stream::MultiTarget"], align 2
%t3 = alloca [2 x %"struct.Stream::MultiTarget"], align 2
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !368, metadata !477), !dbg !570
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !369, metadata !477), !dbg !571
tail call void @llvm.dbg.value(metadata i16 %targetLen, i64 0, metadata !370, metadata !477), !dbg !572
tail call void @llvm.dbg.value(metadata i8* %terminator, i64 0, metadata !371, metadata !477), !dbg !573
tail call void @llvm.dbg.value(metadata i16 %termLen, i64 0, metadata !372, metadata !477), !dbg !574
%cmp = icmp eq i8* %terminator, null, !dbg !575
br i1 %cmp, label %if.then, label %if.else, !dbg !576
if.then: ; preds = %entry
%0 = bitcast [1 x %"struct.Stream::MultiTarget"]* %t to i8*, !dbg !577
call void @llvm.lifetime.start(i64 6, i8* %0) #8, !dbg !577
tail call void @llvm.dbg.declare(metadata [1 x %"struct.Stream::MultiTarget"]* %t, metadata !373, metadata !477), !dbg !578
%str = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, i32 0, !dbg !579
store i8* %target, i8** %str, align 2, !dbg !579, !tbaa !559
%len = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, i32 1, !dbg !579
store i16 %targetLen, i16* %len, align 2, !dbg !579, !tbaa !563
%index = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, i32 2, !dbg !579
store i16 0, i16* %index, align 2, !dbg !579, !tbaa !564
%arraydecay = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, !dbg !580
%call = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay, i16 1) #6, !dbg !581
call void @llvm.lifetime.end(i64 6, i8* %0) #8, !dbg !582
br label %return
if.else: ; preds = %entry
%1 = bitcast [2 x %"struct.Stream::MultiTarget"]* %t3 to i8*, !dbg !583
call void @llvm.lifetime.start(i64 12, i8* %1) #8, !dbg !583
tail call void @llvm.dbg.declare(metadata [2 x %"struct.Stream::MultiTarget"]* %t3, metadata !379, metadata !477), !dbg !584
%str5 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, i32 0, !dbg !585
store i8* %target, i8** %str5, align 2, !dbg !585, !tbaa !559
%len6 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, i32 1, !dbg !585
store i16 %targetLen, i16* %len6, align 2, !dbg !585, !tbaa !563
%index7 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, i32 2, !dbg !585
store i16 0, i16* %index7, align 2, !dbg !585, !tbaa !564
%str8 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 1, i32 0, !dbg !586
store i8* %terminator, i8** %str8, align 2, !dbg !586, !tbaa !559
%len9 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 1, i32 1, !dbg !586
store i16 %termLen, i16* %len9, align 2, !dbg !586, !tbaa !563
%index10 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 1, i32 2, !dbg !586
store i16 0, i16* %index10, align 2, !dbg !586, !tbaa !564
%arraydecay11 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, !dbg !587
%call12 = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay11, i16 2) #6, !dbg !588
call void @llvm.lifetime.end(i64 12, i8* %1) #8, !dbg !589
br label %return
return: ; preds = %if.else, %if.then
%retval.0.in = phi i16 [ %call, %if.then ], [ %call12, %if.else ]
%retval.0 = icmp eq i16 %retval.0.in, 0, !dbg !590
ret i1 %retval.0, !dbg !591
}
; Function Attrs: nounwind optsize readonly
declare i16 @strlen(i8* nocapture) #4
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream4findEPcj(%class.Stream* %this, i8* %target, i16 %length) #0 align 2 {
entry:
%t.i = alloca [1 x %"struct.Stream::MultiTarget"], align 2
tail call void @llvm.dbg.declare(metadata [1 x %"struct.Stream::MultiTarget"]* %t.i, metadata !373, metadata !477), !dbg !592
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !352, metadata !477), !dbg !594
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !353, metadata !477), !dbg !595
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !354, metadata !477), !dbg !596
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !368, metadata !477) #8, !dbg !597
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !369, metadata !477) #8, !dbg !598
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !370, metadata !477) #8, !dbg !599
tail call void @llvm.dbg.value(metadata i8* null, i64 0, metadata !371, metadata !477) #8, !dbg !600
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !372, metadata !477) #8, !dbg !601
%0 = bitcast [1 x %"struct.Stream::MultiTarget"]* %t.i to i8*, !dbg !602
call void @llvm.lifetime.start(i64 6, i8* %0) #8, !dbg !602
%str.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 0, !dbg !603
store i8* %target, i8** %str.i, align 2, !dbg !603, !tbaa !559
%len.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 1, !dbg !603
store i16 %length, i16* %len.i, align 2, !dbg !603, !tbaa !563
%index.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 2, !dbg !603
store i16 0, i16* %index.i, align 2, !dbg !603, !tbaa !564
%arraydecay.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, !dbg !604
%call.i = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay.i, i16 1) #5, !dbg !605
call void @llvm.lifetime.end(i64 6, i8* %0) #8, !dbg !606
%retval.0.i = icmp eq i16 %call.i, 0, !dbg !607
ret i1 %retval.0.i, !dbg !608
}
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream9findUntilEPcS0_(%class.Stream* %this, i8* %target, i8* %terminator) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !360, metadata !477), !dbg !609
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !361, metadata !477), !dbg !610
tail call void @llvm.dbg.value(metadata i8* %terminator, i64 0, metadata !362, metadata !477), !dbg !611
%call = tail call i16 @strlen(i8* %target) #7, !dbg !612
%call2 = tail call i16 @strlen(i8* %terminator) #7, !dbg !613
%call3 = tail call zeroext i1 @_ZN6Stream9findUntilEPcjS0_j(%class.Stream* %this, i8* %target, i16 %call, i8* %terminator, i16 %call2) #6, !dbg !614
ret i1 %call3, !dbg !615
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %targets, i16 %tCount) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !454, metadata !477), !dbg !616
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %targets, i64 0, metadata !455, metadata !477), !dbg !617
tail call void @llvm.dbg.value(metadata i16 %tCount, i64 0, metadata !456, metadata !477), !dbg !618
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %targets, i64 0, metadata !457, metadata !477), !dbg !619
%add.ptr = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %targets, i16 %tCount, !dbg !620
%cmp.137 = icmp sgt i16 %tCount, 0, !dbg !622
br i1 %cmp.137, label %for.body, label %while.body.preheader, !dbg !623
while.body.preheader: ; preds = %for.inc, %entry
%call.134 = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !624
tail call void @llvm.dbg.value(metadata i16 %call.134, i64 0, metadata !459, metadata !477), !dbg !625
%cmp3.135 = icmp slt i16 %call.134, 0, !dbg !626
br i1 %cmp3.135, label %return, label %for.cond.7.preheader, !dbg !628
for.body: ; preds = %entry, %for.inc
%t.0138 = phi %"struct.Stream::MultiTarget"* [ %incdec.ptr, %for.inc ], [ %targets, %entry ]
%len = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t.0138, i16 0, i32 1, !dbg !629
%0 = load i16, i16* %len, align 2, !dbg !629, !tbaa !563
%cmp2 = icmp eq i16 %0, 0, !dbg !632
br i1 %cmp2, label %cleanup, label %for.inc, !dbg !633
for.inc: ; preds = %for.body
%incdec.ptr = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t.0138, i16 1, !dbg !634
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %incdec.ptr, i64 0, metadata !457, metadata !477), !dbg !619
%cmp = icmp ult %"struct.Stream::MultiTarget"* %incdec.ptr, %add.ptr, !dbg !622
br i1 %cmp, label %for.body, label %while.body.preheader, !dbg !623
cleanup: ; preds = %for.body
%sub.ptr.lhs.cast = ptrtoint %"struct.Stream::MultiTarget"* %t.0138 to i16, !dbg !635
%sub.ptr.rhs.cast = ptrtoint %"struct.Stream::MultiTarget"* %targets to i16, !dbg !635
%sub.ptr.sub = sub i16 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast, !dbg !635
%sub.ptr.div = sdiv exact i16 %sub.ptr.sub, 6, !dbg !635
br label %return
while.body.loopexit: ; preds = %for.inc.69, %for.cond.7.preheader
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !624
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !459, metadata !477), !dbg !625
%cmp3 = icmp slt i16 %call, 0, !dbg !626
br i1 %cmp3, label %return, label %for.cond.7.preheader, !dbg !628
for.cond.7.preheader: ; preds = %while.body.preheader, %while.body.loopexit
%call136 = phi i16 [ %call, %while.body.loopexit ], [ %call.134, %while.body.preheader ]
br i1 %cmp.137, label %for.body.11, label %while.body.loopexit, !dbg !636
for.body.11: ; preds = %for.cond.7.preheader, %for.inc.69
%t6.0133 = phi %"struct.Stream::MultiTarget"* [ %incdec.ptr70, %for.inc.69 ], [ %targets, %for.cond.7.preheader ]
%index = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 0, i32 2, !dbg !637
%1 = load i16, i16* %index, align 2, !dbg !637, !tbaa !564
%str = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 0, i32 0, !dbg !639
%2 = load i8*, i8** %str, align 2, !dbg !639, !tbaa !559
%arrayidx = getelementptr inbounds i8, i8* %2, i16 %1, !dbg !640
%3 = load i8, i8* %arrayidx, align 1, !dbg !640, !tbaa !641
%conv = sext i8 %3 to i16, !dbg !640
%cmp12 = icmp eq i16 %call136, %conv, !dbg !642
br i1 %cmp12, label %if.then.13, label %if.end.22, !dbg !643
if.then.13: ; preds = %for.body.11
%inc = add i16 %1, 1, !dbg !644
store i16 %inc, i16* %index, align 2, !dbg !644, !tbaa !564
%len15 = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 0, i32 1, !dbg !647
%4 = load i16, i16* %len15, align 2, !dbg !647, !tbaa !563
%cmp16 = icmp eq i16 %inc, %4, !dbg !648
br i1 %cmp16, label %cleanup.71, label %for.inc.69, !dbg !649
if.end.22: ; preds = %for.body.11
%cmp24 = icmp eq i16 %1, 0, !dbg !650
br i1 %cmp24, label %for.inc.69, label %do.body, !dbg !652
do.body: ; preds = %if.end.22, %do.cond
%5 = phi i16 [ %dec, %do.cond ], [ %1, %if.end.22 ], !dbg !653
%dec = add i16 %5, -1, !dbg !654
store i16 %dec, i16* %index, align 2, !dbg !653, !tbaa !564
%arrayidx31 = getelementptr inbounds i8, i8* %2, i16 %dec, !dbg !656
%6 = load i8, i8* %arrayidx31, align 1, !dbg !656, !tbaa !641
%conv32 = sext i8 %6 to i16, !dbg !656
%cmp33 = icmp eq i16 %call136, %conv32, !dbg !658
br i1 %cmp33, label %if.end.35, label %do.cond, !dbg !659
if.end.35: ; preds = %do.body
%cmp37 = icmp eq i16 %dec, 0, !dbg !660
br i1 %cmp37, label %if.then.38, label %for.body.46.lr.ph, !dbg !662
if.then.38: ; preds = %if.end.35
store i16 %5, i16* %index, align 2, !dbg !663, !tbaa !564
br label %for.inc.69, !dbg !665
for.body.46.lr.ph: ; preds = %if.end.35
%dec.neg = sub i16 1, %5
%sub = add i16 %dec.neg, %1, !dbg !666
tail call void @llvm.dbg.value(metadata i16 %sub, i64 0, metadata !466, metadata !477), !dbg !667
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !468, metadata !477), !dbg !668
br label %for.body.46, !dbg !669
for.body.46: ; preds = %for.body.46.lr.ph, %for.inc.56
%i.0130 = phi i16 [ 0, %for.body.46.lr.ph ], [ %inc57, %for.inc.56 ]
%arrayidx48 = getelementptr inbounds i8, i8* %2, i16 %i.0130, !dbg !671
%7 = load i8, i8* %arrayidx48, align 1, !dbg !671, !tbaa !641
%add = add i16 %sub, %i.0130, !dbg !675
%arrayidx51 = getelementptr inbounds i8, i8* %2, i16 %add, !dbg !676
%8 = load i8, i8* %arrayidx51, align 1, !dbg !676, !tbaa !641
%cmp53 = icmp eq i8 %7, %8, !dbg !677
br i1 %cmp53, label %for.inc.56, label %for.end.58, !dbg !678
for.inc.56: ; preds = %for.body.46
%inc57 = add i16 %i.0130, 1, !dbg !679
tail call void @llvm.dbg.value(metadata i16 %inc57, i64 0, metadata !468, metadata !477), !dbg !668
%cmp45 = icmp ult i16 %inc57, %dec, !dbg !680
br i1 %cmp45, label %for.body.46, label %for.end.58, !dbg !669
for.end.58: ; preds = %for.inc.56, %for.body.46
%i.0.lcssa.ph = phi i16 [ %inc57, %for.inc.56 ], [ %i.0130, %for.body.46 ]
%cmp60 = icmp eq i16 %i.0.lcssa.ph, %dec, !dbg !681
br i1 %cmp60, label %if.then.61, label %do.cond, !dbg !682
if.then.61: ; preds = %for.end.58
store i16 %5, i16* %index, align 2, !dbg !683, !tbaa !564
br label %for.inc.69
do.cond: ; preds = %do.body, %for.end.58
%tobool = icmp eq i16 %dec, 0, !dbg !685
br i1 %tobool, label %for.inc.69, label %do.body, !dbg !686
for.inc.69: ; preds = %do.cond, %if.then.38, %if.then.61, %if.end.22, %if.then.13
%incdec.ptr70 = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 1, !dbg !687
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %incdec.ptr70, i64 0, metadata !461, metadata !477), !dbg !688
%cmp9 = icmp ult %"struct.Stream::MultiTarget"* %incdec.ptr70, %add.ptr, !dbg !689
br i1 %cmp9, label %for.body.11, label %while.body.loopexit, !dbg !636
cleanup.71: ; preds = %if.then.13
%sub.ptr.lhs.cast18 = ptrtoint %"struct.Stream::MultiTarget"* %t6.0133 to i16, !dbg !690
%sub.ptr.rhs.cast19 = ptrtoint %"struct.Stream::MultiTarget"* %targets to i16, !dbg !690
%sub.ptr.sub20 = sub i16 %sub.ptr.lhs.cast18, %sub.ptr.rhs.cast19, !dbg !690
%sub.ptr.div21 = sdiv exact i16 %sub.ptr.sub20, 6, !dbg !690
br label %return
return: ; preds = %while.body.loopexit, %while.body.preheader, %cleanup.71, %cleanup
%retval.4 = phi i16 [ %sub.ptr.div, %cleanup ], [ %sub.ptr.div21, %cleanup.71 ], [ -1, %while.body.preheader ], [ -1, %while.body.loopexit ]
ret i16 %retval.4, !dbg !691
}
; Function Attrs: nounwind optsize
define i32 @_ZN6Stream8parseIntE13LookaheadModec(%class.Stream* %this, i16 %lookahead, i8 signext %ignore) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !389, metadata !477), !dbg !692
tail call void @llvm.dbg.value(metadata i16 %lookahead, i64 0, metadata !390, metadata !477), !dbg !693
tail call void @llvm.dbg.value(metadata i8 %ignore, i64 0, metadata !391, metadata !477), !dbg !694
tail call void @llvm.dbg.value(metadata i8 0, i64 0, metadata !392, metadata !477), !dbg !695
tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !393, metadata !477), !dbg !696
%call = tail call i16 @_ZN6Stream13peekNextDigitE13LookaheadModeb(%class.Stream* %this, i16 %lookahead, i1 zeroext false) #6, !dbg !697
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !394, metadata !477), !dbg !698
%cmp = icmp slt i16 %call, 0, !dbg !699
br i1 %cmp, label %cleanup, label %do.body.preheader, !dbg !701
do.body.preheader: ; preds = %entry
%conv = sext i8 %ignore to i16, !dbg !702
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !705
br label %do.body, !dbg !702
do.body: ; preds = %do.body.preheader, %if.end.13
%isNegative.0 = phi i8 [ %isNegative.1, %if.end.13 ], [ 0, %do.body.preheader ]
%value.0 = phi i32 [ %value.1, %if.end.13 ], [ 0, %do.body.preheader ]
%c.0 = phi i16 [ %call15, %if.end.13 ], [ %call, %do.body.preheader ]
%cmp2 = icmp eq i16 %c.0, %conv, !dbg !706
br i1 %cmp2, label %if.end.13, label %if.else, !dbg !707
if.else: ; preds = %do.body
%cmp4 = icmp eq i16 %c.0, 45, !dbg !708
br i1 %cmp4, label %if.end.13, label %if.else.6, !dbg !710
if.else.6: ; preds = %if.else
%c.0.off = add i16 %c.0, -48, !dbg !711
%1 = icmp ult i16 %c.0.off, 10, !dbg !711
br i1 %1, label %if.then.9, label %if.end.13, !dbg !711
if.then.9: ; preds = %if.else.6
%mul = mul nsw i32 %value.0, 10, !dbg !713
%conv10 = sext i16 %c.0 to i32, !dbg !714
%add = add i32 %mul, -48, !dbg !715
%sub = add i32 %add, %conv10, !dbg !716
tail call void @llvm.dbg.value(metadata i32 %sub, i64 0, metadata !393, metadata !477), !dbg !696
br label %if.end.13, !dbg !717
if.end.13: ; preds = %if.else, %if.then.9, %if.else.6, %do.body
%isNegative.1 = phi i8 [ %isNegative.0, %do.body ], [ %isNegative.0, %if.then.9 ], [ %isNegative.0, %if.else.6 ], [ 1, %if.else ]
%value.1 = phi i32 [ %value.0, %do.body ], [ %sub, %if.then.9 ], [ %value.0, %if.else.6 ], [ %value.0, %if.else ]
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !705, !tbaa !491
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !705
%2 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !705
%call14 = tail call i16 %2(%class.Stream* %this) #5, !dbg !705
%call15 = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #6, !dbg !718
tail call void @llvm.dbg.value(metadata i16 %call15, i64 0, metadata !394, metadata !477), !dbg !698
%call15.off = add i16 %call15, -48, !dbg !719
%3 = icmp ult i16 %call15.off, 10, !dbg !719
%cmp20 = icmp eq i16 %call15, %conv, !dbg !720
%or.cond = or i1 %cmp20, %3, !dbg !719
br i1 %or.cond, label %do.body, label %do.end, !dbg !719
do.end: ; preds = %if.end.13
%4 = and i8 %isNegative.1, 1, !dbg !721
%tobool = icmp eq i8 %4, 0, !dbg !721
%sub22 = sub nsw i32 0, %value.1, !dbg !723
tail call void @llvm.dbg.value(metadata i32 %sub22, i64 0, metadata !393, metadata !477), !dbg !696
%value.1.sub22 = select i1 %tobool, i32 %value.1, i32 %sub22, !dbg !724
br label %cleanup, !dbg !725
cleanup: ; preds = %entry, %do.end
%retval.0 = phi i32 [ %value.1.sub22, %do.end ], [ 0, %entry ]
ret i32 %retval.0, !dbg !726
}
; Function Attrs: nounwind optsize
define float @_ZN6Stream10parseFloatE13LookaheadModec(%class.Stream* %this, i16 %lookahead, i8 signext %ignore) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !400, metadata !477), !dbg !727
tail call void @llvm.dbg.value(metadata i16 %lookahead, i64 0, metadata !401, metadata !477), !dbg !728
tail call void @llvm.dbg.value(metadata i8 %ignore, i64 0, metadata !402, metadata !477), !dbg !729
tail call void @llvm.dbg.value(metadata i8 0, i64 0, metadata !403, metadata !477), !dbg !730
tail call void @llvm.dbg.value(metadata i8 0, i64 0, metadata !404, metadata !477), !dbg !731
tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !405, metadata !477), !dbg !732
tail call void @llvm.dbg.value(metadata float 1.000000e+00, i64 0, metadata !407, metadata !477), !dbg !733
%call = tail call i16 @_ZN6Stream13peekNextDigitE13LookaheadModeb(%class.Stream* %this, i16 %lookahead, i1 zeroext true) #6, !dbg !734
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !406, metadata !477), !dbg !735
%cmp = icmp slt i16 %call, 0, !dbg !736
br i1 %cmp, label %cleanup, label %do.body.preheader, !dbg !738
do.body.preheader: ; preds = %entry
%conv = sext i8 %ignore to i16, !dbg !739
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !742
br label %do.body, !dbg !739
do.body: ; preds = %lor.lhs.false, %if.end.20, %do.body.preheader
%isNegative.0 = phi i8 [ 0, %do.body.preheader ], [ %isNegative.1, %if.end.20 ], [ %isNegative.1, %lor.lhs.false ]
%isFraction.0 = phi i8 [ 0, %do.body.preheader ], [ %isFraction.1, %if.end.20 ], [ %isFraction.1, %lor.lhs.false ]
%value.0 = phi i32 [ 0, %do.body.preheader ], [ %value.1, %if.end.20 ], [ %value.1, %lor.lhs.false ]
%c.0 = phi i16 [ %call, %do.body.preheader ], [ %call22, %if.end.20 ], [ %call22, %lor.lhs.false ]
%fraction.0 = phi float [ 1.000000e+00, %do.body.preheader ], [ %fraction.1, %if.end.20 ], [ %fraction.1, %lor.lhs.false ]
%cmp2 = icmp eq i16 %c.0, %conv, !dbg !743
br i1 %cmp2, label %if.end.20, label %if.else, !dbg !744
if.else: ; preds = %do.body
switch i16 %c.0, label %if.else.9 [
i16 45, label %if.end.20
i16 46, label %if.then.8
], !dbg !745
if.then.8: ; preds = %if.else
tail call void @llvm.dbg.value(metadata i8 1, i64 0, metadata !404, metadata !477), !dbg !731
br label %if.end.20, !dbg !746
if.else.9: ; preds = %if.else
%c.0.off = add i16 %c.0, -48, !dbg !749
%1 = icmp ult i16 %c.0.off, 10, !dbg !749
br i1 %1, label %if.then.12, label %if.end.20, !dbg !749
if.then.12: ; preds = %if.else.9
%mul = mul nsw i32 %value.0, 10, !dbg !751
%conv13 = sext i16 %c.0 to i32, !dbg !753
%add = add i32 %mul, -48, !dbg !754
%sub = add i32 %add, %conv13, !dbg !755
tail call void @llvm.dbg.value(metadata i32 %sub, i64 0, metadata !405, metadata !477), !dbg !732
%2 = and i8 %isFraction.0, 1, !dbg !756
%tobool = icmp eq i8 %2, 0, !dbg !756
%mul15 = fmul float %fraction.0, 0x3FB99999A0000000, !dbg !758
tail call void @llvm.dbg.value(metadata float %mul15, i64 0, metadata !407, metadata !477), !dbg !733
%fraction.0.mul15 = select i1 %tobool, float %fraction.0, float %mul15, !dbg !759
br label %if.end.20, !dbg !759
if.end.20: ; preds = %if.then.12, %if.else, %if.else.9, %if.then.8, %do.body
%isNegative.1 = phi i8 [ %isNegative.0, %do.body ], [ %isNegative.0, %if.then.8 ], [ %isNegative.0, %if.else.9 ], [ 1, %if.else ], [ %isNegative.0, %if.then.12 ]
%isFraction.1 = phi i8 [ %isFraction.0, %do.body ], [ 1, %if.then.8 ], [ %isFraction.0, %if.else.9 ], [ %isFraction.0, %if.else ], [ %isFraction.0, %if.then.12 ]
%value.1 = phi i32 [ %value.0, %do.body ], [ %value.0, %if.then.8 ], [ %value.0, %if.else.9 ], [ %value.0, %if.else ], [ %sub, %if.then.12 ]
%fraction.1 = phi float [ %fraction.0, %do.body ], [ %fraction.0, %if.then.8 ], [ %fraction.0, %if.else.9 ], [ %fraction.0, %if.else ], [ %fraction.0.mul15, %if.then.12 ]
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !742, !tbaa !491
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !742
%3 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !742
%call21 = tail call i16 %3(%class.Stream* %this) #5, !dbg !742
%call22 = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #6, !dbg !760
tail call void @llvm.dbg.value(metadata i16 %call22, i64 0, metadata !406, metadata !477), !dbg !735
%call22.off = add i16 %call22, -48, !dbg !761
%4 = icmp ult i16 %call22.off, 10, !dbg !761
br i1 %4, label %do.body, label %lor.lhs.false, !dbg !761
lor.lhs.false: ; preds = %if.end.20
%cmp26 = icmp eq i16 %call22, 46, !dbg !762
%5 = and i8 %isFraction.1, 1, !dbg !763
%tobool28 = icmp eq i8 %5, 0, !dbg !763
%or.cond = and i1 %tobool28, %cmp26, !dbg !765
%cmp30 = icmp eq i16 %call22, %conv, !dbg !766
%or.cond66 = or i1 %cmp30, %or.cond, !dbg !765
br i1 %or.cond66, label %do.body, label %do.end, !dbg !765
do.end: ; preds = %lor.lhs.false
%6 = and i8 %isNegative.1, 1, !dbg !767
%tobool31 = icmp eq i8 %6, 0, !dbg !767
%sub33 = sub nsw i32 0, %value.1, !dbg !769
tail call void @llvm.dbg.value(metadata i32 %sub33, i64 0, metadata !405, metadata !477), !dbg !732
%value.1.sub33 = select i1 %tobool31, i32 %value.1, i32 %sub33, !dbg !770
%conv37 = sitofp i32 %value.1.sub33 to float, !dbg !771
%mul38 = fmul float %fraction.1, %conv37, !dbg !773
%conv37.mul38 = select i1 %tobool28, float %conv37, float %mul38, !dbg !774
ret float %conv37.mul38, !dbg !774
cleanup: ; preds = %entry
ret float 0.000000e+00, !dbg !775
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream9readBytesEPcj(%class.Stream* %this, i8* nocapture %buffer, i16 %length) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !413, metadata !477), !dbg !776
tail call void @llvm.dbg.value(metadata i8* %buffer, i64 0, metadata !414, metadata !477), !dbg !777
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !415, metadata !477), !dbg !778
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !416, metadata !477), !dbg !779
%cmp.9 = icmp eq i16 %length, 0, !dbg !780
br i1 %cmp.9, label %while.end, label %while.body, !dbg !781
while.body: ; preds = %entry, %cleanup.thread
%buffer.addr.011 = phi i8* [ %incdec.ptr, %cleanup.thread ], [ %buffer, %entry ]
%count.010 = phi i16 [ %inc, %cleanup.thread ], [ 0, %entry ]
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !782
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !417, metadata !477), !dbg !783
%cmp2 = icmp slt i16 %call, 0, !dbg !784
br i1 %cmp2, label %while.end, label %cleanup.thread, !dbg !786
cleanup.thread: ; preds = %while.body
%conv = trunc i16 %call to i8, !dbg !787
%incdec.ptr = getelementptr inbounds i8, i8* %buffer.addr.011, i16 1, !dbg !788
tail call void @llvm.dbg.value(metadata i8* %incdec.ptr, i64 0, metadata !414, metadata !477), !dbg !777
store i8 %conv, i8* %buffer.addr.011, align 1, !dbg !789, !tbaa !641
%inc = add nuw i16 %count.010, 1, !dbg !790
tail call void @llvm.dbg.value(metadata i16 %inc, i64 0, metadata !416, metadata !477), !dbg !779
%cmp = icmp ult i16 %inc, %length, !dbg !780
br i1 %cmp, label %while.body, label %while.end, !dbg !781
while.end: ; preds = %cleanup.thread, %while.body, %entry
%count.0.lcssa = phi i16 [ 0, %entry ], [ %inc, %cleanup.thread ], [ %count.010, %while.body ]
ret i16 %count.0.lcssa, !dbg !791
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream14readBytesUntilEcPcj(%class.Stream* %this, i8 signext %terminator, i8* nocapture %buffer, i16 %length) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !424, metadata !477), !dbg !792
tail call void @llvm.dbg.value(metadata i8 %terminator, i64 0, metadata !425, metadata !477), !dbg !793
tail call void @llvm.dbg.value(metadata i8* %buffer, i64 0, metadata !426, metadata !477), !dbg !794
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !427, metadata !477), !dbg !795
%0 = icmp eq i16 %length, 0, !dbg !796
br i1 %0, label %return, label %while.body.lr.ph, !dbg !796
while.body.lr.ph: ; preds = %entry
%conv = sext i8 %terminator to i16, !dbg !797
br label %while.body, !dbg !799
while.body: ; preds = %while.body.lr.ph, %cleanup.thread
%index.018 = phi i16 [ 0, %while.body.lr.ph ], [ %inc, %cleanup.thread ]
%buffer.addr.017 = phi i8* [ %buffer, %while.body.lr.ph ], [ %incdec.ptr, %cleanup.thread ]
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !800
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !429, metadata !477), !dbg !801
%cmp3 = icmp slt i16 %call, 0, !dbg !802
%cmp4 = icmp eq i16 %call, %conv, !dbg !803
%or.cond = or i1 %cmp3, %cmp4, !dbg !804
br i1 %or.cond, label %return, label %cleanup.thread, !dbg !804
cleanup.thread: ; preds = %while.body
%conv7 = trunc i16 %call to i8, !dbg !805
%incdec.ptr = getelementptr inbounds i8, i8* %buffer.addr.017, i16 1, !dbg !806
tail call void @llvm.dbg.value(metadata i8* %incdec.ptr, i64 0, metadata !426, metadata !477), !dbg !794
store i8 %conv7, i8* %buffer.addr.017, align 1, !dbg !807, !tbaa !641
%inc = add nuw i16 %index.018, 1, !dbg !808
tail call void @llvm.dbg.value(metadata i16 %inc, i64 0, metadata !428, metadata !477), !dbg !809
%cmp2 = icmp ult i16 %inc, %length, !dbg !810
br i1 %cmp2, label %while.body, label %return, !dbg !799
return: ; preds = %cleanup.thread, %while.body, %entry
%retval.0 = phi i16 [ 0, %entry ], [ %index.018, %while.body ], [ %inc, %cleanup.thread ]
ret i16 %retval.0, !dbg !811
}
; Function Attrs: nounwind optsize
define void @_ZN6Stream10readStringEv(%class.String* noalias sret %agg.result, %class.Stream* %this) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !436, metadata !477), !dbg !812
tail call void @llvm.dbg.declare(metadata %class.String* %agg.result, metadata !437, metadata !813), !dbg !814
tail call void @_ZN6StringC1EPKc(%class.String* %agg.result, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i16 0, i16 0)) #5, !dbg !814
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !815
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !438, metadata !477), !dbg !816
%cmp.6 = icmp sgt i16 %call, -1, !dbg !817
br i1 %cmp.6, label %while.body.preheader, label %nrvo.skipdtor, !dbg !818
while.body.preheader: ; preds = %entry
%extract.t8 = trunc i16 %call to i8, !dbg !818
br label %while.body, !dbg !819
while.body: ; preds = %while.body.preheader, %while.body
%c.07.off0 = phi i8 [ %extract.t, %while.body ], [ %extract.t8, %while.body.preheader ]
tail call void @llvm.dbg.value(metadata %class.String* %agg.result, i64 0, metadata !471, metadata !477) #8, !dbg !819
tail call void @llvm.dbg.value(metadata i8 %c.07.off0, i64 0, metadata !473, metadata !477) #8, !dbg !822
%call.i = tail call zeroext i8 @_ZN6String6concatEc(%class.String* %agg.result, i8 signext %c.07.off0) #5, !dbg !823
%call3 = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !824
tail call void @llvm.dbg.value(metadata i16 %call3, i64 0, metadata !438, metadata !477), !dbg !816
%cmp = icmp sgt i16 %call3, -1, !dbg !817
%extract.t = trunc i16 %call3 to i8, !dbg !818
br i1 %cmp, label %while.body, label %nrvo.skipdtor, !dbg !818
nrvo.skipdtor: ; preds = %while.body, %entry
ret void, !dbg !825
}
; Function Attrs: optsize
declare void @_ZN6StringC1EPKc(%class.String*, i8*) #3
; Function Attrs: nounwind optsize
define void @_ZN6Stream15readStringUntilEc(%class.String* noalias sret %agg.result, %class.Stream* %this, i8 signext %terminator) #0 align 2 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !444, metadata !477), !dbg !828
tail call void @llvm.dbg.value(metadata i8 %terminator, i64 0, metadata !445, metadata !477), !dbg !829
tail call void @llvm.dbg.declare(metadata %class.String* %agg.result, metadata !446, metadata !813), !dbg !830
tail call void @_ZN6StringC1EPKc(%class.String* %agg.result, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i16 0, i16 0)) #5, !dbg !830
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !831
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !447, metadata !477), !dbg !832
%cmp.9 = icmp slt i16 %call, 0, !dbg !833
%conv = sext i8 %terminator to i16, !dbg !834
%cmp2.10 = icmp eq i16 %call, %conv, !dbg !835
%or.cond.11 = or i1 %cmp.9, %cmp2.10, !dbg !836
br i1 %or.cond.11, label %nrvo.skipdtor, label %while.body.preheader, !dbg !836
while.body.preheader: ; preds = %entry
%extract.t13 = trunc i16 %call to i8, !dbg !836
br label %while.body, !dbg !837
while.body: ; preds = %while.body.preheader, %while.body
%c.012.off0 = phi i8 [ %extract.t, %while.body ], [ %extract.t13, %while.body.preheader ]
tail call void @llvm.dbg.value(metadata %class.String* %agg.result, i64 0, metadata !471, metadata !477) #8, !dbg !837
tail call void @llvm.dbg.value(metadata i8 %c.012.off0, i64 0, metadata !473, metadata !477) #8, !dbg !840
%call.i = tail call zeroext i8 @_ZN6String6concatEc(%class.String* %agg.result, i8 signext %c.012.off0) #5, !dbg !841
%call5 = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #6, !dbg !842
tail call void @llvm.dbg.value(metadata i16 %call5, i64 0, metadata !447, metadata !477), !dbg !832
%cmp = icmp slt i16 %call5, 0, !dbg !833
%cmp2 = icmp eq i16 %call5, %conv, !dbg !835
%or.cond = or i1 %cmp, %cmp2, !dbg !836
%extract.t = trunc i16 %call5 to i8, !dbg !836
br i1 %or.cond, label %nrvo.skipdtor, label %while.body, !dbg !836
nrvo.skipdtor: ; preds = %while.body, %entry
ret void, !dbg !843
}
; Function Attrs: optsize
declare zeroext i8 @_ZN6String6concatEc(%class.String*, i8 signext) #3
; Function Attrs: nounwind readnone
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #1
attributes #0 = { nounwind optsize "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="atmega328p" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind readnone }
attributes #2 = { nounwind argmemonly }
attributes #3 = { optsize "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="atmega328p" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #4 = { nounwind optsize readonly "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="atmega328p" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { nounwind optsize }
attributes #6 = { optsize }
attributes #7 = { nounwind optsize readonly }
attributes #8 = { nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!474, !475}
!llvm.ident = !{!476}
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (https://github.com/avr-llvm/clang.git 55d2db19d360a92b3b87444a2ea5e07d1624a2bc) (llvm/llvm.git ed02a4bc0484efbf1362cf04520976ea52d4351f)", isOptimized: true, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !9, subprograms: !308)
!1 = !DIFile(filename: "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Stream.cpp", directory: "/Users/asmirnov/Documents/dev/src/avr-llvm/build/bin")
!2 = !{!3}
!3 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "LookaheadMode", file: !4, line: 41, size: 16, align: 16, elements: !5, identifier: "_ZTS13LookaheadMode")
!4 = !DIFile(filename: "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Stream.h", directory: "/Users/asmirnov/Documents/dev/src/avr-llvm/build/bin")
!5 = !{!6, !7, !8}
!6 = !DIEnumerator(name: "SKIP_ALL", value: 0)
!7 = !DIEnumerator(name: "SKIP_NONE", value: 1)
!8 = !DIEnumerator(name: "SKIP_WHITESPACE", value: 2)
!9 = !{!10, !3, !11, !16, !22, !273, !274}
!10 = !DICompositeType(tag: DW_TAG_class_type, name: "Stream", file: !4, line: 49, size: 96, align: 16, flags: DIFlagFwdDecl, identifier: "_ZTS6Stream")
!11 = !DICompositeType(tag: DW_TAG_structure_type, name: "MultiTarget", scope: !"_ZTS6Stream", file: !4, line: 117, size: 48, align: 16, elements: !12, identifier: "_ZTSN6Stream11MultiTargetE")
!12 = !{!13, !17, !21}
!13 = !DIDerivedType(tag: DW_TAG_member, name: "str", scope: !"_ZTSN6Stream11MultiTargetE", file: !4, line: 118, baseType: !14, size: 16, align: 16)
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 16, align: 16)
!15 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !16)
!16 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
!17 = !DIDerivedType(tag: DW_TAG_member, name: "len", scope: !"_ZTSN6Stream11MultiTargetE", file: !4, line: 119, baseType: !18, size: 16, align: 16, offset: 16)
!18 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !19, line: 62, baseType: !20)
!19 = !DIFile(filename: "/Users/asmirnov/Documents/dev/src/avr-llvm/build/bin/../lib/clang/3.8.0/include/stddef.h", directory: "/Users/asmirnov/Documents/dev/src/avr-llvm/build/bin")
!20 = !DIBasicType(name: "unsigned int", size: 16, align: 16, encoding: DW_ATE_unsigned)
!21 = !DIDerivedType(tag: DW_TAG_member, name: "index", scope: !"_ZTSN6Stream11MultiTargetE", file: !4, line: 120, baseType: !18, size: 16, align: 16, offset: 32)
!22 = !DICompositeType(tag: DW_TAG_class_type, name: "String", file: !23, line: 45, size: 48, align: 16, elements: !24, identifier: "_ZTS6String")
!23 = !DIFile(filename: "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/WString.h", directory: "/Users/asmirnov/Documents/dev/src/avr-llvm/build/bin")
!24 = !{!25, !27, !28, !29, !34, !38, !42, !47, !51, !55, !58, !62, !66, !69, !73, !77, !81, !85, !88, !91, !94, !98, !101, !104, !107, !110, !113, !116, !119, !122, !125, !126, !129, !132, !135, !138, !141, !142, !143, !146, !149, !152, !155, !158, !161, !164, !167, !168, !173, !176, !179, !182, !183, !184, !185, !186, !187, !188, !189, !190, !191, !192, !195, !196, !199, !202, !203, !207, !211, !214, !217, !220, !223, !224, !227, !228, !229, !230, !231, !234, !237, !240, !243, !246, !249, !250, !251, !252, !255, !258, !259, !260, !261, !264, !267, !270}
!25 = !DIDerivedType(tag: DW_TAG_member, name: "buffer", scope: !"_ZTS6String", file: !23, line: 191, baseType: !26, size: 16, align: 16, flags: DIFlagProtected)
!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 16, align: 16)
!27 = !DIDerivedType(tag: DW_TAG_member, name: "capacity", scope: !"_ZTS6String", file: !23, line: 192, baseType: !20, size: 16, align: 16, offset: 16, flags: DIFlagProtected)
!28 = !DIDerivedType(tag: DW_TAG_member, name: "len", scope: !"_ZTS6String", file: !23, line: 193, baseType: !20, size: 16, align: 16, offset: 32, flags: DIFlagProtected)
!29 = !DISubprogram(name: "StringIfHelper", linkageName: "_ZNK6String14StringIfHelperEv", scope: !"_ZTS6String", file: !23, line: 51, type: !30, isLocal: false, isDefinition: false, scopeLine: 51, flags: DIFlagPrototyped, isOptimized: true)
!30 = !DISubroutineType(types: !31)
!31 = !{null, !32}
!32 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !33, size: 16, align: 16, flags: DIFlagArtificial | DIFlagObjectPointer)
!33 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !"_ZTS6String")
!34 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 59, type: !35, isLocal: false, isDefinition: false, scopeLine: 59, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!35 = !DISubroutineType(types: !36)
!36 = !{null, !37, !14}
!37 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS6String", size: 16, align: 16, flags: DIFlagArtificial | DIFlagObjectPointer)
!38 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 60, type: !39, isLocal: false, isDefinition: false, scopeLine: 60, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!39 = !DISubroutineType(types: !40)
!40 = !{null, !37, !41}
!41 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !33)
!42 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 61, type: !43, isLocal: false, isDefinition: false, scopeLine: 61, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!43 = !DISubroutineType(types: !44)
!44 = !{null, !37, !45}
!45 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !46, size: 16, align: 16)
!46 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !"_ZTS19__FlashStringHelper")
!47 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 63, type: !48, isLocal: false, isDefinition: false, scopeLine: 63, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!48 = !DISubroutineType(types: !49)
!49 = !{null, !37, !50}
!50 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !"_ZTS6String")
!51 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 64, type: !52, isLocal: false, isDefinition: false, scopeLine: 64, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!52 = !DISubroutineType(types: !53)
!53 = !{null, !37, !54}
!54 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !"_ZTS15StringSumHelper")
!55 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 66, type: !56, isLocal: false, isDefinition: false, scopeLine: 66, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!56 = !DISubroutineType(types: !57)
!57 = !{null, !37, !16}
!58 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 67, type: !59, isLocal: false, isDefinition: false, scopeLine: 67, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!59 = !DISubroutineType(types: !60)
!60 = !{null, !37, !61, !61}
!61 = !DIBasicType(name: "unsigned char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
!62 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 68, type: !63, isLocal: false, isDefinition: false, scopeLine: 68, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!63 = !DISubroutineType(types: !64)
!64 = !{null, !37, !65, !61}
!65 = !DIBasicType(name: "int", size: 16, align: 16, encoding: DW_ATE_signed)
!66 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 69, type: !67, isLocal: false, isDefinition: false, scopeLine: 69, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!67 = !DISubroutineType(types: !68)
!68 = !{null, !37, !20, !61}
!69 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 70, type: !70, isLocal: false, isDefinition: false, scopeLine: 70, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!70 = !DISubroutineType(types: !71)
!71 = !{null, !37, !72, !61}
!72 = !DIBasicType(name: "long int", size: 32, align: 16, encoding: DW_ATE_signed)
!73 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 71, type: !74, isLocal: false, isDefinition: false, scopeLine: 71, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!74 = !DISubroutineType(types: !75)
!75 = !{null, !37, !76, !61}
!76 = !DIBasicType(name: "long unsigned int", size: 32, align: 16, encoding: DW_ATE_unsigned)
!77 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 72, type: !78, isLocal: false, isDefinition: false, scopeLine: 72, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!78 = !DISubroutineType(types: !79)
!79 = !{null, !37, !80, !61}
!80 = !DIBasicType(name: "float", size: 32, align: 32, encoding: DW_ATE_float)
!81 = !DISubprogram(name: "String", scope: !"_ZTS6String", file: !23, line: 73, type: !82, isLocal: false, isDefinition: false, scopeLine: 73, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: true)
!82 = !DISubroutineType(types: !83)
!83 = !{null, !37, !84, !61}
!84 = !DIBasicType(name: "double", size: 32, align: 32, encoding: DW_ATE_float)
!85 = !DISubprogram(name: "~String", scope: !"_ZTS6String", file: !23, line: 74, type: !86, isLocal: false, isDefinition: false, scopeLine: 74, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!86 = !DISubroutineType(types: !87)
!87 = !{null, !37}
!88 = !DISubprogram(name: "reserve", linkageName: "_ZN6String7reserveEj", scope: !"_ZTS6String", file: !23, line: 80, type: !89, isLocal: false, isDefinition: false, scopeLine: 80, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!89 = !DISubroutineType(types: !90)
!90 = !{!61, !37, !20}
!91 = !DISubprogram(name: "length", linkageName: "_ZNK6String6lengthEv", scope: !"_ZTS6String", file: !23, line: 81, type: !92, isLocal: false, isDefinition: false, scopeLine: 81, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!92 = !DISubroutineType(types: !93)
!93 = !{!20, !32}
!94 = !DISubprogram(name: "operator=", linkageName: "_ZN6StringaSERKS_", scope: !"_ZTS6String", file: !23, line: 86, type: !95, isLocal: false, isDefinition: false, scopeLine: 86, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!95 = !DISubroutineType(types: !96)
!96 = !{!97, !37, !41}
!97 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !"_ZTS6String")
!98 = !DISubprogram(name: "operator=", linkageName: "_ZN6StringaSEPKc", scope: !"_ZTS6String", file: !23, line: 87, type: !99, isLocal: false, isDefinition: false, scopeLine: 87, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!99 = !DISubroutineType(types: !100)
!100 = !{!97, !37, !14}
!101 = !DISubprogram(name: "operator=", linkageName: "_ZN6StringaSEPK19__FlashStringHelper", scope: !"_ZTS6String", file: !23, line: 88, type: !102, isLocal: false, isDefinition: false, scopeLine: 88, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!102 = !DISubroutineType(types: !103)
!103 = !{!97, !37, !45}
!104 = !DISubprogram(name: "operator=", linkageName: "_ZN6StringaSEOS_", scope: !"_ZTS6String", file: !23, line: 90, type: !105, isLocal: false, isDefinition: false, scopeLine: 90, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!105 = !DISubroutineType(types: !106)
!106 = !{!97, !37, !50}
!107 = !DISubprogram(name: "operator=", linkageName: "_ZN6StringaSEO15StringSumHelper", scope: !"_ZTS6String", file: !23, line: 91, type: !108, isLocal: false, isDefinition: false, scopeLine: 91, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!108 = !DISubroutineType(types: !109)
!109 = !{!97, !37, !54}
!110 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatERKS_", scope: !"_ZTS6String", file: !23, line: 99, type: !111, isLocal: false, isDefinition: false, scopeLine: 99, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!111 = !DISubroutineType(types: !112)
!112 = !{!61, !37, !41}
!113 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEPKc", scope: !"_ZTS6String", file: !23, line: 100, type: !114, isLocal: false, isDefinition: false, scopeLine: 100, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!114 = !DISubroutineType(types: !115)
!115 = !{!61, !37, !14}
!116 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEc", scope: !"_ZTS6String", file: !23, line: 101, type: !117, isLocal: false, isDefinition: false, scopeLine: 101, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!117 = !DISubroutineType(types: !118)
!118 = !{!61, !37, !16}
!119 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEh", scope: !"_ZTS6String", file: !23, line: 102, type: !120, isLocal: false, isDefinition: false, scopeLine: 102, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!120 = !DISubroutineType(types: !121)
!121 = !{!61, !37, !61}
!122 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEi", scope: !"_ZTS6String", file: !23, line: 103, type: !123, isLocal: false, isDefinition: false, scopeLine: 103, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!123 = !DISubroutineType(types: !124)
!124 = !{!61, !37, !65}
!125 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEj", scope: !"_ZTS6String", file: !23, line: 104, type: !89, isLocal: false, isDefinition: false, scopeLine: 104, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!126 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEl", scope: !"_ZTS6String", file: !23, line: 105, type: !127, isLocal: false, isDefinition: false, scopeLine: 105, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!127 = !DISubroutineType(types: !128)
!128 = !{!61, !37, !72}
!129 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEm", scope: !"_ZTS6String", file: !23, line: 106, type: !130, isLocal: false, isDefinition: false, scopeLine: 106, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!130 = !DISubroutineType(types: !131)
!131 = !{!61, !37, !76}
!132 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEf", scope: !"_ZTS6String", file: !23, line: 107, type: !133, isLocal: false, isDefinition: false, scopeLine: 107, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!133 = !DISubroutineType(types: !134)
!134 = !{!61, !37, !80}
!135 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEd", scope: !"_ZTS6String", file: !23, line: 108, type: !136, isLocal: false, isDefinition: false, scopeLine: 108, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!136 = !DISubroutineType(types: !137)
!137 = !{!61, !37, !84}
!138 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEPK19__FlashStringHelper", scope: !"_ZTS6String", file: !23, line: 109, type: !139, isLocal: false, isDefinition: false, scopeLine: 109, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!139 = !DISubroutineType(types: !140)
!140 = !{!61, !37, !45}
!141 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLERKS_", scope: !"_ZTS6String", file: !23, line: 113, type: !95, isLocal: false, isDefinition: false, scopeLine: 113, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!142 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEPKc", scope: !"_ZTS6String", file: !23, line: 114, type: !99, isLocal: false, isDefinition: false, scopeLine: 114, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!143 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEc", scope: !"_ZTS6String", file: !23, line: 115, type: !144, isLocal: false, isDefinition: false, scopeLine: 115, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!144 = !DISubroutineType(types: !145)
!145 = !{!97, !37, !16}
!146 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEh", scope: !"_ZTS6String", file: !23, line: 116, type: !147, isLocal: false, isDefinition: false, scopeLine: 116, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!147 = !DISubroutineType(types: !148)
!148 = !{!97, !37, !61}
!149 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEi", scope: !"_ZTS6String", file: !23, line: 117, type: !150, isLocal: false, isDefinition: false, scopeLine: 117, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!150 = !DISubroutineType(types: !151)
!151 = !{!97, !37, !65}
!152 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEj", scope: !"_ZTS6String", file: !23, line: 118, type: !153, isLocal: false, isDefinition: false, scopeLine: 118, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!153 = !DISubroutineType(types: !154)
!154 = !{!97, !37, !20}
!155 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEl", scope: !"_ZTS6String", file: !23, line: 119, type: !156, isLocal: false, isDefinition: false, scopeLine: 119, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!156 = !DISubroutineType(types: !157)
!157 = !{!97, !37, !72}
!158 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEm", scope: !"_ZTS6String", file: !23, line: 120, type: !159, isLocal: false, isDefinition: false, scopeLine: 120, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!159 = !DISubroutineType(types: !160)
!160 = !{!97, !37, !76}
!161 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEf", scope: !"_ZTS6String", file: !23, line: 121, type: !162, isLocal: false, isDefinition: false, scopeLine: 121, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!162 = !DISubroutineType(types: !163)
!163 = !{!97, !37, !80}
!164 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEd", scope: !"_ZTS6String", file: !23, line: 122, type: !165, isLocal: false, isDefinition: false, scopeLine: 122, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!165 = !DISubroutineType(types: !166)
!166 = !{!97, !37, !84}
!167 = !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEPK19__FlashStringHelper", scope: !"_ZTS6String", file: !23, line: 123, type: !102, isLocal: false, isDefinition: false, scopeLine: 123, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!168 = !DISubprogram(name: "operator void (String::*)() const", linkageName: "_ZNK6StringcvMS_KFvvEEv", scope: !"_ZTS6String", file: !23, line: 138, type: !169, isLocal: false, isDefinition: false, scopeLine: 138, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!169 = !DISubroutineType(types: !170)
!170 = !{!171, !32}
!171 = !DIDerivedType(tag: DW_TAG_typedef, name: "StringIfHelperType", scope: !"_ZTS6String", file: !23, line: 50, baseType: !172)
!172 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !30, size: 32, extraData: !"_ZTS6String")
!173 = !DISubprogram(name: "compareTo", linkageName: "_ZNK6String9compareToERKS_", scope: !"_ZTS6String", file: !23, line: 139, type: !174, isLocal: false, isDefinition: false, scopeLine: 139, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!174 = !DISubroutineType(types: !175)
!175 = !{!65, !32, !41}
!176 = !DISubprogram(name: "equals", linkageName: "_ZNK6String6equalsERKS_", scope: !"_ZTS6String", file: !23, line: 140, type: !177, isLocal: false, isDefinition: false, scopeLine: 140, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!177 = !DISubroutineType(types: !178)
!178 = !{!61, !32, !41}
!179 = !DISubprogram(name: "equals", linkageName: "_ZNK6String6equalsEPKc", scope: !"_ZTS6String", file: !23, line: 141, type: !180, isLocal: false, isDefinition: false, scopeLine: 141, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!180 = !DISubroutineType(types: !181)
!181 = !{!61, !32, !14}
!182 = !DISubprogram(name: "operator==", linkageName: "_ZNK6StringeqERKS_", scope: !"_ZTS6String", file: !23, line: 142, type: !177, isLocal: false, isDefinition: false, scopeLine: 142, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!183 = !DISubprogram(name: "operator==", linkageName: "_ZNK6StringeqEPKc", scope: !"_ZTS6String", file: !23, line: 143, type: !180, isLocal: false, isDefinition: false, scopeLine: 143, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!184 = !DISubprogram(name: "operator!=", linkageName: "_ZNK6StringneERKS_", scope: !"_ZTS6String", file: !23, line: 144, type: !177, isLocal: false, isDefinition: false, scopeLine: 144, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!185 = !DISubprogram(name: "operator!=", linkageName: "_ZNK6StringneEPKc", scope: !"_ZTS6String", file: !23, line: 145, type: !180, isLocal: false, isDefinition: false, scopeLine: 145, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!186 = !DISubprogram(name: "operator<", linkageName: "_ZNK6StringltERKS_", scope: !"_ZTS6String", file: !23, line: 146, type: !177, isLocal: false, isDefinition: false, scopeLine: 146, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!187 = !DISubprogram(name: "operator>", linkageName: "_ZNK6StringgtERKS_", scope: !"_ZTS6String", file: !23, line: 147, type: !177, isLocal: false, isDefinition: false, scopeLine: 147, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!188 = !DISubprogram(name: "operator<=", linkageName: "_ZNK6StringleERKS_", scope: !"_ZTS6String", file: !23, line: 148, type: !177, isLocal: false, isDefinition: false, scopeLine: 148, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!189 = !DISubprogram(name: "operator>=", linkageName: "_ZNK6StringgeERKS_", scope: !"_ZTS6String", file: !23, line: 149, type: !177, isLocal: false, isDefinition: false, scopeLine: 149, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!190 = !DISubprogram(name: "equalsIgnoreCase", linkageName: "_ZNK6String16equalsIgnoreCaseERKS_", scope: !"_ZTS6String", file: !23, line: 150, type: !177, isLocal: false, isDefinition: false, scopeLine: 150, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!191 = !DISubprogram(name: "startsWith", linkageName: "_ZNK6String10startsWithERKS_", scope: !"_ZTS6String", file: !23, line: 151, type: !177, isLocal: false, isDefinition: false, scopeLine: 151, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!192 = !DISubprogram(name: "startsWith", linkageName: "_ZNK6String10startsWithERKS_j", scope: !"_ZTS6String", file: !23, line: 152, type: !193, isLocal: false, isDefinition: false, scopeLine: 152, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!193 = !DISubroutineType(types: !194)
!194 = !{!61, !32, !41, !20}
!195 = !DISubprogram(name: "endsWith", linkageName: "_ZNK6String8endsWithERKS_", scope: !"_ZTS6String", file: !23, line: 153, type: !177, isLocal: false, isDefinition: false, scopeLine: 153, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!196 = !DISubprogram(name: "charAt", linkageName: "_ZNK6String6charAtEj", scope: !"_ZTS6String", file: !23, line: 156, type: !197, isLocal: false, isDefinition: false, scopeLine: 156, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!197 = !DISubroutineType(types: !198)
!198 = !{!16, !32, !20}
!199 = !DISubprogram(name: "setCharAt", linkageName: "_ZN6String9setCharAtEjc", scope: !"_ZTS6String", file: !23, line: 157, type: !200, isLocal: false, isDefinition: false, scopeLine: 157, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!200 = !DISubroutineType(types: !201)
!201 = !{null, !37, !20, !16}
!202 = !DISubprogram(name: "operator[]", linkageName: "_ZNK6StringixEj", scope: !"_ZTS6String", file: !23, line: 158, type: !197, isLocal: false, isDefinition: false, scopeLine: 158, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!203 = !DISubprogram(name: "operator[]", linkageName: "_ZN6StringixEj", scope: !"_ZTS6String", file: !23, line: 159, type: !204, isLocal: false, isDefinition: false, scopeLine: 159, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!204 = !DISubroutineType(types: !205)
!205 = !{!206, !37, !20}
!206 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !16)
!207 = !DISubprogram(name: "getBytes", linkageName: "_ZNK6String8getBytesEPhjj", scope: !"_ZTS6String", file: !23, line: 160, type: !208, isLocal: false, isDefinition: false, scopeLine: 160, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!208 = !DISubroutineType(types: !209)
!209 = !{null, !32, !210, !20, !20}
!210 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !61, size: 16, align: 16)
!211 = !DISubprogram(name: "toCharArray", linkageName: "_ZNK6String11toCharArrayEPcjj", scope: !"_ZTS6String", file: !23, line: 161, type: !212, isLocal: false, isDefinition: false, scopeLine: 161, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!212 = !DISubroutineType(types: !213)
!213 = !{null, !32, !26, !20, !20}
!214 = !DISubprogram(name: "c_str", linkageName: "_ZNK6String5c_strEv", scope: !"_ZTS6String", file: !23, line: 163, type: !215, isLocal: false, isDefinition: false, scopeLine: 163, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!215 = !DISubroutineType(types: !216)
!216 = !{!14, !32}
!217 = !DISubprogram(name: "indexOf", linkageName: "_ZNK6String7indexOfEc", scope: !"_ZTS6String", file: !23, line: 166, type: !218, isLocal: false, isDefinition: false, scopeLine: 166, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!218 = !DISubroutineType(types: !219)
!219 = !{!65, !32, !16}
!220 = !DISubprogram(name: "indexOf", linkageName: "_ZNK6String7indexOfEcj", scope: !"_ZTS6String", file: !23, line: 167, type: !221, isLocal: false, isDefinition: false, scopeLine: 167, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!221 = !DISubroutineType(types: !222)
!222 = !{!65, !32, !16, !20}
!223 = !DISubprogram(name: "indexOf", linkageName: "_ZNK6String7indexOfERKS_", scope: !"_ZTS6String", file: !23, line: 168, type: !174, isLocal: false, isDefinition: false, scopeLine: 168, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!224 = !DISubprogram(name: "indexOf", linkageName: "_ZNK6String7indexOfERKS_j", scope: !"_ZTS6String", file: !23, line: 169, type: !225, isLocal: false, isDefinition: false, scopeLine: 169, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!225 = !DISubroutineType(types: !226)
!226 = !{!65, !32, !41, !20}
!227 = !DISubprogram(name: "lastIndexOf", linkageName: "_ZNK6String11lastIndexOfEc", scope: !"_ZTS6String", file: !23, line: 170, type: !218, isLocal: false, isDefinition: false, scopeLine: 170, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!228 = !DISubprogram(name: "lastIndexOf", linkageName: "_ZNK6String11lastIndexOfEcj", scope: !"_ZTS6String", file: !23, line: 171, type: !221, isLocal: false, isDefinition: false, scopeLine: 171, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!229 = !DISubprogram(name: "lastIndexOf", linkageName: "_ZNK6String11lastIndexOfERKS_", scope: !"_ZTS6String", file: !23, line: 172, type: !174, isLocal: false, isDefinition: false, scopeLine: 172, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!230 = !DISubprogram(name: "lastIndexOf", linkageName: "_ZNK6String11lastIndexOfERKS_j", scope: !"_ZTS6String", file: !23, line: 173, type: !225, isLocal: false, isDefinition: false, scopeLine: 173, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!231 = !DISubprogram(name: "substring", linkageName: "_ZNK6String9substringEj", scope: !"_ZTS6String", file: !23, line: 174, type: !232, isLocal: false, isDefinition: false, scopeLine: 174, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!232 = !DISubroutineType(types: !233)
!233 = !{!"_ZTS6String", !32, !20}
!234 = !DISubprogram(name: "substring", linkageName: "_ZNK6String9substringEjj", scope: !"_ZTS6String", file: !23, line: 175, type: !235, isLocal: false, isDefinition: false, scopeLine: 175, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!235 = !DISubroutineType(types: !236)
!236 = !{!"_ZTS6String", !32, !20, !20}
!237 = !DISubprogram(name: "replace", linkageName: "_ZN6String7replaceEcc", scope: !"_ZTS6String", file: !23, line: 178, type: !238, isLocal: false, isDefinition: false, scopeLine: 178, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!238 = !DISubroutineType(types: !239)
!239 = !{null, !37, !16, !16}
!240 = !DISubprogram(name: "replace", linkageName: "_ZN6String7replaceERKS_S1_", scope: !"_ZTS6String", file: !23, line: 179, type: !241, isLocal: false, isDefinition: false, scopeLine: 179, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!241 = !DISubroutineType(types: !242)
!242 = !{null, !37, !41, !41}
!243 = !DISubprogram(name: "remove", linkageName: "_ZN6String6removeEj", scope: !"_ZTS6String", file: !23, line: 180, type: !244, isLocal: false, isDefinition: false, scopeLine: 180, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!244 = !DISubroutineType(types: !245)
!245 = !{null, !37, !20}
!246 = !DISubprogram(name: "remove", linkageName: "_ZN6String6removeEjj", scope: !"_ZTS6String", file: !23, line: 181, type: !247, isLocal: false, isDefinition: false, scopeLine: 181, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!247 = !DISubroutineType(types: !248)
!248 = !{null, !37, !20, !20}
!249 = !DISubprogram(name: "toLowerCase", linkageName: "_ZN6String11toLowerCaseEv", scope: !"_ZTS6String", file: !23, line: 182, type: !86, isLocal: false, isDefinition: false, scopeLine: 182, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!250 = !DISubprogram(name: "toUpperCase", linkageName: "_ZN6String11toUpperCaseEv", scope: !"_ZTS6String", file: !23, line: 183, type: !86, isLocal: false, isDefinition: false, scopeLine: 183, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!251 = !DISubprogram(name: "trim", linkageName: "_ZN6String4trimEv", scope: !"_ZTS6String", file: !23, line: 184, type: !86, isLocal: false, isDefinition: false, scopeLine: 184, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!252 = !DISubprogram(name: "toInt", linkageName: "_ZNK6String5toIntEv", scope: !"_ZTS6String", file: !23, line: 187, type: !253, isLocal: false, isDefinition: false, scopeLine: 187, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!253 = !DISubroutineType(types: !254)
!254 = !{!72, !32}
!255 = !DISubprogram(name: "toFloat", linkageName: "_ZNK6String7toFloatEv", scope: !"_ZTS6String", file: !23, line: 188, type: !256, isLocal: false, isDefinition: false, scopeLine: 188, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!256 = !DISubroutineType(types: !257)
!257 = !{!80, !32}
!258 = !DISubprogram(name: "init", linkageName: "_ZN6String4initEv", scope: !"_ZTS6String", file: !23, line: 195, type: !86, isLocal: false, isDefinition: false, scopeLine: 195, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!259 = !DISubprogram(name: "invalidate", linkageName: "_ZN6String10invalidateEv", scope: !"_ZTS6String", file: !23, line: 196, type: !86, isLocal: false, isDefinition: false, scopeLine: 196, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!260 = !DISubprogram(name: "changeBuffer", linkageName: "_ZN6String12changeBufferEj", scope: !"_ZTS6String", file: !23, line: 197, type: !89, isLocal: false, isDefinition: false, scopeLine: 197, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!261 = !DISubprogram(name: "concat", linkageName: "_ZN6String6concatEPKcj", scope: !"_ZTS6String", file: !23, line: 198, type: !262, isLocal: false, isDefinition: false, scopeLine: 198, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!262 = !DISubroutineType(types: !263)
!263 = !{!61, !37, !14, !20}
!264 = !DISubprogram(name: "copy", linkageName: "_ZN6String4copyEPKcj", scope: !"_ZTS6String", file: !23, line: 201, type: !265, isLocal: false, isDefinition: false, scopeLine: 201, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!265 = !DISubroutineType(types: !266)
!266 = !{!97, !37, !14, !20}
!267 = !DISubprogram(name: "copy", linkageName: "_ZN6String4copyEPK19__FlashStringHelperj", scope: !"_ZTS6String", file: !23, line: 202, type: !268, isLocal: false, isDefinition: false, scopeLine: 202, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!268 = !DISubroutineType(types: !269)
!269 = !{!97, !37, !45, !20}
!270 = !DISubprogram(name: "move", linkageName: "_ZN6String4moveERS_", scope: !"_ZTS6String", file: !23, line: 204, type: !271, isLocal: false, isDefinition: false, scopeLine: 204, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!271 = !DISubroutineType(types: !272)
!272 = !{null, !37, !97}
!273 = !DICompositeType(tag: DW_TAG_class_type, name: "__FlashStringHelper", file: !23, line: 37, flags: DIFlagFwdDecl, identifier: "_ZTS19__FlashStringHelper")
!274 = !DICompositeType(tag: DW_TAG_class_type, name: "StringSumHelper", file: !23, line: 208, size: 48, align: 16, elements: !275, identifier: "_ZTS15StringSumHelper")
!275 = !{!276, !277, !281, !284, !287, !290, !293, !296, !299, !302, !305}
!276 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !"_ZTS15StringSumHelper", baseType: !"_ZTS6String", flags: DIFlagPublic)
!277 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 211, type: !278, isLocal: false, isDefinition: false, scopeLine: 211, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!278 = !DISubroutineType(types: !279)
!279 = !{null, !280, !41}
!280 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS15StringSumHelper", size: 16, align: 16, flags: DIFlagArtificial | DIFlagObjectPointer)
!281 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 212, type: !282, isLocal: false, isDefinition: false, scopeLine: 212, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!282 = !DISubroutineType(types: !283)
!283 = !{null, !280, !14}
!284 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 213, type: !285, isLocal: false, isDefinition: false, scopeLine: 213, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!285 = !DISubroutineType(types: !286)
!286 = !{null, !280, !16}
!287 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 214, type: !288, isLocal: false, isDefinition: false, scopeLine: 214, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!288 = !DISubroutineType(types: !289)
!289 = !{null, !280, !61}
!290 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 215, type: !291, isLocal: false, isDefinition: false, scopeLine: 215, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!291 = !DISubroutineType(types: !292)
!292 = !{null, !280, !65}
!293 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 216, type: !294, isLocal: false, isDefinition: false, scopeLine: 216, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!294 = !DISubroutineType(types: !295)
!295 = !{null, !280, !20}
!296 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 217, type: !297, isLocal: false, isDefinition: false, scopeLine: 217, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!297 = !DISubroutineType(types: !298)
!298 = !{null, !280, !72}
!299 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 218, type: !300, isLocal: false, isDefinition: false, scopeLine: 218, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!300 = !DISubroutineType(types: !301)
!301 = !{null, !280, !76}
!302 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 219, type: !303, isLocal: false, isDefinition: false, scopeLine: 219, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!303 = !DISubroutineType(types: !304)
!304 = !{null, !280, !80}
!305 = !DISubprogram(name: "StringSumHelper", scope: !"_ZTS15StringSumHelper", file: !23, line: 220, type: !306, isLocal: false, isDefinition: false, scopeLine: 220, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!306 = !DISubroutineType(types: !307)
!307 = !{null, !280, !84}
!308 = !{!309, !318, !323, !333, !340, !347, !355, !363, !384, !395, !408, !419, !431, !439, !448, !469}
!309 = distinct !DISubprogram(name: "timedRead", linkageName: "_ZN6Stream9timedReadEv", scope: !"_ZTS6Stream", file: !1, line: 31, type: !310, isLocal: false, isDefinition: true, scopeLine: 32, flags: DIFlagPrototyped, isOptimized: true, function: i16 (%class.Stream*)* @_ZN6Stream9timedReadEv, declaration: !313, variables: !314)
!310 = !DISubroutineType(types: !311)
!311 = !{!65, !312}
!312 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS6Stream", size: 16, align: 16, flags: DIFlagArtificial | DIFlagObjectPointer)
!313 = !DISubprogram(name: "timedRead", linkageName: "_ZN6Stream9timedReadEv", scope: !"_ZTS6Stream", file: !4, line: 54, type: !310, isLocal: false, isDefinition: false, scopeLine: 54, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!314 = !{!315, !317}
!315 = !DILocalVariable(name: "this", arg: 1, scope: !309, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!316 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS6Stream", size: 16, align: 16)
!317 = !DILocalVariable(name: "c", scope: !309, file: !1, line: 33, type: !65)
!318 = distinct !DISubprogram(name: "timedPeek", linkageName: "_ZN6Stream9timedPeekEv", scope: !"_ZTS6Stream", file: !1, line: 43, type: !310, isLocal: false, isDefinition: true, scopeLine: 44, flags: DIFlagPrototyped, isOptimized: true, function: i16 (%class.Stream*)* @_ZN6Stream9timedPeekEv, declaration: !319, variables: !320)
!319 = !DISubprogram(name: "timedPeek", linkageName: "_ZN6Stream9timedPeekEv", scope: !"_ZTS6Stream", file: !4, line: 55, type: !310, isLocal: false, isDefinition: false, scopeLine: 55, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!320 = !{!321, !322}
!321 = !DILocalVariable(name: "this", arg: 1, scope: !318, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!322 = !DILocalVariable(name: "c", scope: !318, file: !1, line: 45, type: !65)
!323 = distinct !DISubprogram(name: "peekNextDigit", linkageName: "_ZN6Stream13peekNextDigitE13LookaheadModeb", scope: !"_ZTS6Stream", file: !1, line: 56, type: !324, isLocal: false, isDefinition: true, scopeLine: 57, flags: DIFlagPrototyped, isOptimized: true, function: i16 (%class.Stream*, i16, i1)* @_ZN6Stream13peekNextDigitE13LookaheadModeb, declaration: !327, variables: !328)
!324 = !DISubroutineType(types: !325)
!325 = !{!65, !312, !"_ZTS13LookaheadMode", !326}
!326 = !DIBasicType(name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean)
!327 = !DISubprogram(name: "peekNextDigit", linkageName: "_ZN6Stream13peekNextDigitE13LookaheadModeb", scope: !"_ZTS6Stream", file: !4, line: 56, type: !324, isLocal: false, isDefinition: false, scopeLine: 56, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!328 = !{!329, !330, !331, !332}
!329 = !DILocalVariable(name: "this", arg: 1, scope: !323, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!330 = !DILocalVariable(name: "lookahead", arg: 2, scope: !323, file: !1, line: 56, type: !"_ZTS13LookaheadMode")
!331 = !DILocalVariable(name: "detectDecimal", arg: 3, scope: !323, file: !1, line: 56, type: !326)
!332 = !DILocalVariable(name: "c", scope: !323, file: !1, line: 58, type: !65)
!333 = distinct !DISubprogram(name: "setTimeout", linkageName: "_ZN6Stream10setTimeoutEm", scope: !"_ZTS6Stream", file: !1, line: 87, type: !334, isLocal: false, isDefinition: true, scopeLine: 88, flags: DIFlagPrototyped, isOptimized: true, function: void (%class.Stream*, i32)* @_ZN6Stream10setTimeoutEm, declaration: !336, variables: !337)
!334 = !DISubroutineType(types: !335)
!335 = !{null, !312, !76}
!336 = !DISubprogram(name: "setTimeout", linkageName: "_ZN6Stream10setTimeoutEm", scope: !"_ZTS6Stream", file: !4, line: 68, type: !334, isLocal: false, isDefinition: false, scopeLine: 68, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!337 = !{!338, !339}
!338 = !DILocalVariable(name: "this", arg: 1, scope: !333, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!339 = !DILocalVariable(name: "timeout", arg: 2, scope: !333, file: !1, line: 87, type: !76)
!340 = distinct !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPc", scope: !"_ZTS6Stream", file: !1, line: 93, type: !341, isLocal: false, isDefinition: true, scopeLine: 94, flags: DIFlagPrototyped, isOptimized: true, function: i1 (%class.Stream*, i8*)* @_ZN6Stream4findEPc, declaration: !343, variables: !344)
!341 = !DISubroutineType(types: !342)
!342 = !{!326, !312, !26}
!343 = !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPc", scope: !"_ZTS6Stream", file: !4, line: 70, type: !341, isLocal: false, isDefinition: false, scopeLine: 70, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!344 = !{!345, !346}
!345 = !DILocalVariable(name: "this", arg: 1, scope: !340, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!346 = !DILocalVariable(name: "target", arg: 2, scope: !340, file: !1, line: 93, type: !26)
!347 = distinct !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPcj", scope: !"_ZTS6Stream", file: !1, line: 100, type: !348, isLocal: false, isDefinition: true, scopeLine: 101, flags: DIFlagPrototyped, isOptimized: true, function: i1 (%class.Stream*, i8*, i16)* @_ZN6Stream4findEPcj, declaration: !350, variables: !351)
!348 = !DISubroutineType(types: !349)
!349 = !{!326, !312, !26, !18}
!350 = !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPcj", scope: !"_ZTS6Stream", file: !4, line: 74, type: !348, isLocal: false, isDefinition: false, scopeLine: 74, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!351 = !{!352, !353, !354}
!352 = !DILocalVariable(name: "this", arg: 1, scope: !347, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!353 = !DILocalVariable(name: "target", arg: 2, scope: !347, file: !1, line: 100, type: !26)
!354 = !DILocalVariable(name: "length", arg: 3, scope: !347, file: !1, line: 100, type: !18)
!355 = distinct !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcS0_", scope: !"_ZTS6Stream", file: !1, line: 106, type: !356, isLocal: false, isDefinition: true, scopeLine: 107, flags: DIFlagPrototyped, isOptimized: true, function: i1 (%class.Stream*, i8*, i8*)* @_ZN6Stream9findUntilEPcS0_, declaration: !358, variables: !359)
!356 = !DISubroutineType(types: !357)
!357 = !{!326, !312, !26, !26}
!358 = !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcS0_", scope: !"_ZTS6Stream", file: !4, line: 80, type: !356, isLocal: false, isDefinition: false, scopeLine: 80, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!359 = !{!360, !361, !362}
!360 = !DILocalVariable(name: "this", arg: 1, scope: !355, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!361 = !DILocalVariable(name: "target", arg: 2, scope: !355, file: !1, line: 106, type: !26)
!362 = !DILocalVariable(name: "terminator", arg: 3, scope: !355, file: !1, line: 106, type: !26)
!363 = distinct !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcjS0_j", scope: !"_ZTS6Stream", file: !1, line: 114, type: !364, isLocal: false, isDefinition: true, scopeLine: 115, flags: DIFlagPrototyped, isOptimized: true, function: i1 (%class.Stream*, i8*, i16, i8*, i16)* @_ZN6Stream9findUntilEPcjS0_j, declaration: !366, variables: !367)
!364 = !DISubroutineType(types: !365)
!365 = !{!326, !312, !26, !18, !26, !18}
!366 = !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcjS0_j", scope: !"_ZTS6Stream", file: !4, line: 83, type: !364, isLocal: false, isDefinition: false, scopeLine: 83, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!367 = !{!368, !369, !370, !371, !372, !373, !379}
!368 = !DILocalVariable(name: "this", arg: 1, scope: !363, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!369 = !DILocalVariable(name: "target", arg: 2, scope: !363, file: !1, line: 114, type: !26)
!370 = !DILocalVariable(name: "targetLen", arg: 3, scope: !363, file: !1, line: 114, type: !18)
!371 = !DILocalVariable(name: "terminator", arg: 4, scope: !363, file: !1, line: 114, type: !26)
!372 = !DILocalVariable(name: "termLen", arg: 5, scope: !363, file: !1, line: 114, type: !18)
!373 = !DILocalVariable(name: "t", scope: !374, file: !1, line: 117, type: !376)
!374 = distinct !DILexicalBlock(scope: !375, file: !1, line: 116, column: 27)
!375 = distinct !DILexicalBlock(scope: !363, file: !1, line: 116, column: 7)
!376 = !DICompositeType(tag: DW_TAG_array_type, baseType: !"_ZTSN6Stream11MultiTargetE", size: 48, align: 16, elements: !377)
!377 = !{!378}
!378 = !DISubrange(count: 1)
!379 = !DILocalVariable(name: "t", scope: !380, file: !1, line: 120, type: !381)
!380 = distinct !DILexicalBlock(scope: !375, file: !1, line: 119, column: 10)
!381 = !DICompositeType(tag: DW_TAG_array_type, baseType: !"_ZTSN6Stream11MultiTargetE", size: 96, align: 16, elements: !382)
!382 = !{!383}
!383 = !DISubrange(count: 2)
!384 = distinct !DISubprogram(name: "parseInt", linkageName: "_ZN6Stream8parseIntE13LookaheadModec", scope: !"_ZTS6Stream", file: !1, line: 130, type: !385, isLocal: false, isDefinition: true, scopeLine: 131, flags: DIFlagPrototyped, isOptimized: true, function: i32 (%class.Stream*, i16, i8)* @_ZN6Stream8parseIntE13LookaheadModec, declaration: !387, variables: !388)
!385 = !DISubroutineType(types: !386)
!386 = !{!72, !312, !"_ZTS13LookaheadMode", !16}
!387 = !DISubprogram(name: "parseInt", linkageName: "_ZN6Stream8parseIntE13LookaheadModec", scope: !"_ZTS6Stream", file: !4, line: 86, type: !385, isLocal: false, isDefinition: false, scopeLine: 86, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!388 = !{!389, !390, !391, !392, !393, !394}
!389 = !DILocalVariable(name: "this", arg: 1, scope: !384, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!390 = !DILocalVariable(name: "lookahead", arg: 2, scope: !384, file: !1, line: 130, type: !"_ZTS13LookaheadMode")
!391 = !DILocalVariable(name: "ignore", arg: 3, scope: !384, file: !1, line: 130, type: !16)
!392 = !DILocalVariable(name: "isNegative", scope: !384, file: !1, line: 132, type: !326)
!393 = !DILocalVariable(name: "value", scope: !384, file: !1, line: 133, type: !72)
!394 = !DILocalVariable(name: "c", scope: !384, file: !1, line: 134, type: !65)
!395 = distinct !DISubprogram(name: "parseFloat", linkageName: "_ZN6Stream10parseFloatE13LookaheadModec", scope: !"_ZTS6Stream", file: !1, line: 159, type: !396, isLocal: false, isDefinition: true, scopeLine: 160, flags: DIFlagPrototyped, isOptimized: true, function: float (%class.Stream*, i16, i8)* @_ZN6Stream10parseFloatE13LookaheadModec, declaration: !398, variables: !399)
!396 = !DISubroutineType(types: !397)
!397 = !{!80, !312, !"_ZTS13LookaheadMode", !16}
!398 = !DISubprogram(name: "parseFloat", linkageName: "_ZN6Stream10parseFloatE13LookaheadModec", scope: !"_ZTS6Stream", file: !4, line: 93, type: !396, isLocal: false, isDefinition: false, scopeLine: 93, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!399 = !{!400, !401, !402, !403, !404, !405, !406, !407}
!400 = !DILocalVariable(name: "this", arg: 1, scope: !395, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!401 = !DILocalVariable(name: "lookahead", arg: 2, scope: !395, file: !1, line: 159, type: !"_ZTS13LookaheadMode")
!402 = !DILocalVariable(name: "ignore", arg: 3, scope: !395, file: !1, line: 159, type: !16)
!403 = !DILocalVariable(name: "isNegative", scope: !395, file: !1, line: 161, type: !326)
!404 = !DILocalVariable(name: "isFraction", scope: !395, file: !1, line: 162, type: !326)
!405 = !DILocalVariable(name: "value", scope: !395, file: !1, line: 163, type: !72)
!406 = !DILocalVariable(name: "c", scope: !395, file: !1, line: 164, type: !65)
!407 = !DILocalVariable(name: "fraction", scope: !395, file: !1, line: 165, type: !80)
!408 = distinct !DISubprogram(name: "readBytes", linkageName: "_ZN6Stream9readBytesEPcj", scope: !"_ZTS6Stream", file: !1, line: 202, type: !409, isLocal: false, isDefinition: true, scopeLine: 203, flags: DIFlagPrototyped, isOptimized: true, function: i16 (%class.Stream*, i8*, i16)* @_ZN6Stream9readBytesEPcj, declaration: !411, variables: !412)
!409 = !DISubroutineType(types: !410)
!410 = !{!18, !312, !26, !18}
!411 = !DISubprogram(name: "readBytes", linkageName: "_ZN6Stream9readBytesEPcj", scope: !"_ZTS6Stream", file: !4, line: 96, type: !409, isLocal: false, isDefinition: false, scopeLine: 96, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!412 = !{!413, !414, !415, !416, !417}
!413 = !DILocalVariable(name: "this", arg: 1, scope: !408, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!414 = !DILocalVariable(name: "buffer", arg: 2, scope: !408, file: !1, line: 202, type: !26)
!415 = !DILocalVariable(name: "length", arg: 3, scope: !408, file: !1, line: 202, type: !18)
!416 = !DILocalVariable(name: "count", scope: !408, file: !1, line: 204, type: !18)
!417 = !DILocalVariable(name: "c", scope: !418, file: !1, line: 206, type: !65)
!418 = distinct !DILexicalBlock(scope: !408, file: !1, line: 205, column: 26)
!419 = distinct !DISubprogram(name: "readBytesUntil", linkageName: "_ZN6Stream14readBytesUntilEcPcj", scope: !"_ZTS6Stream", file: !1, line: 219, type: !420, isLocal: false, isDefinition: true, scopeLine: 220, flags: DIFlagPrototyped, isOptimized: true, function: i16 (%class.Stream*, i8, i8*, i16)* @_ZN6Stream14readBytesUntilEcPcj, declaration: !422, variables: !423)
!420 = !DISubroutineType(types: !421)
!421 = !{!18, !312, !16, !26, !18}
!422 = !DISubprogram(name: "readBytesUntil", linkageName: "_ZN6Stream14readBytesUntilEcPcj", scope: !"_ZTS6Stream", file: !4, line: 101, type: !420, isLocal: false, isDefinition: false, scopeLine: 101, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!423 = !{!424, !425, !426, !427, !428, !429}
!424 = !DILocalVariable(name: "this", arg: 1, scope: !419, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!425 = !DILocalVariable(name: "terminator", arg: 2, scope: !419, file: !1, line: 219, type: !16)
!426 = !DILocalVariable(name: "buffer", arg: 3, scope: !419, file: !1, line: 219, type: !26)
!427 = !DILocalVariable(name: "length", arg: 4, scope: !419, file: !1, line: 219, type: !18)
!428 = !DILocalVariable(name: "index", scope: !419, file: !1, line: 222, type: !18)
!429 = !DILocalVariable(name: "c", scope: !430, file: !1, line: 224, type: !65)
!430 = distinct !DILexicalBlock(scope: !419, file: !1, line: 223, column: 26)
!431 = distinct !DISubprogram(name: "readString", linkageName: "_ZN6Stream10readStringEv", scope: !"_ZTS6Stream", file: !1, line: 232, type: !432, isLocal: false, isDefinition: true, scopeLine: 233, flags: DIFlagPrototyped, isOptimized: true, function: void (%class.String*, %class.Stream*)* @_ZN6Stream10readStringEv, declaration: !434, variables: !435)
!432 = !DISubroutineType(types: !433)
!433 = !{!"_ZTS6String", !312}
!434 = !DISubprogram(name: "readString", linkageName: "_ZN6Stream10readStringEv", scope: !"_ZTS6Stream", file: !4, line: 107, type: !432, isLocal: false, isDefinition: false, scopeLine: 107, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!435 = !{!436, !437, !438}
!436 = !DILocalVariable(name: "this", arg: 1, scope: !431, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!437 = !DILocalVariable(name: "ret", scope: !431, file: !1, line: 234, type: !"_ZTS6String")
!438 = !DILocalVariable(name: "c", scope: !431, file: !1, line: 235, type: !65)
!439 = distinct !DISubprogram(name: "readStringUntil", linkageName: "_ZN6Stream15readStringUntilEc", scope: !"_ZTS6Stream", file: !1, line: 244, type: !440, isLocal: false, isDefinition: true, scopeLine: 245, flags: DIFlagPrototyped, isOptimized: true, function: void (%class.String*, %class.Stream*, i8)* @_ZN6Stream15readStringUntilEc, declaration: !442, variables: !443)
!440 = !DISubroutineType(types: !441)
!441 = !{!"_ZTS6String", !312, !16}
!442 = !DISubprogram(name: "readStringUntil", linkageName: "_ZN6Stream15readStringUntilEc", scope: !"_ZTS6Stream", file: !4, line: 108, type: !440, isLocal: false, isDefinition: false, scopeLine: 108, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!443 = !{!444, !445, !446, !447}
!444 = !DILocalVariable(name: "this", arg: 1, scope: !439, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!445 = !DILocalVariable(name: "terminator", arg: 2, scope: !439, file: !1, line: 244, type: !16)
!446 = !DILocalVariable(name: "ret", scope: !439, file: !1, line: 246, type: !"_ZTS6String")
!447 = !DILocalVariable(name: "c", scope: !439, file: !1, line: 247, type: !65)
!448 = distinct !DISubprogram(name: "findMulti", linkageName: "_ZN6Stream9findMultiEPNS_11MultiTargetEi", scope: !"_ZTS6Stream", file: !1, line: 256, type: !449, isLocal: false, isDefinition: true, scopeLine: 256, flags: DIFlagPrototyped, isOptimized: true, function: i16 (%class.Stream*, %"struct.Stream::MultiTarget"*, i16)* @_ZN6Stream9findMultiEPNS_11MultiTargetEi, declaration: !452, variables: !453)
!449 = !DISubroutineType(types: !450)
!450 = !{!65, !312, !451, !65}
!451 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTSN6Stream11MultiTargetE", size: 16, align: 16)
!452 = !DISubprogram(name: "findMulti", linkageName: "_ZN6Stream9findMultiEPNS_11MultiTargetEi", scope: !"_ZTS6Stream", file: !4, line: 125, type: !449, isLocal: false, isDefinition: false, scopeLine: 125, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!453 = !{!454, !455, !456, !457, !459, !461, !463, !466, !468}
!454 = !DILocalVariable(name: "this", arg: 1, scope: !448, type: !316, flags: DIFlagArtificial | DIFlagObjectPointer)
!455 = !DILocalVariable(name: "targets", arg: 2, scope: !448, file: !1, line: 256, type: !451)
!456 = !DILocalVariable(name: "tCount", arg: 3, scope: !448, file: !1, line: 256, type: !65)
!457 = !DILocalVariable(name: "t", scope: !458, file: !1, line: 259, type: !451)
!458 = distinct !DILexicalBlock(scope: !448, file: !1, line: 259, column: 3)
!459 = !DILocalVariable(name: "c", scope: !460, file: !1, line: 265, type: !65)
!460 = distinct !DILexicalBlock(scope: !448, file: !1, line: 264, column: 13)
!461 = !DILocalVariable(name: "t", scope: !462, file: !1, line: 269, type: !451)
!462 = distinct !DILexicalBlock(scope: !460, file: !1, line: 269, column: 5)
!463 = !DILocalVariable(name: "origIndex", scope: !464, file: !1, line: 285, type: !65)
!464 = distinct !DILexicalBlock(scope: !465, file: !1, line: 269, column: 68)
!465 = distinct !DILexicalBlock(scope: !462, file: !1, line: 269, column: 5)
!466 = !DILocalVariable(name: "diff", scope: !467, file: !1, line: 299, type: !65)
!467 = distinct !DILexicalBlock(scope: !464, file: !1, line: 286, column: 10)
!468 = !DILocalVariable(name: "i", scope: !467, file: !1, line: 300, type: !18)
!469 = distinct !DISubprogram(name: "operator+=", linkageName: "_ZN6StringpLEc", scope: !"_ZTS6String", file: !23, line: 115, type: !144, isLocal: false, isDefinition: true, scopeLine: 115, flags: DIFlagPrototyped, isOptimized: true, declaration: !143, variables: !470)
!470 = !{!471, !473}
!471 = !DILocalVariable(name: "this", arg: 1, scope: !469, type: !472, flags: DIFlagArtificial | DIFlagObjectPointer)
!472 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS6String", size: 16, align: 16)
!473 = !DILocalVariable(name: "c", arg: 2, scope: !469, file: !23, line: 115, type: !16)
!474 = !{i32 2, !"Dwarf Version", i32 4}
!475 = !{i32 2, !"Debug Info Version", i32 3}
!476 = !{!"clang version 3.8.0 (https://github.com/avr-llvm/clang.git 55d2db19d360a92b3b87444a2ea5e07d1624a2bc) (llvm/llvm.git ed02a4bc0484efbf1362cf04520976ea52d4351f)"}
!477 = !DIExpression()
!478 = !DILocation(line: 0, scope: !309)
!479 = !DILocation(line: 34, column: 18, scope: !309)
!480 = !DILocation(line: 34, column: 3, scope: !309)
!481 = !DILocation(line: 34, column: 16, scope: !309)
!482 = !{!483, !484, i64 8}
!483 = !{!"_ZTS6Stream", !484, i64 4, !484, i64 8}
!484 = !{!"long", !485, i64 0}
!485 = !{!"omnipotent char", !486, i64 0}
!486 = !{!"Simple C/C++ TBAA"}
!487 = !DILocation(line: 36, column: 9, scope: !488)
!488 = distinct !DILexicalBlock(scope: !309, file: !1, line: 35, column: 6)
!489 = !DILocation(line: 38, column: 37, scope: !309)
!490 = !DILocation(line: 35, column: 3, scope: !309)
!491 = !{!492, !492, i64 0}
!492 = !{!"vtable pointer", !486, i64 0}
!493 = !DILocation(line: 33, column: 7, scope: !309)
!494 = !DILocation(line: 37, column: 11, scope: !495)
!495 = distinct !DILexicalBlock(scope: !488, file: !1, line: 37, column: 9)
!496 = !DILocation(line: 37, column: 9, scope: !488)
!497 = !DILocation(line: 38, column: 11, scope: !498)
!498 = !DILexicalBlockFile(scope: !309, file: !1, discriminator: 1)
!499 = !DILocation(line: 38, column: 22, scope: !309)
!500 = !DILocation(line: 38, column: 20, scope: !309)
!501 = !{!483, !484, i64 4}
!502 = !DILocation(line: 38, column: 35, scope: !309)
!503 = !DILocation(line: 38, column: 3, scope: !488)
!504 = !DILocation(line: 40, column: 1, scope: !309)
!505 = !DILocation(line: 0, scope: !318)
!506 = !DILocation(line: 46, column: 18, scope: !318)
!507 = !DILocation(line: 46, column: 3, scope: !318)
!508 = !DILocation(line: 46, column: 16, scope: !318)
!509 = !DILocation(line: 48, column: 9, scope: !510)
!510 = distinct !DILexicalBlock(scope: !318, file: !1, line: 47, column: 6)
!511 = !DILocation(line: 50, column: 37, scope: !318)
!512 = !DILocation(line: 47, column: 3, scope: !318)
!513 = !DILocation(line: 45, column: 7, scope: !318)
!514 = !DILocation(line: 49, column: 11, scope: !515)
!515 = distinct !DILexicalBlock(scope: !510, file: !1, line: 49, column: 9)
!516 = !DILocation(line: 49, column: 9, scope: !510)
!517 = !DILocation(line: 50, column: 11, scope: !518)
!518 = !DILexicalBlockFile(scope: !318, file: !1, discriminator: 1)
!519 = !DILocation(line: 50, column: 22, scope: !318)
!520 = !DILocation(line: 50, column: 20, scope: !318)
!521 = !DILocation(line: 50, column: 35, scope: !318)
!522 = !DILocation(line: 50, column: 3, scope: !510)
!523 = !DILocation(line: 52, column: 1, scope: !318)
!524 = !DILocation(line: 0, scope: !323)
!525 = !DILocation(line: 56, column: 41, scope: !323)
!526 = !DILocation(line: 56, column: 57, scope: !323)
!527 = !DILocation(line: 60, column: 9, scope: !528)
!528 = distinct !DILexicalBlock(scope: !323, file: !1, line: 59, column: 13)
!529 = !DILocation(line: 58, column: 7, scope: !323)
!530 = !DILocation(line: 62, column: 11, scope: !531)
!531 = distinct !DILexicalBlock(scope: !528, file: !1, line: 62, column: 9)
!532 = !DILocation(line: 63, column: 11, scope: !531)
!533 = !DILocation(line: 62, column: 15, scope: !531)
!534 = !DILocation(line: 64, column: 19, scope: !531)
!535 = !DILocation(line: 65, column: 29, scope: !531)
!536 = !DILocation(line: 65, column: 24, scope: !531)
!537 = !DILocation(line: 80, column: 5, scope: !528)
!538 = !DILocation(line: 67, column: 5, scope: !528)
!539 = !DILocation(line: 70, column: 13, scope: !540)
!540 = distinct !DILexicalBlock(scope: !528, file: !1, line: 67, column: 24)
!541 = !DILocation(line: 82, column: 1, scope: !323)
!542 = !DILocation(line: 0, scope: !333)
!543 = !DILocation(line: 87, column: 39, scope: !333)
!544 = !DILocation(line: 89, column: 3, scope: !333)
!545 = !DILocation(line: 89, column: 12, scope: !333)
!546 = !DILocation(line: 90, column: 1, scope: !333)
!547 = !DILocation(line: 117, column: 17, scope: !374, inlinedAt: !548)
!548 = distinct !DILocation(line: 95, column: 10, scope: !340)
!549 = !DILocation(line: 0, scope: !340)
!550 = !DILocation(line: 93, column: 26, scope: !340)
!551 = !DILocation(line: 95, column: 28, scope: !340)
!552 = !DILocation(line: 0, scope: !363, inlinedAt: !548)
!553 = !DILocation(line: 114, column: 30, scope: !363, inlinedAt: !548)
!554 = !DILocation(line: 114, column: 45, scope: !363, inlinedAt: !548)
!555 = !DILocation(line: 114, column: 62, scope: !363, inlinedAt: !548)
!556 = !DILocation(line: 114, column: 81, scope: !363, inlinedAt: !548)
!557 = !DILocation(line: 117, column: 5, scope: !374, inlinedAt: !548)
!558 = !DILocation(line: 117, column: 25, scope: !374, inlinedAt: !548)
!559 = !{!560, !561, i64 0}
!560 = !{!"_ZTSN6Stream11MultiTargetE", !561, i64 0, !562, i64 2, !562, i64 4}
!561 = !{!"any pointer", !485, i64 0}
!562 = !{!"int", !485, i64 0}
!563 = !{!560, !562, i64 2}
!564 = !{!560, !562, i64 4}
!565 = !DILocation(line: 118, column: 22, scope: !374, inlinedAt: !548)
!566 = !DILocation(line: 118, column: 12, scope: !374, inlinedAt: !548)
!567 = !DILocation(line: 119, column: 3, scope: !375, inlinedAt: !548)
!568 = !DILocation(line: 118, column: 28, scope: !374, inlinedAt: !548)
!569 = !DILocation(line: 95, column: 3, scope: !340)
!570 = !DILocation(line: 0, scope: !363)
!571 = !DILocation(line: 114, column: 30, scope: !363)
!572 = !DILocation(line: 114, column: 45, scope: !363)
!573 = !DILocation(line: 114, column: 62, scope: !363)
!574 = !DILocation(line: 114, column: 81, scope: !363)
!575 = !DILocation(line: 116, column: 18, scope: !375)
!576 = !DILocation(line: 116, column: 7, scope: !363)
!577 = !DILocation(line: 117, column: 5, scope: !374)
!578 = !DILocation(line: 117, column: 17, scope: !374)
!579 = !DILocation(line: 117, column: 25, scope: !374)
!580 = !DILocation(line: 118, column: 22, scope: !374)
!581 = !DILocation(line: 118, column: 12, scope: !374)
!582 = !DILocation(line: 119, column: 3, scope: !375)
!583 = !DILocation(line: 120, column: 5, scope: !380)
!584 = !DILocation(line: 120, column: 17, scope: !380)
!585 = !DILocation(line: 120, column: 25, scope: !380)
!586 = !DILocation(line: 120, column: 49, scope: !380)
!587 = !DILocation(line: 121, column: 22, scope: !380)
!588 = !DILocation(line: 121, column: 12, scope: !380)
!589 = !DILocation(line: 122, column: 3, scope: !375)
!590 = !DILocation(line: 118, column: 28, scope: !374)
!591 = !DILocation(line: 123, column: 1, scope: !363)
!592 = !DILocation(line: 117, column: 17, scope: !374, inlinedAt: !593)
!593 = distinct !DILocation(line: 102, column: 10, scope: !347)
!594 = !DILocation(line: 0, scope: !347)
!595 = !DILocation(line: 100, column: 25, scope: !347)
!596 = !DILocation(line: 100, column: 40, scope: !347)
!597 = !DILocation(line: 0, scope: !363, inlinedAt: !593)
!598 = !DILocation(line: 114, column: 30, scope: !363, inlinedAt: !593)
!599 = !DILocation(line: 114, column: 45, scope: !363, inlinedAt: !593)
!600 = !DILocation(line: 114, column: 62, scope: !363, inlinedAt: !593)
!601 = !DILocation(line: 114, column: 81, scope: !363, inlinedAt: !593)
!602 = !DILocation(line: 117, column: 5, scope: !374, inlinedAt: !593)
!603 = !DILocation(line: 117, column: 25, scope: !374, inlinedAt: !593)
!604 = !DILocation(line: 118, column: 22, scope: !374, inlinedAt: !593)
!605 = !DILocation(line: 118, column: 12, scope: !374, inlinedAt: !593)
!606 = !DILocation(line: 119, column: 3, scope: !375, inlinedAt: !593)
!607 = !DILocation(line: 118, column: 28, scope: !374, inlinedAt: !593)
!608 = !DILocation(line: 102, column: 3, scope: !347)
!609 = !DILocation(line: 0, scope: !355)
!610 = !DILocation(line: 106, column: 31, scope: !355)
!611 = !DILocation(line: 106, column: 45, scope: !355)
!612 = !DILocation(line: 108, column: 28, scope: !355)
!613 = !DILocation(line: 108, column: 56, scope: !355)
!614 = !DILocation(line: 108, column: 10, scope: !355)
!615 = !DILocation(line: 108, column: 3, scope: !355)
!616 = !DILocation(line: 0, scope: !448)
!617 = !DILocation(line: 256, column: 52, scope: !448)
!618 = !DILocation(line: 256, column: 65, scope: !448)
!619 = !DILocation(line: 259, column: 28, scope: !458)
!620 = !DILocation(line: 259, column: 52, scope: !621)
!621 = distinct !DILexicalBlock(scope: !458, file: !1, line: 259, column: 3)
!622 = !DILocation(line: 259, column: 43, scope: !621)
!623 = !DILocation(line: 259, column: 3, scope: !458)
!624 = !DILocation(line: 265, column: 13, scope: !460)
!625 = !DILocation(line: 265, column: 9, scope: !460)
!626 = !DILocation(line: 266, column: 11, scope: !627)
!627 = distinct !DILexicalBlock(scope: !460, file: !1, line: 266, column: 9)
!628 = !DILocation(line: 266, column: 9, scope: !460)
!629 = !DILocation(line: 260, column: 12, scope: !630)
!630 = distinct !DILexicalBlock(scope: !631, file: !1, line: 260, column: 9)
!631 = distinct !DILexicalBlock(scope: !621, file: !1, line: 259, column: 66)
!632 = !DILocation(line: 260, column: 16, scope: !630)
!633 = !DILocation(line: 260, column: 9, scope: !631)
!634 = !DILocation(line: 259, column: 61, scope: !621)
!635 = !DILocation(line: 261, column: 16, scope: !630)
!636 = !DILocation(line: 269, column: 5, scope: !462)
!637 = !DILocation(line: 271, column: 26, scope: !638)
!638 = distinct !DILexicalBlock(scope: !464, file: !1, line: 271, column: 11)
!639 = !DILocation(line: 271, column: 19, scope: !638)
!640 = !DILocation(line: 271, column: 16, scope: !638)
!641 = !{!485, !485, i64 0}
!642 = !DILocation(line: 271, column: 13, scope: !638)
!643 = !DILocation(line: 271, column: 11, scope: !464)
!644 = !DILocation(line: 272, column: 13, scope: !645)
!645 = distinct !DILexicalBlock(scope: !646, file: !1, line: 272, column: 13)
!646 = distinct !DILexicalBlock(scope: !638, file: !1, line: 271, column: 34)
!647 = !DILocation(line: 272, column: 30, scope: !645)
!648 = !DILocation(line: 272, column: 24, scope: !645)
!649 = !DILocation(line: 272, column: 13, scope: !646)
!650 = !DILocation(line: 282, column: 20, scope: !651)
!651 = distinct !DILexicalBlock(scope: !464, file: !1, line: 282, column: 11)
!652 = !DILocation(line: 282, column: 11, scope: !464)
!653 = !DILocation(line: 287, column: 9, scope: !467)
!654 = !DILocation(line: 308, column: 21, scope: !655)
!655 = distinct !DILexicalBlock(scope: !467, file: !1, line: 308, column: 13)
!656 = !DILocation(line: 289, column: 18, scope: !657)
!657 = distinct !DILexicalBlock(scope: !467, file: !1, line: 289, column: 13)
!658 = !DILocation(line: 289, column: 15, scope: !657)
!659 = !DILocation(line: 289, column: 13, scope: !467)
!660 = !DILocation(line: 293, column: 22, scope: !661)
!661 = distinct !DILexicalBlock(scope: !467, file: !1, line: 293, column: 13)
!662 = !DILocation(line: 293, column: 13, scope: !467)
!663 = !DILocation(line: 294, column: 19, scope: !664)
!664 = distinct !DILexicalBlock(scope: !661, file: !1, line: 293, column: 28)
!665 = !DILocation(line: 295, column: 11, scope: !664)
!666 = !DILocation(line: 299, column: 30, scope: !467)
!667 = !DILocation(line: 299, column: 13, scope: !467)
!668 = !DILocation(line: 300, column: 16, scope: !467)
!669 = !DILocation(line: 301, column: 9, scope: !670)
!670 = distinct !DILexicalBlock(scope: !467, file: !1, line: 301, column: 9)
!671 = !DILocation(line: 302, column: 15, scope: !672)
!672 = distinct !DILexicalBlock(scope: !673, file: !1, line: 302, column: 15)
!673 = distinct !DILexicalBlock(scope: !674, file: !1, line: 301, column: 40)
!674 = distinct !DILexicalBlock(scope: !670, file: !1, line: 301, column: 9)
!675 = !DILocation(line: 302, column: 37, scope: !672)
!676 = !DILocation(line: 302, column: 28, scope: !672)
!677 = !DILocation(line: 302, column: 25, scope: !672)
!678 = !DILocation(line: 302, column: 15, scope: !673)
!679 = !DILocation(line: 301, column: 35, scope: !674)
!680 = !DILocation(line: 301, column: 23, scope: !674)
!681 = !DILocation(line: 308, column: 15, scope: !655)
!682 = !DILocation(line: 308, column: 13, scope: !467)
!683 = !DILocation(line: 309, column: 19, scope: !684)
!684 = distinct !DILexicalBlock(scope: !655, file: !1, line: 308, column: 28)
!685 = !DILocation(line: 314, column: 16, scope: !464)
!686 = !DILocation(line: 314, column: 7, scope: !467)
!687 = !DILocation(line: 269, column: 63, scope: !465)
!688 = !DILocation(line: 269, column: 30, scope: !462)
!689 = !DILocation(line: 269, column: 45, scope: !465)
!690 = !DILocation(line: 273, column: 20, scope: !645)
!691 = !DILocation(line: 319, column: 1, scope: !448)
!692 = !DILocation(line: 0, scope: !384)
!693 = !DILocation(line: 130, column: 37, scope: !384)
!694 = !DILocation(line: 130, column: 53, scope: !384)
!695 = !DILocation(line: 132, column: 8, scope: !384)
!696 = !DILocation(line: 133, column: 8, scope: !384)
!697 = !DILocation(line: 136, column: 7, scope: !384)
!698 = !DILocation(line: 134, column: 7, scope: !384)
!699 = !DILocation(line: 138, column: 8, scope: !700)
!700 = distinct !DILexicalBlock(scope: !384, file: !1, line: 138, column: 6)
!701 = !DILocation(line: 138, column: 6, scope: !384)
!702 = !DILocation(line: 142, column: 13, scope: !703)
!703 = distinct !DILexicalBlock(scope: !704, file: !1, line: 142, column: 8)
!704 = distinct !DILexicalBlock(scope: !384, file: !1, line: 141, column: 5)
!705 = !DILocation(line: 148, column: 5, scope: !704)
!706 = !DILocation(line: 142, column: 10, scope: !703)
!707 = !DILocation(line: 142, column: 8, scope: !704)
!708 = !DILocation(line: 144, column: 15, scope: !709)
!709 = distinct !DILexicalBlock(scope: !703, file: !1, line: 144, column: 13)
!710 = !DILocation(line: 144, column: 13, scope: !703)
!711 = !DILocation(line: 146, column: 22, scope: !712)
!712 = distinct !DILexicalBlock(scope: !709, file: !1, line: 146, column: 13)
!713 = !DILocation(line: 147, column: 21, scope: !712)
!714 = !DILocation(line: 147, column: 28, scope: !712)
!715 = !DILocation(line: 147, column: 26, scope: !712)
!716 = !DILocation(line: 147, column: 30, scope: !712)
!717 = !DILocation(line: 147, column: 7, scope: !712)
!718 = !DILocation(line: 149, column: 9, scope: !704)
!719 = !DILocation(line: 151, column: 20, scope: !384)
!720 = !DILocation(line: 151, column: 38, scope: !384)
!721 = !DILocation(line: 153, column: 6, scope: !722)
!722 = distinct !DILexicalBlock(scope: !384, file: !1, line: 153, column: 6)
!723 = !DILocation(line: 154, column: 13, scope: !722)
!724 = !DILocation(line: 153, column: 6, scope: !384)
!725 = !DILocation(line: 155, column: 3, scope: !384)
!726 = !DILocation(line: 156, column: 1, scope: !384)
!727 = !DILocation(line: 0, scope: !395)
!728 = !DILocation(line: 159, column: 40, scope: !395)
!729 = !DILocation(line: 159, column: 56, scope: !395)
!730 = !DILocation(line: 161, column: 8, scope: !395)
!731 = !DILocation(line: 162, column: 8, scope: !395)
!732 = !DILocation(line: 163, column: 8, scope: !395)
!733 = !DILocation(line: 165, column: 9, scope: !395)
!734 = !DILocation(line: 167, column: 7, scope: !395)
!735 = !DILocation(line: 164, column: 7, scope: !395)
!736 = !DILocation(line: 169, column: 8, scope: !737)
!737 = distinct !DILexicalBlock(scope: !395, file: !1, line: 169, column: 6)
!738 = !DILocation(line: 169, column: 6, scope: !395)
!739 = !DILocation(line: 173, column: 13, scope: !740)
!740 = distinct !DILexicalBlock(scope: !741, file: !1, line: 173, column: 8)
!741 = distinct !DILexicalBlock(scope: !395, file: !1, line: 172, column: 5)
!742 = !DILocation(line: 184, column: 5, scope: !741)
!743 = !DILocation(line: 173, column: 10, scope: !740)
!744 = !DILocation(line: 173, column: 8, scope: !741)
!745 = !DILocation(line: 175, column: 13, scope: !740)
!746 = !DILocation(line: 178, column: 7, scope: !747)
!747 = distinct !DILexicalBlock(scope: !748, file: !1, line: 177, column: 14)
!748 = distinct !DILexicalBlock(scope: !740, file: !1, line: 175, column: 13)
!749 = !DILocation(line: 179, column: 22, scope: !750)
!750 = distinct !DILexicalBlock(scope: !747, file: !1, line: 179, column: 13)
!751 = !DILocation(line: 180, column: 21, scope: !752)
!752 = distinct !DILexicalBlock(scope: !750, file: !1, line: 179, column: 36)
!753 = !DILocation(line: 180, column: 28, scope: !752)
!754 = !DILocation(line: 180, column: 26, scope: !752)
!755 = !DILocation(line: 180, column: 30, scope: !752)
!756 = !DILocation(line: 181, column: 10, scope: !757)
!757 = distinct !DILexicalBlock(scope: !752, file: !1, line: 181, column: 10)
!758 = !DILocation(line: 182, column: 19, scope: !757)
!759 = !DILocation(line: 181, column: 10, scope: !752)
!760 = !DILocation(line: 185, column: 9, scope: !741)
!761 = !DILocation(line: 187, column: 20, scope: !395)
!762 = !DILocation(line: 187, column: 40, scope: !395)
!763 = !DILocation(line: 187, column: 51, scope: !764)
!764 = !DILexicalBlockFile(scope: !395, file: !1, discriminator: 4)
!765 = !DILocation(line: 187, column: 47, scope: !395)
!766 = !DILocation(line: 187, column: 68, scope: !395)
!767 = !DILocation(line: 189, column: 6, scope: !768)
!768 = distinct !DILexicalBlock(scope: !395, file: !1, line: 189, column: 6)
!769 = !DILocation(line: 190, column: 13, scope: !768)
!770 = !DILocation(line: 189, column: 6, scope: !395)
!771 = !DILocation(line: 192, column: 12, scope: !772)
!772 = distinct !DILexicalBlock(scope: !395, file: !1, line: 191, column: 6)
!773 = !DILocation(line: 192, column: 18, scope: !772)
!774 = !DILocation(line: 191, column: 6, scope: !395)
!775 = !DILocation(line: 195, column: 1, scope: !395)
!776 = !DILocation(line: 0, scope: !408)
!777 = !DILocation(line: 202, column: 32, scope: !408)
!778 = !DILocation(line: 202, column: 47, scope: !408)
!779 = !DILocation(line: 204, column: 10, scope: !408)
!780 = !DILocation(line: 205, column: 16, scope: !408)
!781 = !DILocation(line: 205, column: 3, scope: !408)
!782 = !DILocation(line: 206, column: 13, scope: !418)
!783 = !DILocation(line: 206, column: 9, scope: !418)
!784 = !DILocation(line: 207, column: 11, scope: !785)
!785 = distinct !DILexicalBlock(scope: !418, file: !1, line: 207, column: 9)
!786 = !DILocation(line: 207, column: 9, scope: !418)
!787 = !DILocation(line: 208, column: 23, scope: !418)
!788 = !DILocation(line: 208, column: 12, scope: !418)
!789 = !DILocation(line: 208, column: 15, scope: !418)
!790 = !DILocation(line: 209, column: 10, scope: !418)
!791 = !DILocation(line: 211, column: 3, scope: !408)
!792 = !DILocation(line: 0, scope: !419)
!793 = !DILocation(line: 219, column: 36, scope: !419)
!794 = !DILocation(line: 219, column: 54, scope: !419)
!795 = !DILocation(line: 219, column: 69, scope: !419)
!796 = !DILocation(line: 221, column: 7, scope: !419)
!797 = !DILocation(line: 225, column: 23, scope: !798)
!798 = distinct !DILexicalBlock(scope: !430, file: !1, line: 225, column: 9)
!799 = !DILocation(line: 223, column: 3, scope: !419)
!800 = !DILocation(line: 224, column: 13, scope: !430)
!801 = !DILocation(line: 224, column: 9, scope: !430)
!802 = !DILocation(line: 225, column: 11, scope: !798)
!803 = !DILocation(line: 225, column: 20, scope: !798)
!804 = !DILocation(line: 225, column: 15, scope: !798)
!805 = !DILocation(line: 226, column: 23, scope: !430)
!806 = !DILocation(line: 226, column: 12, scope: !430)
!807 = !DILocation(line: 226, column: 15, scope: !430)
!808 = !DILocation(line: 227, column: 10, scope: !430)
!809 = !DILocation(line: 222, column: 10, scope: !419)
!810 = !DILocation(line: 223, column: 16, scope: !419)
!811 = !DILocation(line: 230, column: 1, scope: !419)
!812 = !DILocation(line: 0, scope: !431)
!813 = !DIExpression(DW_OP_deref)
!814 = !DILocation(line: 234, column: 10, scope: !431)
!815 = !DILocation(line: 235, column: 11, scope: !431)
!816 = !DILocation(line: 235, column: 7, scope: !431)
!817 = !DILocation(line: 236, column: 12, scope: !431)
!818 = !DILocation(line: 236, column: 3, scope: !431)
!819 = !DILocation(line: 0, scope: !469, inlinedAt: !820)
!820 = distinct !DILocation(line: 238, column: 9, scope: !821)
!821 = distinct !DILexicalBlock(scope: !431, file: !1, line: 237, column: 3)
!822 = !DILocation(line: 115, column: 29, scope: !469, inlinedAt: !820)
!823 = !DILocation(line: 115, column: 35, scope: !469, inlinedAt: !820)
!824 = !DILocation(line: 239, column: 9, scope: !821)
!825 = !DILocation(line: 242, column: 1, scope: !826)
!826 = !DILexicalBlockFile(scope: !827, file: !1, discriminator: 3)
!827 = !DILexicalBlockFile(scope: !431, file: !1, discriminator: 1)
!828 = !DILocation(line: 0, scope: !439)
!829 = !DILocation(line: 244, column: 37, scope: !439)
!830 = !DILocation(line: 246, column: 10, scope: !439)
!831 = !DILocation(line: 247, column: 11, scope: !439)
!832 = !DILocation(line: 247, column: 7, scope: !439)
!833 = !DILocation(line: 248, column: 12, scope: !439)
!834 = !DILocation(line: 248, column: 25, scope: !439)
!835 = !DILocation(line: 248, column: 22, scope: !439)
!836 = !DILocation(line: 248, column: 17, scope: !439)
!837 = !DILocation(line: 0, scope: !469, inlinedAt: !838)
!838 = distinct !DILocation(line: 250, column: 9, scope: !839)
!839 = distinct !DILexicalBlock(scope: !439, file: !1, line: 249, column: 3)
!840 = !DILocation(line: 115, column: 29, scope: !469, inlinedAt: !838)
!841 = !DILocation(line: 115, column: 35, scope: !469, inlinedAt: !838)
!842 = !DILocation(line: 251, column: 9, scope: !839)
!843 = !DILocation(line: 254, column: 1, scope: !844)
!844 = !DILexicalBlockFile(scope: !845, file: !1, discriminator: 3)
!845 = !DILexicalBlockFile(scope: !439, file: !1, discriminator: 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment