From be60185d43f74a02965ccb4c6917f40948da835a Mon Sep 17 00:00:00 2001 From: Yun Meng Date: Tue, 25 Jun 2024 21:07:47 +0800 Subject: [PATCH] backend: support multiharp --- etabackend/cpp/PARSE_TimeTagFileHeader.cpp | 49 +- etabackend/cpp/PARSE_TimeTags.cpp | 156 +- etabackend/ll/nt/INFRA_vchn.ll | 16 +- etabackend/ll/nt/PARSE_TimeTagFileHeader.ll | 1799 ++++++++++--------- etabackend/ll/nt/PARSE_TimeTags.ll | 30 +- 5 files changed, 1066 insertions(+), 984 deletions(-) diff --git a/etabackend/cpp/PARSE_TimeTagFileHeader.cpp b/etabackend/cpp/PARSE_TimeTagFileHeader.cpp index 512e69c..b7b4ec3 100644 --- a/etabackend/cpp/PARSE_TimeTagFileHeader.cpp +++ b/etabackend/cpp/PARSE_TimeTagFileHeader.cpp @@ -52,6 +52,9 @@ long long order_gurantee3 = 0; #define rtTimeHarp260NT2 0x00010205 // (SubID = $00 ,RecFmt: $01) (V2), T-Mode: $02 (T2), HW: $05 (TimeHarp260N) #define rtTimeHarp260PT3 0x00010306 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T3), HW: $06 (TimeHarp260P) #define rtTimeHarp260PT2 0x00010206 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T2), HW: $06 (TimeHarp260P) +#define rtGenericT3 0x00010307 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T3), HW: $07 (MultiHarp, PicoHarp330) +#define rtGenericT2 0x00010207 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T2), HW: $07 (MultiHarp, PicoHarp330) + #define FORMAT_PQ 0 #define FORMAT_SI_16bytes 1 #define FORMAT_QT_COMPRESSED 2 @@ -63,14 +66,14 @@ long long order_gurantee3 = 0; typedef struct { // CLIP info - long long fseekpoint; //0 - long long headeroffset; //1 - - long long TTRes_pspr; //2 - long long DTRes_pspr; //3 - long long SYNCRate_pspr; //4 - long long BytesofRecords; //5 - long long RecordType; //6 + long long fseekpoint; // 0 + long long headeroffset; // 1 + + long long TTRes_pspr; // 2 + long long DTRes_pspr; // 3 + long long SYNCRate_pspr; // 4 + long long BytesofRecords; // 5 + long long RecordType; // 6 } header_info; size_t MKS_inline bread(header_info *PARSER, void *buffer, size_t size, size_t count, char *stream) @@ -80,7 +83,7 @@ size_t MKS_inline bread(header_info *PARSER, void *buffer, size_t size, size_t c return size * count; } -//#pragma pack(8) //structure alignment to 8 byte boundaries +// #pragma pack(8) //structure alignment to 8 byte boundaries time_t TDateTime_TimeT(double Convertee) { @@ -172,8 +175,8 @@ int MKS_inline PicoQuant_header_parser(header_info *PARSER, char *fpin) case tyInt8: PINFO("%lld", TagHead.TagValue); // get some Values we need to analyse records - //if (strcmp(TagHead.Ident, TTTRTagNumRecords) == 0) // Number of records - //NumRecords = TagHead.TagValue; + // if (strcmp(TagHead.Ident, TTTRTagNumRecords) == 0) // Number of records + // NumRecords = TagHead.TagValue; if (strcmp(TagHead.Ident, TTTRTagTTTRRecType) == 0) // TTTR PARSER->RecordType PARSER->RecordType = TagHead.TagValue; break; @@ -204,7 +207,7 @@ int MKS_inline PicoQuant_header_parser(header_info *PARSER, char *fpin) PINFO("", TagHead.TagValue / sizeof(double)); // only seek the Data, if one needs the data, it can be loaded here PARSER->headeroffset = (long)TagHead.TagValue; - //fseek(fpin, (long)TagHead.TagValue, SEEK_CUR); + // fseek(fpin, (long)TagHead.TagValue, SEEK_CUR); break; case tyTDateTime: time_t CreateTime; @@ -239,7 +242,7 @@ int MKS_inline PicoQuant_header_parser(header_info *PARSER, char *fpin) PINFO("", TagHead.TagValue); // only seek the Data, if one needs the data, it can be loaded here PARSER->headeroffset = (long)TagHead.TagValue; - //fseek(fpin, (long)TagHead.TagValue, SEEK_CUR); + // fseek(fpin, (long)TagHead.TagValue, SEEK_CUR); break; default: PINFO("Illegal Type identifier found! Broken file?"); @@ -293,6 +296,14 @@ int MKS_inline PicoQuant_header_parser(header_info *PARSER, char *fpin) PINFO("TimeHarp260P T3 data\n"); IsT2 = false; break; + case rtGenericT2: // Yun added + PINFO("MultiHarp T2 data\n"); + IsT2 = true; + break; + case rtGenericT3: + PINFO("MultiHarp T3 data\n"); + IsT2 = false; + break; default: PINFO("Unknown time-tag record type: 0x%X\n 0x%X\n ", PARSER->RecordType); goto close; @@ -374,13 +385,13 @@ int MKS_inline FORMAT_QT_COMPRESSED_header_parser(header_info *PARSER, char *fpi PARSER->BytesofRecords = 5; PINFO("PARSER->RecordType: FORMAT_QT_COMPRESSED "); - //set resolutions + // set resolutions PARSER->TTRes_pspr = 1; PARSER->DTRes_pspr = 1; PARSER->SYNCRate_pspr = 0; // find size - //PARSER->headeroffset = ftell(fpin); + // PARSER->headeroffset = ftell(fpin); return 0; } @@ -416,7 +427,7 @@ int MKS_inline FORMAT_ET_A033_header_parser(header_info *PARSER) extern "C" int MKS_inline PARSE_TimeTagFileHeader(header_info *PARSER, char *fpin) { int ret = -1; - PARSER->headeroffset = 0; //seek to head + PARSER->headeroffset = 0; // seek to head char Magic[8]; if (bread(PARSER, &Magic, 1, sizeof(Magic), fpin) != sizeof(Magic)) @@ -424,10 +435,10 @@ extern "C" int MKS_inline PARSE_TimeTagFileHeader(header_info *PARSER, char *fpi PERROR("Failed to read header, aborted."); return -2; } - //automatically find headers + // automatically find headers if (PARSER->RecordType == -1) { - //auto determine record type using magic + // auto determine record type using magic if (strncmp(Magic, "PQTTTR", 6) == 0) PARSER->RecordType = FORMAT_PQ; if (strncmp(Magic, "\x87\xB3\x91\xFA", 4) == 0) @@ -464,4 +475,4 @@ extern "C" int MKS_inline PARSE_TimeTagFileHeader(header_info *PARSER, char *fpi } PARSER->fseekpoint = PARSER->headeroffset; return ret; -} +} \ No newline at end of file diff --git a/etabackend/cpp/PARSE_TimeTags.cpp b/etabackend/cpp/PARSE_TimeTags.cpp index c58b4c4..528bad7 100644 --- a/etabackend/cpp/PARSE_TimeTags.cpp +++ b/etabackend/cpp/PARSE_TimeTags.cpp @@ -84,24 +84,24 @@ extern "C" typedef struct { // CLIP info - long long fseekpoint; //0 - long long headeroffset; //1 - - long long TTRes_pspr; //2 - long long DTRes_pspr; //3 - long long SYNCRate_pspr; //4 - long long BytesofRecords; //5 - long long RecordType; //6 - - long long GlobalTimeShift; //7 - long long CHANNEL_OFFSET; //8 - long long MARKER_OFFSET; //9 - //UniBuf info - long long batch_actualread_length; //10 buffer length - long long next_RecID_in_batch; //11 reader head - long long overflowcorrection; //12 - long long buffer_status; //13 unused - char *buffer = 0; //14 + long long fseekpoint; // 0 + long long headeroffset; // 1 + + long long TTRes_pspr; // 2 + long long DTRes_pspr; // 3 + long long SYNCRate_pspr; // 4 + long long BytesofRecords; // 5 + long long RecordType; // 6 + + long long GlobalTimeShift; // 7 + long long CHANNEL_OFFSET; // 8 + long long MARKER_OFFSET; // 9 + // UniBuf info + long long batch_actualread_length; // 10 buffer length + long long next_RecID_in_batch; // 11 reader head + long long overflowcorrection; // 12 + long long buffer_status; // 13 unused + char *buffer = 0; // 14 } ttf_reader; @@ -117,6 +117,8 @@ extern "C" #define rtTimeHarp260NT2 0x00010205 // (SubID = $00 ,RecFmt: $01) (V2), T-Mode: $02 (T2), HW: $05 (TimeHarp260N) #define rtTimeHarp260PT3 0x00010306 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T3), HW: $06 (TimeHarp260P) #define rtTimeHarp260PT2 0x00010206 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T2), HW: $06 (TimeHarp260P) +#define rtGenericT3 0x00010307 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T3), HW: $07 (MultiHarp, PicoHarp330) +#define rtGenericT2 0x00010207 // (SubID = $00 ,RecFmt: $01) (V1), T-Mode: $02 (T2), HW: $07 (MultiHarp, PicoHarp330) #define FORMAT_SI_16bytes 1 #define FORMAT_QT_COMPRESSED 2 @@ -125,18 +127,18 @@ extern "C" #define FORMAT_BH_spc_4bytes 5 #define FORMAT_ET_A033 6 -//Got GotRelativeSignal -// DTimeTag: Arrival time of Photon after last Sync event (T3 only) -// DTimeTag * DTRes_pspr = Real time arrival of Photon after last Sync event -// virtual_channel: virtual_channel the Photon arrived (0 = Sync channel for T2 measurements) -#define GotRelativeSignal(SYNC_counts, Channel, DTimeTag) \ - { \ - oAbsTime_ps = (SYNC_counts)*READER->SYNCRate_pspr + (DTimeTag)*READER->DTRes_pspr; \ - oChannel = (Channel); \ +// Got GotRelativeSignal +// DTimeTag: Arrival time of Photon after last Sync event (T3 only) +// DTimeTag * DTRes_pspr = Real time arrival of Photon after last Sync event +// virtual_channel: virtual_channel the Photon arrived (0 = Sync channel for T2 measurements) +#define GotRelativeSignal(SYNC_counts, Channel, DTimeTag) \ + { \ + oAbsTime_ps = (SYNC_counts) * READER->SYNCRate_pspr + (DTimeTag) * READER->DTRes_pspr; \ + oChannel = (Channel); \ } -//GotAbsoluteSignal -// TimeTag: Raw TimeTag from Record * TTRes_pspr = Real Time arrival of Photon +// GotAbsoluteSignal +// TimeTag: Raw TimeTag from Record * TTRes_pspr = Real Time arrival of Photon #define GotAbsoluteSignal(TimeTag, Channel) \ { \ oAbsTime_ps = TimeTag * READER->TTRes_pspr; \ @@ -160,29 +162,29 @@ extern "C" } Record; unsigned int markers; Record.allbits = TTTRRecord; - if (Record.bits.channel == 0xF) //this means we have a special record + if (Record.bits.channel == 0xF) // this means we have a special record { - //in a special record the lower 4 bits of time are marker bits + // in a special record the lower 4 bits of time are marker bits markers = Record.bits.time & 0xF; - if (markers == 0) //this means we have an overflow record + if (markers == 0) // this means we have an overflow record { oflcorrection += T2WRAPAROUND; // unwrap the time tag overflow - //GotOverflow( 1); + // GotOverflow( 1); } - else //a marker + else // a marker { - //Strictly, in case of a marker, the lower 4 bits of time are invalid - //because they carry the marker bits. So one could zero them out. - //However, the marker resolution is only a few tens of nanoseconds anyway, - //so we can just ignore the few picoseconds of error. + // Strictly, in case of a marker, the lower 4 bits of time are invalid + // because they carry the marker bits. So one could zero them out. + // However, the marker resolution is only a few tens of nanoseconds anyway, + // so we can just ignore the few picoseconds of error. truetime = oflcorrection + Record.bits.time; GotAbsoluteSignal(truetime, READER->MARKER_OFFSET + MarkerSHC_to_CHN(markers)); - //GotMarker( truetime, markers); + // GotMarker( truetime, markers); } } else { - if ((int)Record.bits.channel > 4) //Should not occur + if ((int)Record.bits.channel > 4) // Should not occur { PFATAL(" Illegal Chan: %1u\n", Record.bits.channel); } @@ -215,44 +217,44 @@ extern "C" if (T2Rec.bits.special == 1) { - if (T2Rec.bits.channel == 0x3F) //an overflow record + if (T2Rec.bits.channel == 0x3F) // an overflow record { if (HHVersion == 1) { oflcorrection += (uint64_t)T2WRAPAROUND_V1; - //GotOverflow( 1); + // GotOverflow( 1); } else { - //number of overflows is stored in timetag - if (T2Rec.bits.timetag == 0) //if it is zero it is an old style single overflow + // number of overflows is stored in timetag + if (T2Rec.bits.timetag == 0) // if it is zero it is an old style single overflow { - //GotOverflow( 1); - oflcorrection += (uint64_t)T2WRAPAROUND_V2; //should never happen with new Firmware! + // GotOverflow( 1); + oflcorrection += (uint64_t)T2WRAPAROUND_V2; // should never happen with new Firmware! } else { oflcorrection += (uint64_t)T2WRAPAROUND_V2 * T2Rec.bits.timetag; - //GotOverflow( T2Rec.bits.timetag); + // GotOverflow( T2Rec.bits.timetag); } } } - if ((T2Rec.bits.channel >= 1) && (T2Rec.bits.channel <= 15)) //markers + if ((T2Rec.bits.channel >= 1) && (T2Rec.bits.channel <= 15)) // markers { truetime = oflcorrection + T2Rec.bits.timetag; - //Note that actual marker tagging accuracy is only some ns. + // Note that actual marker tagging accuracy is only some ns. GotAbsoluteSignal(truetime, READER->MARKER_OFFSET + MarkerSHC_to_CHN(T2Rec.bits.channel)) - //GotMarker(truetime, T2Rec.bits.channel); + // GotMarker(truetime, T2Rec.bits.channel); } - if (T2Rec.bits.channel == 0) //sync + if (T2Rec.bits.channel == 0) // sync { truetime = oflcorrection + T2Rec.bits.timetag; GotAbsoluteSignal(truetime, READER->CHANNEL_OFFSET + 0); } } - else //regular input channel + else // regular input channel { truetime = oflcorrection + T2Rec.bits.timetag; @@ -283,25 +285,25 @@ extern "C" } Record; Record.allbits = TTTRRecord; - if (Record.bits.channel == 0xF) //this means we have a special record + if (Record.bits.channel == 0xF) // this means we have a special record { - if (Record.special.markers == 0) //not a marker means overflow + if (Record.special.markers == 0) // not a marker means overflow { - //GotOverflow(1); + // GotOverflow(1); oflcorrection += T3WRAPAROUND; // unwrap the time tag overflow } else { truensync = oflcorrection + Record.bits.numsync; - //GotMarker( truensync, Record.special.markers); + // GotMarker( truensync, Record.special.markers); GotRelativeSignal(truensync, READER->MARKER_OFFSET + MarkerSHC_to_CHN(Record.special.markers), 0); } } else { if ( - (Record.bits.channel == 0) //Should never occur in T3 Mode - || (Record.bits.channel > 4) //Should not occur with current routers + (Record.bits.channel == 0) // Should never occur in T3 Mode + || (Record.bits.channel > 4) // Should not occur with current routers ) { PFATAL("\nIllegal virtual_channel: %1u", Record.bits.channel); @@ -330,52 +332,52 @@ extern "C" T3Rec.allbits = TTTRRecord; if (T3Rec.bits.special == 1) { - if (T3Rec.bits.channel == 0x3F) //overflow + if (T3Rec.bits.channel == 0x3F) // overflow { - //number of overflows is stored in nsync - if ((T3Rec.bits.nsync == 0) || (HHVersion == 1)) //if it is zero or old version it is an old style single overflow + // number of overflows is stored in nsync + if ((T3Rec.bits.nsync == 0) || (HHVersion == 1)) // if it is zero or old version it is an old style single overflow { oflcorrection += (uint64_t)T3WRAPAROUND; - //GotOverflow(1); - //should never happen with new Firmware! + // GotOverflow(1); + // should never happen with new Firmware! } else { oflcorrection += (uint64_t)T3WRAPAROUND * T3Rec.bits.nsync; - //GotOverflow( T3Rec.bits.nsync); + // GotOverflow( T3Rec.bits.nsync); } } - if ((T3Rec.bits.channel >= 1) && (T3Rec.bits.channel <= 15)) //markers + if ((T3Rec.bits.channel >= 1) && (T3Rec.bits.channel <= 15)) // markers { - //the time unit depends on sync period which can be obtained from the file header + // the time unit depends on sync period which can be obtained from the file header GotRelativeSignal(oflcorrection + T3Rec.bits.nsync, READER->MARKER_OFFSET + MarkerSHC_to_CHN(T3Rec.bits.channel), 0); - //GotMarker(truensync, T3Rec.bits.channel); + // GotMarker(truensync, T3Rec.bits.channel); } } - else //regular input channel + else // regular input channel { - //the nsync time unit depends on sync period which can be obtained from the file header - //the dtime unit depends on the resolution and can also be obtained from the file header + // the nsync time unit depends on sync period which can be obtained from the file header + // the dtime unit depends on the resolution and can also be obtained from the file header GotRelativeSignal(oflcorrection + T3Rec.bits.nsync, READER->CHANNEL_OFFSET + T3Rec.bits.channel, T3Rec.bits.dtime); } } ///////////////////////////////////////////////////////////////////////////////// - //external + // external ///////////////////////////////////////////////////////////////////////////////// long long MKS_inline FileReader_pop_event(ttf_reader *READER_list, unsigned char RFILEid, unsigned char *out_Channel) { auto READER = &(READER_list[RFILEid]); - //PINFO("overflowcorrection %lld \n ", READER->overflowcorrection) + // PINFO("overflowcorrection %lld \n ", READER->overflowcorrection) while (true) { long long AbsTime_ps = INT64_MAX; unsigned char Channel = 255; - //boundry check + // boundry check const auto next_relpos = READER->next_RecID_in_batch * READER->BytesofRecords; const auto next_abspos = READER->fseekpoint + next_relpos; const auto batch_end_abspos = READER->fseekpoint + READER->batch_actualread_length; @@ -386,12 +388,12 @@ extern "C" break; } - //parse binary + // parse binary const auto TTTRRecord = ((unsigned int *)READER->buffer)[READER->next_RecID_in_batch]; switch (READER->RecordType) { - //picoharp_parsers + // picoharp_parsers case rtPicoHarpT2: ProcessPHT2(READER, TTTRRecord, AbsTime_ps, Channel, READER->overflowcorrection); break; @@ -407,12 +409,14 @@ extern "C" case rtHydraHarp2T2: case rtTimeHarp260NT2: case rtTimeHarp260PT2: + case rtGenericT2: ProcessHHT2(READER, TTTRRecord, 2, AbsTime_ps, Channel, READER->overflowcorrection); break; case rtHydraHarp2T3: case rtTimeHarp260NT3: case rtTimeHarp260PT3: + case rtGenericT3: ProcessHHT3(READER, TTTRRecord, 2, AbsTime_ps, Channel, READER->overflowcorrection); break; @@ -536,7 +540,7 @@ extern "C" } READER->next_RecID_in_batch++; - //overflow, try again next time + // overflow, try again next time if (AbsTime_ps == INT64_MAX) { continue; @@ -566,4 +570,4 @@ extern "C" PINFO("RecordType %lld", READER->RecordType);*/ return 0; } -} +} \ No newline at end of file diff --git a/etabackend/ll/nt/INFRA_vchn.ll b/etabackend/ll/nt/INFRA_vchn.ll index 84061a9..a6ee460 100644 --- a/etabackend/ll/nt/INFRA_vchn.ll +++ b/etabackend/ll/nt/INFRA_vchn.ll @@ -1,7 +1,7 @@ ; ModuleID = 'INFRA_vchn.cpp' source_filename = "INFRA_vchn.cpp" target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-pc-windows-msvc19.26.28806" +target triple = "x86_64-pc-windows-msvc19.29.30148" %struct.circular_buf_t = type { i64*, i64, i64, i64 } %struct.VCHN_t = type { i64*, i8*, i8*, %struct.circular_buf_t*, i8, i8, i8 } @@ -1912,14 +1912,14 @@ define linkonce_odr dso_local i64* @__local_stdio_printf_options() #7 comdat { ret i64* @"?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA" } -attributes #0 = { alwaysinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #1 = { alwaysinline uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #0 = { alwaysinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { alwaysinline uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #2 = { argmemonly nounwind willreturn } -attributes #3 = { nobuiltin noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #3 = { nobuiltin noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #4 = { nounwind } -attributes #5 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #6 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #7 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #5 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #6 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #7 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } !llvm.linker.options = !{!0} !llvm.module.flags = !{!1, !2} @@ -1928,4 +1928,4 @@ attributes #7 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sq !0 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"} !1 = !{i32 1, !"wchar_size", i32 2} !2 = !{i32 7, !"PIC Level", i32 2} -!3 = !{!"clang version 10.0.0 "} +!3 = !{!"clang version 11.0.1"} diff --git a/etabackend/ll/nt/PARSE_TimeTagFileHeader.ll b/etabackend/ll/nt/PARSE_TimeTagFileHeader.ll index c6d6a53..ae7eaf2 100644 --- a/etabackend/ll/nt/PARSE_TimeTagFileHeader.ll +++ b/etabackend/ll/nt/PARSE_TimeTagFileHeader.ll @@ -1,7 +1,7 @@ ; ModuleID = 'PARSE_TimeTagFileHeader.cpp' source_filename = "PARSE_TimeTagFileHeader.cpp" target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-pc-windows-msvc19.26.28806" +target triple = "x86_64-pc-windows-msvc19.29.30148" %struct.header_info = type { i64, i64, i64, i64, i64, i64, i64 } %struct.TgHd = type { [32 x i8], i32, i32, i64 } @@ -202,7 +202,7 @@ define dso_local i32 @"?PicoQuant_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%st %63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @"??_C@_0CJ@BKHAGGLC@?6?5?$FLERROR?$FN?6error?5reading?5header?0?5@", i64 0, i64 0)) %64 = sext i32 %63 to i64 store i64 %64, i64* @"?order_gurantee3@@3_JA", align 8 - br label %293 + br label %295 65: ; preds = %2 br label %66 @@ -245,7 +245,7 @@ define dso_local i32 @"?PicoQuant_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%st br i1 %92, label %93, label %94 93: ; preds = %66 - br label %293 + br label %295 94: ; preds = %66 %95 = getelementptr inbounds [40 x i8], [40 x i8]* %31, i64 0, i64 0 @@ -422,7 +422,7 @@ define dso_local i32 @"?PicoQuant_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%st 201: ; preds = %167 %202 = load i8*, i8** %28, align 8 call void @free(i8* %202) - br label %293 + br label %295 203: ; preds = %167 %204 = load i8*, i8** %28, align 8 @@ -480,7 +480,7 @@ define dso_local i32 @"?PicoQuant_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%st %242 = load i16*, i16** %29, align 8 %243 = bitcast i16* %242 to i8* call void @free(i8* %243) - br label %293 + br label %295 244: ; preds = %205 %245 = load i16*, i16** %29, align 8 @@ -501,7 +501,7 @@ define dso_local i32 @"?PicoQuant_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%st br label %257 256: ; preds = %108 - br label %293 + br label %295 257: ; preds = %249, %244, %203, %162, %155, %154, %125, %124, %123, %112, %111 br label %258 @@ -517,7 +517,7 @@ define dso_local i32 @"?PicoQuant_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%st %264 = load %struct.header_info*, %struct.header_info** %25, align 8 %265 = getelementptr inbounds %struct.header_info, %struct.header_info* %264, i32 0, i32 6 %266 = load i64, i64* %265, align 8 - switch i64 %266, label %277 [ + switch i64 %266, label %279 [ i64 66051, label %267 i64 66052, label %268 i64 16843268, label %269 @@ -528,89 +528,99 @@ define dso_local i32 @"?PicoQuant_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%st i64 16843524, label %274 i64 66309, label %275 i64 66310, label %276 + i64 66055, label %277 + i64 66311, label %278 ] 267: ; preds = %263 store i8 1, i8* %35, align 1 - br label %278 + br label %280 268: ; preds = %263 store i8 1, i8* %35, align 1 - br label %278 + br label %280 269: ; preds = %263 store i8 1, i8* %35, align 1 - br label %278 + br label %280 270: ; preds = %263 store i8 1, i8* %35, align 1 - br label %278 + br label %280 271: ; preds = %263 store i8 1, i8* %35, align 1 - br label %278 + br label %280 272: ; preds = %263 store i8 0, i8* %35, align 1 - br label %278 + br label %280 273: ; preds = %263 store i8 0, i8* %35, align 1 - br label %278 + br label %280 274: ; preds = %263 store i8 0, i8* %35, align 1 - br label %278 + br label %280 275: ; preds = %263 store i8 0, i8* %35, align 1 - br label %278 + br label %280 276: ; preds = %263 store i8 0, i8* %35, align 1 - br label %278 + br label %280 277: ; preds = %263 - br label %293 - -278: ; preds = %276, %275, %274, %273, %272, %271, %270, %269, %268, %267 - %279 = load i8, i8* %35, align 1 - %280 = trunc i8 %279 to i1 - br i1 %280, label %281, label %284 - -281: ; preds = %278 - %282 = load %struct.header_info*, %struct.header_info** %25, align 8 - %283 = getelementptr inbounds %struct.header_info, %struct.header_info* %282, i32 0, i32 4 - store i64 1, i64* %283, align 8 - br label %290 - -284: ; preds = %278 - %285 = load %struct.header_info*, %struct.header_info** %25, align 8 - %286 = getelementptr inbounds %struct.header_info, %struct.header_info* %285, i32 0, i32 2 - %287 = load i64, i64* %286, align 8 - %288 = load %struct.header_info*, %struct.header_info** %25, align 8 - %289 = getelementptr inbounds %struct.header_info, %struct.header_info* %288, i32 0, i32 4 - store i64 %287, i64* %289, align 8 - br label %290 - -290: ; preds = %284, %281 - %291 = load %struct.header_info*, %struct.header_info** %25, align 8 - %292 = getelementptr inbounds %struct.header_info, %struct.header_info* %291, i32 0, i32 5 - store i64 4, i64* %292, align 8 - store i32 0, i32* %23, align 4 + store i8 1, i8* %35, align 1 + br label %280 + +278: ; preds = %263 + store i8 0, i8* %35, align 1 + br label %280 + +279: ; preds = %263 br label %295 -293: ; preds = %277, %256, %241, %201, %93, %62 +280: ; preds = %278, %277, %276, %275, %274, %273, %272, %271, %270, %269, %268, %267 + %281 = load i8, i8* %35, align 1 + %282 = trunc i8 %281 to i1 + br i1 %282, label %283, label %286 + +283: ; preds = %280 + %284 = load %struct.header_info*, %struct.header_info** %25, align 8 + %285 = getelementptr inbounds %struct.header_info, %struct.header_info* %284, i32 0, i32 4 + store i64 1, i64* %285, align 8 + br label %292 + +286: ; preds = %280 + %287 = load %struct.header_info*, %struct.header_info** %25, align 8 + %288 = getelementptr inbounds %struct.header_info, %struct.header_info* %287, i32 0, i32 2 + %289 = load i64, i64* %288, align 8 + %290 = load %struct.header_info*, %struct.header_info** %25, align 8 + %291 = getelementptr inbounds %struct.header_info, %struct.header_info* %290, i32 0, i32 4 + store i64 %289, i64* %291, align 8 + br label %292 + +292: ; preds = %286, %283 + %293 = load %struct.header_info*, %struct.header_info** %25, align 8 + %294 = getelementptr inbounds %struct.header_info, %struct.header_info* %293, i32 0, i32 5 + store i64 4, i64* %294, align 8 + store i32 0, i32* %23, align 4 + br label %297 + +295: ; preds = %279, %256, %241, %201, %93, %62 store i32 -1, i32* %23, align 4 - br label %295 + br label %297 -294: ; No predecessors! +296: ; No predecessors! store i32 -2, i32* %23, align 4 - br label %295 + br label %297 -295: ; preds = %294, %293, %290 - %296 = load i32, i32* %23, align 4 - ret i32 %296 +297: ; preds = %296, %295, %292 + %298 = load i32, i32* %23, align 4 + ret i32 %298 } ; Function Attrs: nobuiltin noinline optnone uwtable @@ -680,6 +690,28 @@ define linkonce_odr dso_local i32 @wprintf(i16* %0, ...) #6 comdat { declare dso_local i32 @strncmp(i8*, i8*, i64) #5 +; Function Attrs: alwaysinline nounwind uwtable +define dso_local i32 @"?FORMAT_QT_RAW_header_parser@@YAHPEAUheader_info@@@Z"(%struct.header_info* %0) #0 { + %2 = alloca %struct.header_info*, align 8 + store %struct.header_info* %0, %struct.header_info** %2, align 8 + %3 = load %struct.header_info*, %struct.header_info** %2, align 8 + %4 = getelementptr inbounds %struct.header_info, %struct.header_info* %3, i32 0, i32 6 + store i64 4, i64* %4, align 8 + %5 = load %struct.header_info*, %struct.header_info** %2, align 8 + %6 = getelementptr inbounds %struct.header_info, %struct.header_info* %5, i32 0, i32 5 + store i64 10, i64* %6, align 8 + %7 = load %struct.header_info*, %struct.header_info** %2, align 8 + %8 = getelementptr inbounds %struct.header_info, %struct.header_info* %7, i32 0, i32 2 + store i64 1, i64* %8, align 8 + %9 = load %struct.header_info*, %struct.header_info** %2, align 8 + %10 = getelementptr inbounds %struct.header_info, %struct.header_info* %9, i32 0, i32 3 + store i64 1, i64* %10, align 8 + %11 = load %struct.header_info*, %struct.header_info** %2, align 8 + %12 = getelementptr inbounds %struct.header_info, %struct.header_info* %11, i32 0, i32 4 + store i64 0, i64* %12, align 8 + ret i32 0 +} + ; Function Attrs: alwaysinline uwtable define dso_local i32 @"?FORMAT_QT_BINARY_header_parser@@YAHPEAUheader_info@@PEAD@Z"(%struct.header_info* %0, i8* %1) #3 { %3 = alloca i8*, align 8 @@ -917,849 +949,882 @@ define dso_local i32 @"?FORMAT_ET_A033_header_parser@@YAHPEAUheader_info@@@Z"(%s ; Function Attrs: alwaysinline uwtable define dso_local i32 @PARSE_TimeTagFileHeader(%struct.header_info* %0, i8* %1) #3 { %3 = alloca %struct.header_info*, align 8 - %4 = alloca i8*, align 8 - %5 = alloca i64, align 8 + %4 = alloca %struct.header_info*, align 8 + %5 = alloca i8*, align 8 %6 = alloca i64, align 8 - %7 = alloca i8*, align 8 - %8 = alloca %struct.header_info*, align 8 - %9 = alloca i32, align 4 - %10 = alloca i8*, align 8 - %11 = alloca %struct.header_info*, align 8 - %12 = alloca i8*, align 8 - %13 = alloca %struct.header_info*, align 8 - %14 = alloca i8*, align 8 - %15 = alloca i64, align 8 + %7 = alloca i64, align 8 + %8 = alloca i8*, align 8 + %9 = alloca %struct.header_info*, align 8 + %10 = alloca i32, align 4 + %11 = alloca i8*, align 8 + %12 = alloca %struct.header_info*, align 8 + %13 = alloca i8*, align 8 + %14 = alloca %struct.header_info*, align 8 + %15 = alloca i8*, align 8 %16 = alloca i64, align 8 - %17 = alloca i8*, align 8 - %18 = alloca %struct.header_info*, align 8 - %19 = alloca i32, align 4 - %20 = alloca i8*, align 8 - %21 = alloca %struct.header_info*, align 8 - %22 = alloca [32 x i8], align 16 - %23 = alloca %struct.header_info*, align 8 - %24 = alloca i8*, align 8 - %25 = alloca i64, align 8 + %17 = alloca i64, align 8 + %18 = alloca i8*, align 8 + %19 = alloca %struct.header_info*, align 8 + %20 = alloca i32, align 4 + %21 = alloca i8*, align 8 + %22 = alloca %struct.header_info*, align 8 + %23 = alloca [32 x i8], align 16 + %24 = alloca %struct.header_info*, align 8 + %25 = alloca i8*, align 8 %26 = alloca i64, align 8 - %27 = alloca i8*, align 8 - %28 = alloca %struct.header_info*, align 8 - %29 = alloca i8*, align 8 - %30 = alloca i64, align 8 + %27 = alloca i64, align 8 + %28 = alloca i8*, align 8 + %29 = alloca %struct.header_info*, align 8 + %30 = alloca i8*, align 8 %31 = alloca i64, align 8 - %32 = alloca i8*, align 8 - %33 = alloca %struct.header_info*, align 8 - %34 = alloca i8*, align 8 - %35 = alloca i64, align 8 + %32 = alloca i64, align 8 + %33 = alloca i8*, align 8 + %34 = alloca %struct.header_info*, align 8 + %35 = alloca i8*, align 8 %36 = alloca i64, align 8 - %37 = alloca i8*, align 8 - %38 = alloca %struct.header_info*, align 8 - %39 = alloca i8*, align 8 - %40 = alloca i64, align 8 + %37 = alloca i64, align 8 + %38 = alloca i8*, align 8 + %39 = alloca %struct.header_info*, align 8 + %40 = alloca i8*, align 8 %41 = alloca i64, align 8 - %42 = alloca i8*, align 8 - %43 = alloca %struct.header_info*, align 8 - %44 = alloca i32, align 4 - %45 = alloca i8*, align 8 - %46 = alloca %struct.header_info*, align 8 - %47 = alloca %struct.TgHd, align 8 - %48 = alloca i32, align 4 - %49 = alloca i8*, align 8 - %50 = alloca i16*, align 8 - %51 = alloca [8 x i8], align 1 - %52 = alloca [40 x i8], align 16 - %53 = alloca double, align 8 + %42 = alloca i64, align 8 + %43 = alloca i8*, align 8 + %44 = alloca %struct.header_info*, align 8 + %45 = alloca i32, align 4 + %46 = alloca i8*, align 8 + %47 = alloca %struct.header_info*, align 8 + %48 = alloca %struct.TgHd, align 8 + %49 = alloca i32, align 4 + %50 = alloca i8*, align 8 + %51 = alloca i16*, align 8 + %52 = alloca [8 x i8], align 1 + %53 = alloca [40 x i8], align 16 %54 = alloca double, align 8 - %55 = alloca i64, align 8 - %56 = alloca i8, align 1 - %57 = alloca i8*, align 8 - %58 = alloca i64, align 8 + %55 = alloca double, align 8 + %56 = alloca i64, align 8 + %57 = alloca i8, align 1 + %58 = alloca i8*, align 8 %59 = alloca i64, align 8 - %60 = alloca i8*, align 8 - %61 = alloca %struct.header_info*, align 8 - %62 = alloca i32, align 4 - %63 = alloca i8*, align 8 - %64 = alloca %struct.header_info*, align 8 - %65 = alloca i32, align 4 - %66 = alloca [8 x i8], align 1 - store i8* %1, i8** %63, align 8 - store %struct.header_info* %0, %struct.header_info** %64, align 8 - store i32 -1, i32* %65, align 4 - %67 = load %struct.header_info*, %struct.header_info** %64, align 8 - %68 = getelementptr inbounds %struct.header_info, %struct.header_info* %67, i32 0, i32 1 - store i64 0, i64* %68, align 8 - %69 = load i8*, i8** %63, align 8 - %70 = bitcast [8 x i8]* %66 to i8* - %71 = load %struct.header_info*, %struct.header_info** %64, align 8 - store i8* %69, i8** %57, align 8 - store i64 8, i64* %58, align 8 - store i64 1, i64* %59, align 8 - store i8* %70, i8** %60, align 8 - store %struct.header_info* %71, %struct.header_info** %61, align 8 - %72 = load i8*, i8** %60, align 8 - %73 = load i8*, i8** %57, align 8 - %74 = load %struct.header_info*, %struct.header_info** %61, align 8 - %75 = getelementptr inbounds %struct.header_info, %struct.header_info* %74, i32 0, i32 1 - %76 = load i64, i64* %75, align 8 - %77 = getelementptr inbounds i8, i8* %73, i64 %76 - %78 = load i64, i64* %59, align 8 - %79 = load i64, i64* %58, align 8 - %80 = mul i64 %78, %79 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %72, i8* align 1 %77, i64 %80, i1 false) #7 - %81 = load i64, i64* %59, align 8 - %82 = load i64, i64* %58, align 8 - %83 = mul i64 %81, %82 - %84 = load %struct.header_info*, %struct.header_info** %61, align 8 - %85 = getelementptr inbounds %struct.header_info, %struct.header_info* %84, i32 0, i32 1 - %86 = load i64, i64* %85, align 8 - %87 = add i64 %86, %83 - store i64 %87, i64* %85, align 8 - %88 = load i64, i64* %59, align 8 - %89 = load i64, i64* %58, align 8 - %90 = mul i64 %88, %89 - %91 = icmp ne i64 %90, 8 - br i1 %91, label %92, label %95 - -92: ; preds = %2 - %93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @"??_C@_0CJ@FCCDKPDO@?6?5?$FLERROR?$FNFailed?5to?5read?5header?0?5@", i64 0, i64 0)) - %94 = sext i32 %93 to i64 - store i64 %94, i64* @"?order_gurantee3@@3_JA", align 8 - store i32 -2, i32* %62, align 4 - br label %524 - -95: ; preds = %2 - %96 = load %struct.header_info*, %struct.header_info** %64, align 8 - %97 = getelementptr inbounds %struct.header_info, %struct.header_info* %96, i32 0, i32 6 - %98 = load i64, i64* %97, align 8 - %99 = icmp eq i64 %98, -1 - br i1 %99, label %100, label %115 - -100: ; preds = %95 - %101 = getelementptr inbounds [8 x i8], [8 x i8]* %66, i64 0, i64 0 - %102 = call i32 @strncmp(i8* %101, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"??_C@_06OMFAFKCA@PQTTTR?$AA@", i64 0, i64 0), i64 6) - %103 = icmp eq i32 %102, 0 - br i1 %103, label %104, label %107 - -104: ; preds = %100 - %105 = load %struct.header_info*, %struct.header_info** %64, align 8 - %106 = getelementptr inbounds %struct.header_info, %struct.header_info* %105, i32 0, i32 6 - store i64 0, i64* %106, align 8 - br label %107 - -107: ; preds = %104, %100 - %108 = getelementptr inbounds [8 x i8], [8 x i8]* %66, i64 0, i64 0 - %109 = call i32 @strncmp(i8* %108, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"??_C@_04CHFOFOOE@?$IH?$LD?$JB?z?$AA@", i64 0, i64 0), i64 4) - %110 = icmp eq i32 %109, 0 - br i1 %110, label %111, label %114 - -111: ; preds = %107 - %112 = load %struct.header_info*, %struct.header_info** %64, align 8 - %113 = getelementptr inbounds %struct.header_info, %struct.header_info* %112, i32 0, i32 6 - store i64 4, i64* %113, align 8 - br label %114 - -114: ; preds = %111, %107 + %60 = alloca i64, align 8 + %61 = alloca i8*, align 8 + %62 = alloca %struct.header_info*, align 8 + %63 = alloca i32, align 4 + %64 = alloca i8*, align 8 + %65 = alloca %struct.header_info*, align 8 + %66 = alloca i32, align 4 + %67 = alloca [8 x i8], align 1 + store i8* %1, i8** %64, align 8 + store %struct.header_info* %0, %struct.header_info** %65, align 8 + store i32 -1, i32* %66, align 4 + %68 = load %struct.header_info*, %struct.header_info** %65, align 8 + %69 = getelementptr inbounds %struct.header_info, %struct.header_info* %68, i32 0, i32 1 + store i64 0, i64* %69, align 8 + %70 = load i8*, i8** %64, align 8 + %71 = bitcast [8 x i8]* %67 to i8* + %72 = load %struct.header_info*, %struct.header_info** %65, align 8 + store i8* %70, i8** %58, align 8 + store i64 8, i64* %59, align 8 + store i64 1, i64* %60, align 8 + store i8* %71, i8** %61, align 8 + store %struct.header_info* %72, %struct.header_info** %62, align 8 + %73 = load i8*, i8** %61, align 8 + %74 = load i8*, i8** %58, align 8 + %75 = load %struct.header_info*, %struct.header_info** %62, align 8 + %76 = getelementptr inbounds %struct.header_info, %struct.header_info* %75, i32 0, i32 1 + %77 = load i64, i64* %76, align 8 + %78 = getelementptr inbounds i8, i8* %74, i64 %77 + %79 = load i64, i64* %60, align 8 + %80 = load i64, i64* %59, align 8 + %81 = mul i64 %79, %80 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %73, i8* align 1 %78, i64 %81, i1 false) #7 + %82 = load i64, i64* %60, align 8 + %83 = load i64, i64* %59, align 8 + %84 = mul i64 %82, %83 + %85 = load %struct.header_info*, %struct.header_info** %62, align 8 + %86 = getelementptr inbounds %struct.header_info, %struct.header_info* %85, i32 0, i32 1 + %87 = load i64, i64* %86, align 8 + %88 = add i64 %87, %84 + store i64 %88, i64* %86, align 8 + %89 = load i64, i64* %60, align 8 + %90 = load i64, i64* %59, align 8 + %91 = mul i64 %89, %90 + %92 = icmp ne i64 %91, 8 + br i1 %92, label %93, label %96 + +93: ; preds = %2 + %94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @"??_C@_0CJ@FCCDKPDO@?6?5?$FLERROR?$FNFailed?5to?5read?5header?0?5@", i64 0, i64 0)) + %95 = sext i32 %94 to i64 + store i64 %95, i64* @"?order_gurantee3@@3_JA", align 8 + store i32 -2, i32* %63, align 4 + br label %539 + +96: ; preds = %2 + %97 = load %struct.header_info*, %struct.header_info** %65, align 8 + %98 = getelementptr inbounds %struct.header_info, %struct.header_info* %97, i32 0, i32 6 + %99 = load i64, i64* %98, align 8 + %100 = icmp eq i64 %99, -1 + br i1 %100, label %101, label %116 + +101: ; preds = %96 + %102 = getelementptr inbounds [8 x i8], [8 x i8]* %67, i64 0, i64 0 + %103 = call i32 @strncmp(i8* %102, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"??_C@_06OMFAFKCA@PQTTTR?$AA@", i64 0, i64 0), i64 6) + %104 = icmp eq i32 %103, 0 + br i1 %104, label %105, label %108 + +105: ; preds = %101 + %106 = load %struct.header_info*, %struct.header_info** %65, align 8 + %107 = getelementptr inbounds %struct.header_info, %struct.header_info* %106, i32 0, i32 6 + store i64 0, i64* %107, align 8 + br label %108 + +108: ; preds = %105, %101 + %109 = getelementptr inbounds [8 x i8], [8 x i8]* %67, i64 0, i64 0 + %110 = call i32 @strncmp(i8* %109, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"??_C@_04CHFOFOOE@?$IH?$LD?$JB?z?$AA@", i64 0, i64 0), i64 4) + %111 = icmp eq i32 %110, 0 + br i1 %111, label %112, label %115 + +112: ; preds = %108 + %113 = load %struct.header_info*, %struct.header_info** %65, align 8 + %114 = getelementptr inbounds %struct.header_info, %struct.header_info* %113, i32 0, i32 6 + store i64 4, i64* %114, align 8 br label %115 -115: ; preds = %114, %95 - %116 = load %struct.header_info*, %struct.header_info** %64, align 8 - %117 = getelementptr inbounds %struct.header_info, %struct.header_info* %116, i32 0, i32 6 - %118 = load i64, i64* %117, align 8 - switch i64 %118, label %517 [ - i64 0, label %119 - i64 1, label %381 - i64 2, label %395 - i64 5, label %437 - i64 4, label %456 - i64 6, label %498 - i64 -1, label %512 +115: ; preds = %112, %108 + br label %116 + +116: ; preds = %115, %96 + %117 = load %struct.header_info*, %struct.header_info** %65, align 8 + %118 = getelementptr inbounds %struct.header_info, %struct.header_info* %117, i32 0, i32 6 + %119 = load i64, i64* %118, align 8 + switch i64 %119, label %532 [ + i64 0, label %120 + i64 1, label %384 + i64 2, label %398 + i64 5, label %440 + i64 4, label %459 + i64 3, label %501 + i64 6, label %513 + i64 -1, label %527 ] -119: ; preds = %115 - %120 = load i8*, i8** %63, align 8 - %121 = load %struct.header_info*, %struct.header_info** %64, align 8 - store i8* %120, i8** %45, align 8 - store %struct.header_info* %121, %struct.header_info** %46, align 8 - %122 = load i8*, i8** %45, align 8 - %123 = bitcast [8 x i8]* %51 to i8* - %124 = load %struct.header_info*, %struct.header_info** %46, align 8 - store i8* %122, i8** %39, align 8 - store i64 8, i64* %40, align 8 - store i64 1, i64* %41, align 8 - store i8* %123, i8** %42, align 8 - store %struct.header_info* %124, %struct.header_info** %43, align 8 - %125 = load i8*, i8** %42, align 8 - %126 = load i8*, i8** %39, align 8 - %127 = load %struct.header_info*, %struct.header_info** %43, align 8 - %128 = getelementptr inbounds %struct.header_info, %struct.header_info* %127, i32 0, i32 1 - %129 = load i64, i64* %128, align 8 - %130 = getelementptr inbounds i8, i8* %126, i64 %129 - %131 = load i64, i64* %41, align 8 - %132 = load i64, i64* %40, align 8 - %133 = mul i64 %131, %132 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %125, i8* align 1 %130, i64 %133, i1 false) #7 - %134 = load i64, i64* %41, align 8 - %135 = load i64, i64* %40, align 8 - %136 = mul i64 %134, %135 - %137 = load %struct.header_info*, %struct.header_info** %43, align 8 - %138 = getelementptr inbounds %struct.header_info, %struct.header_info* %137, i32 0, i32 1 - %139 = load i64, i64* %138, align 8 - %140 = add i64 %139, %136 - store i64 %140, i64* %138, align 8 - %141 = load i64, i64* %41, align 8 - %142 = load i64, i64* %40, align 8 - %143 = mul i64 %141, %142 - %144 = trunc i64 %143 to i32 - store i32 %144, i32* %48, align 4 - %145 = load i32, i32* %48, align 4 - %146 = sext i32 %145 to i64 - %147 = icmp ne i64 %146, 8 - br i1 %147, label %148, label %151 - -148: ; preds = %119 - %149 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @"??_C@_0CJ@BKHAGGLC@?6?5?$FLERROR?$FN?6error?5reading?5header?0?5@", i64 0, i64 0)) - %150 = sext i32 %149 to i64 - store i64 %150, i64* @"?order_gurantee3@@3_JA", align 8 - br label %378 +120: ; preds = %116 + %121 = load i8*, i8** %64, align 8 + %122 = load %struct.header_info*, %struct.header_info** %65, align 8 + store i8* %121, i8** %46, align 8 + store %struct.header_info* %122, %struct.header_info** %47, align 8 + %123 = load i8*, i8** %46, align 8 + %124 = bitcast [8 x i8]* %52 to i8* + %125 = load %struct.header_info*, %struct.header_info** %47, align 8 + store i8* %123, i8** %40, align 8 + store i64 8, i64* %41, align 8 + store i64 1, i64* %42, align 8 + store i8* %124, i8** %43, align 8 + store %struct.header_info* %125, %struct.header_info** %44, align 8 + %126 = load i8*, i8** %43, align 8 + %127 = load i8*, i8** %40, align 8 + %128 = load %struct.header_info*, %struct.header_info** %44, align 8 + %129 = getelementptr inbounds %struct.header_info, %struct.header_info* %128, i32 0, i32 1 + %130 = load i64, i64* %129, align 8 + %131 = getelementptr inbounds i8, i8* %127, i64 %130 + %132 = load i64, i64* %42, align 8 + %133 = load i64, i64* %41, align 8 + %134 = mul i64 %132, %133 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %126, i8* align 1 %131, i64 %134, i1 false) #7 + %135 = load i64, i64* %42, align 8 + %136 = load i64, i64* %41, align 8 + %137 = mul i64 %135, %136 + %138 = load %struct.header_info*, %struct.header_info** %44, align 8 + %139 = getelementptr inbounds %struct.header_info, %struct.header_info* %138, i32 0, i32 1 + %140 = load i64, i64* %139, align 8 + %141 = add i64 %140, %137 + store i64 %141, i64* %139, align 8 + %142 = load i64, i64* %42, align 8 + %143 = load i64, i64* %41, align 8 + %144 = mul i64 %142, %143 + %145 = trunc i64 %144 to i32 + store i32 %145, i32* %49, align 4 + %146 = load i32, i32* %49, align 4 + %147 = sext i32 %146 to i64 + %148 = icmp ne i64 %147, 8 + br i1 %148, label %149, label %152 + +149: ; preds = %120 + %150 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @"??_C@_0CJ@BKHAGGLC@?6?5?$FLERROR?$FN?6error?5reading?5header?0?5@", i64 0, i64 0)) + %151 = sext i32 %150 to i64 + store i64 %151, i64* @"?order_gurantee3@@3_JA", align 8 + br label %381 + +152: ; preds = %120 + br label %153 + +153: ; preds = %344, %152 + %154 = load i8*, i8** %46, align 8 + %155 = bitcast %struct.TgHd* %48 to i8* + %156 = load %struct.header_info*, %struct.header_info** %47, align 8 + store i8* %154, i8** %35, align 8 + store i64 48, i64* %36, align 8 + store i64 1, i64* %37, align 8 + store i8* %155, i8** %38, align 8 + store %struct.header_info* %156, %struct.header_info** %39, align 8 + %157 = load i8*, i8** %38, align 8 + %158 = load i8*, i8** %35, align 8 + %159 = load %struct.header_info*, %struct.header_info** %39, align 8 + %160 = getelementptr inbounds %struct.header_info, %struct.header_info* %159, i32 0, i32 1 + %161 = load i64, i64* %160, align 8 + %162 = getelementptr inbounds i8, i8* %158, i64 %161 + %163 = load i64, i64* %37, align 8 + %164 = load i64, i64* %36, align 8 + %165 = mul i64 %163, %164 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %157, i8* align 1 %162, i64 %165, i1 false) #7 + %166 = load i64, i64* %37, align 8 + %167 = load i64, i64* %36, align 8 + %168 = mul i64 %166, %167 + %169 = load %struct.header_info*, %struct.header_info** %39, align 8 + %170 = getelementptr inbounds %struct.header_info, %struct.header_info* %169, i32 0, i32 1 + %171 = load i64, i64* %170, align 8 + %172 = add i64 %171, %168 + store i64 %172, i64* %170, align 8 + %173 = load i64, i64* %37, align 8 + %174 = load i64, i64* %36, align 8 + %175 = mul i64 %173, %174 + %176 = trunc i64 %175 to i32 + store i32 %176, i32* %49, align 4 + %177 = load i32, i32* %49, align 4 + %178 = sext i32 %177 to i64 + %179 = icmp ne i64 %178, 48 + br i1 %179, label %180, label %181 + +180: ; preds = %153 + br label %381 + +181: ; preds = %153 + %182 = getelementptr inbounds [40 x i8], [40 x i8]* %53, i64 0, i64 0 + %183 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 0 + %184 = getelementptr inbounds [32 x i8], [32 x i8]* %183, i64 0, i64 0 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %182, i8* align 8 %184, i64 40, i1 false) + %185 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 1 + %186 = load i32, i32* %185, align 8 + %187 = icmp sgt i32 %186, -1 + br i1 %187, label %188, label %195 + +188: ; preds = %181 + %189 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 1 + %190 = load i32, i32* %189, align 8 + %191 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 0 + %192 = getelementptr inbounds [32 x i8], [32 x i8]* %191, i64 0, i64 0 + %193 = getelementptr inbounds [40 x i8], [40 x i8]* %53, i64 0, i64 0 + %194 = call i32 (i8*, i8*, ...) @sprintf(i8* %193, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"??_C@_06BPGFIOAL@?$CFs?$CI?$CFd?$CJ?$AA@", i64 0, i64 0), i8* %192, i32 %190) + br label %195 + +195: ; preds = %188, %181 + %196 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 2 + %197 = load i32, i32* %196, align 4 + switch i32 %197, label %343 [ + i32 -65528, label %198 + i32 8, label %199 + i32 268435464, label %200 + i32 285212680, label %211 + i32 301989896, label %212 + i32 536870920, label %213 + i32 537001983, label %242 + i32 553648136, label %249 + i32 1073872895, label %254 + i32 1073938431, label %292 + i32 -1, label %336 + ] -151: ; preds = %119 - br label %152 - -152: ; preds = %343, %151 - %153 = load i8*, i8** %45, align 8 - %154 = bitcast %struct.TgHd* %47 to i8* - %155 = load %struct.header_info*, %struct.header_info** %46, align 8 - store i8* %153, i8** %34, align 8 - store i64 48, i64* %35, align 8 - store i64 1, i64* %36, align 8 - store i8* %154, i8** %37, align 8 - store %struct.header_info* %155, %struct.header_info** %38, align 8 - %156 = load i8*, i8** %37, align 8 - %157 = load i8*, i8** %34, align 8 - %158 = load %struct.header_info*, %struct.header_info** %38, align 8 - %159 = getelementptr inbounds %struct.header_info, %struct.header_info* %158, i32 0, i32 1 - %160 = load i64, i64* %159, align 8 - %161 = getelementptr inbounds i8, i8* %157, i64 %160 - %162 = load i64, i64* %36, align 8 - %163 = load i64, i64* %35, align 8 - %164 = mul i64 %162, %163 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %156, i8* align 1 %161, i64 %164, i1 false) #7 - %165 = load i64, i64* %36, align 8 - %166 = load i64, i64* %35, align 8 - %167 = mul i64 %165, %166 - %168 = load %struct.header_info*, %struct.header_info** %38, align 8 - %169 = getelementptr inbounds %struct.header_info, %struct.header_info* %168, i32 0, i32 1 - %170 = load i64, i64* %169, align 8 - %171 = add i64 %170, %167 - store i64 %171, i64* %169, align 8 - %172 = load i64, i64* %36, align 8 - %173 = load i64, i64* %35, align 8 - %174 = mul i64 %172, %173 - %175 = trunc i64 %174 to i32 - store i32 %175, i32* %48, align 4 - %176 = load i32, i32* %48, align 4 - %177 = sext i32 %176 to i64 - %178 = icmp ne i64 %177, 48 - br i1 %178, label %179, label %180 - -179: ; preds = %152 - br label %378 +198: ; preds = %195 + br label %344 -180: ; preds = %152 - %181 = getelementptr inbounds [40 x i8], [40 x i8]* %52, i64 0, i64 0 - %182 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 0 - %183 = getelementptr inbounds [32 x i8], [32 x i8]* %182, i64 0, i64 0 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %181, i8* align 8 %183, i64 40, i1 false) - %184 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 1 - %185 = load i32, i32* %184, align 8 - %186 = icmp sgt i32 %185, -1 - br i1 %186, label %187, label %194 - -187: ; preds = %180 - %188 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 1 - %189 = load i32, i32* %188, align 8 - %190 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 0 - %191 = getelementptr inbounds [32 x i8], [32 x i8]* %190, i64 0, i64 0 - %192 = getelementptr inbounds [40 x i8], [40 x i8]* %52, i64 0, i64 0 - %193 = call i32 (i8*, i8*, ...) @sprintf(i8* %192, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"??_C@_06BPGFIOAL@?$CFs?$CI?$CFd?$CJ?$AA@", i64 0, i64 0), i8* %191, i32 %189) - br label %194 - -194: ; preds = %187, %180 - %195 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 2 - %196 = load i32, i32* %195, align 4 - switch i32 %196, label %342 [ - i32 -65528, label %197 - i32 8, label %198 - i32 268435464, label %199 - i32 285212680, label %210 - i32 301989896, label %211 - i32 536870920, label %212 - i32 537001983, label %241 - i32 553648136, label %248 - i32 1073872895, label %253 - i32 1073938431, label %291 - i32 -1, label %335 +199: ; preds = %195 + br label %344 + +200: ; preds = %195 + %201 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 0 + %202 = getelementptr inbounds [32 x i8], [32 x i8]* %201, i64 0, i64 0 + %203 = call i32 @strcmp(i8* %202, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @"??_C@_0BL@NBAMDLKF@TTResultFormat_TTTRRecType?$AA@", i64 0, i64 0)) + %204 = icmp eq i32 %203, 0 + br i1 %204, label %205, label %210 + +205: ; preds = %200 + %206 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %207 = load i64, i64* %206, align 8 + %208 = load %struct.header_info*, %struct.header_info** %47, align 8 + %209 = getelementptr inbounds %struct.header_info, %struct.header_info* %208, i32 0, i32 6 + store i64 %207, i64* %209, align 8 + br label %210 + +210: ; preds = %205, %200 + br label %344 + +211: ; preds = %195 + br label %344 + +212: ; preds = %195 + br label %344 + +213: ; preds = %195 + %214 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 0 + %215 = getelementptr inbounds [32 x i8], [32 x i8]* %214, i64 0, i64 0 + %216 = call i32 @strcmp(i8* %215, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"??_C@_0BE@MLJFPCOI@MeasDesc_Resolution?$AA@", i64 0, i64 0)) + %217 = icmp eq i32 %216, 0 + br i1 %217, label %218, label %227 + +218: ; preds = %213 + %219 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %220 = bitcast i64* %219 to double* + %221 = load double, double* %220, align 8 + store double %221, double* %54, align 8 + %222 = load double, double* %54, align 8 + %223 = fmul double %222, 1.000000e+12 + %224 = fptosi double %223 to i64 + %225 = load %struct.header_info*, %struct.header_info** %47, align 8 + %226 = getelementptr inbounds %struct.header_info, %struct.header_info* %225, i32 0, i32 3 + store i64 %224, i64* %226, align 8 + br label %227 + +227: ; preds = %218, %213 + %228 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 0 + %229 = getelementptr inbounds [32 x i8], [32 x i8]* %228, i64 0, i64 0 + %230 = call i32 @strcmp(i8* %229, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"??_C@_0BK@JGMIOCJJ@MeasDesc_GlobalResolution?$AA@", i64 0, i64 0)) + %231 = icmp eq i32 %230, 0 + br i1 %231, label %232, label %241 + +232: ; preds = %227 + %233 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %234 = bitcast i64* %233 to double* + %235 = load double, double* %234, align 8 + store double %235, double* %55, align 8 + %236 = load double, double* %55, align 8 + %237 = fmul double %236, 1.000000e+12 + %238 = fptosi double %237 to i64 + %239 = load %struct.header_info*, %struct.header_info** %47, align 8 + %240 = getelementptr inbounds %struct.header_info, %struct.header_info* %239, i32 0, i32 2 + store i64 %238, i64* %240, align 8 + br label %241 + +241: ; preds = %232, %227 + br label %344 + +242: ; preds = %195 + %243 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %244 = load i64, i64* %243, align 8 + %245 = trunc i64 %244 to i32 + %246 = sext i32 %245 to i64 + %247 = load %struct.header_info*, %struct.header_info** %47, align 8 + %248 = getelementptr inbounds %struct.header_info, %struct.header_info* %247, i32 0, i32 1 + store i64 %246, i64* %248, align 8 + br label %344 + +249: ; preds = %195 + %250 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %251 = bitcast i64* %250 to double* + %252 = load double, double* %251, align 8 + %253 = call i64 @"?TDateTime_TimeT@@YA_JN@Z"(double %252) + store i64 %253, i64* %56, align 8 + br label %344 + +254: ; preds = %195 + %255 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %256 = load i64, i64* %255, align 8 + %257 = call noalias i8* @calloc(i64 %256, i64 1) + store i8* %257, i8** %50, align 8 + %258 = load i8*, i8** %46, align 8 + %259 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %260 = load i64, i64* %259, align 8 + %261 = load i8*, i8** %50, align 8 + %262 = load %struct.header_info*, %struct.header_info** %47, align 8 + store i8* %258, i8** %25, align 8 + store i64 %260, i64* %26, align 8 + store i64 1, i64* %27, align 8 + store i8* %261, i8** %28, align 8 + store %struct.header_info* %262, %struct.header_info** %29, align 8 + %263 = load i8*, i8** %28, align 8 + %264 = load i8*, i8** %25, align 8 + %265 = load %struct.header_info*, %struct.header_info** %29, align 8 + %266 = getelementptr inbounds %struct.header_info, %struct.header_info* %265, i32 0, i32 1 + %267 = load i64, i64* %266, align 8 + %268 = getelementptr inbounds i8, i8* %264, i64 %267 + %269 = load i64, i64* %27, align 8 + %270 = load i64, i64* %26, align 8 + %271 = mul i64 %269, %270 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %263, i8* align 1 %268, i64 %271, i1 false) #7 + %272 = load i64, i64* %27, align 8 + %273 = load i64, i64* %26, align 8 + %274 = mul i64 %272, %273 + %275 = load %struct.header_info*, %struct.header_info** %29, align 8 + %276 = getelementptr inbounds %struct.header_info, %struct.header_info* %275, i32 0, i32 1 + %277 = load i64, i64* %276, align 8 + %278 = add i64 %277, %274 + store i64 %278, i64* %276, align 8 + %279 = load i64, i64* %27, align 8 + %280 = load i64, i64* %26, align 8 + %281 = mul i64 %279, %280 + %282 = trunc i64 %281 to i32 + store i32 %282, i32* %49, align 4 + %283 = load i32, i32* %49, align 4 + %284 = sext i32 %283 to i64 + %285 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %286 = load i64, i64* %285, align 8 + %287 = icmp ne i64 %284, %286 + br i1 %287, label %288, label %290 + +288: ; preds = %254 + %289 = load i8*, i8** %50, align 8 + call void @free(i8* %289) + br label %381 + +290: ; preds = %254 + %291 = load i8*, i8** %50, align 8 + call void @free(i8* %291) + br label %344 + +292: ; preds = %195 + %293 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %294 = load i64, i64* %293, align 8 + %295 = call noalias i8* @calloc(i64 %294, i64 1) + %296 = bitcast i8* %295 to i16* + store i16* %296, i16** %51, align 8 + %297 = load i8*, i8** %46, align 8 + %298 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %299 = load i64, i64* %298, align 8 + %300 = load i16*, i16** %51, align 8 + %301 = bitcast i16* %300 to i8* + %302 = load %struct.header_info*, %struct.header_info** %47, align 8 + store i8* %297, i8** %30, align 8 + store i64 %299, i64* %31, align 8 + store i64 1, i64* %32, align 8 + store i8* %301, i8** %33, align 8 + store %struct.header_info* %302, %struct.header_info** %34, align 8 + %303 = load i8*, i8** %33, align 8 + %304 = load i8*, i8** %30, align 8 + %305 = load %struct.header_info*, %struct.header_info** %34, align 8 + %306 = getelementptr inbounds %struct.header_info, %struct.header_info* %305, i32 0, i32 1 + %307 = load i64, i64* %306, align 8 + %308 = getelementptr inbounds i8, i8* %304, i64 %307 + %309 = load i64, i64* %32, align 8 + %310 = load i64, i64* %31, align 8 + %311 = mul i64 %309, %310 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %303, i8* align 1 %308, i64 %311, i1 false) #7 + %312 = load i64, i64* %32, align 8 + %313 = load i64, i64* %31, align 8 + %314 = mul i64 %312, %313 + %315 = load %struct.header_info*, %struct.header_info** %34, align 8 + %316 = getelementptr inbounds %struct.header_info, %struct.header_info* %315, i32 0, i32 1 + %317 = load i64, i64* %316, align 8 + %318 = add i64 %317, %314 + store i64 %318, i64* %316, align 8 + %319 = load i64, i64* %32, align 8 + %320 = load i64, i64* %31, align 8 + %321 = mul i64 %319, %320 + %322 = trunc i64 %321 to i32 + store i32 %322, i32* %49, align 4 + %323 = load i32, i32* %49, align 4 + %324 = sext i32 %323 to i64 + %325 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %326 = load i64, i64* %325, align 8 + %327 = icmp ne i64 %324, %326 + br i1 %327, label %328, label %331 + +328: ; preds = %292 + %329 = load i16*, i16** %51, align 8 + %330 = bitcast i16* %329 to i8* + call void @free(i8* %330) + br label %381 + +331: ; preds = %292 + %332 = load i16*, i16** %51, align 8 + %333 = call i32 (i16*, ...) @wprintf(i16* getelementptr inbounds ([3 x i16], [3 x i16]* @"??_C@_15GANGMFKL@?$AA?$CF?$AAs?$AA?$AA@", i64 0, i64 0), i16* %332) + %334 = load i16*, i16** %51, align 8 + %335 = bitcast i16* %334 to i8* + call void @free(i8* %335) + br label %344 + +336: ; preds = %195 + %337 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 3 + %338 = load i64, i64* %337, align 8 + %339 = trunc i64 %338 to i32 + %340 = sext i32 %339 to i64 + %341 = load %struct.header_info*, %struct.header_info** %47, align 8 + %342 = getelementptr inbounds %struct.header_info, %struct.header_info* %341, i32 0, i32 1 + store i64 %340, i64* %342, align 8 + br label %344 + +343: ; preds = %195 + br label %381 + +344: ; preds = %336, %331, %290, %249, %242, %241, %212, %211, %210, %199, %198 + %345 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %48, i32 0, i32 0 + %346 = getelementptr inbounds [32 x i8], [32 x i8]* %345, i64 0, i64 0 + %347 = call i32 @strncmp(i8* %346, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"??_C@_0L@BKLBDFDP@Header_End?$AA@", i64 0, i64 0), i64 11) + %348 = icmp ne i32 %347, 0 + br i1 %348, label %153, label %349 + +349: ; preds = %344 + %350 = load %struct.header_info*, %struct.header_info** %47, align 8 + %351 = getelementptr inbounds %struct.header_info, %struct.header_info* %350, i32 0, i32 6 + %352 = load i64, i64* %351, align 8 + switch i64 %352, label %365 [ + i64 66051, label %353 + i64 66052, label %354 + i64 16843268, label %355 + i64 66053, label %356 + i64 66054, label %357 + i64 66307, label %358 + i64 66308, label %359 + i64 16843524, label %360 + i64 66309, label %361 + i64 66310, label %362 + i64 66055, label %363 + i64 66311, label %364 ] -197: ; preds = %194 - br label %343 - -198: ; preds = %194 - br label %343 - -199: ; preds = %194 - %200 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 0 - %201 = getelementptr inbounds [32 x i8], [32 x i8]* %200, i64 0, i64 0 - %202 = call i32 @strcmp(i8* %201, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @"??_C@_0BL@NBAMDLKF@TTResultFormat_TTTRRecType?$AA@", i64 0, i64 0)) - %203 = icmp eq i32 %202, 0 - br i1 %203, label %204, label %209 - -204: ; preds = %199 - %205 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %206 = load i64, i64* %205, align 8 - %207 = load %struct.header_info*, %struct.header_info** %46, align 8 - %208 = getelementptr inbounds %struct.header_info, %struct.header_info* %207, i32 0, i32 6 - store i64 %206, i64* %208, align 8 - br label %209 - -209: ; preds = %204, %199 - br label %343 - -210: ; preds = %194 - br label %343 - -211: ; preds = %194 - br label %343 - -212: ; preds = %194 - %213 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 0 - %214 = getelementptr inbounds [32 x i8], [32 x i8]* %213, i64 0, i64 0 - %215 = call i32 @strcmp(i8* %214, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"??_C@_0BE@MLJFPCOI@MeasDesc_Resolution?$AA@", i64 0, i64 0)) - %216 = icmp eq i32 %215, 0 - br i1 %216, label %217, label %226 - -217: ; preds = %212 - %218 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %219 = bitcast i64* %218 to double* - %220 = load double, double* %219, align 8 - store double %220, double* %53, align 8 - %221 = load double, double* %53, align 8 - %222 = fmul double %221, 1.000000e+12 - %223 = fptosi double %222 to i64 - %224 = load %struct.header_info*, %struct.header_info** %46, align 8 - %225 = getelementptr inbounds %struct.header_info, %struct.header_info* %224, i32 0, i32 3 - store i64 %223, i64* %225, align 8 - br label %226 - -226: ; preds = %217, %212 - %227 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 0 - %228 = getelementptr inbounds [32 x i8], [32 x i8]* %227, i64 0, i64 0 - %229 = call i32 @strcmp(i8* %228, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"??_C@_0BK@JGMIOCJJ@MeasDesc_GlobalResolution?$AA@", i64 0, i64 0)) - %230 = icmp eq i32 %229, 0 - br i1 %230, label %231, label %240 - -231: ; preds = %226 - %232 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %233 = bitcast i64* %232 to double* - %234 = load double, double* %233, align 8 - store double %234, double* %54, align 8 - %235 = load double, double* %54, align 8 - %236 = fmul double %235, 1.000000e+12 - %237 = fptosi double %236 to i64 - %238 = load %struct.header_info*, %struct.header_info** %46, align 8 - %239 = getelementptr inbounds %struct.header_info, %struct.header_info* %238, i32 0, i32 2 - store i64 %237, i64* %239, align 8 - br label %240 - -240: ; preds = %231, %226 - br label %343 - -241: ; preds = %194 - %242 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %243 = load i64, i64* %242, align 8 - %244 = trunc i64 %243 to i32 - %245 = sext i32 %244 to i64 - %246 = load %struct.header_info*, %struct.header_info** %46, align 8 - %247 = getelementptr inbounds %struct.header_info, %struct.header_info* %246, i32 0, i32 1 - store i64 %245, i64* %247, align 8 - br label %343 - -248: ; preds = %194 - %249 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %250 = bitcast i64* %249 to double* - %251 = load double, double* %250, align 8 - %252 = call i64 @"?TDateTime_TimeT@@YA_JN@Z"(double %251) - store i64 %252, i64* %55, align 8 - br label %343 - -253: ; preds = %194 - %254 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %255 = load i64, i64* %254, align 8 - %256 = call noalias i8* @calloc(i64 %255, i64 1) - store i8* %256, i8** %49, align 8 - %257 = load i8*, i8** %45, align 8 - %258 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %259 = load i64, i64* %258, align 8 - %260 = load i8*, i8** %49, align 8 - %261 = load %struct.header_info*, %struct.header_info** %46, align 8 - store i8* %257, i8** %24, align 8 - store i64 %259, i64* %25, align 8 - store i64 1, i64* %26, align 8 - store i8* %260, i8** %27, align 8 - store %struct.header_info* %261, %struct.header_info** %28, align 8 - %262 = load i8*, i8** %27, align 8 - %263 = load i8*, i8** %24, align 8 - %264 = load %struct.header_info*, %struct.header_info** %28, align 8 - %265 = getelementptr inbounds %struct.header_info, %struct.header_info* %264, i32 0, i32 1 - %266 = load i64, i64* %265, align 8 - %267 = getelementptr inbounds i8, i8* %263, i64 %266 - %268 = load i64, i64* %26, align 8 - %269 = load i64, i64* %25, align 8 - %270 = mul i64 %268, %269 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %262, i8* align 1 %267, i64 %270, i1 false) #7 - %271 = load i64, i64* %26, align 8 - %272 = load i64, i64* %25, align 8 - %273 = mul i64 %271, %272 - %274 = load %struct.header_info*, %struct.header_info** %28, align 8 - %275 = getelementptr inbounds %struct.header_info, %struct.header_info* %274, i32 0, i32 1 - %276 = load i64, i64* %275, align 8 - %277 = add i64 %276, %273 - store i64 %277, i64* %275, align 8 - %278 = load i64, i64* %26, align 8 - %279 = load i64, i64* %25, align 8 - %280 = mul i64 %278, %279 - %281 = trunc i64 %280 to i32 - store i32 %281, i32* %48, align 4 - %282 = load i32, i32* %48, align 4 - %283 = sext i32 %282 to i64 - %284 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %285 = load i64, i64* %284, align 8 - %286 = icmp ne i64 %283, %285 - br i1 %286, label %287, label %289 - -287: ; preds = %253 - %288 = load i8*, i8** %49, align 8 - call void @free(i8* %288) - br label %378 +353: ; preds = %349 + store i8 1, i8* %57, align 1 + br label %366 -289: ; preds = %253 - %290 = load i8*, i8** %49, align 8 - call void @free(i8* %290) - br label %343 - -291: ; preds = %194 - %292 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %293 = load i64, i64* %292, align 8 - %294 = call noalias i8* @calloc(i64 %293, i64 1) - %295 = bitcast i8* %294 to i16* - store i16* %295, i16** %50, align 8 - %296 = load i8*, i8** %45, align 8 - %297 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %298 = load i64, i64* %297, align 8 - %299 = load i16*, i16** %50, align 8 - %300 = bitcast i16* %299 to i8* - %301 = load %struct.header_info*, %struct.header_info** %46, align 8 - store i8* %296, i8** %29, align 8 - store i64 %298, i64* %30, align 8 - store i64 1, i64* %31, align 8 - store i8* %300, i8** %32, align 8 - store %struct.header_info* %301, %struct.header_info** %33, align 8 - %302 = load i8*, i8** %32, align 8 - %303 = load i8*, i8** %29, align 8 - %304 = load %struct.header_info*, %struct.header_info** %33, align 8 - %305 = getelementptr inbounds %struct.header_info, %struct.header_info* %304, i32 0, i32 1 - %306 = load i64, i64* %305, align 8 - %307 = getelementptr inbounds i8, i8* %303, i64 %306 - %308 = load i64, i64* %31, align 8 - %309 = load i64, i64* %30, align 8 - %310 = mul i64 %308, %309 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %302, i8* align 1 %307, i64 %310, i1 false) #7 - %311 = load i64, i64* %31, align 8 - %312 = load i64, i64* %30, align 8 - %313 = mul i64 %311, %312 - %314 = load %struct.header_info*, %struct.header_info** %33, align 8 - %315 = getelementptr inbounds %struct.header_info, %struct.header_info* %314, i32 0, i32 1 - %316 = load i64, i64* %315, align 8 - %317 = add i64 %316, %313 - store i64 %317, i64* %315, align 8 - %318 = load i64, i64* %31, align 8 - %319 = load i64, i64* %30, align 8 - %320 = mul i64 %318, %319 - %321 = trunc i64 %320 to i32 - store i32 %321, i32* %48, align 4 - %322 = load i32, i32* %48, align 4 - %323 = sext i32 %322 to i64 - %324 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %325 = load i64, i64* %324, align 8 - %326 = icmp ne i64 %323, %325 - br i1 %326, label %327, label %330 - -327: ; preds = %291 - %328 = load i16*, i16** %50, align 8 - %329 = bitcast i16* %328 to i8* - call void @free(i8* %329) - br label %378 +354: ; preds = %349 + store i8 1, i8* %57, align 1 + br label %366 -330: ; preds = %291 - %331 = load i16*, i16** %50, align 8 - %332 = call i32 (i16*, ...) @wprintf(i16* getelementptr inbounds ([3 x i16], [3 x i16]* @"??_C@_15GANGMFKL@?$AA?$CF?$AAs?$AA?$AA@", i64 0, i64 0), i16* %331) - %333 = load i16*, i16** %50, align 8 - %334 = bitcast i16* %333 to i8* - call void @free(i8* %334) - br label %343 - -335: ; preds = %194 - %336 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 3 - %337 = load i64, i64* %336, align 8 - %338 = trunc i64 %337 to i32 - %339 = sext i32 %338 to i64 - %340 = load %struct.header_info*, %struct.header_info** %46, align 8 - %341 = getelementptr inbounds %struct.header_info, %struct.header_info* %340, i32 0, i32 1 - store i64 %339, i64* %341, align 8 - br label %343 - -342: ; preds = %194 - br label %378 +355: ; preds = %349 + store i8 1, i8* %57, align 1 + br label %366 -343: ; preds = %335, %330, %289, %248, %241, %240, %211, %210, %209, %198, %197 - %344 = getelementptr inbounds %struct.TgHd, %struct.TgHd* %47, i32 0, i32 0 - %345 = getelementptr inbounds [32 x i8], [32 x i8]* %344, i64 0, i64 0 - %346 = call i32 @strncmp(i8* %345, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"??_C@_0L@BKLBDFDP@Header_End?$AA@", i64 0, i64 0), i64 11) - %347 = icmp ne i32 %346, 0 - br i1 %347, label %152, label %348 - -348: ; preds = %343 - %349 = load %struct.header_info*, %struct.header_info** %46, align 8 - %350 = getelementptr inbounds %struct.header_info, %struct.header_info* %349, i32 0, i32 6 - %351 = load i64, i64* %350, align 8 - switch i64 %351, label %362 [ - i64 66051, label %352 - i64 66052, label %353 - i64 16843268, label %354 - i64 66053, label %355 - i64 66054, label %356 - i64 66307, label %357 - i64 66308, label %358 - i64 16843524, label %359 - i64 66309, label %360 - i64 66310, label %361 - ] +356: ; preds = %349 + store i8 1, i8* %57, align 1 + br label %366 -352: ; preds = %348 - store i8 1, i8* %56, align 1 - br label %363 +357: ; preds = %349 + store i8 1, i8* %57, align 1 + br label %366 -353: ; preds = %348 - store i8 1, i8* %56, align 1 - br label %363 +358: ; preds = %349 + store i8 0, i8* %57, align 1 + br label %366 -354: ; preds = %348 - store i8 1, i8* %56, align 1 - br label %363 +359: ; preds = %349 + store i8 0, i8* %57, align 1 + br label %366 -355: ; preds = %348 - store i8 1, i8* %56, align 1 - br label %363 +360: ; preds = %349 + store i8 0, i8* %57, align 1 + br label %366 -356: ; preds = %348 - store i8 1, i8* %56, align 1 - br label %363 +361: ; preds = %349 + store i8 0, i8* %57, align 1 + br label %366 -357: ; preds = %348 - store i8 0, i8* %56, align 1 - br label %363 +362: ; preds = %349 + store i8 0, i8* %57, align 1 + br label %366 -358: ; preds = %348 - store i8 0, i8* %56, align 1 - br label %363 +363: ; preds = %349 + store i8 1, i8* %57, align 1 + br label %366 -359: ; preds = %348 - store i8 0, i8* %56, align 1 - br label %363 +364: ; preds = %349 + store i8 0, i8* %57, align 1 + br label %366 -360: ; preds = %348 - store i8 0, i8* %56, align 1 - br label %363 +365: ; preds = %349 + br label %381 -361: ; preds = %348 - store i8 0, i8* %56, align 1 - br label %363 +366: ; preds = %364, %363, %362, %361, %360, %359, %358, %357, %356, %355, %354, %353 + %367 = load i8, i8* %57, align 1 + %368 = trunc i8 %367 to i1 + br i1 %368, label %369, label %372 -362: ; preds = %348 +369: ; preds = %366 + %370 = load %struct.header_info*, %struct.header_info** %47, align 8 + %371 = getelementptr inbounds %struct.header_info, %struct.header_info* %370, i32 0, i32 4 + store i64 1, i64* %371, align 8 br label %378 -363: ; preds = %361, %360, %359, %358, %357, %356, %355, %354, %353, %352 - %364 = load i8, i8* %56, align 1 - %365 = trunc i8 %364 to i1 - br i1 %365, label %366, label %369 - -366: ; preds = %363 - %367 = load %struct.header_info*, %struct.header_info** %46, align 8 - %368 = getelementptr inbounds %struct.header_info, %struct.header_info* %367, i32 0, i32 4 - store i64 1, i64* %368, align 8 - br label %375 - -369: ; preds = %363 - %370 = load %struct.header_info*, %struct.header_info** %46, align 8 - %371 = getelementptr inbounds %struct.header_info, %struct.header_info* %370, i32 0, i32 2 - %372 = load i64, i64* %371, align 8 - %373 = load %struct.header_info*, %struct.header_info** %46, align 8 - %374 = getelementptr inbounds %struct.header_info, %struct.header_info* %373, i32 0, i32 4 - store i64 %372, i64* %374, align 8 - br label %375 - -375: ; preds = %369, %366 - %376 = load %struct.header_info*, %struct.header_info** %46, align 8 - %377 = getelementptr inbounds %struct.header_info, %struct.header_info* %376, i32 0, i32 5 - store i64 4, i64* %377, align 8 - store i32 0, i32* %44, align 4 - br label %379 - -378: ; preds = %362, %342, %327, %287, %179, %148 - store i32 -1, i32* %44, align 4 - br label %379 - -379: ; preds = %375, %378 - %380 = load i32, i32* %44, align 4 - store i32 %380, i32* %65, align 4 - br label %517 - -381: ; preds = %115 - %382 = load %struct.header_info*, %struct.header_info** %64, align 8 - store %struct.header_info* %382, %struct.header_info** %23, align 8 - %383 = load %struct.header_info*, %struct.header_info** %23, align 8 - %384 = getelementptr inbounds %struct.header_info, %struct.header_info* %383, i32 0, i32 4 - store i64 0, i64* %384, align 8 - %385 = load %struct.header_info*, %struct.header_info** %23, align 8 - %386 = getelementptr inbounds %struct.header_info, %struct.header_info* %385, i32 0, i32 2 - store i64 1, i64* %386, align 8 - %387 = load %struct.header_info*, %struct.header_info** %23, align 8 - %388 = getelementptr inbounds %struct.header_info, %struct.header_info* %387, i32 0, i32 3 - store i64 1, i64* %388, align 8 - %389 = load %struct.header_info*, %struct.header_info** %23, align 8 - %390 = getelementptr inbounds %struct.header_info, %struct.header_info* %389, i32 0, i32 6 - store i64 1, i64* %390, align 8 - %391 = load %struct.header_info*, %struct.header_info** %23, align 8 - %392 = getelementptr inbounds %struct.header_info, %struct.header_info* %391, i32 0, i32 5 - store i64 16, i64* %392, align 8 - %393 = load %struct.header_info*, %struct.header_info** %23, align 8 - %394 = getelementptr inbounds %struct.header_info, %struct.header_info* %393, i32 0, i32 1 - store i64 0, i64* %394, align 8 - store i32 0, i32* %65, align 4 - br label %517 - -395: ; preds = %115 - %396 = load i8*, i8** %63, align 8 - %397 = load %struct.header_info*, %struct.header_info** %64, align 8 - store i8* %396, i8** %20, align 8 - store %struct.header_info* %397, %struct.header_info** %21, align 8 - %398 = load i8*, i8** %20, align 8 - %399 = bitcast [32 x i8]* %22 to i8* - %400 = load %struct.header_info*, %struct.header_info** %21, align 8 - store i8* %398, i8** %14, align 8 - store i64 32, i64* %15, align 8 - store i64 1, i64* %16, align 8 - store i8* %399, i8** %17, align 8 - store %struct.header_info* %400, %struct.header_info** %18, align 8 - %401 = load i8*, i8** %17, align 8 - %402 = load i8*, i8** %14, align 8 - %403 = load %struct.header_info*, %struct.header_info** %18, align 8 - %404 = getelementptr inbounds %struct.header_info, %struct.header_info* %403, i32 0, i32 1 - %405 = load i64, i64* %404, align 8 - %406 = getelementptr inbounds i8, i8* %402, i64 %405 - %407 = load i64, i64* %16, align 8 - %408 = load i64, i64* %15, align 8 - %409 = mul i64 %407, %408 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %401, i8* align 1 %406, i64 %409, i1 false) #7 - %410 = load i64, i64* %16, align 8 - %411 = load i64, i64* %15, align 8 +372: ; preds = %366 + %373 = load %struct.header_info*, %struct.header_info** %47, align 8 + %374 = getelementptr inbounds %struct.header_info, %struct.header_info* %373, i32 0, i32 2 + %375 = load i64, i64* %374, align 8 + %376 = load %struct.header_info*, %struct.header_info** %47, align 8 + %377 = getelementptr inbounds %struct.header_info, %struct.header_info* %376, i32 0, i32 4 + store i64 %375, i64* %377, align 8 + br label %378 + +378: ; preds = %372, %369 + %379 = load %struct.header_info*, %struct.header_info** %47, align 8 + %380 = getelementptr inbounds %struct.header_info, %struct.header_info* %379, i32 0, i32 5 + store i64 4, i64* %380, align 8 + store i32 0, i32* %45, align 4 + br label %382 + +381: ; preds = %365, %343, %328, %288, %180, %149 + store i32 -1, i32* %45, align 4 + br label %382 + +382: ; preds = %378, %381 + %383 = load i32, i32* %45, align 4 + store i32 %383, i32* %66, align 4 + br label %532 + +384: ; preds = %116 + %385 = load %struct.header_info*, %struct.header_info** %65, align 8 + store %struct.header_info* %385, %struct.header_info** %24, align 8 + %386 = load %struct.header_info*, %struct.header_info** %24, align 8 + %387 = getelementptr inbounds %struct.header_info, %struct.header_info* %386, i32 0, i32 4 + store i64 0, i64* %387, align 8 + %388 = load %struct.header_info*, %struct.header_info** %24, align 8 + %389 = getelementptr inbounds %struct.header_info, %struct.header_info* %388, i32 0, i32 2 + store i64 1, i64* %389, align 8 + %390 = load %struct.header_info*, %struct.header_info** %24, align 8 + %391 = getelementptr inbounds %struct.header_info, %struct.header_info* %390, i32 0, i32 3 + store i64 1, i64* %391, align 8 + %392 = load %struct.header_info*, %struct.header_info** %24, align 8 + %393 = getelementptr inbounds %struct.header_info, %struct.header_info* %392, i32 0, i32 6 + store i64 1, i64* %393, align 8 + %394 = load %struct.header_info*, %struct.header_info** %24, align 8 + %395 = getelementptr inbounds %struct.header_info, %struct.header_info* %394, i32 0, i32 5 + store i64 16, i64* %395, align 8 + %396 = load %struct.header_info*, %struct.header_info** %24, align 8 + %397 = getelementptr inbounds %struct.header_info, %struct.header_info* %396, i32 0, i32 1 + store i64 0, i64* %397, align 8 + store i32 0, i32* %66, align 4 + br label %532 + +398: ; preds = %116 + %399 = load i8*, i8** %64, align 8 + %400 = load %struct.header_info*, %struct.header_info** %65, align 8 + store i8* %399, i8** %21, align 8 + store %struct.header_info* %400, %struct.header_info** %22, align 8 + %401 = load i8*, i8** %21, align 8 + %402 = bitcast [32 x i8]* %23 to i8* + %403 = load %struct.header_info*, %struct.header_info** %22, align 8 + store i8* %401, i8** %15, align 8 + store i64 32, i64* %16, align 8 + store i64 1, i64* %17, align 8 + store i8* %402, i8** %18, align 8 + store %struct.header_info* %403, %struct.header_info** %19, align 8 + %404 = load i8*, i8** %18, align 8 + %405 = load i8*, i8** %15, align 8 + %406 = load %struct.header_info*, %struct.header_info** %19, align 8 + %407 = getelementptr inbounds %struct.header_info, %struct.header_info* %406, i32 0, i32 1 + %408 = load i64, i64* %407, align 8 + %409 = getelementptr inbounds i8, i8* %405, i64 %408 + %410 = load i64, i64* %17, align 8 + %411 = load i64, i64* %16, align 8 %412 = mul i64 %410, %411 - %413 = load %struct.header_info*, %struct.header_info** %18, align 8 - %414 = getelementptr inbounds %struct.header_info, %struct.header_info* %413, i32 0, i32 1 - %415 = load i64, i64* %414, align 8 - %416 = add i64 %415, %412 - store i64 %416, i64* %414, align 8 - %417 = load i64, i64* %16, align 8 - %418 = load i64, i64* %15, align 8 - %419 = mul i64 %417, %418 - %420 = icmp ne i64 %419, 32 - br i1 %420, label %421, label %424 - -421: ; preds = %395 - %422 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"??_C@_0CN@NEMBOFCA@?6?5?$FLERROR?$FNError?5when?5reading?5head@", i64 0, i64 0)) - %423 = sext i32 %422 to i64 - store i64 %423, i64* @"?order_gurantee3@@3_JA", align 8 - store i32 -1, i32* %19, align 4 - br label %435 - -424: ; preds = %395 - %425 = load %struct.header_info*, %struct.header_info** %21, align 8 - %426 = getelementptr inbounds %struct.header_info, %struct.header_info* %425, i32 0, i32 6 - store i64 2, i64* %426, align 8 - %427 = load %struct.header_info*, %struct.header_info** %21, align 8 - %428 = getelementptr inbounds %struct.header_info, %struct.header_info* %427, i32 0, i32 5 - store i64 5, i64* %428, align 8 - %429 = load %struct.header_info*, %struct.header_info** %21, align 8 - %430 = getelementptr inbounds %struct.header_info, %struct.header_info* %429, i32 0, i32 2 - store i64 1, i64* %430, align 8 - %431 = load %struct.header_info*, %struct.header_info** %21, align 8 - %432 = getelementptr inbounds %struct.header_info, %struct.header_info* %431, i32 0, i32 3 - store i64 1, i64* %432, align 8 - %433 = load %struct.header_info*, %struct.header_info** %21, align 8 - %434 = getelementptr inbounds %struct.header_info, %struct.header_info* %433, i32 0, i32 4 - store i64 0, i64* %434, align 8 - store i32 0, i32* %19, align 4 - br label %435 - -435: ; preds = %421, %424 - %436 = load i32, i32* %19, align 4 - store i32 %436, i32* %65, align 4 - br label %517 - -437: ; preds = %115 - %438 = getelementptr inbounds [8 x i8], [8 x i8]* %66, i64 0, i64 0 - %439 = load %struct.header_info*, %struct.header_info** %64, align 8 - store i8* %438, i8** %12, align 8 - store %struct.header_info* %439, %struct.header_info** %13, align 8 - %440 = load i8*, i8** %12, align 8 - %441 = bitcast i8* %440 to i16* - %442 = load i16, i16* %441, align 2 - %443 = zext i16 %442 to i64 - %444 = load %struct.header_info*, %struct.header_info** %13, align 8 - %445 = getelementptr inbounds %struct.header_info, %struct.header_info* %444, i32 0, i32 4 - store i64 %443, i64* %445, align 8 - %446 = load %struct.header_info*, %struct.header_info** %13, align 8 - %447 = getelementptr inbounds %struct.header_info, %struct.header_info* %446, i32 0, i32 3 - store i64 1, i64* %447, align 8 - %448 = load %struct.header_info*, %struct.header_info** %13, align 8 - %449 = getelementptr inbounds %struct.header_info, %struct.header_info* %448, i32 0, i32 2 - store i64 0, i64* %449, align 8 - %450 = load %struct.header_info*, %struct.header_info** %13, align 8 - %451 = getelementptr inbounds %struct.header_info, %struct.header_info* %450, i32 0, i32 6 - store i64 5, i64* %451, align 8 - %452 = load %struct.header_info*, %struct.header_info** %13, align 8 - %453 = getelementptr inbounds %struct.header_info, %struct.header_info* %452, i32 0, i32 5 - store i64 4, i64* %453, align 8 - %454 = load %struct.header_info*, %struct.header_info** %13, align 8 - %455 = getelementptr inbounds %struct.header_info, %struct.header_info* %454, i32 0, i32 1 - store i64 4, i64* %455, align 8 - store i32 0, i32* %65, align 4 - br label %517 - -456: ; preds = %115 - %457 = load i8*, i8** %63, align 8 - %458 = load %struct.header_info*, %struct.header_info** %64, align 8 - store i8* %457, i8** %10, align 8 - store %struct.header_info* %458, %struct.header_info** %11, align 8 - %459 = load i8*, i8** %10, align 8 - %460 = bitcast [32 x i8]* %22 to i8* - %461 = load %struct.header_info*, %struct.header_info** %11, align 8 - store i8* %459, i8** %4, align 8 - store i64 32, i64* %5, align 8 - store i64 1, i64* %6, align 8 - store i8* %460, i8** %7, align 8 - store %struct.header_info* %461, %struct.header_info** %8, align 8 - %462 = load i8*, i8** %7, align 8 - %463 = load i8*, i8** %4, align 8 - %464 = load %struct.header_info*, %struct.header_info** %8, align 8 - %465 = getelementptr inbounds %struct.header_info, %struct.header_info* %464, i32 0, i32 1 - %466 = load i64, i64* %465, align 8 - %467 = getelementptr inbounds i8, i8* %463, i64 %466 - %468 = load i64, i64* %6, align 8 - %469 = load i64, i64* %5, align 8 - %470 = mul i64 %468, %469 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %462, i8* align 1 %467, i64 %470, i1 false) #7 - %471 = load i64, i64* %6, align 8 - %472 = load i64, i64* %5, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %404, i8* align 1 %409, i64 %412, i1 false) #7 + %413 = load i64, i64* %17, align 8 + %414 = load i64, i64* %16, align 8 + %415 = mul i64 %413, %414 + %416 = load %struct.header_info*, %struct.header_info** %19, align 8 + %417 = getelementptr inbounds %struct.header_info, %struct.header_info* %416, i32 0, i32 1 + %418 = load i64, i64* %417, align 8 + %419 = add i64 %418, %415 + store i64 %419, i64* %417, align 8 + %420 = load i64, i64* %17, align 8 + %421 = load i64, i64* %16, align 8 + %422 = mul i64 %420, %421 + %423 = icmp ne i64 %422, 32 + br i1 %423, label %424, label %427 + +424: ; preds = %398 + %425 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"??_C@_0CN@NEMBOFCA@?6?5?$FLERROR?$FNError?5when?5reading?5head@", i64 0, i64 0)) + %426 = sext i32 %425 to i64 + store i64 %426, i64* @"?order_gurantee3@@3_JA", align 8 + store i32 -1, i32* %20, align 4 + br label %438 + +427: ; preds = %398 + %428 = load %struct.header_info*, %struct.header_info** %22, align 8 + %429 = getelementptr inbounds %struct.header_info, %struct.header_info* %428, i32 0, i32 6 + store i64 2, i64* %429, align 8 + %430 = load %struct.header_info*, %struct.header_info** %22, align 8 + %431 = getelementptr inbounds %struct.header_info, %struct.header_info* %430, i32 0, i32 5 + store i64 5, i64* %431, align 8 + %432 = load %struct.header_info*, %struct.header_info** %22, align 8 + %433 = getelementptr inbounds %struct.header_info, %struct.header_info* %432, i32 0, i32 2 + store i64 1, i64* %433, align 8 + %434 = load %struct.header_info*, %struct.header_info** %22, align 8 + %435 = getelementptr inbounds %struct.header_info, %struct.header_info* %434, i32 0, i32 3 + store i64 1, i64* %435, align 8 + %436 = load %struct.header_info*, %struct.header_info** %22, align 8 + %437 = getelementptr inbounds %struct.header_info, %struct.header_info* %436, i32 0, i32 4 + store i64 0, i64* %437, align 8 + store i32 0, i32* %20, align 4 + br label %438 + +438: ; preds = %424, %427 + %439 = load i32, i32* %20, align 4 + store i32 %439, i32* %66, align 4 + br label %532 + +440: ; preds = %116 + %441 = getelementptr inbounds [8 x i8], [8 x i8]* %67, i64 0, i64 0 + %442 = load %struct.header_info*, %struct.header_info** %65, align 8 + store i8* %441, i8** %13, align 8 + store %struct.header_info* %442, %struct.header_info** %14, align 8 + %443 = load i8*, i8** %13, align 8 + %444 = bitcast i8* %443 to i16* + %445 = load i16, i16* %444, align 2 + %446 = zext i16 %445 to i64 + %447 = load %struct.header_info*, %struct.header_info** %14, align 8 + %448 = getelementptr inbounds %struct.header_info, %struct.header_info* %447, i32 0, i32 4 + store i64 %446, i64* %448, align 8 + %449 = load %struct.header_info*, %struct.header_info** %14, align 8 + %450 = getelementptr inbounds %struct.header_info, %struct.header_info* %449, i32 0, i32 3 + store i64 1, i64* %450, align 8 + %451 = load %struct.header_info*, %struct.header_info** %14, align 8 + %452 = getelementptr inbounds %struct.header_info, %struct.header_info* %451, i32 0, i32 2 + store i64 0, i64* %452, align 8 + %453 = load %struct.header_info*, %struct.header_info** %14, align 8 + %454 = getelementptr inbounds %struct.header_info, %struct.header_info* %453, i32 0, i32 6 + store i64 5, i64* %454, align 8 + %455 = load %struct.header_info*, %struct.header_info** %14, align 8 + %456 = getelementptr inbounds %struct.header_info, %struct.header_info* %455, i32 0, i32 5 + store i64 4, i64* %456, align 8 + %457 = load %struct.header_info*, %struct.header_info** %14, align 8 + %458 = getelementptr inbounds %struct.header_info, %struct.header_info* %457, i32 0, i32 1 + store i64 4, i64* %458, align 8 + store i32 0, i32* %66, align 4 + br label %532 + +459: ; preds = %116 + %460 = load i8*, i8** %64, align 8 + %461 = load %struct.header_info*, %struct.header_info** %65, align 8 + store i8* %460, i8** %11, align 8 + store %struct.header_info* %461, %struct.header_info** %12, align 8 + %462 = load i8*, i8** %11, align 8 + %463 = bitcast [32 x i8]* %23 to i8* + %464 = load %struct.header_info*, %struct.header_info** %12, align 8 + store i8* %462, i8** %5, align 8 + store i64 32, i64* %6, align 8 + store i64 1, i64* %7, align 8 + store i8* %463, i8** %8, align 8 + store %struct.header_info* %464, %struct.header_info** %9, align 8 + %465 = load i8*, i8** %8, align 8 + %466 = load i8*, i8** %5, align 8 + %467 = load %struct.header_info*, %struct.header_info** %9, align 8 + %468 = getelementptr inbounds %struct.header_info, %struct.header_info* %467, i32 0, i32 1 + %469 = load i64, i64* %468, align 8 + %470 = getelementptr inbounds i8, i8* %466, i64 %469 + %471 = load i64, i64* %7, align 8 + %472 = load i64, i64* %6, align 8 %473 = mul i64 %471, %472 - %474 = load %struct.header_info*, %struct.header_info** %8, align 8 - %475 = getelementptr inbounds %struct.header_info, %struct.header_info* %474, i32 0, i32 1 - %476 = load i64, i64* %475, align 8 - %477 = add i64 %476, %473 - store i64 %477, i64* %475, align 8 - %478 = load i64, i64* %6, align 8 - %479 = load i64, i64* %5, align 8 - %480 = mul i64 %478, %479 - %481 = icmp ne i64 %480, 32 - br i1 %481, label %482, label %485 - -482: ; preds = %456 - %483 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"??_C@_0CN@NEMBOFCA@?6?5?$FLERROR?$FNError?5when?5reading?5head@", i64 0, i64 0)) - %484 = sext i32 %483 to i64 - store i64 %484, i64* @"?order_gurantee3@@3_JA", align 8 - store i32 -1, i32* %9, align 4 - br label %496 - -485: ; preds = %456 - %486 = load %struct.header_info*, %struct.header_info** %11, align 8 - %487 = getelementptr inbounds %struct.header_info, %struct.header_info* %486, i32 0, i32 6 - store i64 4, i64* %487, align 8 - %488 = load %struct.header_info*, %struct.header_info** %11, align 8 - %489 = getelementptr inbounds %struct.header_info, %struct.header_info* %488, i32 0, i32 5 - store i64 10, i64* %489, align 8 - %490 = load %struct.header_info*, %struct.header_info** %11, align 8 - %491 = getelementptr inbounds %struct.header_info, %struct.header_info* %490, i32 0, i32 2 - store i64 1, i64* %491, align 8 - %492 = load %struct.header_info*, %struct.header_info** %11, align 8 - %493 = getelementptr inbounds %struct.header_info, %struct.header_info* %492, i32 0, i32 3 - store i64 1, i64* %493, align 8 - %494 = load %struct.header_info*, %struct.header_info** %11, align 8 - %495 = getelementptr inbounds %struct.header_info, %struct.header_info* %494, i32 0, i32 4 - store i64 0, i64* %495, align 8 - store i32 0, i32* %9, align 4 - br label %496 - -496: ; preds = %482, %485 - %497 = load i32, i32* %9, align 4 - store i32 %497, i32* %65, align 4 - br label %517 - -498: ; preds = %115 - %499 = load %struct.header_info*, %struct.header_info** %64, align 8 - store %struct.header_info* %499, %struct.header_info** %3, align 8 - %500 = load %struct.header_info*, %struct.header_info** %3, align 8 - %501 = getelementptr inbounds %struct.header_info, %struct.header_info* %500, i32 0, i32 4 - store i64 0, i64* %501, align 8 - %502 = load %struct.header_info*, %struct.header_info** %3, align 8 - %503 = getelementptr inbounds %struct.header_info, %struct.header_info* %502, i32 0, i32 2 - store i64 1, i64* %503, align 8 - %504 = load %struct.header_info*, %struct.header_info** %3, align 8 - %505 = getelementptr inbounds %struct.header_info, %struct.header_info* %504, i32 0, i32 3 - store i64 1, i64* %505, align 8 - %506 = load %struct.header_info*, %struct.header_info** %3, align 8 - %507 = getelementptr inbounds %struct.header_info, %struct.header_info* %506, i32 0, i32 6 - store i64 6, i64* %507, align 8 - %508 = load %struct.header_info*, %struct.header_info** %3, align 8 - %509 = getelementptr inbounds %struct.header_info, %struct.header_info* %508, i32 0, i32 5 - store i64 8, i64* %509, align 8 - %510 = load %struct.header_info*, %struct.header_info** %3, align 8 - %511 = getelementptr inbounds %struct.header_info, %struct.header_info* %510, i32 0, i32 1 - store i64 0, i64* %511, align 8 - store i32 0, i32* %65, align 4 - br label %517 - -512: ; preds = %115 - %513 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([93 x i8], [93 x i8]* @"??_C@_0FN@DABIDPEO@?6?5?$FLERROR?$FNUnidentified?5time?9tag?5f@", i64 0, i64 0)) - %514 = sext i32 %513 to i64 - store i64 %514, i64* @"?order_gurantee3@@3_JA", align 8 - store i32 -2, i32* %65, align 4 - %515 = load %struct.header_info*, %struct.header_info** %64, align 8 - %516 = getelementptr inbounds %struct.header_info, %struct.header_info* %515, i32 0, i32 5 - store i64 1, i64* %516, align 8 - br label %517 - -517: ; preds = %115, %512, %498, %496, %437, %435, %381, %379 - %518 = load %struct.header_info*, %struct.header_info** %64, align 8 - %519 = getelementptr inbounds %struct.header_info, %struct.header_info* %518, i32 0, i32 1 - %520 = load i64, i64* %519, align 8 - %521 = load %struct.header_info*, %struct.header_info** %64, align 8 - %522 = getelementptr inbounds %struct.header_info, %struct.header_info* %521, i32 0, i32 0 - store i64 %520, i64* %522, align 8 - %523 = load i32, i32* %65, align 4 - store i32 %523, i32* %62, align 4 - br label %524 - -524: ; preds = %517, %92 - %525 = load i32, i32* %62, align 4 - ret i32 %525 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %465, i8* align 1 %470, i64 %473, i1 false) #7 + %474 = load i64, i64* %7, align 8 + %475 = load i64, i64* %6, align 8 + %476 = mul i64 %474, %475 + %477 = load %struct.header_info*, %struct.header_info** %9, align 8 + %478 = getelementptr inbounds %struct.header_info, %struct.header_info* %477, i32 0, i32 1 + %479 = load i64, i64* %478, align 8 + %480 = add i64 %479, %476 + store i64 %480, i64* %478, align 8 + %481 = load i64, i64* %7, align 8 + %482 = load i64, i64* %6, align 8 + %483 = mul i64 %481, %482 + %484 = icmp ne i64 %483, 32 + br i1 %484, label %485, label %488 + +485: ; preds = %459 + %486 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"??_C@_0CN@NEMBOFCA@?6?5?$FLERROR?$FNError?5when?5reading?5head@", i64 0, i64 0)) + %487 = sext i32 %486 to i64 + store i64 %487, i64* @"?order_gurantee3@@3_JA", align 8 + store i32 -1, i32* %10, align 4 + br label %499 + +488: ; preds = %459 + %489 = load %struct.header_info*, %struct.header_info** %12, align 8 + %490 = getelementptr inbounds %struct.header_info, %struct.header_info* %489, i32 0, i32 6 + store i64 4, i64* %490, align 8 + %491 = load %struct.header_info*, %struct.header_info** %12, align 8 + %492 = getelementptr inbounds %struct.header_info, %struct.header_info* %491, i32 0, i32 5 + store i64 10, i64* %492, align 8 + %493 = load %struct.header_info*, %struct.header_info** %12, align 8 + %494 = getelementptr inbounds %struct.header_info, %struct.header_info* %493, i32 0, i32 2 + store i64 1, i64* %494, align 8 + %495 = load %struct.header_info*, %struct.header_info** %12, align 8 + %496 = getelementptr inbounds %struct.header_info, %struct.header_info* %495, i32 0, i32 3 + store i64 1, i64* %496, align 8 + %497 = load %struct.header_info*, %struct.header_info** %12, align 8 + %498 = getelementptr inbounds %struct.header_info, %struct.header_info* %497, i32 0, i32 4 + store i64 0, i64* %498, align 8 + store i32 0, i32* %10, align 4 + br label %499 + +499: ; preds = %485, %488 + %500 = load i32, i32* %10, align 4 + store i32 %500, i32* %66, align 4 + br label %532 + +501: ; preds = %116 + %502 = load %struct.header_info*, %struct.header_info** %65, align 8 + store %struct.header_info* %502, %struct.header_info** %4, align 8 + %503 = load %struct.header_info*, %struct.header_info** %4, align 8 + %504 = getelementptr inbounds %struct.header_info, %struct.header_info* %503, i32 0, i32 6 + store i64 4, i64* %504, align 8 + %505 = load %struct.header_info*, %struct.header_info** %4, align 8 + %506 = getelementptr inbounds %struct.header_info, %struct.header_info* %505, i32 0, i32 5 + store i64 10, i64* %506, align 8 + %507 = load %struct.header_info*, %struct.header_info** %4, align 8 + %508 = getelementptr inbounds %struct.header_info, %struct.header_info* %507, i32 0, i32 2 + store i64 1, i64* %508, align 8 + %509 = load %struct.header_info*, %struct.header_info** %4, align 8 + %510 = getelementptr inbounds %struct.header_info, %struct.header_info* %509, i32 0, i32 3 + store i64 1, i64* %510, align 8 + %511 = load %struct.header_info*, %struct.header_info** %4, align 8 + %512 = getelementptr inbounds %struct.header_info, %struct.header_info* %511, i32 0, i32 4 + store i64 0, i64* %512, align 8 + store i32 0, i32* %66, align 4 + br label %532 + +513: ; preds = %116 + %514 = load %struct.header_info*, %struct.header_info** %65, align 8 + store %struct.header_info* %514, %struct.header_info** %3, align 8 + %515 = load %struct.header_info*, %struct.header_info** %3, align 8 + %516 = getelementptr inbounds %struct.header_info, %struct.header_info* %515, i32 0, i32 4 + store i64 0, i64* %516, align 8 + %517 = load %struct.header_info*, %struct.header_info** %3, align 8 + %518 = getelementptr inbounds %struct.header_info, %struct.header_info* %517, i32 0, i32 2 + store i64 1, i64* %518, align 8 + %519 = load %struct.header_info*, %struct.header_info** %3, align 8 + %520 = getelementptr inbounds %struct.header_info, %struct.header_info* %519, i32 0, i32 3 + store i64 1, i64* %520, align 8 + %521 = load %struct.header_info*, %struct.header_info** %3, align 8 + %522 = getelementptr inbounds %struct.header_info, %struct.header_info* %521, i32 0, i32 6 + store i64 6, i64* %522, align 8 + %523 = load %struct.header_info*, %struct.header_info** %3, align 8 + %524 = getelementptr inbounds %struct.header_info, %struct.header_info* %523, i32 0, i32 5 + store i64 8, i64* %524, align 8 + %525 = load %struct.header_info*, %struct.header_info** %3, align 8 + %526 = getelementptr inbounds %struct.header_info, %struct.header_info* %525, i32 0, i32 1 + store i64 0, i64* %526, align 8 + store i32 0, i32* %66, align 4 + br label %532 + +527: ; preds = %116 + %528 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([93 x i8], [93 x i8]* @"??_C@_0FN@DABIDPEO@?6?5?$FLERROR?$FNUnidentified?5time?9tag?5f@", i64 0, i64 0)) + %529 = sext i32 %528 to i64 + store i64 %529, i64* @"?order_gurantee3@@3_JA", align 8 + store i32 -2, i32* %66, align 4 + %530 = load %struct.header_info*, %struct.header_info** %65, align 8 + %531 = getelementptr inbounds %struct.header_info, %struct.header_info* %530, i32 0, i32 5 + store i64 1, i64* %531, align 8 + br label %532 + +532: ; preds = %116, %527, %513, %501, %499, %440, %438, %384, %382 + %533 = load %struct.header_info*, %struct.header_info** %65, align 8 + %534 = getelementptr inbounds %struct.header_info, %struct.header_info* %533, i32 0, i32 1 + %535 = load i64, i64* %534, align 8 + %536 = load %struct.header_info*, %struct.header_info** %65, align 8 + %537 = getelementptr inbounds %struct.header_info, %struct.header_info* %536, i32 0, i32 0 + store i64 %535, i64* %537, align 8 + %538 = load i32, i32* %66, align 4 + store i32 %538, i32* %63, align 4 + br label %539 + +539: ; preds = %532, %93 + %540 = load i32, i32* %63, align 4 + ret i32 %540 } ; Function Attrs: nounwind @@ -1878,13 +1943,13 @@ define linkonce_odr dso_local i32 @_vfwprintf_l(%struct._iobuf* %0, i16* %1, %st declare dso_local i32 @__stdio_common_vfwprintf(i64, %struct._iobuf*, i16*, %struct.__crt_locale_pointers*, i8*) #5 -attributes #0 = { alwaysinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #0 = { alwaysinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } -attributes #2 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #3 = { alwaysinline uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #4 = { nobuiltin noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #5 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #6 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #2 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #3 = { alwaysinline uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #4 = { nobuiltin noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #5 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #6 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #7 = { nounwind } !llvm.linker.options = !{!0} @@ -1894,4 +1959,4 @@ attributes #7 = { nounwind } !0 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"} !1 = !{i32 1, !"wchar_size", i32 2} !2 = !{i32 7, !"PIC Level", i32 2} -!3 = !{!"clang version 10.0.0 "} +!3 = !{!"clang version 11.0.1"} diff --git a/etabackend/ll/nt/PARSE_TimeTags.ll b/etabackend/ll/nt/PARSE_TimeTags.ll index bc2bebb..23d12c3 100644 --- a/etabackend/ll/nt/PARSE_TimeTags.ll +++ b/etabackend/ll/nt/PARSE_TimeTags.ll @@ -1,7 +1,7 @@ ; ModuleID = 'PARSE_TimeTags.cpp' source_filename = "PARSE_TimeTags.cpp" target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-pc-windows-msvc19.26.28806" +target triple = "x86_64-pc-windows-msvc19.29.30148" %struct.ttf_reader = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i8* } %union.anon = type { i32 } @@ -46,7 +46,7 @@ $"?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA" = comdat any @"?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA" = linkonce_odr dso_local global i64 0, comdat, align 8 ; Function Attrs: alwaysinline uwtable -define dso_local void @ProcessPHT2(%struct.ttf_reader* %0, i32 %1, i64* dereferenceable(8) %2, i8* dereferenceable(1) %3, i64* dereferenceable(8) %4) #0 { +define dso_local void @ProcessPHT2(%struct.ttf_reader* %0, i32 %1, i64* nonnull align 8 dereferenceable(8) %2, i8* nonnull align 1 dereferenceable(1) %3, i64* nonnull align 8 dereferenceable(8) %4) #0 { %6 = alloca i64*, align 8 %7 = alloca i8*, align 8 %8 = alloca i64*, align 8 @@ -207,7 +207,7 @@ define linkonce_odr dso_local i32 @printf(i8* %0, ...) #2 comdat { } ; Function Attrs: alwaysinline nounwind uwtable -define dso_local void @ProcessHHT2(%struct.ttf_reader* %0, i32 %1, i32 %2, i64* dereferenceable(8) %3, i8* dereferenceable(1) %4, i64* dereferenceable(8) %5) #3 { +define dso_local void @ProcessHHT2(%struct.ttf_reader* %0, i32 %1, i32 %2, i64* nonnull align 8 dereferenceable(8) %3, i8* nonnull align 1 dereferenceable(1) %4, i64* nonnull align 8 dereferenceable(8) %5) #3 { %7 = alloca i64*, align 8 %8 = alloca i8*, align 8 %9 = alloca i64*, align 8 @@ -418,7 +418,7 @@ define dso_local void @ProcessHHT2(%struct.ttf_reader* %0, i32 %1, i32 %2, i64* } ; Function Attrs: alwaysinline uwtable -define dso_local void @ProcessPHT3(%struct.ttf_reader* %0, i32 %1, i64* dereferenceable(8) %2, i8* dereferenceable(1) %3, i64* dereferenceable(8) %4) #0 { +define dso_local void @ProcessPHT3(%struct.ttf_reader* %0, i32 %1, i64* nonnull align 8 dereferenceable(8) %2, i8* nonnull align 1 dereferenceable(1) %3, i64* nonnull align 8 dereferenceable(8) %4) #0 { %6 = alloca i64*, align 8 %7 = alloca i8*, align 8 %8 = alloca i64*, align 8 @@ -579,7 +579,7 @@ define dso_local void @ProcessPHT3(%struct.ttf_reader* %0, i32 %1, i64* derefere } ; Function Attrs: alwaysinline nounwind uwtable -define dso_local void @ProcessHHT3(%struct.ttf_reader* %0, i32 %1, i32 %2, i64* dereferenceable(8) %3, i8* dereferenceable(1) %4, i64* dereferenceable(8) %5) #3 { +define dso_local void @ProcessHHT3(%struct.ttf_reader* %0, i32 %1, i32 %2, i64* nonnull align 8 dereferenceable(8) %3, i8* nonnull align 1 dereferenceable(1) %4, i64* nonnull align 8 dereferenceable(8) %5) #3 { %7 = alloca i64*, align 8 %8 = alloca i8*, align 8 %9 = alloca i64*, align 8 @@ -892,9 +892,11 @@ define dso_local i64 @FileReader_pop_event(%struct.ttf_reader* %0, i8 %1, i8* %2 i64 16843268, label %598 i64 66053, label %598 i64 66054, label %598 + i64 66055, label %598 i64 16843524, label %745 i64 66309, label %745 i64 66310, label %745 + i64 66311, label %745 i64 4, label %871 i64 1, label %896 i64 2, label %921 @@ -1552,7 +1554,7 @@ define dso_local i64 @FileReader_pop_event(%struct.ttf_reader* %0, i8 %1, i8* %2 597: ; preds = %559, %560 br label %1105 -598: ; preds = %105, %105, %105 +598: ; preds = %105, %105, %105, %105 %599 = load %struct.ttf_reader*, %struct.ttf_reader** %61, align 8 %600 = getelementptr inbounds %struct.ttf_reader, %struct.ttf_reader* %599, i32 0, i32 12 %601 = load i32, i32* %67, align 4 @@ -1754,7 +1756,7 @@ define dso_local i64 @FileReader_pop_event(%struct.ttf_reader* %0, i8 %1, i8* %2 744: ; preds = %715, %716 br label %1105 -745: ; preds = %105, %105, %105 +745: ; preds = %105, %105, %105, %105 %746 = load %struct.ttf_reader*, %struct.ttf_reader** %61, align 8 %747 = getelementptr inbounds %struct.ttf_reader, %struct.ttf_reader* %746, i32 0, i32 12 %748 = load i32, i32* %67, align 4 @@ -2319,14 +2321,14 @@ define linkonce_odr dso_local i64* @__local_stdio_printf_options() #7 comdat { ret i64* @"?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA" } -attributes #0 = { alwaysinline uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #0 = { alwaysinline uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { nounwind readnone speculatable willreturn } -attributes #2 = { nobuiltin noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #3 = { alwaysinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #2 = { nobuiltin noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #3 = { alwaysinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #4 = { nounwind } -attributes #5 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #6 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #7 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #5 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #6 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #7 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } !llvm.linker.options = !{!0} !llvm.module.flags = !{!1, !2} @@ -2335,4 +2337,4 @@ attributes #7 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sq !0 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"} !1 = !{i32 1, !"wchar_size", i32 2} !2 = !{i32 7, !"PIC Level", i32 2} -!3 = !{!"clang version 10.0.0 "} +!3 = !{!"clang version 11.0.1"}