Skip to content

Instantly share code, notes, and snippets.

@4ntoine
Created January 21, 2016 10:48
Show Gist options
  • Save 4ntoine/34a9dca57e775d6309d6 to your computer and use it in GitHub Desktop.
Save 4ntoine/34a9dca57e775d6309d6 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 !dbg !276 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !282, metadata !444), !dbg !445
%call = tail call i32 @millis() #6, !dbg !446
%_startMillis = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 2, !dbg !447
store i32 %call, i32* %_startMillis, align 2, !dbg !448, !tbaa !449
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !454
%_timeout = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 1, !dbg !456
br label %do.body, !dbg !458
do.body: ; preds = %do.cond, %entry
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !454, !tbaa !459
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !454
%1 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !454
%call2 = tail call i16 %1(%class.Stream* nonnull %this) #6, !dbg !454
tail call void @llvm.dbg.value(metadata i16 %call2, i64 0, metadata !284, metadata !444), !dbg !461
%cmp = icmp sgt i16 %call2, -1, !dbg !462
br i1 %cmp, label %cleanup, label %do.cond, !dbg !464
do.cond: ; preds = %do.body
%call3 = tail call i32 @millis() #6, !dbg !465
%2 = load i32, i32* %_startMillis, align 2, !dbg !466, !tbaa !449
%sub = sub i32 %call3, %2, !dbg !467
%3 = load i32, i32* %_timeout, align 2, !dbg !456, !tbaa !468
%cmp5 = icmp ult i32 %sub, %3, !dbg !469
br i1 %cmp5, label %do.body, label %cleanup, !dbg !470
cleanup: ; preds = %do.cond, %do.body
%retval.0 = phi i16 [ %call2, %do.body ], [ -1, %do.cond ]
ret i16 %retval.0, !dbg !471
}
; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #2
; Function Attrs: optsize
declare i32 @millis() #3
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #2
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #0 align 2 !dbg !285 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !288, metadata !444), !dbg !472
%call = tail call i32 @millis() #6, !dbg !473
%_startMillis = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 2, !dbg !474
store i32 %call, i32* %_startMillis, align 2, !dbg !475, !tbaa !449
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !476
%_timeout = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 1, !dbg !478
br label %do.body, !dbg !480
do.body: ; preds = %do.cond, %entry
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !476, !tbaa !459
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 4, !dbg !476
%1 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !476
%call2 = tail call i16 %1(%class.Stream* nonnull %this) #6, !dbg !476
tail call void @llvm.dbg.value(metadata i16 %call2, i64 0, metadata !289, metadata !444), !dbg !481
%cmp = icmp sgt i16 %call2, -1, !dbg !482
br i1 %cmp, label %cleanup, label %do.cond, !dbg !484
do.cond: ; preds = %do.body
%call3 = tail call i32 @millis() #6, !dbg !485
%2 = load i32, i32* %_startMillis, align 2, !dbg !486, !tbaa !449
%sub = sub i32 %call3, %2, !dbg !487
%3 = load i32, i32* %_timeout, align 2, !dbg !478, !tbaa !468
%cmp5 = icmp ult i32 %sub, %3, !dbg !488
br i1 %cmp5, label %do.body, label %cleanup, !dbg !489
cleanup: ; preds = %do.cond, %do.body
%retval.0 = phi i16 [ %call2, %do.body ], [ -1, %do.cond ]
ret i16 %retval.0, !dbg !490
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream13peekNextDigitE13LookaheadModeb(%class.Stream* %this, i16 %lookahead, i1 zeroext %detectDecimal) #0 align 2 !dbg !290 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !296, metadata !444), !dbg !491
tail call void @llvm.dbg.value(metadata i16 %lookahead, i64 0, metadata !297, metadata !444), !dbg !492
tail call void @llvm.dbg.value(metadata i1 %detectDecimal, i64 0, metadata !298, metadata !493), !dbg !494
%call25 = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #7, !dbg !495
tail call void @llvm.dbg.value(metadata i16 %call25, i64 0, metadata !299, metadata !444), !dbg !497
%cmp26 = icmp slt i16 %call25, 0, !dbg !498
%cmp227 = icmp eq i16 %call25, 45, !dbg !500
%or.cond28 = or i1 %cmp26, %cmp227, !dbg !501
%call.off29 = add i16 %call25, -48, !dbg !502
%0 = icmp ult i16 %call.off29, 10, !dbg !502
%or.cond2330 = or i1 %or.cond28, %0, !dbg !501
%cmp831 = icmp eq i16 %call25, 46, !dbg !503
%or.cond1432 = and i1 %cmp831, %detectDecimal, !dbg !505
%or.cond2433 = or i1 %or.cond1432, %or.cond2330, !dbg !501
br i1 %or.cond2433, label %cleanup, label %if.end.lr.ph, !dbg !501
if.end.lr.ph: ; preds = %entry
%1 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !506
br label %if.end, !dbg !501
if.end: ; preds = %if.end.lr.ph, %sw.epilog11
%call34 = phi i16 [ %call25, %if.end.lr.ph ], [ %call, %sw.epilog11 ]
switch i16 %lookahead, label %sw.epilog11 [
i16 1, label %cleanup
i16 2, label %sw.bb9
], !dbg !507
sw.bb9: ; preds = %if.end
switch i16 %call34, label %cleanup [
i16 32, label %sw.epilog11
i16 9, label %sw.epilog11
i16 13, label %sw.epilog11
i16 10, label %sw.epilog11
], !dbg !508
sw.epilog11: ; preds = %sw.bb9, %sw.bb9, %sw.bb9, %sw.bb9, %if.end
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %1, align 2, !dbg !506, !tbaa !459
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !506
%2 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !506
%call12 = tail call i16 %2(%class.Stream* %this) #6, !dbg !506
%call = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #7, !dbg !495
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !299, metadata !444), !dbg !497
%cmp = icmp slt i16 %call, 0, !dbg !498
%cmp2 = icmp eq i16 %call, 45, !dbg !500
%or.cond = or i1 %cmp, %cmp2, !dbg !501
%call.off = add i16 %call, -48, !dbg !502
%3 = icmp ult i16 %call.off, 10, !dbg !502
%or.cond23 = or i1 %or.cond, %3, !dbg !501
%cmp8 = icmp eq i16 %call, 46, !dbg !503
%or.cond14 = and i1 %cmp8, %detectDecimal, !dbg !505
%or.cond24 = or i1 %or.cond14, %or.cond23, !dbg !501
br i1 %or.cond24, label %cleanup, label %if.end, !dbg !501
cleanup: ; preds = %sw.epilog11, %if.end, %sw.bb9, %entry
%retval.0 = phi i16 [ %call25, %entry ], [ %call, %sw.epilog11 ], [ -1, %if.end ], [ -1, %sw.bb9 ]
ret i16 %retval.0, !dbg !510
}
; Function Attrs: norecurse nounwind optsize
define void @_ZN6Stream10setTimeoutEm(%class.Stream* nocapture %this, i32 %timeout) #4 align 2 !dbg !300 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !305, metadata !444), !dbg !511
tail call void @llvm.dbg.value(metadata i32 %timeout, i64 0, metadata !306, metadata !444), !dbg !512
%_timeout = getelementptr inbounds %class.Stream, %class.Stream* %this, i16 0, i32 1, !dbg !513
store i32 %timeout, i32* %_timeout, align 2, !dbg !514, !tbaa !468
ret void, !dbg !515
}
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream4findEPc(%class.Stream* %this, i8* %target) #0 align 2 !dbg !307 {
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 !340, metadata !444), !dbg !516
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !312, metadata !444), !dbg !519
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !313, metadata !444), !dbg !520
%call = tail call i16 @strlen(i8* %target) #8, !dbg !521
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !335, metadata !444) #9, !dbg !522
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !336, metadata !444) #9, !dbg !523
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !337, metadata !444) #9, !dbg !524
tail call void @llvm.dbg.value(metadata i8* null, i64 0, metadata !338, metadata !444) #9, !dbg !525
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !339, metadata !444) #9, !dbg !526
%0 = bitcast [1 x %"struct.Stream::MultiTarget"]* %t.i to i8*, !dbg !527
call void @llvm.lifetime.start(i64 6, i8* %0) #9, !dbg !527
%str.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 0, !dbg !528
store i8* %target, i8** %str.i, align 2, !dbg !528, !tbaa !529
%len.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 1, !dbg !528
store i16 %call, i16* %len.i, align 2, !dbg !528, !tbaa !533
%index.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 2, !dbg !528
store i16 0, i16* %index.i, align 2, !dbg !528, !tbaa !534
%arraydecay.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, !dbg !535
%call.i = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay.i, i16 1) #6, !dbg !536
call void @llvm.lifetime.end(i64 6, i8* %0) #9, !dbg !537
%retval.0.i = icmp eq i16 %call.i, 0, !dbg !538
ret i1 %retval.0.i, !dbg !539
}
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream9findUntilEPcjS0_j(%class.Stream* %this, i8* %target, i16 %targetLen, i8* %terminator, i16 %termLen) #0 align 2 !dbg !330 {
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 !335, metadata !444), !dbg !540
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !336, metadata !444), !dbg !541
tail call void @llvm.dbg.value(metadata i16 %targetLen, i64 0, metadata !337, metadata !444), !dbg !542
tail call void @llvm.dbg.value(metadata i8* %terminator, i64 0, metadata !338, metadata !444), !dbg !543
tail call void @llvm.dbg.value(metadata i16 %termLen, i64 0, metadata !339, metadata !444), !dbg !544
%cmp = icmp eq i8* %terminator, null, !dbg !545
br i1 %cmp, label %if.then, label %if.else, !dbg !546
if.then: ; preds = %entry
%0 = bitcast [1 x %"struct.Stream::MultiTarget"]* %t to i8*, !dbg !547
call void @llvm.lifetime.start(i64 6, i8* %0) #9, !dbg !547
tail call void @llvm.dbg.declare(metadata [1 x %"struct.Stream::MultiTarget"]* %t, metadata !340, metadata !444), !dbg !548
%str = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, i32 0, !dbg !549
store i8* %target, i8** %str, align 2, !dbg !549, !tbaa !529
%len = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, i32 1, !dbg !549
store i16 %targetLen, i16* %len, align 2, !dbg !549, !tbaa !533
%index = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, i32 2, !dbg !549
store i16 0, i16* %index, align 2, !dbg !549, !tbaa !534
%arraydecay = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t, i16 0, i16 0, !dbg !550
%call = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay, i16 1) #7, !dbg !551
call void @llvm.lifetime.end(i64 6, i8* %0) #9, !dbg !552
br label %return
if.else: ; preds = %entry
%1 = bitcast [2 x %"struct.Stream::MultiTarget"]* %t3 to i8*, !dbg !553
call void @llvm.lifetime.start(i64 12, i8* %1) #9, !dbg !553
tail call void @llvm.dbg.declare(metadata [2 x %"struct.Stream::MultiTarget"]* %t3, metadata !346, metadata !444), !dbg !554
%str5 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, i32 0, !dbg !555
store i8* %target, i8** %str5, align 2, !dbg !555, !tbaa !529
%len6 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, i32 1, !dbg !555
store i16 %targetLen, i16* %len6, align 2, !dbg !555, !tbaa !533
%index7 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, i32 2, !dbg !555
store i16 0, i16* %index7, align 2, !dbg !555, !tbaa !534
%str8 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 1, i32 0, !dbg !556
store i8* %terminator, i8** %str8, align 2, !dbg !556, !tbaa !529
%len9 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 1, i32 1, !dbg !556
store i16 %termLen, i16* %len9, align 2, !dbg !556, !tbaa !533
%index10 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 1, i32 2, !dbg !556
store i16 0, i16* %index10, align 2, !dbg !556, !tbaa !534
%arraydecay11 = getelementptr inbounds [2 x %"struct.Stream::MultiTarget"], [2 x %"struct.Stream::MultiTarget"]* %t3, i16 0, i16 0, !dbg !557
%call12 = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay11, i16 2) #7, !dbg !558
call void @llvm.lifetime.end(i64 12, i8* %1) #9, !dbg !559
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 !560
ret i1 %retval.0, !dbg !561
}
; Function Attrs: nounwind optsize readonly
declare i16 @strlen(i8* nocapture) #5
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream4findEPcj(%class.Stream* %this, i8* %target, i16 %length) #0 align 2 !dbg !314 {
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 !340, metadata !444), !dbg !562
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !319, metadata !444), !dbg !564
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !320, metadata !444), !dbg !565
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !321, metadata !444), !dbg !566
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !335, metadata !444) #9, !dbg !567
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !336, metadata !444) #9, !dbg !568
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !337, metadata !444) #9, !dbg !569
tail call void @llvm.dbg.value(metadata i8* null, i64 0, metadata !338, metadata !444) #9, !dbg !570
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !339, metadata !444) #9, !dbg !571
%0 = bitcast [1 x %"struct.Stream::MultiTarget"]* %t.i to i8*, !dbg !572
call void @llvm.lifetime.start(i64 6, i8* %0) #9, !dbg !572
%str.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 0, !dbg !573
store i8* %target, i8** %str.i, align 2, !dbg !573, !tbaa !529
%len.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 1, !dbg !573
store i16 %length, i16* %len.i, align 2, !dbg !573, !tbaa !533
%index.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, i32 2, !dbg !573
store i16 0, i16* %index.i, align 2, !dbg !573, !tbaa !534
%arraydecay.i = getelementptr inbounds [1 x %"struct.Stream::MultiTarget"], [1 x %"struct.Stream::MultiTarget"]* %t.i, i16 0, i16 0, !dbg !574
%call.i = call i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %arraydecay.i, i16 1) #6, !dbg !575
call void @llvm.lifetime.end(i64 6, i8* %0) #9, !dbg !576
%retval.0.i = icmp eq i16 %call.i, 0, !dbg !577
ret i1 %retval.0.i, !dbg !578
}
; Function Attrs: nounwind optsize
define zeroext i1 @_ZN6Stream9findUntilEPcS0_(%class.Stream* %this, i8* %target, i8* %terminator) #0 align 2 !dbg !322 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !327, metadata !444), !dbg !579
tail call void @llvm.dbg.value(metadata i8* %target, i64 0, metadata !328, metadata !444), !dbg !580
tail call void @llvm.dbg.value(metadata i8* %terminator, i64 0, metadata !329, metadata !444), !dbg !581
%call = tail call i16 @strlen(i8* %target) #8, !dbg !582
%call2 = tail call i16 @strlen(i8* %terminator) #8, !dbg !583
%call3 = tail call zeroext i1 @_ZN6Stream9findUntilEPcjS0_j(%class.Stream* %this, i8* %target, i16 %call, i8* %terminator, i16 %call2) #7, !dbg !585
ret i1 %call3, !dbg !587
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream9findMultiEPNS_11MultiTargetEi(%class.Stream* %this, %"struct.Stream::MultiTarget"* %targets, i16 %tCount) #0 align 2 !dbg !415 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !421, metadata !444), !dbg !588
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %targets, i64 0, metadata !422, metadata !444), !dbg !589
tail call void @llvm.dbg.value(metadata i16 %tCount, i64 0, metadata !423, metadata !444), !dbg !590
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %targets, i64 0, metadata !424, metadata !444), !dbg !591
%add.ptr = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %targets, i16 %tCount, !dbg !592
%cmp137 = icmp sgt i16 %tCount, 0, !dbg !595
br i1 %cmp137, label %for.body, label %while.body.preheader, !dbg !596
while.body.preheader: ; preds = %for.inc, %entry
%call134 = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #7, !dbg !597
tail call void @llvm.dbg.value(metadata i16 %call134, i64 0, metadata !426, metadata !444), !dbg !599
%cmp3135 = icmp slt i16 %call134, 0, !dbg !600
br i1 %cmp3135, label %return, label %for.cond7.preheader, !dbg !602
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 !603
%0 = load i16, i16* %len, align 2, !dbg !603, !tbaa !533
%cmp2 = icmp eq i16 %0, 0, !dbg !606
br i1 %cmp2, label %cleanup, label %for.inc, !dbg !607
for.inc: ; preds = %for.body
%incdec.ptr = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t.0138, i16 1, !dbg !608
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %incdec.ptr, i64 0, metadata !424, metadata !444), !dbg !591
%cmp = icmp ult %"struct.Stream::MultiTarget"* %incdec.ptr, %add.ptr, !dbg !595
br i1 %cmp, label %for.body, label %while.body.preheader, !dbg !596
cleanup: ; preds = %for.body
%sub.ptr.lhs.cast = ptrtoint %"struct.Stream::MultiTarget"* %t.0138 to i16, !dbg !610
%sub.ptr.rhs.cast = ptrtoint %"struct.Stream::MultiTarget"* %targets to i16, !dbg !610
%sub.ptr.sub = sub i16 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast, !dbg !610
%sub.ptr.div = sdiv exact i16 %sub.ptr.sub, 6, !dbg !610
br label %return
while.body.loopexit: ; preds = %for.inc69, %for.cond7.preheader
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #7, !dbg !597
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !426, metadata !444), !dbg !599
%cmp3 = icmp slt i16 %call, 0, !dbg !600
br i1 %cmp3, label %return, label %for.cond7.preheader, !dbg !602
for.cond7.preheader: ; preds = %while.body.preheader, %while.body.loopexit
%call136 = phi i16 [ %call, %while.body.loopexit ], [ %call134, %while.body.preheader ]
br i1 %cmp137, label %for.body11, label %while.body.loopexit, !dbg !611
for.body11: ; preds = %for.cond7.preheader, %for.inc69
%t6.0133 = phi %"struct.Stream::MultiTarget"* [ %incdec.ptr70, %for.inc69 ], [ %targets, %for.cond7.preheader ]
%index = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 0, i32 2, !dbg !613
%1 = load i16, i16* %index, align 2, !dbg !613, !tbaa !534
%str = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 0, i32 0, !dbg !615
%2 = load i8*, i8** %str, align 2, !dbg !615, !tbaa !529
%arrayidx = getelementptr inbounds i8, i8* %2, i16 %1, !dbg !616
%3 = load i8, i8* %arrayidx, align 1, !dbg !616, !tbaa !617
%conv = sext i8 %3 to i16, !dbg !616
%cmp12 = icmp eq i16 %call136, %conv, !dbg !618
br i1 %cmp12, label %if.then13, label %if.end22, !dbg !619
if.then13: ; preds = %for.body11
%inc = add i16 %1, 1, !dbg !620
store i16 %inc, i16* %index, align 2, !dbg !620, !tbaa !534
%len15 = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 0, i32 1, !dbg !623
%4 = load i16, i16* %len15, align 2, !dbg !623, !tbaa !533
%cmp16 = icmp eq i16 %inc, %4, !dbg !624
br i1 %cmp16, label %cleanup71, label %for.inc69, !dbg !625
if.end22: ; preds = %for.body11
%cmp24 = icmp eq i16 %1, 0, !dbg !626
br i1 %cmp24, label %for.inc69, label %do.body, !dbg !628
do.body: ; preds = %if.end22, %do.cond
%5 = phi i16 [ %dec, %do.cond ], [ %1, %if.end22 ], !dbg !629
%dec = add i16 %5, -1, !dbg !630
store i16 %dec, i16* %index, align 2, !dbg !629, !tbaa !534
%arrayidx31 = getelementptr inbounds i8, i8* %2, i16 %dec, !dbg !632
%6 = load i8, i8* %arrayidx31, align 1, !dbg !632, !tbaa !617
%conv32 = sext i8 %6 to i16, !dbg !632
%cmp33 = icmp eq i16 %call136, %conv32, !dbg !634
br i1 %cmp33, label %if.end35, label %do.cond, !dbg !635
if.end35: ; preds = %do.body
%cmp37 = icmp eq i16 %dec, 0, !dbg !636
br i1 %cmp37, label %if.then38, label %for.body46.lr.ph, !dbg !638
if.then38: ; preds = %if.end35
store i16 %5, i16* %index, align 2, !dbg !639, !tbaa !534
br label %for.inc69, !dbg !641
for.body46.lr.ph: ; preds = %if.end35
%dec.neg = sub i16 1, %5
%sub = add i16 %dec.neg, %1, !dbg !642
tail call void @llvm.dbg.value(metadata i16 %sub, i64 0, metadata !433, metadata !444), !dbg !643
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !435, metadata !444), !dbg !644
br label %for.body46, !dbg !645
for.body46: ; preds = %for.body46.lr.ph, %for.inc56
%i.0130 = phi i16 [ 0, %for.body46.lr.ph ], [ %inc57, %for.inc56 ]
%arrayidx48 = getelementptr inbounds i8, i8* %2, i16 %i.0130, !dbg !649
%7 = load i8, i8* %arrayidx48, align 1, !dbg !649, !tbaa !617
%add = add i16 %sub, %i.0130, !dbg !652
%arrayidx51 = getelementptr inbounds i8, i8* %2, i16 %add, !dbg !653
%8 = load i8, i8* %arrayidx51, align 1, !dbg !653, !tbaa !617
%cmp53 = icmp eq i8 %7, %8, !dbg !654
br i1 %cmp53, label %for.inc56, label %for.end58, !dbg !655
for.inc56: ; preds = %for.body46
%inc57 = add i16 %i.0130, 1, !dbg !656
tail call void @llvm.dbg.value(metadata i16 %inc57, i64 0, metadata !435, metadata !444), !dbg !644
%cmp45 = icmp ult i16 %inc57, %dec, !dbg !658
br i1 %cmp45, label %for.body46, label %for.end58, !dbg !645
for.end58: ; preds = %for.inc56, %for.body46
%i.0.lcssa.ph = phi i16 [ %inc57, %for.inc56 ], [ %i.0130, %for.body46 ]
%cmp60 = icmp eq i16 %i.0.lcssa.ph, %dec, !dbg !659
br i1 %cmp60, label %if.then61, label %do.cond, !dbg !660
if.then61: ; preds = %for.end58
store i16 %5, i16* %index, align 2, !dbg !661, !tbaa !534
br label %for.inc69
do.cond: ; preds = %do.body, %for.end58
%tobool = icmp eq i16 %dec, 0, !dbg !663
br i1 %tobool, label %for.inc69, label %do.body, !dbg !665
for.inc69: ; preds = %do.cond, %if.then38, %if.then61, %if.end22, %if.then13
%incdec.ptr70 = getelementptr inbounds %"struct.Stream::MultiTarget", %"struct.Stream::MultiTarget"* %t6.0133, i16 1, !dbg !666
tail call void @llvm.dbg.value(metadata %"struct.Stream::MultiTarget"* %incdec.ptr70, i64 0, metadata !428, metadata !444), !dbg !668
%cmp9 = icmp ult %"struct.Stream::MultiTarget"* %incdec.ptr70, %add.ptr, !dbg !669
br i1 %cmp9, label %for.body11, label %while.body.loopexit, !dbg !611
cleanup71: ; preds = %if.then13
%sub.ptr.lhs.cast18 = ptrtoint %"struct.Stream::MultiTarget"* %t6.0133 to i16, !dbg !670
%sub.ptr.rhs.cast19 = ptrtoint %"struct.Stream::MultiTarget"* %targets to i16, !dbg !670
%sub.ptr.sub20 = sub i16 %sub.ptr.lhs.cast18, %sub.ptr.rhs.cast19, !dbg !670
%sub.ptr.div21 = sdiv exact i16 %sub.ptr.sub20, 6, !dbg !670
br label %return
return: ; preds = %while.body.loopexit, %while.body.preheader, %cleanup71, %cleanup
%retval.4 = phi i16 [ %sub.ptr.div, %cleanup ], [ %sub.ptr.div21, %cleanup71 ], [ -1, %while.body.preheader ], [ -1, %while.body.loopexit ]
ret i16 %retval.4, !dbg !671
}
; Function Attrs: nounwind optsize
define i32 @_ZN6Stream8parseIntE13LookaheadModec(%class.Stream* %this, i16 %lookahead, i8 signext %ignore) #0 align 2 !dbg !351 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !356, metadata !444), !dbg !672
tail call void @llvm.dbg.value(metadata i16 %lookahead, i64 0, metadata !357, metadata !444), !dbg !673
tail call void @llvm.dbg.value(metadata i8 %ignore, i64 0, metadata !358, metadata !444), !dbg !674
tail call void @llvm.dbg.value(metadata i8 0, i64 0, metadata !359, metadata !444), !dbg !675
tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !360, metadata !444), !dbg !676
%call = tail call i16 @_ZN6Stream13peekNextDigitE13LookaheadModeb(%class.Stream* %this, i16 %lookahead, i1 zeroext false) #7, !dbg !677
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !361, metadata !444), !dbg !678
%cmp = icmp slt i16 %call, 0, !dbg !679
br i1 %cmp, label %cleanup, label %do.body.preheader, !dbg !681
do.body.preheader: ; preds = %entry
%conv = sext i8 %ignore to i16, !dbg !682
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !685
br label %do.body, !dbg !682
do.body: ; preds = %do.body.preheader, %if.end13
%isNegative.0 = phi i8 [ %isNegative.1, %if.end13 ], [ 0, %do.body.preheader ]
%value.0 = phi i32 [ %value.1, %if.end13 ], [ 0, %do.body.preheader ]
%c.0 = phi i16 [ %call15, %if.end13 ], [ %call, %do.body.preheader ]
%cmp2 = icmp eq i16 %c.0, %conv, !dbg !686
br i1 %cmp2, label %if.end13, label %if.else, !dbg !687
if.else: ; preds = %do.body
%cmp4 = icmp eq i16 %c.0, 45, !dbg !688
br i1 %cmp4, label %if.end13, label %if.else6, !dbg !690
if.else6: ; preds = %if.else
%c.0.off = add i16 %c.0, -48, !dbg !691
%1 = icmp ult i16 %c.0.off, 10, !dbg !691
br i1 %1, label %if.then9, label %if.end13, !dbg !691
if.then9: ; preds = %if.else6
%mul = mul nsw i32 %value.0, 10, !dbg !693
%conv10 = sext i16 %c.0 to i32, !dbg !694
%add = add i32 %mul, -48, !dbg !695
%sub = add i32 %add, %conv10, !dbg !696
tail call void @llvm.dbg.value(metadata i32 %sub, i64 0, metadata !360, metadata !444), !dbg !676
br label %if.end13, !dbg !697
if.end13: ; preds = %if.else, %if.then9, %if.else6, %do.body
%isNegative.1 = phi i8 [ %isNegative.0, %do.body ], [ %isNegative.0, %if.then9 ], [ %isNegative.0, %if.else6 ], [ 1, %if.else ]
%value.1 = phi i32 [ %value.0, %do.body ], [ %sub, %if.then9 ], [ %value.0, %if.else6 ], [ %value.0, %if.else ]
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !685, !tbaa !459
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !685
%2 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !685
%call14 = tail call i16 %2(%class.Stream* %this) #6, !dbg !685
%call15 = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #7, !dbg !698
tail call void @llvm.dbg.value(metadata i16 %call15, i64 0, metadata !361, metadata !444), !dbg !678
%call15.off = add i16 %call15, -48, !dbg !699
%3 = icmp ult i16 %call15.off, 10, !dbg !699
%cmp20 = icmp eq i16 %call15, %conv, !dbg !700
%or.cond = or i1 %cmp20, %3, !dbg !699
br i1 %or.cond, label %do.body, label %do.end, !dbg !699
do.end: ; preds = %if.end13
%4 = and i8 %isNegative.1, 1, !dbg !702
%tobool = icmp eq i8 %4, 0, !dbg !702
%sub22 = sub nsw i32 0, %value.1, !dbg !704
tail call void @llvm.dbg.value(metadata i32 %sub22, i64 0, metadata !360, metadata !444), !dbg !676
%value.1.sub22 = select i1 %tobool, i32 %value.1, i32 %sub22, !dbg !705
br label %cleanup, !dbg !706
cleanup: ; preds = %entry, %do.end
%retval.0 = phi i32 [ %value.1.sub22, %do.end ], [ 0, %entry ]
ret i32 %retval.0, !dbg !707
}
; Function Attrs: nounwind optsize
define float @_ZN6Stream10parseFloatE13LookaheadModec(%class.Stream* %this, i16 %lookahead, i8 signext %ignore) #0 align 2 !dbg !362 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !367, metadata !444), !dbg !708
tail call void @llvm.dbg.value(metadata i16 %lookahead, i64 0, metadata !368, metadata !444), !dbg !709
tail call void @llvm.dbg.value(metadata i8 %ignore, i64 0, metadata !369, metadata !444), !dbg !710
tail call void @llvm.dbg.value(metadata i8 0, i64 0, metadata !370, metadata !444), !dbg !711
tail call void @llvm.dbg.value(metadata i8 0, i64 0, metadata !371, metadata !444), !dbg !712
tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !372, metadata !444), !dbg !713
tail call void @llvm.dbg.value(metadata float 1.000000e+00, i64 0, metadata !374, metadata !444), !dbg !714
%call = tail call i16 @_ZN6Stream13peekNextDigitE13LookaheadModeb(%class.Stream* %this, i16 %lookahead, i1 zeroext true) #7, !dbg !715
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !373, metadata !444), !dbg !716
%cmp = icmp slt i16 %call, 0, !dbg !717
br i1 %cmp, label %cleanup, label %do.body.preheader, !dbg !719
do.body.preheader: ; preds = %entry
%conv = sext i8 %ignore to i16, !dbg !720
%0 = bitcast %class.Stream* %this to i16 (%class.Stream*)***, !dbg !723
br label %do.body, !dbg !720
do.body: ; preds = %lor.lhs.false, %if.end20, %do.body.preheader
%isNegative.0 = phi i8 [ 0, %do.body.preheader ], [ %isNegative.1, %if.end20 ], [ %isNegative.1, %lor.lhs.false ]
%isFraction.0 = phi i8 [ 0, %do.body.preheader ], [ %isFraction.1, %if.end20 ], [ %isFraction.1, %lor.lhs.false ]
%value.0 = phi i32 [ 0, %do.body.preheader ], [ %value.1, %if.end20 ], [ %value.1, %lor.lhs.false ]
%c.0 = phi i16 [ %call, %do.body.preheader ], [ %call22, %if.end20 ], [ %call22, %lor.lhs.false ]
%fraction.0 = phi float [ 1.000000e+00, %do.body.preheader ], [ %fraction.1, %if.end20 ], [ %fraction.1, %lor.lhs.false ]
%cmp2 = icmp eq i16 %c.0, %conv, !dbg !724
br i1 %cmp2, label %if.end20, label %if.else, !dbg !725
if.else: ; preds = %do.body
switch i16 %c.0, label %if.else9 [
i16 45, label %if.end20
i16 46, label %if.then8
], !dbg !726
if.then8: ; preds = %if.else
tail call void @llvm.dbg.value(metadata i8 1, i64 0, metadata !371, metadata !444), !dbg !712
br label %if.end20, !dbg !727
if.else9: ; preds = %if.else
%c.0.off = add i16 %c.0, -48, !dbg !730
%1 = icmp ult i16 %c.0.off, 10, !dbg !730
br i1 %1, label %if.then12, label %if.end20, !dbg !730
if.then12: ; preds = %if.else9
%mul = mul nsw i32 %value.0, 10, !dbg !732
%conv13 = sext i16 %c.0 to i32, !dbg !734
%add = add i32 %mul, -48, !dbg !735
%sub = add i32 %add, %conv13, !dbg !736
tail call void @llvm.dbg.value(metadata i32 %sub, i64 0, metadata !372, metadata !444), !dbg !713
%2 = and i8 %isFraction.0, 1, !dbg !737
%tobool = icmp eq i8 %2, 0, !dbg !737
%mul15 = fmul float %fraction.0, 0x3FB99999A0000000, !dbg !739
tail call void @llvm.dbg.value(metadata float %mul15, i64 0, metadata !374, metadata !444), !dbg !714
%fraction.0.mul15 = select i1 %tobool, float %fraction.0, float %mul15, !dbg !740
br label %if.end20, !dbg !740
if.end20: ; preds = %if.then12, %if.else, %if.else9, %if.then8, %do.body
%isNegative.1 = phi i8 [ %isNegative.0, %do.body ], [ %isNegative.0, %if.then8 ], [ %isNegative.0, %if.else9 ], [ 1, %if.else ], [ %isNegative.0, %if.then12 ]
%isFraction.1 = phi i8 [ %isFraction.0, %do.body ], [ 1, %if.then8 ], [ %isFraction.0, %if.else9 ], [ %isFraction.0, %if.else ], [ %isFraction.0, %if.then12 ]
%value.1 = phi i32 [ %value.0, %do.body ], [ %value.0, %if.then8 ], [ %value.0, %if.else9 ], [ %value.0, %if.else ], [ %sub, %if.then12 ]
%fraction.1 = phi float [ %fraction.0, %do.body ], [ %fraction.0, %if.then8 ], [ %fraction.0, %if.else9 ], [ %fraction.0, %if.else ], [ %fraction.0.mul15, %if.then12 ]
%vtable = load i16 (%class.Stream*)**, i16 (%class.Stream*)*** %0, align 2, !dbg !723, !tbaa !459
%vfn = getelementptr inbounds i16 (%class.Stream*)*, i16 (%class.Stream*)** %vtable, i16 3, !dbg !723
%3 = load i16 (%class.Stream*)*, i16 (%class.Stream*)** %vfn, align 2, !dbg !723
%call21 = tail call i16 %3(%class.Stream* %this) #6, !dbg !723
%call22 = tail call i16 @_ZN6Stream9timedPeekEv(%class.Stream* %this) #7, !dbg !741
tail call void @llvm.dbg.value(metadata i16 %call22, i64 0, metadata !373, metadata !444), !dbg !716
%call22.off = add i16 %call22, -48, !dbg !742
%4 = icmp ult i16 %call22.off, 10, !dbg !742
br i1 %4, label %do.body, label %lor.lhs.false, !dbg !742
lor.lhs.false: ; preds = %if.end20
%cmp26 = icmp eq i16 %call22, 46, !dbg !743
%5 = and i8 %isFraction.1, 1, !dbg !745
%tobool28 = icmp eq i8 %5, 0, !dbg !745
%or.cond = and i1 %tobool28, %cmp26, !dbg !747
%cmp30 = icmp eq i16 %call22, %conv, !dbg !748
%or.cond66 = or i1 %cmp30, %or.cond, !dbg !747
br i1 %or.cond66, label %do.body, label %do.end, !dbg !747
do.end: ; preds = %lor.lhs.false
%6 = and i8 %isNegative.1, 1, !dbg !750
%tobool31 = icmp eq i8 %6, 0, !dbg !750
%sub33 = sub nsw i32 0, %value.1, !dbg !752
tail call void @llvm.dbg.value(metadata i32 %sub33, i64 0, metadata !372, metadata !444), !dbg !713
%value.1.sub33 = select i1 %tobool31, i32 %value.1, i32 %sub33, !dbg !753
%conv37 = sitofp i32 %value.1.sub33 to float, !dbg !754
%mul38 = fmul float %fraction.1, %conv37, !dbg !756
%conv37.mul38 = select i1 %tobool28, float %conv37, float %mul38, !dbg !757
ret float %conv37.mul38, !dbg !757
cleanup: ; preds = %entry
ret float 0.000000e+00, !dbg !758
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream9readBytesEPcj(%class.Stream* %this, i8* nocapture %buffer, i16 %length) #0 align 2 !dbg !375 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !380, metadata !444), !dbg !759
tail call void @llvm.dbg.value(metadata i8* %buffer, i64 0, metadata !381, metadata !444), !dbg !760
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !382, metadata !444), !dbg !761
tail call void @llvm.dbg.value(metadata i16 0, i64 0, metadata !383, metadata !444), !dbg !762
%cmp9 = icmp eq i16 %length, 0, !dbg !763
br i1 %cmp9, label %while.end, label %while.body, !dbg !765
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) #7, !dbg !766
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !384, metadata !444), !dbg !768
%cmp2 = icmp slt i16 %call, 0, !dbg !769
br i1 %cmp2, label %while.end, label %cleanup.thread, !dbg !771
cleanup.thread: ; preds = %while.body
%conv = trunc i16 %call to i8, !dbg !772
%incdec.ptr = getelementptr inbounds i8, i8* %buffer.addr.011, i16 1, !dbg !773
tail call void @llvm.dbg.value(metadata i8* %incdec.ptr, i64 0, metadata !381, metadata !444), !dbg !760
store i8 %conv, i8* %buffer.addr.011, align 1, !dbg !774, !tbaa !617
%inc = add nuw i16 %count.010, 1, !dbg !775
tail call void @llvm.dbg.value(metadata i16 %inc, i64 0, metadata !383, metadata !444), !dbg !762
%cmp = icmp ult i16 %inc, %length, !dbg !763
br i1 %cmp, label %while.body, label %while.end, !dbg !765
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 !776
}
; Function Attrs: nounwind optsize
define i16 @_ZN6Stream14readBytesUntilEcPcj(%class.Stream* %this, i8 signext %terminator, i8* nocapture %buffer, i16 %length) #0 align 2 !dbg !386 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !391, metadata !444), !dbg !777
tail call void @llvm.dbg.value(metadata i8 %terminator, i64 0, metadata !392, metadata !444), !dbg !778
tail call void @llvm.dbg.value(metadata i8* %buffer, i64 0, metadata !393, metadata !444), !dbg !779
tail call void @llvm.dbg.value(metadata i16 %length, i64 0, metadata !394, metadata !444), !dbg !780
%0 = icmp eq i16 %length, 0, !dbg !781
br i1 %0, label %return, label %while.body.lr.ph, !dbg !781
while.body.lr.ph: ; preds = %entry
%conv = sext i8 %terminator to i16, !dbg !782
br label %while.body, !dbg !785
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) #7, !dbg !787
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !396, metadata !444), !dbg !789
%cmp3 = icmp slt i16 %call, 0, !dbg !790
%cmp4 = icmp eq i16 %call, %conv, !dbg !791
%or.cond = or i1 %cmp3, %cmp4, !dbg !792
br i1 %or.cond, label %return, label %cleanup.thread, !dbg !792
cleanup.thread: ; preds = %while.body
%conv7 = trunc i16 %call to i8, !dbg !793
%incdec.ptr = getelementptr inbounds i8, i8* %buffer.addr.017, i16 1, !dbg !794
tail call void @llvm.dbg.value(metadata i8* %incdec.ptr, i64 0, metadata !393, metadata !444), !dbg !779
store i8 %conv7, i8* %buffer.addr.017, align 1, !dbg !795, !tbaa !617
%inc = add nuw i16 %index.018, 1, !dbg !796
tail call void @llvm.dbg.value(metadata i16 %inc, i64 0, metadata !395, metadata !444), !dbg !797
%cmp2 = icmp ult i16 %inc, %length, !dbg !798
br i1 %cmp2, label %while.body, label %return, !dbg !785
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 !799
}
; Function Attrs: nounwind optsize
define void @_ZN6Stream10readStringEv(%class.String* noalias sret %agg.result, %class.Stream* %this) #0 align 2 !dbg !398 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !403, metadata !444), !dbg !800
tail call void @llvm.dbg.declare(metadata %class.String* %agg.result, metadata !404, metadata !801), !dbg !802
tail call void @_ZN6StringC1EPKc(%class.String* %agg.result, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i16 0, i16 0)) #6, !dbg !802
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #7, !dbg !803
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !405, metadata !444), !dbg !805
%cmp6 = icmp sgt i16 %call, -1, !dbg !806
br i1 %cmp6, label %while.body.preheader, label %nrvo.skipdtor, !dbg !807
while.body.preheader: ; preds = %entry
%extract.t8 = trunc i16 %call to i8, !dbg !807
br label %while.body, !dbg !808
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 !438, metadata !444) #9, !dbg !808
tail call void @llvm.dbg.value(metadata i8 %c.07.off0, i64 0, metadata !440, metadata !444) #9, !dbg !811
%call.i = tail call zeroext i8 @_ZN6String6concatEc(%class.String* %agg.result, i8 signext %c.07.off0) #6, !dbg !812
%call3 = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #7, !dbg !813
tail call void @llvm.dbg.value(metadata i16 %call3, i64 0, metadata !405, metadata !444), !dbg !805
%cmp = icmp sgt i16 %call3, -1, !dbg !806
%extract.t = trunc i16 %call3 to i8, !dbg !807
br i1 %cmp, label %while.body, label %nrvo.skipdtor, !dbg !807
nrvo.skipdtor: ; preds = %while.body, %entry
ret void, !dbg !814
}
; 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 !dbg !406 {
entry:
tail call void @llvm.dbg.value(metadata %class.Stream* %this, i64 0, metadata !411, metadata !444), !dbg !816
tail call void @llvm.dbg.value(metadata i8 %terminator, i64 0, metadata !412, metadata !444), !dbg !817
tail call void @llvm.dbg.declare(metadata %class.String* %agg.result, metadata !413, metadata !801), !dbg !818
tail call void @_ZN6StringC1EPKc(%class.String* %agg.result, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i16 0, i16 0)) #6, !dbg !818
%call = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #7, !dbg !819
tail call void @llvm.dbg.value(metadata i16 %call, i64 0, metadata !414, metadata !444), !dbg !821
%cmp9 = icmp slt i16 %call, 0, !dbg !822
%conv = sext i8 %terminator to i16, !dbg !823
%cmp210 = icmp eq i16 %call, %conv, !dbg !825
%or.cond11 = or i1 %cmp9, %cmp210, !dbg !826
br i1 %or.cond11, label %nrvo.skipdtor, label %while.body.preheader, !dbg !826
while.body.preheader: ; preds = %entry
%extract.t13 = trunc i16 %call to i8, !dbg !826
br label %while.body, !dbg !827
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 !438, metadata !444) #9, !dbg !827
tail call void @llvm.dbg.value(metadata i8 %c.012.off0, i64 0, metadata !440, metadata !444) #9, !dbg !830
%call.i = tail call zeroext i8 @_ZN6String6concatEc(%class.String* %agg.result, i8 signext %c.012.off0) #6, !dbg !831
%call5 = tail call i16 @_ZN6Stream9timedReadEv(%class.Stream* %this) #7, !dbg !832
tail call void @llvm.dbg.value(metadata i16 %call5, i64 0, metadata !414, metadata !444), !dbg !821
%cmp = icmp slt i16 %call5, 0, !dbg !822
%cmp2 = icmp eq i16 %call5, %conv, !dbg !825
%or.cond = or i1 %cmp, %cmp2, !dbg !826
%extract.t = trunc i16 %call5 to i8, !dbg !826
br i1 %or.cond, label %nrvo.skipdtor, label %while.body, !dbg !826
nrvo.skipdtor: ; preds = %while.body, %entry
ret void, !dbg !833
}
; 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 = { argmemonly nounwind }
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 = { norecurse 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 #5 = { 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 #6 = { nounwind optsize }
attributes #7 = { optsize }
attributes #8 = { nounwind optsize readonly }
attributes #9 = { nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!441, !442}
!llvm.ident = !{!443}
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.9.0 (https://github.com/avr-llvm/clang.git 82a9a3e4b5a70a76621c9a06926e68baae9765c9) (llvm/llvm.git cfc3f431c02364847df4c9b09b4cea54a0669e43)", isOptimized: true, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !9, subprograms: !275)
!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.9.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, size: 16, align: 16)
!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", size: 16, align: 16)
!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", size: 16, align: 16)
!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", size: 16, align: 16)
!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, size: 16, align: 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, flags: DIFlagFwdDecl, identifier: "_ZTS15StringSumHelper")
!275 = !{!276, !285, !290, !300, !307, !314, !322, !330, !351, !362, !375, !386, !398, !406, !415, !436}
!276 = distinct !DISubprogram(name: "timedRead", linkageName: "_ZN6Stream9timedReadEv", scope: !"_ZTS6Stream", file: !1, line: 31, type: !277, isLocal: false, isDefinition: true, scopeLine: 32, flags: DIFlagPrototyped, isOptimized: true, declaration: !280, variables: !281)
!277 = !DISubroutineType(types: !278)
!278 = !{!65, !279}
!279 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS6Stream", size: 16, align: 16, flags: DIFlagArtificial | DIFlagObjectPointer)
!280 = !DISubprogram(name: "timedRead", linkageName: "_ZN6Stream9timedReadEv", scope: !"_ZTS6Stream", file: !4, line: 54, type: !277, isLocal: false, isDefinition: false, scopeLine: 54, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!281 = !{!282, !284}
!282 = !DILocalVariable(name: "this", arg: 1, scope: !276, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!283 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS6Stream", size: 16, align: 16)
!284 = !DILocalVariable(name: "c", scope: !276, file: !1, line: 33, type: !65)
!285 = distinct !DISubprogram(name: "timedPeek", linkageName: "_ZN6Stream9timedPeekEv", scope: !"_ZTS6Stream", file: !1, line: 43, type: !277, isLocal: false, isDefinition: true, scopeLine: 44, flags: DIFlagPrototyped, isOptimized: true, declaration: !286, variables: !287)
!286 = !DISubprogram(name: "timedPeek", linkageName: "_ZN6Stream9timedPeekEv", scope: !"_ZTS6Stream", file: !4, line: 55, type: !277, isLocal: false, isDefinition: false, scopeLine: 55, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!287 = !{!288, !289}
!288 = !DILocalVariable(name: "this", arg: 1, scope: !285, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!289 = !DILocalVariable(name: "c", scope: !285, file: !1, line: 45, type: !65)
!290 = distinct !DISubprogram(name: "peekNextDigit", linkageName: "_ZN6Stream13peekNextDigitE13LookaheadModeb", scope: !"_ZTS6Stream", file: !1, line: 56, type: !291, isLocal: false, isDefinition: true, scopeLine: 57, flags: DIFlagPrototyped, isOptimized: true, declaration: !294, variables: !295)
!291 = !DISubroutineType(types: !292)
!292 = !{!65, !279, !"_ZTS13LookaheadMode", !293}
!293 = !DIBasicType(name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean)
!294 = !DISubprogram(name: "peekNextDigit", linkageName: "_ZN6Stream13peekNextDigitE13LookaheadModeb", scope: !"_ZTS6Stream", file: !4, line: 56, type: !291, isLocal: false, isDefinition: false, scopeLine: 56, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!295 = !{!296, !297, !298, !299}
!296 = !DILocalVariable(name: "this", arg: 1, scope: !290, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!297 = !DILocalVariable(name: "lookahead", arg: 2, scope: !290, file: !1, line: 56, type: !"_ZTS13LookaheadMode")
!298 = !DILocalVariable(name: "detectDecimal", arg: 3, scope: !290, file: !1, line: 56, type: !293)
!299 = !DILocalVariable(name: "c", scope: !290, file: !1, line: 58, type: !65)
!300 = distinct !DISubprogram(name: "setTimeout", linkageName: "_ZN6Stream10setTimeoutEm", scope: !"_ZTS6Stream", file: !1, line: 87, type: !301, isLocal: false, isDefinition: true, scopeLine: 88, flags: DIFlagPrototyped, isOptimized: true, declaration: !303, variables: !304)
!301 = !DISubroutineType(types: !302)
!302 = !{null, !279, !76}
!303 = !DISubprogram(name: "setTimeout", linkageName: "_ZN6Stream10setTimeoutEm", scope: !"_ZTS6Stream", file: !4, line: 68, type: !301, isLocal: false, isDefinition: false, scopeLine: 68, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!304 = !{!305, !306}
!305 = !DILocalVariable(name: "this", arg: 1, scope: !300, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!306 = !DILocalVariable(name: "timeout", arg: 2, scope: !300, file: !1, line: 87, type: !76)
!307 = distinct !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPc", scope: !"_ZTS6Stream", file: !1, line: 93, type: !308, isLocal: false, isDefinition: true, scopeLine: 94, flags: DIFlagPrototyped, isOptimized: true, declaration: !310, variables: !311)
!308 = !DISubroutineType(types: !309)
!309 = !{!293, !279, !26}
!310 = !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPc", scope: !"_ZTS6Stream", file: !4, line: 70, type: !308, isLocal: false, isDefinition: false, scopeLine: 70, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!311 = !{!312, !313}
!312 = !DILocalVariable(name: "this", arg: 1, scope: !307, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!313 = !DILocalVariable(name: "target", arg: 2, scope: !307, file: !1, line: 93, type: !26)
!314 = distinct !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPcj", scope: !"_ZTS6Stream", file: !1, line: 100, type: !315, isLocal: false, isDefinition: true, scopeLine: 101, flags: DIFlagPrototyped, isOptimized: true, declaration: !317, variables: !318)
!315 = !DISubroutineType(types: !316)
!316 = !{!293, !279, !26, !18}
!317 = !DISubprogram(name: "find", linkageName: "_ZN6Stream4findEPcj", scope: !"_ZTS6Stream", file: !4, line: 74, type: !315, isLocal: false, isDefinition: false, scopeLine: 74, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!318 = !{!319, !320, !321}
!319 = !DILocalVariable(name: "this", arg: 1, scope: !314, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!320 = !DILocalVariable(name: "target", arg: 2, scope: !314, file: !1, line: 100, type: !26)
!321 = !DILocalVariable(name: "length", arg: 3, scope: !314, file: !1, line: 100, type: !18)
!322 = distinct !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcS0_", scope: !"_ZTS6Stream", file: !1, line: 106, type: !323, isLocal: false, isDefinition: true, scopeLine: 107, flags: DIFlagPrototyped, isOptimized: true, declaration: !325, variables: !326)
!323 = !DISubroutineType(types: !324)
!324 = !{!293, !279, !26, !26}
!325 = !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcS0_", scope: !"_ZTS6Stream", file: !4, line: 80, type: !323, isLocal: false, isDefinition: false, scopeLine: 80, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!326 = !{!327, !328, !329}
!327 = !DILocalVariable(name: "this", arg: 1, scope: !322, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!328 = !DILocalVariable(name: "target", arg: 2, scope: !322, file: !1, line: 106, type: !26)
!329 = !DILocalVariable(name: "terminator", arg: 3, scope: !322, file: !1, line: 106, type: !26)
!330 = distinct !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcjS0_j", scope: !"_ZTS6Stream", file: !1, line: 114, type: !331, isLocal: false, isDefinition: true, scopeLine: 115, flags: DIFlagPrototyped, isOptimized: true, declaration: !333, variables: !334)
!331 = !DISubroutineType(types: !332)
!332 = !{!293, !279, !26, !18, !26, !18}
!333 = !DISubprogram(name: "findUntil", linkageName: "_ZN6Stream9findUntilEPcjS0_j", scope: !"_ZTS6Stream", file: !4, line: 83, type: !331, isLocal: false, isDefinition: false, scopeLine: 83, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!334 = !{!335, !336, !337, !338, !339, !340, !346}
!335 = !DILocalVariable(name: "this", arg: 1, scope: !330, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!336 = !DILocalVariable(name: "target", arg: 2, scope: !330, file: !1, line: 114, type: !26)
!337 = !DILocalVariable(name: "targetLen", arg: 3, scope: !330, file: !1, line: 114, type: !18)
!338 = !DILocalVariable(name: "terminator", arg: 4, scope: !330, file: !1, line: 114, type: !26)
!339 = !DILocalVariable(name: "termLen", arg: 5, scope: !330, file: !1, line: 114, type: !18)
!340 = !DILocalVariable(name: "t", scope: !341, file: !1, line: 117, type: !343)
!341 = distinct !DILexicalBlock(scope: !342, file: !1, line: 116, column: 27)
!342 = distinct !DILexicalBlock(scope: !330, file: !1, line: 116, column: 7)
!343 = !DICompositeType(tag: DW_TAG_array_type, baseType: !"_ZTSN6Stream11MultiTargetE", size: 48, align: 16, elements: !344)
!344 = !{!345}
!345 = !DISubrange(count: 1)
!346 = !DILocalVariable(name: "t", scope: !347, file: !1, line: 120, type: !348)
!347 = distinct !DILexicalBlock(scope: !342, file: !1, line: 119, column: 10)
!348 = !DICompositeType(tag: DW_TAG_array_type, baseType: !"_ZTSN6Stream11MultiTargetE", size: 96, align: 16, elements: !349)
!349 = !{!350}
!350 = !DISubrange(count: 2)
!351 = distinct !DISubprogram(name: "parseInt", linkageName: "_ZN6Stream8parseIntE13LookaheadModec", scope: !"_ZTS6Stream", file: !1, line: 130, type: !352, isLocal: false, isDefinition: true, scopeLine: 131, flags: DIFlagPrototyped, isOptimized: true, declaration: !354, variables: !355)
!352 = !DISubroutineType(types: !353)
!353 = !{!72, !279, !"_ZTS13LookaheadMode", !16}
!354 = !DISubprogram(name: "parseInt", linkageName: "_ZN6Stream8parseIntE13LookaheadModec", scope: !"_ZTS6Stream", file: !4, line: 86, type: !352, isLocal: false, isDefinition: false, scopeLine: 86, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!355 = !{!356, !357, !358, !359, !360, !361}
!356 = !DILocalVariable(name: "this", arg: 1, scope: !351, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!357 = !DILocalVariable(name: "lookahead", arg: 2, scope: !351, file: !1, line: 130, type: !"_ZTS13LookaheadMode")
!358 = !DILocalVariable(name: "ignore", arg: 3, scope: !351, file: !1, line: 130, type: !16)
!359 = !DILocalVariable(name: "isNegative", scope: !351, file: !1, line: 132, type: !293)
!360 = !DILocalVariable(name: "value", scope: !351, file: !1, line: 133, type: !72)
!361 = !DILocalVariable(name: "c", scope: !351, file: !1, line: 134, type: !65)
!362 = distinct !DISubprogram(name: "parseFloat", linkageName: "_ZN6Stream10parseFloatE13LookaheadModec", scope: !"_ZTS6Stream", file: !1, line: 159, type: !363, isLocal: false, isDefinition: true, scopeLine: 160, flags: DIFlagPrototyped, isOptimized: true, declaration: !365, variables: !366)
!363 = !DISubroutineType(types: !364)
!364 = !{!80, !279, !"_ZTS13LookaheadMode", !16}
!365 = !DISubprogram(name: "parseFloat", linkageName: "_ZN6Stream10parseFloatE13LookaheadModec", scope: !"_ZTS6Stream", file: !4, line: 93, type: !363, isLocal: false, isDefinition: false, scopeLine: 93, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!366 = !{!367, !368, !369, !370, !371, !372, !373, !374}
!367 = !DILocalVariable(name: "this", arg: 1, scope: !362, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!368 = !DILocalVariable(name: "lookahead", arg: 2, scope: !362, file: !1, line: 159, type: !"_ZTS13LookaheadMode")
!369 = !DILocalVariable(name: "ignore", arg: 3, scope: !362, file: !1, line: 159, type: !16)
!370 = !DILocalVariable(name: "isNegative", scope: !362, file: !1, line: 161, type: !293)
!371 = !DILocalVariable(name: "isFraction", scope: !362, file: !1, line: 162, type: !293)
!372 = !DILocalVariable(name: "value", scope: !362, file: !1, line: 163, type: !72)
!373 = !DILocalVariable(name: "c", scope: !362, file: !1, line: 164, type: !65)
!374 = !DILocalVariable(name: "fraction", scope: !362, file: !1, line: 165, type: !80)
!375 = distinct !DISubprogram(name: "readBytes", linkageName: "_ZN6Stream9readBytesEPcj", scope: !"_ZTS6Stream", file: !1, line: 202, type: !376, isLocal: false, isDefinition: true, scopeLine: 203, flags: DIFlagPrototyped, isOptimized: true, declaration: !378, variables: !379)
!376 = !DISubroutineType(types: !377)
!377 = !{!18, !279, !26, !18}
!378 = !DISubprogram(name: "readBytes", linkageName: "_ZN6Stream9readBytesEPcj", scope: !"_ZTS6Stream", file: !4, line: 96, type: !376, isLocal: false, isDefinition: false, scopeLine: 96, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!379 = !{!380, !381, !382, !383, !384}
!380 = !DILocalVariable(name: "this", arg: 1, scope: !375, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!381 = !DILocalVariable(name: "buffer", arg: 2, scope: !375, file: !1, line: 202, type: !26)
!382 = !DILocalVariable(name: "length", arg: 3, scope: !375, file: !1, line: 202, type: !18)
!383 = !DILocalVariable(name: "count", scope: !375, file: !1, line: 204, type: !18)
!384 = !DILocalVariable(name: "c", scope: !385, file: !1, line: 206, type: !65)
!385 = distinct !DILexicalBlock(scope: !375, file: !1, line: 205, column: 26)
!386 = distinct !DISubprogram(name: "readBytesUntil", linkageName: "_ZN6Stream14readBytesUntilEcPcj", scope: !"_ZTS6Stream", file: !1, line: 219, type: !387, isLocal: false, isDefinition: true, scopeLine: 220, flags: DIFlagPrototyped, isOptimized: true, declaration: !389, variables: !390)
!387 = !DISubroutineType(types: !388)
!388 = !{!18, !279, !16, !26, !18}
!389 = !DISubprogram(name: "readBytesUntil", linkageName: "_ZN6Stream14readBytesUntilEcPcj", scope: !"_ZTS6Stream", file: !4, line: 101, type: !387, isLocal: false, isDefinition: false, scopeLine: 101, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!390 = !{!391, !392, !393, !394, !395, !396}
!391 = !DILocalVariable(name: "this", arg: 1, scope: !386, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!392 = !DILocalVariable(name: "terminator", arg: 2, scope: !386, file: !1, line: 219, type: !16)
!393 = !DILocalVariable(name: "buffer", arg: 3, scope: !386, file: !1, line: 219, type: !26)
!394 = !DILocalVariable(name: "length", arg: 4, scope: !386, file: !1, line: 219, type: !18)
!395 = !DILocalVariable(name: "index", scope: !386, file: !1, line: 222, type: !18)
!396 = !DILocalVariable(name: "c", scope: !397, file: !1, line: 224, type: !65)
!397 = distinct !DILexicalBlock(scope: !386, file: !1, line: 223, column: 26)
!398 = distinct !DISubprogram(name: "readString", linkageName: "_ZN6Stream10readStringEv", scope: !"_ZTS6Stream", file: !1, line: 232, type: !399, isLocal: false, isDefinition: true, scopeLine: 233, flags: DIFlagPrototyped, isOptimized: true, declaration: !401, variables: !402)
!399 = !DISubroutineType(types: !400)
!400 = !{!"_ZTS6String", !279}
!401 = !DISubprogram(name: "readString", linkageName: "_ZN6Stream10readStringEv", scope: !"_ZTS6Stream", file: !4, line: 107, type: !399, isLocal: false, isDefinition: false, scopeLine: 107, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!402 = !{!403, !404, !405}
!403 = !DILocalVariable(name: "this", arg: 1, scope: !398, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!404 = !DILocalVariable(name: "ret", scope: !398, file: !1, line: 234, type: !"_ZTS6String")
!405 = !DILocalVariable(name: "c", scope: !398, file: !1, line: 235, type: !65)
!406 = distinct !DISubprogram(name: "readStringUntil", linkageName: "_ZN6Stream15readStringUntilEc", scope: !"_ZTS6Stream", file: !1, line: 244, type: !407, isLocal: false, isDefinition: true, scopeLine: 245, flags: DIFlagPrototyped, isOptimized: true, declaration: !409, variables: !410)
!407 = !DISubroutineType(types: !408)
!408 = !{!"_ZTS6String", !279, !16}
!409 = !DISubprogram(name: "readStringUntil", linkageName: "_ZN6Stream15readStringUntilEc", scope: !"_ZTS6Stream", file: !4, line: 108, type: !407, isLocal: false, isDefinition: false, scopeLine: 108, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
!410 = !{!411, !412, !413, !414}
!411 = !DILocalVariable(name: "this", arg: 1, scope: !406, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!412 = !DILocalVariable(name: "terminator", arg: 2, scope: !406, file: !1, line: 244, type: !16)
!413 = !DILocalVariable(name: "ret", scope: !406, file: !1, line: 246, type: !"_ZTS6String")
!414 = !DILocalVariable(name: "c", scope: !406, file: !1, line: 247, type: !65)
!415 = distinct !DISubprogram(name: "findMulti", linkageName: "_ZN6Stream9findMultiEPNS_11MultiTargetEi", scope: !"_ZTS6Stream", file: !1, line: 256, type: !416, isLocal: false, isDefinition: true, scopeLine: 256, flags: DIFlagPrototyped, isOptimized: true, declaration: !419, variables: !420)
!416 = !DISubroutineType(types: !417)
!417 = !{!65, !279, !418, !65}
!418 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTSN6Stream11MultiTargetE", size: 16, align: 16)
!419 = !DISubprogram(name: "findMulti", linkageName: "_ZN6Stream9findMultiEPNS_11MultiTargetEi", scope: !"_ZTS6Stream", file: !4, line: 125, type: !416, isLocal: false, isDefinition: false, scopeLine: 125, flags: DIFlagProtected | DIFlagPrototyped, isOptimized: true)
!420 = !{!421, !422, !423, !424, !426, !428, !430, !433, !435}
!421 = !DILocalVariable(name: "this", arg: 1, scope: !415, type: !283, flags: DIFlagArtificial | DIFlagObjectPointer)
!422 = !DILocalVariable(name: "targets", arg: 2, scope: !415, file: !1, line: 256, type: !418)
!423 = !DILocalVariable(name: "tCount", arg: 3, scope: !415, file: !1, line: 256, type: !65)
!424 = !DILocalVariable(name: "t", scope: !425, file: !1, line: 259, type: !418)
!425 = distinct !DILexicalBlock(scope: !415, file: !1, line: 259, column: 3)
!426 = !DILocalVariable(name: "c", scope: !427, file: !1, line: 265, type: !65)
!427 = distinct !DILexicalBlock(scope: !415, file: !1, line: 264, column: 13)
!428 = !DILocalVariable(name: "t", scope: !429, file: !1, line: 269, type: !418)
!429 = distinct !DILexicalBlock(scope: !427, file: !1, line: 269, column: 5)
!430 = !DILocalVariable(name: "origIndex", scope: !431, file: !1, line: 285, type: !65)
!431 = distinct !DILexicalBlock(scope: !432, file: !1, line: 269, column: 68)
!432 = distinct !DILexicalBlock(scope: !429, file: !1, line: 269, column: 5)
!433 = !DILocalVariable(name: "diff", scope: !434, file: !1, line: 299, type: !65)
!434 = distinct !DILexicalBlock(scope: !431, file: !1, line: 286, column: 10)
!435 = !DILocalVariable(name: "i", scope: !434, file: !1, line: 300, type: !18)
!436 = 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: !437)
!437 = !{!438, !440}
!438 = !DILocalVariable(name: "this", arg: 1, scope: !436, type: !439, flags: DIFlagArtificial | DIFlagObjectPointer)
!439 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS6String", size: 16, align: 16)
!440 = !DILocalVariable(name: "c", arg: 2, scope: !436, file: !23, line: 115, type: !16)
!441 = !{i32 2, !"Dwarf Version", i32 4}
!442 = !{i32 2, !"Debug Info Version", i32 3}
!443 = !{!"clang version 3.9.0 (https://github.com/avr-llvm/clang.git 82a9a3e4b5a70a76621c9a06926e68baae9765c9) (llvm/llvm.git cfc3f431c02364847df4c9b09b4cea54a0669e43)"}
!444 = !DIExpression()
!445 = !DILocation(line: 0, scope: !276)
!446 = !DILocation(line: 34, column: 18, scope: !276)
!447 = !DILocation(line: 34, column: 3, scope: !276)
!448 = !DILocation(line: 34, column: 16, scope: !276)
!449 = !{!450, !451, i64 8}
!450 = !{!"_ZTS6Stream", !451, i64 4, !451, i64 8}
!451 = !{!"long", !452, i64 0}
!452 = !{!"omnipotent char", !453, i64 0}
!453 = !{!"Simple C/C++ TBAA"}
!454 = !DILocation(line: 36, column: 9, scope: !455)
!455 = distinct !DILexicalBlock(scope: !276, file: !1, line: 35, column: 6)
!456 = !DILocation(line: 38, column: 37, scope: !457)
!457 = !DILexicalBlockFile(scope: !276, file: !1, discriminator: 1)
!458 = !DILocation(line: 35, column: 3, scope: !276)
!459 = !{!460, !460, i64 0}
!460 = !{!"vtable pointer", !453, i64 0}
!461 = !DILocation(line: 33, column: 7, scope: !276)
!462 = !DILocation(line: 37, column: 11, scope: !463)
!463 = distinct !DILexicalBlock(scope: !455, file: !1, line: 37, column: 9)
!464 = !DILocation(line: 37, column: 9, scope: !455)
!465 = !DILocation(line: 38, column: 11, scope: !457)
!466 = !DILocation(line: 38, column: 22, scope: !457)
!467 = !DILocation(line: 38, column: 20, scope: !457)
!468 = !{!450, !451, i64 4}
!469 = !DILocation(line: 38, column: 35, scope: !457)
!470 = !DILocation(line: 38, column: 3, scope: !457)
!471 = !DILocation(line: 40, column: 1, scope: !276)
!472 = !DILocation(line: 0, scope: !285)
!473 = !DILocation(line: 46, column: 18, scope: !285)
!474 = !DILocation(line: 46, column: 3, scope: !285)
!475 = !DILocation(line: 46, column: 16, scope: !285)
!476 = !DILocation(line: 48, column: 9, scope: !477)
!477 = distinct !DILexicalBlock(scope: !285, file: !1, line: 47, column: 6)
!478 = !DILocation(line: 50, column: 37, scope: !479)
!479 = !DILexicalBlockFile(scope: !285, file: !1, discriminator: 1)
!480 = !DILocation(line: 47, column: 3, scope: !285)
!481 = !DILocation(line: 45, column: 7, scope: !285)
!482 = !DILocation(line: 49, column: 11, scope: !483)
!483 = distinct !DILexicalBlock(scope: !477, file: !1, line: 49, column: 9)
!484 = !DILocation(line: 49, column: 9, scope: !477)
!485 = !DILocation(line: 50, column: 11, scope: !479)
!486 = !DILocation(line: 50, column: 22, scope: !479)
!487 = !DILocation(line: 50, column: 20, scope: !479)
!488 = !DILocation(line: 50, column: 35, scope: !479)
!489 = !DILocation(line: 50, column: 3, scope: !479)
!490 = !DILocation(line: 52, column: 1, scope: !285)
!491 = !DILocation(line: 0, scope: !290)
!492 = !DILocation(line: 56, column: 41, scope: !290)
!493 = !DIExpression(DW_OP_bit_piece, 0, 1)
!494 = !DILocation(line: 56, column: 57, scope: !290)
!495 = !DILocation(line: 60, column: 9, scope: !496)
!496 = distinct !DILexicalBlock(scope: !290, file: !1, line: 59, column: 13)
!497 = !DILocation(line: 58, column: 7, scope: !290)
!498 = !DILocation(line: 62, column: 11, scope: !499)
!499 = distinct !DILexicalBlock(scope: !496, file: !1, line: 62, column: 9)
!500 = !DILocation(line: 63, column: 11, scope: !499)
!501 = !DILocation(line: 62, column: 15, scope: !499)
!502 = !DILocation(line: 64, column: 19, scope: !499)
!503 = !DILocation(line: 65, column: 29, scope: !504)
!504 = !DILexicalBlockFile(scope: !499, file: !1, discriminator: 1)
!505 = !DILocation(line: 65, column: 24, scope: !499)
!506 = !DILocation(line: 80, column: 5, scope: !496)
!507 = !DILocation(line: 67, column: 5, scope: !496)
!508 = !DILocation(line: 70, column: 13, scope: !509)
!509 = distinct !DILexicalBlock(scope: !496, file: !1, line: 67, column: 24)
!510 = !DILocation(line: 82, column: 1, scope: !290)
!511 = !DILocation(line: 0, scope: !300)
!512 = !DILocation(line: 87, column: 39, scope: !300)
!513 = !DILocation(line: 89, column: 3, scope: !300)
!514 = !DILocation(line: 89, column: 12, scope: !300)
!515 = !DILocation(line: 90, column: 1, scope: !300)
!516 = !DILocation(line: 117, column: 17, scope: !341, inlinedAt: !517)
!517 = distinct !DILocation(line: 95, column: 10, scope: !518)
!518 = !DILexicalBlockFile(scope: !307, file: !1, discriminator: 1)
!519 = !DILocation(line: 0, scope: !307)
!520 = !DILocation(line: 93, column: 26, scope: !307)
!521 = !DILocation(line: 95, column: 28, scope: !307)
!522 = !DILocation(line: 0, scope: !330, inlinedAt: !517)
!523 = !DILocation(line: 114, column: 30, scope: !330, inlinedAt: !517)
!524 = !DILocation(line: 114, column: 45, scope: !330, inlinedAt: !517)
!525 = !DILocation(line: 114, column: 62, scope: !330, inlinedAt: !517)
!526 = !DILocation(line: 114, column: 81, scope: !330, inlinedAt: !517)
!527 = !DILocation(line: 117, column: 5, scope: !341, inlinedAt: !517)
!528 = !DILocation(line: 117, column: 25, scope: !341, inlinedAt: !517)
!529 = !{!530, !531, i64 0}
!530 = !{!"_ZTSN6Stream11MultiTargetE", !531, i64 0, !532, i64 2, !532, i64 4}
!531 = !{!"any pointer", !452, i64 0}
!532 = !{!"int", !452, i64 0}
!533 = !{!530, !532, i64 2}
!534 = !{!530, !532, i64 4}
!535 = !DILocation(line: 118, column: 22, scope: !341, inlinedAt: !517)
!536 = !DILocation(line: 118, column: 12, scope: !341, inlinedAt: !517)
!537 = !DILocation(line: 119, column: 3, scope: !342, inlinedAt: !517)
!538 = !DILocation(line: 118, column: 28, scope: !341, inlinedAt: !517)
!539 = !DILocation(line: 95, column: 3, scope: !307)
!540 = !DILocation(line: 0, scope: !330)
!541 = !DILocation(line: 114, column: 30, scope: !330)
!542 = !DILocation(line: 114, column: 45, scope: !330)
!543 = !DILocation(line: 114, column: 62, scope: !330)
!544 = !DILocation(line: 114, column: 81, scope: !330)
!545 = !DILocation(line: 116, column: 18, scope: !342)
!546 = !DILocation(line: 116, column: 7, scope: !330)
!547 = !DILocation(line: 117, column: 5, scope: !341)
!548 = !DILocation(line: 117, column: 17, scope: !341)
!549 = !DILocation(line: 117, column: 25, scope: !341)
!550 = !DILocation(line: 118, column: 22, scope: !341)
!551 = !DILocation(line: 118, column: 12, scope: !341)
!552 = !DILocation(line: 119, column: 3, scope: !342)
!553 = !DILocation(line: 120, column: 5, scope: !347)
!554 = !DILocation(line: 120, column: 17, scope: !347)
!555 = !DILocation(line: 120, column: 25, scope: !347)
!556 = !DILocation(line: 120, column: 49, scope: !347)
!557 = !DILocation(line: 121, column: 22, scope: !347)
!558 = !DILocation(line: 121, column: 12, scope: !347)
!559 = !DILocation(line: 122, column: 3, scope: !342)
!560 = !DILocation(line: 118, column: 28, scope: !341)
!561 = !DILocation(line: 123, column: 1, scope: !330)
!562 = !DILocation(line: 117, column: 17, scope: !341, inlinedAt: !563)
!563 = distinct !DILocation(line: 102, column: 10, scope: !314)
!564 = !DILocation(line: 0, scope: !314)
!565 = !DILocation(line: 100, column: 25, scope: !314)
!566 = !DILocation(line: 100, column: 40, scope: !314)
!567 = !DILocation(line: 0, scope: !330, inlinedAt: !563)
!568 = !DILocation(line: 114, column: 30, scope: !330, inlinedAt: !563)
!569 = !DILocation(line: 114, column: 45, scope: !330, inlinedAt: !563)
!570 = !DILocation(line: 114, column: 62, scope: !330, inlinedAt: !563)
!571 = !DILocation(line: 114, column: 81, scope: !330, inlinedAt: !563)
!572 = !DILocation(line: 117, column: 5, scope: !341, inlinedAt: !563)
!573 = !DILocation(line: 117, column: 25, scope: !341, inlinedAt: !563)
!574 = !DILocation(line: 118, column: 22, scope: !341, inlinedAt: !563)
!575 = !DILocation(line: 118, column: 12, scope: !341, inlinedAt: !563)
!576 = !DILocation(line: 119, column: 3, scope: !342, inlinedAt: !563)
!577 = !DILocation(line: 118, column: 28, scope: !341, inlinedAt: !563)
!578 = !DILocation(line: 102, column: 3, scope: !314)
!579 = !DILocation(line: 0, scope: !322)
!580 = !DILocation(line: 106, column: 31, scope: !322)
!581 = !DILocation(line: 106, column: 45, scope: !322)
!582 = !DILocation(line: 108, column: 28, scope: !322)
!583 = !DILocation(line: 108, column: 56, scope: !584)
!584 = !DILexicalBlockFile(scope: !322, file: !1, discriminator: 1)
!585 = !DILocation(line: 108, column: 10, scope: !586)
!586 = !DILexicalBlockFile(scope: !322, file: !1, discriminator: 2)
!587 = !DILocation(line: 108, column: 3, scope: !322)
!588 = !DILocation(line: 0, scope: !415)
!589 = !DILocation(line: 256, column: 52, scope: !415)
!590 = !DILocation(line: 256, column: 65, scope: !415)
!591 = !DILocation(line: 259, column: 28, scope: !425)
!592 = !DILocation(line: 259, column: 52, scope: !593)
!593 = !DILexicalBlockFile(scope: !594, file: !1, discriminator: 1)
!594 = distinct !DILexicalBlock(scope: !425, file: !1, line: 259, column: 3)
!595 = !DILocation(line: 259, column: 43, scope: !593)
!596 = !DILocation(line: 259, column: 3, scope: !593)
!597 = !DILocation(line: 265, column: 13, scope: !598)
!598 = !DILexicalBlockFile(scope: !427, file: !1, discriminator: 1)
!599 = !DILocation(line: 265, column: 9, scope: !427)
!600 = !DILocation(line: 266, column: 11, scope: !601)
!601 = distinct !DILexicalBlock(scope: !427, file: !1, line: 266, column: 9)
!602 = !DILocation(line: 266, column: 9, scope: !427)
!603 = !DILocation(line: 260, column: 12, scope: !604)
!604 = distinct !DILexicalBlock(scope: !605, file: !1, line: 260, column: 9)
!605 = distinct !DILexicalBlock(scope: !594, file: !1, line: 259, column: 66)
!606 = !DILocation(line: 260, column: 16, scope: !604)
!607 = !DILocation(line: 260, column: 9, scope: !605)
!608 = !DILocation(line: 259, column: 61, scope: !609)
!609 = !DILexicalBlockFile(scope: !594, file: !1, discriminator: 3)
!610 = !DILocation(line: 261, column: 16, scope: !604)
!611 = !DILocation(line: 269, column: 5, scope: !612)
!612 = !DILexicalBlockFile(scope: !432, file: !1, discriminator: 1)
!613 = !DILocation(line: 271, column: 26, scope: !614)
!614 = distinct !DILexicalBlock(scope: !431, file: !1, line: 271, column: 11)
!615 = !DILocation(line: 271, column: 19, scope: !614)
!616 = !DILocation(line: 271, column: 16, scope: !614)
!617 = !{!452, !452, i64 0}
!618 = !DILocation(line: 271, column: 13, scope: !614)
!619 = !DILocation(line: 271, column: 11, scope: !431)
!620 = !DILocation(line: 272, column: 13, scope: !621)
!621 = distinct !DILexicalBlock(scope: !622, file: !1, line: 272, column: 13)
!622 = distinct !DILexicalBlock(scope: !614, file: !1, line: 271, column: 34)
!623 = !DILocation(line: 272, column: 30, scope: !621)
!624 = !DILocation(line: 272, column: 24, scope: !621)
!625 = !DILocation(line: 272, column: 13, scope: !622)
!626 = !DILocation(line: 282, column: 20, scope: !627)
!627 = distinct !DILexicalBlock(scope: !431, file: !1, line: 282, column: 11)
!628 = !DILocation(line: 282, column: 11, scope: !431)
!629 = !DILocation(line: 287, column: 9, scope: !434)
!630 = !DILocation(line: 308, column: 21, scope: !631)
!631 = distinct !DILexicalBlock(scope: !434, file: !1, line: 308, column: 13)
!632 = !DILocation(line: 289, column: 18, scope: !633)
!633 = distinct !DILexicalBlock(scope: !434, file: !1, line: 289, column: 13)
!634 = !DILocation(line: 289, column: 15, scope: !633)
!635 = !DILocation(line: 289, column: 13, scope: !434)
!636 = !DILocation(line: 293, column: 22, scope: !637)
!637 = distinct !DILexicalBlock(scope: !434, file: !1, line: 293, column: 13)
!638 = !DILocation(line: 293, column: 13, scope: !434)
!639 = !DILocation(line: 294, column: 19, scope: !640)
!640 = distinct !DILexicalBlock(scope: !637, file: !1, line: 293, column: 28)
!641 = !DILocation(line: 295, column: 11, scope: !640)
!642 = !DILocation(line: 299, column: 30, scope: !434)
!643 = !DILocation(line: 299, column: 13, scope: !434)
!644 = !DILocation(line: 300, column: 16, scope: !434)
!645 = !DILocation(line: 301, column: 9, scope: !646)
!646 = !DILexicalBlockFile(scope: !647, file: !1, discriminator: 1)
!647 = distinct !DILexicalBlock(scope: !648, file: !1, line: 301, column: 9)
!648 = distinct !DILexicalBlock(scope: !434, file: !1, line: 301, column: 9)
!649 = !DILocation(line: 302, column: 15, scope: !650)
!650 = distinct !DILexicalBlock(scope: !651, file: !1, line: 302, column: 15)
!651 = distinct !DILexicalBlock(scope: !647, file: !1, line: 301, column: 40)
!652 = !DILocation(line: 302, column: 37, scope: !650)
!653 = !DILocation(line: 302, column: 28, scope: !650)
!654 = !DILocation(line: 302, column: 25, scope: !650)
!655 = !DILocation(line: 302, column: 15, scope: !651)
!656 = !DILocation(line: 301, column: 35, scope: !657)
!657 = !DILexicalBlockFile(scope: !647, file: !1, discriminator: 2)
!658 = !DILocation(line: 301, column: 23, scope: !646)
!659 = !DILocation(line: 308, column: 15, scope: !631)
!660 = !DILocation(line: 308, column: 13, scope: !434)
!661 = !DILocation(line: 309, column: 19, scope: !662)
!662 = distinct !DILexicalBlock(scope: !631, file: !1, line: 308, column: 28)
!663 = !DILocation(line: 314, column: 16, scope: !664)
!664 = !DILexicalBlockFile(scope: !431, file: !1, discriminator: 3)
!665 = !DILocation(line: 314, column: 7, scope: !664)
!666 = !DILocation(line: 269, column: 63, scope: !667)
!667 = !DILexicalBlockFile(scope: !432, file: !1, discriminator: 3)
!668 = !DILocation(line: 269, column: 30, scope: !429)
!669 = !DILocation(line: 269, column: 45, scope: !612)
!670 = !DILocation(line: 273, column: 20, scope: !621)
!671 = !DILocation(line: 319, column: 1, scope: !415)
!672 = !DILocation(line: 0, scope: !351)
!673 = !DILocation(line: 130, column: 37, scope: !351)
!674 = !DILocation(line: 130, column: 53, scope: !351)
!675 = !DILocation(line: 132, column: 8, scope: !351)
!676 = !DILocation(line: 133, column: 8, scope: !351)
!677 = !DILocation(line: 136, column: 7, scope: !351)
!678 = !DILocation(line: 134, column: 7, scope: !351)
!679 = !DILocation(line: 138, column: 8, scope: !680)
!680 = distinct !DILexicalBlock(scope: !351, file: !1, line: 138, column: 6)
!681 = !DILocation(line: 138, column: 6, scope: !351)
!682 = !DILocation(line: 142, column: 13, scope: !683)
!683 = distinct !DILexicalBlock(scope: !684, file: !1, line: 142, column: 8)
!684 = distinct !DILexicalBlock(scope: !351, file: !1, line: 141, column: 5)
!685 = !DILocation(line: 148, column: 5, scope: !684)
!686 = !DILocation(line: 142, column: 10, scope: !683)
!687 = !DILocation(line: 142, column: 8, scope: !684)
!688 = !DILocation(line: 144, column: 15, scope: !689)
!689 = distinct !DILexicalBlock(scope: !683, file: !1, line: 144, column: 13)
!690 = !DILocation(line: 144, column: 13, scope: !683)
!691 = !DILocation(line: 146, column: 22, scope: !692)
!692 = distinct !DILexicalBlock(scope: !689, file: !1, line: 146, column: 13)
!693 = !DILocation(line: 147, column: 21, scope: !692)
!694 = !DILocation(line: 147, column: 28, scope: !692)
!695 = !DILocation(line: 147, column: 26, scope: !692)
!696 = !DILocation(line: 147, column: 30, scope: !692)
!697 = !DILocation(line: 147, column: 7, scope: !692)
!698 = !DILocation(line: 149, column: 9, scope: !684)
!699 = !DILocation(line: 151, column: 20, scope: !351)
!700 = !DILocation(line: 151, column: 38, scope: !701)
!701 = !DILexicalBlockFile(scope: !351, file: !1, discriminator: 2)
!702 = !DILocation(line: 153, column: 6, scope: !703)
!703 = distinct !DILexicalBlock(scope: !351, file: !1, line: 153, column: 6)
!704 = !DILocation(line: 154, column: 13, scope: !703)
!705 = !DILocation(line: 153, column: 6, scope: !351)
!706 = !DILocation(line: 155, column: 3, scope: !351)
!707 = !DILocation(line: 156, column: 1, scope: !351)
!708 = !DILocation(line: 0, scope: !362)
!709 = !DILocation(line: 159, column: 40, scope: !362)
!710 = !DILocation(line: 159, column: 56, scope: !362)
!711 = !DILocation(line: 161, column: 8, scope: !362)
!712 = !DILocation(line: 162, column: 8, scope: !362)
!713 = !DILocation(line: 163, column: 8, scope: !362)
!714 = !DILocation(line: 165, column: 9, scope: !362)
!715 = !DILocation(line: 167, column: 7, scope: !362)
!716 = !DILocation(line: 164, column: 7, scope: !362)
!717 = !DILocation(line: 169, column: 8, scope: !718)
!718 = distinct !DILexicalBlock(scope: !362, file: !1, line: 169, column: 6)
!719 = !DILocation(line: 169, column: 6, scope: !362)
!720 = !DILocation(line: 173, column: 13, scope: !721)
!721 = distinct !DILexicalBlock(scope: !722, file: !1, line: 173, column: 8)
!722 = distinct !DILexicalBlock(scope: !362, file: !1, line: 172, column: 5)
!723 = !DILocation(line: 184, column: 5, scope: !722)
!724 = !DILocation(line: 173, column: 10, scope: !721)
!725 = !DILocation(line: 173, column: 8, scope: !722)
!726 = !DILocation(line: 175, column: 13, scope: !721)
!727 = !DILocation(line: 178, column: 7, scope: !728)
!728 = distinct !DILexicalBlock(scope: !729, file: !1, line: 177, column: 14)
!729 = distinct !DILexicalBlock(scope: !721, file: !1, line: 175, column: 13)
!730 = !DILocation(line: 179, column: 22, scope: !731)
!731 = distinct !DILexicalBlock(scope: !728, file: !1, line: 179, column: 13)
!732 = !DILocation(line: 180, column: 21, scope: !733)
!733 = distinct !DILexicalBlock(scope: !731, file: !1, line: 179, column: 36)
!734 = !DILocation(line: 180, column: 28, scope: !733)
!735 = !DILocation(line: 180, column: 26, scope: !733)
!736 = !DILocation(line: 180, column: 30, scope: !733)
!737 = !DILocation(line: 181, column: 10, scope: !738)
!738 = distinct !DILexicalBlock(scope: !733, file: !1, line: 181, column: 10)
!739 = !DILocation(line: 182, column: 19, scope: !738)
!740 = !DILocation(line: 181, column: 10, scope: !733)
!741 = !DILocation(line: 185, column: 9, scope: !722)
!742 = !DILocation(line: 187, column: 20, scope: !362)
!743 = !DILocation(line: 187, column: 40, scope: !744)
!744 = !DILexicalBlockFile(scope: !362, file: !1, discriminator: 2)
!745 = !DILocation(line: 187, column: 51, scope: !746)
!746 = !DILexicalBlockFile(scope: !362, file: !1, discriminator: 3)
!747 = !DILocation(line: 187, column: 47, scope: !744)
!748 = !DILocation(line: 187, column: 68, scope: !749)
!749 = !DILexicalBlockFile(scope: !362, file: !1, discriminator: 4)
!750 = !DILocation(line: 189, column: 6, scope: !751)
!751 = distinct !DILexicalBlock(scope: !362, file: !1, line: 189, column: 6)
!752 = !DILocation(line: 190, column: 13, scope: !751)
!753 = !DILocation(line: 189, column: 6, scope: !362)
!754 = !DILocation(line: 192, column: 12, scope: !755)
!755 = distinct !DILexicalBlock(scope: !362, file: !1, line: 191, column: 6)
!756 = !DILocation(line: 192, column: 18, scope: !755)
!757 = !DILocation(line: 191, column: 6, scope: !362)
!758 = !DILocation(line: 195, column: 1, scope: !362)
!759 = !DILocation(line: 0, scope: !375)
!760 = !DILocation(line: 202, column: 32, scope: !375)
!761 = !DILocation(line: 202, column: 47, scope: !375)
!762 = !DILocation(line: 204, column: 10, scope: !375)
!763 = !DILocation(line: 205, column: 16, scope: !764)
!764 = !DILexicalBlockFile(scope: !375, file: !1, discriminator: 1)
!765 = !DILocation(line: 205, column: 3, scope: !764)
!766 = !DILocation(line: 206, column: 13, scope: !767)
!767 = !DILexicalBlockFile(scope: !385, file: !1, discriminator: 1)
!768 = !DILocation(line: 206, column: 9, scope: !385)
!769 = !DILocation(line: 207, column: 11, scope: !770)
!770 = distinct !DILexicalBlock(scope: !385, file: !1, line: 207, column: 9)
!771 = !DILocation(line: 207, column: 9, scope: !385)
!772 = !DILocation(line: 208, column: 23, scope: !385)
!773 = !DILocation(line: 208, column: 12, scope: !385)
!774 = !DILocation(line: 208, column: 15, scope: !385)
!775 = !DILocation(line: 209, column: 10, scope: !385)
!776 = !DILocation(line: 211, column: 3, scope: !375)
!777 = !DILocation(line: 0, scope: !386)
!778 = !DILocation(line: 219, column: 36, scope: !386)
!779 = !DILocation(line: 219, column: 54, scope: !386)
!780 = !DILocation(line: 219, column: 69, scope: !386)
!781 = !DILocation(line: 221, column: 7, scope: !386)
!782 = !DILocation(line: 225, column: 23, scope: !783)
!783 = !DILexicalBlockFile(scope: !784, file: !1, discriminator: 1)
!784 = distinct !DILexicalBlock(scope: !397, file: !1, line: 225, column: 9)
!785 = !DILocation(line: 223, column: 3, scope: !786)
!786 = !DILexicalBlockFile(scope: !386, file: !1, discriminator: 1)
!787 = !DILocation(line: 224, column: 13, scope: !788)
!788 = !DILexicalBlockFile(scope: !397, file: !1, discriminator: 1)
!789 = !DILocation(line: 224, column: 9, scope: !397)
!790 = !DILocation(line: 225, column: 11, scope: !784)
!791 = !DILocation(line: 225, column: 20, scope: !783)
!792 = !DILocation(line: 225, column: 15, scope: !784)
!793 = !DILocation(line: 226, column: 23, scope: !397)
!794 = !DILocation(line: 226, column: 12, scope: !397)
!795 = !DILocation(line: 226, column: 15, scope: !397)
!796 = !DILocation(line: 227, column: 10, scope: !397)
!797 = !DILocation(line: 222, column: 10, scope: !386)
!798 = !DILocation(line: 223, column: 16, scope: !786)
!799 = !DILocation(line: 230, column: 1, scope: !786)
!800 = !DILocation(line: 0, scope: !398)
!801 = !DIExpression(DW_OP_deref)
!802 = !DILocation(line: 234, column: 10, scope: !398)
!803 = !DILocation(line: 235, column: 11, scope: !804)
!804 = !DILexicalBlockFile(scope: !398, file: !1, discriminator: 1)
!805 = !DILocation(line: 235, column: 7, scope: !398)
!806 = !DILocation(line: 236, column: 12, scope: !804)
!807 = !DILocation(line: 236, column: 3, scope: !804)
!808 = !DILocation(line: 0, scope: !436, inlinedAt: !809)
!809 = distinct !DILocation(line: 238, column: 9, scope: !810)
!810 = distinct !DILexicalBlock(scope: !398, file: !1, line: 237, column: 3)
!811 = !DILocation(line: 115, column: 29, scope: !436, inlinedAt: !809)
!812 = !DILocation(line: 115, column: 35, scope: !436, inlinedAt: !809)
!813 = !DILocation(line: 239, column: 9, scope: !810)
!814 = !DILocation(line: 242, column: 1, scope: !815)
!815 = !DILexicalBlockFile(scope: !398, file: !1, discriminator: 2)
!816 = !DILocation(line: 0, scope: !406)
!817 = !DILocation(line: 244, column: 37, scope: !406)
!818 = !DILocation(line: 246, column: 10, scope: !406)
!819 = !DILocation(line: 247, column: 11, scope: !820)
!820 = !DILexicalBlockFile(scope: !406, file: !1, discriminator: 1)
!821 = !DILocation(line: 247, column: 7, scope: !406)
!822 = !DILocation(line: 248, column: 12, scope: !820)
!823 = !DILocation(line: 248, column: 25, scope: !824)
!824 = !DILexicalBlockFile(scope: !406, file: !1, discriminator: 2)
!825 = !DILocation(line: 248, column: 22, scope: !824)
!826 = !DILocation(line: 248, column: 17, scope: !820)
!827 = !DILocation(line: 0, scope: !436, inlinedAt: !828)
!828 = distinct !DILocation(line: 250, column: 9, scope: !829)
!829 = distinct !DILexicalBlock(scope: !406, file: !1, line: 249, column: 3)
!830 = !DILocation(line: 115, column: 29, scope: !436, inlinedAt: !828)
!831 = !DILocation(line: 115, column: 35, scope: !436, inlinedAt: !828)
!832 = !DILocation(line: 251, column: 9, scope: !829)
!833 = !DILocation(line: 254, column: 1, scope: !824)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment