From dbe62b2a7cfc0e203ffa762cb61b8317e88fd858 Mon Sep 17 00:00:00 2001 From: RealTimeChris <40668522+RealTimeChris@users.noreply.github.com> Date: Sun, 15 Dec 2024 08:28:03 -0500 Subject: [PATCH] Testing new cache-clearing implementation. --- .github/workflows/CLANG-MacOS-XCode.yml | 9 +- .github/workflows/CLANG-MacOS.yml | 9 +- .github/workflows/CLANG-Ubuntu.yml | 8 +- .github/workflows/GCC-Ubuntu.yml | 10 +- .github/workflows/MSVC-Windows.yml | 7 +- Assembly/main.cod | 1276 ++++++++--------- Benchmark/CMakeLists.txt | 217 +-- Benchmark/RandomGenerators.hpp | 33 +- Benchmark/main.cpp | 81 +- CMake/GetCommitHash.cmake | 14 + CMakeLists.txt | 20 +- Include/BnchSwt/BenchmarkSuite.hpp | 369 ++--- Include/BnchSwt/CacheClearer.hpp | 261 ++-- Include/BnchSwt/Config.hpp | 41 +- .../BnchSwt/Counters/AppleArmPerfEvents.hpp | 423 +++--- Include/BnchSwt/Counters/LinuxPerfEvents.hpp | 100 +- .../BnchSwt/Counters/WindowsPerfEvents.hpp | 33 +- Include/BnchSwt/DoNotOptimize.hpp | 45 +- Include/BnchSwt/EventCounter.hpp | 113 +- Include/BnchSwt/FileLoader.hpp | 71 + Include/BnchSwt/Metrics.hpp | 183 +++ Include/BnchSwt/Printable.hpp | 549 +++---- Include/BnchSwt/StringLiteral.hpp | 116 +- ReadMe.md | 146 +- 24 files changed, 2224 insertions(+), 1910 deletions(-) create mode 100644 CMake/GetCommitHash.cmake create mode 100644 Include/BnchSwt/FileLoader.hpp create mode 100644 Include/BnchSwt/Metrics.hpp diff --git a/.github/workflows/CLANG-MacOS-XCode.yml b/.github/workflows/CLANG-MacOS-XCode.yml index 244a5fc1..0898e590 100644 --- a/.github/workflows/CLANG-MacOS-XCode.yml +++ b/.github/workflows/CLANG-MacOS-XCode.yml @@ -4,8 +4,7 @@ on: workflow_dispatch: push: branches: - - main - - dev + - '*' jobs: Build: @@ -26,7 +25,7 @@ jobs: - name: Configure CMake. run: | - sudo cmake -S . -B ./Build -G Xcode -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ -DBENCH_TYPE=BENCHMARK + sudo cmake -S . -B ./Build -G Xcode -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ -DBENCH_TYPE=BENCHMARK -DGENERATE_ASSEMBLY=TRUE - name: Build the Test run: | @@ -43,7 +42,7 @@ jobs: - name: Run the Test run: | - sudo chmod +x /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe - sudo /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe + sudo chmod +x /usr/local/bin/BenchmarkExe + sudo /usr/local/bin/BenchmarkExe continue-on-error: true \ No newline at end of file diff --git a/.github/workflows/CLANG-MacOS.yml b/.github/workflows/CLANG-MacOS.yml index 65f50c6f..2484cc55 100644 --- a/.github/workflows/CLANG-MacOS.yml +++ b/.github/workflows/CLANG-MacOS.yml @@ -4,8 +4,7 @@ on: workflow_dispatch: push: branches: - - main - - dev + - '*' jobs: Build: @@ -25,7 +24,7 @@ jobs: - name: Configure CMake. run: | - cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ -DBENCH_TYPE=BENCHMARK + cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ -DBENCH_TYPE=BENCHMARK -DGENERATE_ASSEMBLY=TRUE - name: Build the Test run: | @@ -42,7 +41,7 @@ jobs: - name: Run the Test run: | - sudo chmod +x /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe - sudo /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe + sudo chmod +x /usr/local/bin/BenchmarkExe + sudo /usr/local/bin/BenchmarkExe continue-on-error: true \ No newline at end of file diff --git a/.github/workflows/CLANG-Ubuntu.yml b/.github/workflows/CLANG-Ubuntu.yml index e94e4b94..aba83b5c 100644 --- a/.github/workflows/CLANG-Ubuntu.yml +++ b/.github/workflows/CLANG-Ubuntu.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - main + - '*' jobs: Build: @@ -27,7 +27,7 @@ jobs: - name: Configure CMake run: | - cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/usr/bin/clang++-20 -DBENCH_TYPE=BENCHMARK + cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/usr/bin/clang++-20 -DBENCH_TYPE=BENCHMARK -DGENERATE_ASSEMBLY=TRUE - name: Build the Test run: | @@ -44,6 +44,6 @@ jobs: - name: Run the Test run: | - sudo chmod +x /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe - sudo /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe + sudo chmod +x /usr/local/bin/BenchmarkExe + sudo /usr/local/bin/BenchmarkExe continue-on-error: true diff --git a/.github/workflows/GCC-Ubuntu.yml b/.github/workflows/GCC-Ubuntu.yml index f3ef7b0e..b68879e3 100644 --- a/.github/workflows/GCC-Ubuntu.yml +++ b/.github/workflows/GCC-Ubuntu.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - main + - '*' jobs: Build: @@ -22,11 +22,11 @@ jobs: run: | sudo apt update && sudo apt upgrade sudo apt-get install build-essential - sudo apt-get install g++-12 + sudo apt-get install g++-14 - name: Configure CMake run: | - cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/usr/bin/g++-12 -DBENCH_TYPE=BENCHMARK + cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/usr/bin/g++-12 -DBENCH_TYPE=BENCHMARK -DGENERATE_ASSEMBLY=TRUE - name: Build the Test run: | @@ -43,6 +43,6 @@ jobs: - name: Run the Test run: | - sudo chmod +x /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe - sudo /usr/local/Tests/${{matrix.build_type}}/BenchmarkExe + sudo chmod +x /usr/local/bin/BenchmarkExe + sudo /usr/local/bin/BenchmarkExe continue-on-error: true \ No newline at end of file diff --git a/.github/workflows/MSVC-Windows.yml b/.github/workflows/MSVC-Windows.yml index d4dedf49..40b62dd5 100644 --- a/.github/workflows/MSVC-Windows.yml +++ b/.github/workflows/MSVC-Windows.yml @@ -4,8 +4,7 @@ on: workflow_dispatch: push: branches: - - main - - dev + - '*' jobs: Build: @@ -27,7 +26,7 @@ jobs: - name: Configure CMake run: | - cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBENCH_TYPE=BENCHMARK + cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBENCH_TYPE=BENCHMARK -DGENERATE_ASSEMBLY=TRUE - name: Build the Test run: | @@ -38,7 +37,7 @@ jobs: cmake --install ./Build --config=${{matrix.build_type}} - name: Run the Test - working-directory: C:/Program Files (x86)/BenchmarkSuite/Tests/${{matrix.build_type}}/ + working-directory: "C:/Program Files (x86)/BenchmarkSuite/bin/" run: | ./BenchmarkExe.exe continue-on-error: true diff --git a/Assembly/main.cod b/Assembly/main.cod index 01fc3b37..e6527579 100644 --- a/Assembly/main.cod +++ b/Assembly/main.cod @@ -1730,17 +1730,17 @@ PUBLIC ?fpclassify@@YAHN@Z ; fpclassify PUBLIC ?fpclassify@@YAHO@Z ; fpclassify PUBLIC fabsl PUBLIC frexpl -PUBLIC ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy -PUBLIC ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move -PUBLIC ?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Char_traits::assign -PUBLIC ?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Char_traits::assign -PUBLIC ?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z ; std::_Narrow_char_traits::compare -PUBLIC ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length -PUBLIC ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign -PUBLIC ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign -PUBLIC ?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ; std::_Narrow_char_traits::to_int_type -PUBLIC ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type -PUBLIC ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof +PUBLIC ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy +PUBLIC ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move +PUBLIC ?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Char_traits::assign +PUBLIC ?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Char_traits::assign +PUBLIC ?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z ; std::_Narrow_char_traits::compare +PUBLIC ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length +PUBLIC ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign +PUBLIC ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign +PUBLIC ?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ; std::_Narrow_char_traits::to_int_type +PUBLIC ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type +PUBLIC ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof PUBLIC ??0?$basic_string_view@DU?$char_traits@D@std@@@std@@QEAA@QEBD_K@Z ; std::basic_string_view >::basic_string_view > PUBLIC ?size@?$basic_string_view@DU?$char_traits@D@std@@@std@@QEBA_KXZ ; std::basic_string_view >::size PUBLIC ?data@?$basic_string_view@DU?$char_traits@D@std@@@std@@QEBAPEBDXZ ; std::basic_string_view >::data @@ -1989,7 +1989,7 @@ PUBLIC ?elapsedNs@event_count@bnch_swt@@QEBANXZ ; bnch_swt::event_count::elapsed PUBLIC ?cycles@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::cycles PUBLIC ?instructions@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::instructions PUBLIC ?branches@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::branches -PUBLIC ?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::missedBranches +PUBLIC ?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::branchMisses PUBLIC ?bytesProcessed@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::bytesProcessed PUBLIC ??4event_count@bnch_swt@@QEAAAEAU01@AEBU01@@Z ; bnch_swt::event_count::operator= PUBLIC ??0event_count@bnch_swt@@QEAA@AEBU01@@Z ; bnch_swt::event_count::event_count @@ -2097,7 +2097,7 @@ PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@Uevent_count@bnch_swt@@@std@@ PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@Uevent_count@bnch_swt@@@std@@V?$_Vector_val@U?$_Simple_types@Uevent_count@bnch_swt@@@std@@@2@$00@std@@QEBAAEBV?$allocator@Uevent_count@bnch_swt@@@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first PUBLIC ?count@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEBAMXZ ; std::chrono::duration >::count PUBLIC ??$duration_cast@V?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@_JU?$ratio@$00$0DLJKMKAA@@3@$0A@@chrono@std@@YA?AV?$duration@MU?$ratio@$00$0DOI@@std@@@01@AEBV?$duration@_JU?$ratio@$00$0DLJKMKAA@@std@@@01@@Z ; std::chrono::duration_cast >,__int64,std::ratio<1,1000000000>,0> -PUBLIC ??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z ; std::chrono::duration >::duration > +PUBLIC ??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z ; std::chrono::duration >::duration > PUBLIC ??$?__MMU?$ratio@$00$0DOI@@std@@MU01@@chrono@std@@YA?A_PAEBV?$duration@MU?$ratio@$00$0DOI@@std@@@01@0@Z ; std::chrono::operator<=>,float,std::ratio<1,1000> > PUBLIC ??0?$allocator@Uperformance_metrics@bnch_swt@@@std@@QEAA@XZ ; std::allocator::allocator PUBLIC ?deallocate@?$allocator@Uperformance_metrics@bnch_swt@@@std@@QEAAXQEAUperformance_metrics@bnch_swt@@_K@Z ; std::allocator::deallocate @@ -2143,33 +2143,33 @@ PUBLIC ?_Get_max_bucket_size@?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@ PUBLIC ??R?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z ; std::equal_to,std::allocator > >::operator() PUBLIC ?_Get_first@?$_Compressed_pair@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@M$00@std@@QEBAAEBU?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > >,float,1>::_Get_first PUBLIC ?_Get_first@?$_Compressed_pair@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@V?$_Compressed_pair@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@M$00@2@$00@std@@QEBAAEBU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > >,std::_Compressed_pair,std::allocator > >,float,1>,1>::_Get_first -PUBLIC ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ ; std::allocator,std::allocator > const ,unsigned int> >::allocator,std::allocator > const ,unsigned int> > -PUBLIC ??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z ; std::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0>::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> -PUBLIC ?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int>,void *> >::deallocate -PUBLIC ?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocate -PUBLIC ?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::deallocate -PUBLIC ??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > > -PUBLIC ??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::~list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > > -PUBLIC ?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Unchecked_end -PUBLIC ?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Tidy -PUBLIC ?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Alloc_sentinel_and_proxy -PUBLIC ?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Getal -PUBLIC ??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ ; std::_List_val,std::allocator > const ,unsigned int> > >::_List_val,std::allocator > const ,unsigned int> > > -PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Get_first -PUBLIC ??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> > -PUBLIC ?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Max_bucket_size -PUBLIC ?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int> > > > >::deallocate -PUBLIC ?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocate -PUBLIC ?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::size -PUBLIC ?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::capacity -PUBLIC ?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Assign_grow -PUBLIC ?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Tidy -PUBLIC ??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int> > > > > > -PUBLIC ??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Vector_val,std::allocator > const ,unsigned int> > > > > >::_Vector_val,std::allocator > const ,unsigned int> > > > > > -PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Get_first -PUBLIC ??1?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@QEAA@XZ ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::~_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> > -PUBLIC ??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > > -PUBLIC ??1?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >::~unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > > +PUBLIC ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ ; std::allocator,std::allocator > const ,unsigned int32_t> >::allocator,std::allocator > const ,unsigned int32_t> > +PUBLIC ??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z ; std::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0>::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> +PUBLIC ?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::deallocate +PUBLIC ?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocate +PUBLIC ?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::deallocate +PUBLIC ??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > > +PUBLIC ??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::~list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > > +PUBLIC ?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Unchecked_end +PUBLIC ?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Tidy +PUBLIC ?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Alloc_sentinel_and_proxy +PUBLIC ?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Getal +PUBLIC ??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ ; std::_List_val,std::allocator > const ,unsigned int32_t> > >::_List_val,std::allocator > const ,unsigned int32_t> > > +PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Get_first +PUBLIC ??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> > +PUBLIC ?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Max_bucket_size +PUBLIC ?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::deallocate +PUBLIC ?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocate +PUBLIC ?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::size +PUBLIC ?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::capacity +PUBLIC ?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Assign_grow +PUBLIC ?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Tidy +PUBLIC ??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > > +PUBLIC ??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > > +PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Get_first +PUBLIC ??1?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@QEAA@XZ ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::~_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> > +PUBLIC ??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > > +PUBLIC ??1?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >::~unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > > PUBLIC ??0string_block_reader@jsonifier_internal@@QEAA@XZ ; jsonifier_internal::string_block_reader::string_block_reader PUBLIC ?deallocate@?$alloc_wrapper@PEBD@jsonifier_internal@@QEAAXPEAPEBD_K@Z ; jsonifier_internal::alloc_wrapper::deallocate PUBLIC ??R?$_Conditionally_enabled_hash@W4error_classes@jsonifier_internal@@$00@std@@QEBA_KAEBW4error_classes@jsonifier_internal@@@Z ; std::_Conditionally_enabled_hash::operator() @@ -2312,18 +2312,18 @@ PUBLIC ??1?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$ PUBLIC ??0?$initializer_list@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@QEAA@PEBU?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@1@0@Z ; std::initializer_list > >::initializer_list > > PUBLIC ?begin@?$initializer_list@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@QEBAPEBU?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@2@XZ ; std::initializer_list > >::begin PUBLIC ?end@?$initializer_list@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@QEBAPEBU?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@2@XZ ; std::initializer_list > >::end -PUBLIC ??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z ; std::pair >::pair > -PUBLIC ??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z ; std::pair >::pair > +PUBLIC ??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z ; std::pair >::pair > PUBLIC ??$?0_KAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEA_KAEAY07$$CBD@Z ; std::pair >::pair > PUBLIC ??$?0_KAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEA_KAEAY08$$CBD@Z ; std::pair >::pair > PUBLIC ??$?0_KAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEA_KAEAY0BG@$$CBD@Z ; std::pair >::pair > @@ -2352,24 +2352,24 @@ PUBLIC ?_Refill_lower@?$mersenne_twister@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJO PUBLIC ?_Refill_upper@?$mersenne_twister@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@@std@@IEAAXXZ ; std::mersenne_twister::_Refill_upper PUBLIC ??0?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@std@@QEAA@_K@Z ; std::mersenne_twister_engine::mersenne_twister_engine PUBLIC ??R?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@std@@QEAA_KXZ ; std::mersenne_twister_engine::operator() -PUBLIC ?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z ; bnch_swt::test_generator::generateString -PUBLIC ??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z ; bnch_swt::test_generator::randomizeNumberUniform +PUBLIC ?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z ; bnch_swt::random_generator::generateString +PUBLIC ??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z ; bnch_swt::random_generator::randomizeNumberUniform PUBLIC ?testFunction01@@YA_J_J@Z ; testFunction01 PUBLIC ?testFunction04@@YA_J_J@Z ; testFunction04 PUBLIC ??$loadValue@_K@@YA_KPEBD@Z ; loadValue PUBLIC main -PUBLIC ??0?$allocator@H@std@@QEAA@XZ ; std::allocator::allocator -PUBLIC ?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z ; std::allocator::deallocate -PUBLIC ??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::vector > -PUBLIC ??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::~vector > -PUBLIC ?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ ; std::vector >::_Tidy -PUBLIC ?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ ; std::vector >::_Getal -PUBLIC ??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ ; std::_Vector_val >::_Vector_val > -PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first -PUBLIC ??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z ; testFunction > > +PUBLIC ??0?$allocator@H@std@@QEAA@XZ ; std::allocator::allocator +PUBLIC ?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z ; std::allocator::deallocate +PUBLIC ??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::vector > +PUBLIC ??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::~vector > +PUBLIC ?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ ; std::vector >::_Tidy +PUBLIC ?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ ; std::vector >::_Getal +PUBLIC ??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ ; std::_Vector_val >::_Vector_val > +PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first +PUBLIC ??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z ; testFunction > > PUBLIC ?view@?$string_literal@$0GK@D@bnch_swt@@QEBA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@XZ ; bnch_swt::string_literal<106,char>::view PUBLIC ??$parseFunction@$00$00$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U12@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@@@YAXXZ ; parseFunction<1,1,bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}}> -PUBLIC ??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><> +PUBLIC ??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><> PUBLIC ??$construct@D@?$alloc_wrapper@D@jsonifier_internal@@QEAAXPEAD$$QEAD@Z ; jsonifier_internal::alloc_wrapper::construct PUBLIC ??$_Unfancy_maybe_null@Uperformance_metrics@bnch_swt@@@std@@YAPEAUperformance_metrics@bnch_swt@@PEAU12@@Z ; std::_Unfancy_maybe_null PUBLIC ??$_Unfancy_maybe_null@D@std@@YAPEADPEAD@Z ; std::_Unfancy_maybe_null @@ -2435,7 +2435,7 @@ PUBLIC ?do_truename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@st PUBLIC ?_Tidy@?$numpunct@D@std@@AEAAXXZ ; std::numpunct::_Tidy PUBLIC ??_G?$numpunct@D@std@@MEAAPEAXI@Z ; std::numpunct::`scalar deleting destructor' PUBLIC ??$addressof@D@std@@YAPEADAEAD@Z ; std::addressof -PUBLIC ??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z ; std::_Destroy_range > +PUBLIC ??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z ; std::_Destroy_range > PUBLIC ??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@1@@Z ; std::_List_unchecked_const_iterator > > >,std::_Iterator_base0>::_List_unchecked_const_iterator > > >,std::_Iterator_base0> PUBLIC ??D?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEBAAEBU?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@1@XZ ; std::_List_unchecked_const_iterator > > >,std::_Iterator_base0>::operator* PUBLIC ??E?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAAAEAV01@XZ ; std::_List_unchecked_const_iterator > > >,std::_Iterator_base0>::operator++ @@ -2466,14 +2466,14 @@ PUBLIC ??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@ PUBLIC ??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::hash,std::equal_to,std::allocator > > > >,void *>::_Freenode0,std::hash,std::equal_to,std::allocator > > > >,void *> > > PUBLIC ??$?0U_Zero_then_variadic_args_t@std@@M@?$_Compressed_pair@U?$hash@W4error_classes@jsonifier_internal@@@std@@V?$_Compressed_pair@U?$equal_to@W4error_classes@jsonifier_internal@@@std@@M$00@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@$$QEAU21@$$QEAM@Z ; std::_Compressed_pair,std::_Compressed_pair,float,1>,1>::_Compressed_pair,std::_Compressed_pair,float,1>,1> PUBLIC ??$?0M@?$_Compressed_pair@U?$equal_to@W4error_classes@jsonifier_internal@@@std@@M$00@std@@QEAA@U_Zero_then_variadic_args_t@1@$$QEAM@Z ; std::_Compressed_pair,float,1>::_Compressed_pair,float,1> -PUBLIC ??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0> -PUBLIC ??0?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ; std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > >::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > -PUBLIC ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAA@XZ ; std::pair,std::allocator > const ,unsigned int>::~pair,std::allocator > const ,unsigned int> -PUBLIC ??_G?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAAPEAXI@Z ; std::pair,std::allocator > const ,unsigned int>::`scalar deleting destructor' -PUBLIC ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> -PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Hash_vec,std::allocator > const ,unsigned int> > > > > >,std::allocator > const ,unsigned int> > const &,0> -PUBLIC ??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Free_non_head,std::allocator > const ,unsigned int>,void *> > > -PUBLIC ??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode0,std::allocator > const ,unsigned int>,void *> > > +PUBLIC ??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0> +PUBLIC ??0?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ; std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > >::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > +PUBLIC ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAA@XZ ; std::pair,std::allocator > const ,unsigned int32_t>::~pair,std::allocator > const ,unsigned int32_t> +PUBLIC ??_G?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAAPEAXI@Z ; std::pair,std::allocator > const ,unsigned int32_t>::`scalar deleting destructor' +PUBLIC ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> +PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >,std::allocator > const ,unsigned int32_t> > const &,0> +PUBLIC ??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Free_non_head,std::allocator > const ,unsigned int32_t>,void *> > > +PUBLIC ??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode0,std::allocator > const ,unsigned int32_t>,void *> > > PUBLIC ??$?0U_Zero_then_variadic_args_t@std@@M@?$_Compressed_pair@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@V?$_Compressed_pair@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@M$00@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@$$QEAU21@$$QEAM@Z ; std::_Compressed_pair,std::allocator > >,std::_Compressed_pair,std::allocator > >,float,1>,1>::_Compressed_pair,std::allocator > >,std::_Compressed_pair,std::allocator > >,float,1>,1> PUBLIC ??$?0M@?$_Compressed_pair@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@M$00@std@@QEAA@U_Zero_then_variadic_args_t@1@$$QEAM@Z ; std::_Compressed_pair,std::allocator > >,float,1>::_Compressed_pair,std::allocator > >,float,1> PUBLIC ??$destroy@PEAD@std@@YAXQEAD0@Z ; std::destroy @@ -2496,10 +2496,10 @@ PUBLIC ??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_Lis PUBLIC ??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@0@0AEBV10@@Z ; std::fill,std::hash,std::equal_to,std::allocator > > > > > > > *,std::_List_unchecked_iterator,std::hash,std::equal_to,std::allocator > > > > > > > > PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@1@@Z ; std::_Compressed_pair,std::hash,std::equal_to,std::allocator > > > >,void *> >,std::_List_val,std::hash,std::equal_to,std::allocator > > > > > >,1>::_Compressed_pair,std::hash,std::equal_to,std::allocator > > > >,void *> >,std::_List_val,std::hash,std::equal_to,std::allocator > > > > > >,1>,std::hash,std::equal_to,std::allocator > > > > > const &> PUBLIC ??$?0U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@1@@Z ; std::allocator,std::hash,std::equal_to,std::allocator > > > >,void *> >::allocator,std::hash,std::equal_to,std::allocator > > > >,void *> >,std::hash,std::equal_to,std::allocator > > > > > -PUBLIC ??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::uninitialized_fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > > -PUBLIC ??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > > -PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>,std::allocator > const ,unsigned int> > const &> -PUBLIC ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocator,std::allocator > const ,unsigned int>,void *> >,std::allocator > const ,unsigned int> > +PUBLIC ??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::uninitialized_fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > > +PUBLIC ??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > > +PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>,std::allocator > const ,unsigned int32_t> > const &> +PUBLIC ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocator,std::allocator > const ,unsigned int32_t>,void *> >,std::allocator > const ,unsigned int32_t> > PUBLIC ??$roundUpToMultiple@$M$$CB_K0CA@_K@jsonifier_internal@@YA_K_K@Z ; jsonifier_internal::roundUpToMultiple<32,unsigned __int64> PUBLIC ??$addressof@_K@std@@YAPEA_KAEA_K@Z ; std::addressof PUBLIC ??R@?1??assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV23@QEBD_K@Z@QEBA@QEAD10@Z ; `std::basic_string,std::allocator >::assign'::`2'::::operator() @@ -2509,7 +2509,7 @@ PUBLIC ??$_Get_size_of_n@$07@std@@YA_K_K@Z ; std::_Get_size_of_n<8> PUBLIC ??$_Allocate@$0BA@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z ; std::_Allocate<16,std::_Default_allocate_traits> PUBLIC ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@0@0@Z ; std::_Construct_in_place >,void *> *,std::_List_node >,void *> * &> PUBLIC ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@0@0@Z ; std::_Construct_in_place,std::hash,std::equal_to,std::allocator > > > >,void *> *,std::_List_node,std::hash,std::equal_to,std::allocator > > > >,void *> * &> -PUBLIC ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &> +PUBLIC ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &> PUBLIC ??R@?1??insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV23@_K0D@Z@QEBA@QEADQEBD000D@Z ; `std::basic_string,std::allocator >::insert'::`2'::::operator() PUBLIC ??$_Reallocate_grow_by@V@?1??insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV34@_K0D@Z@_K_KD@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAAEAV01@_KV@?1??insert@01@QEAAAEAV01@00D@Z@_K2D@Z ; std::basic_string,std::allocator >::_Reallocate_grow_by<`std::basic_string,std::allocator >::insert'::`2'::,unsigned __int64,unsigned __int64,char> PUBLIC ??R@?1??append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV23@_KD@Z@QEBA@QEADQEBD00D@Z ; `std::basic_string,std::allocator >::append'::`2'::::operator() @@ -2664,10 +2664,10 @@ PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$u PUBLIC ??$?0U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@1@@Z ; std::allocator,std::hash,std::equal_to,std::allocator > > > > > > > >::allocator,std::hash,std::equal_to,std::allocator > > > > > > > >,std::hash,std::equal_to,std::allocator > > > > > PUBLIC ??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::hash,std::equal_to,std::allocator > > > >,void *>::_Freenode,std::hash,std::equal_to,std::allocator > > > >,void *> > > PUBLIC ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@0@@Z ; std::_Destroy_in_place,std::hash,std::equal_to,std::allocator > > > >,void *> *> -PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>,std::allocator > const ,unsigned int> > const &> -PUBLIC ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocator,std::allocator > const ,unsigned int> > > > >,std::allocator > const ,unsigned int> > -PUBLIC ??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode,std::allocator > const ,unsigned int>,void *> > > -PUBLIC ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ; std::_Destroy_in_place,std::allocator > const ,unsigned int>,void *> *> +PUBLIC ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>,std::allocator > const ,unsigned int32_t> > const &> +PUBLIC ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocator,std::allocator > const ,unsigned int32_t> > > > >,std::allocator > const ,unsigned int32_t> > +PUBLIC ??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode,std::allocator > const ,unsigned int32_t>,void *> > > +PUBLIC ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ; std::_Destroy_in_place,std::allocator > const ,unsigned int32_t>,void *> *> PUBLIC ??$_Get_unwrapped@AEBQEAD@std@@YA?A_TAEBQEAD@Z ; std::_Get_unwrapped PUBLIC ??$_Destroy_range@PEADPEAD@std@@YAXPEADQEAD@Z ; std::_Destroy_range PUBLIC ??$_Idl_distance@PEADPEAD@std@@YA?A_PAEBQEAD0@Z ; std::_Idl_distance @@ -2687,19 +2687,19 @@ PUBLIC ??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U PUBLIC ??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Uninitialized_backout,std::hash,std::equal_to,std::allocator > > > > > > > *>::~_Uninitialized_backout,std::hash,std::equal_to,std::allocator > > > > > > > *> PUBLIC ?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@2@XZ ; std::_Uninitialized_backout,std::hash,std::equal_to,std::allocator > > > > > > > *>::_Release PUBLIC ??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::hash,std::equal_to,std::allocator > > > > > > > *>::_Emplace_back,std::hash,std::equal_to,std::allocator > > > > > > > const &> -PUBLIC ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int> > > > * const &> -PUBLIC ??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ; std::_Adl_verify_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> -PUBLIC ??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *> -PUBLIC ??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *> -PUBLIC ?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Release -PUBLIC ??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Emplace_back,std::allocator > const ,unsigned int> > > > const &> +PUBLIC ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int32_t> > > > * const &> +PUBLIC ??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ; std::_Adl_verify_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> +PUBLIC ??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *> +PUBLIC ??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *> +PUBLIC ?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Release +PUBLIC ??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Emplace_back,std::allocator > const ,unsigned int32_t> > > > const &> PUBLIC ??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z ; std::_Allocate_manually_vector_aligned PUBLIC ??$addressof@PEAU?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof >,void *> *> PUBLIC ??$construct_at@PEAU?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ; std::construct_at >,void *> *,std::_List_node >,void *> * &> PUBLIC ??$addressof@PEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof,std::hash,std::equal_to,std::allocator > > > >,void *> *> PUBLIC ??$construct_at@PEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ; std::construct_at,std::hash,std::equal_to,std::allocator > > > >,void *> *,std::_List_node,std::hash,std::equal_to,std::allocator > > > >,void *> * &> -PUBLIC ??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int>,void *> *> -PUBLIC ??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ; std::construct_at,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &> +PUBLIC ??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t>,void *> *> +PUBLIC ??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ; std::construct_at,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &> PUBLIC ??$addressof@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@YAPEAU?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@0@AEAU10@@Z ; std::addressof,std::hash,std::equal_to,std::allocator > > > > > PUBLIC ??$destroy@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@1@QEAU?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@1@@Z ; std::_Default_allocator_traits,std::hash,std::equal_to,std::allocator > > > >,void *> > >::destroy,std::hash,std::equal_to,std::allocator > > > > > PUBLIC ??$exchange@PEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@$$T@std@@YAPEAU?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@0@AEAPEAU10@$$QEA$$T@Z ; std::exchange,std::hash,std::equal_to,std::allocator > > > >,void *> *,std::nullptr_t> @@ -2807,13 +2807,13 @@ PUBLIC ??$?0V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV PUBLIC ?_Extract@?$_In_place_key_extract_map@W4error_classes@jsonifier_internal@@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@SAAEBW4error_classes@jsonifier_internal@@AEBU?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@2@@Z ; std::_In_place_key_extract_map,std::hash,std::equal_to,std::allocator > > > > >::_Extract PUBLIC ??$?0AEBU?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@?$_List_node_emplace_op2@V?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@@std@@QEAA@AEAV?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@1@AEBU?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@1@@Z ; std::_List_node_emplace_op2,std::hash,std::equal_to,std::allocator > > > >,void *> > >::_List_node_emplace_op2,std::hash,std::equal_to,std::allocator > > > >,void *> > >,std::hash,std::equal_to,std::allocator > > > > const &> PUBLIC ??$?0V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@_N$0A@@?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@_N@std@@QEAA@$$QEAV?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@1@$$QEA_N@Z ; std::pair,std::hash,std::equal_to,std::allocator > > > > > > >,bool>::pair,std::hash,std::equal_to,std::allocator > > > > > > >,bool>,std::hash,std::equal_to,std::allocator > > > > > > >,bool,0> -PUBLIC ??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int> > -PUBLIC ??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::destroy,std::allocator > const ,unsigned int> > +PUBLIC ??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t> > +PUBLIC ??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::destroy,std::allocator > const ,unsigned int32_t> > PUBLIC ??$_Copy_memmove@PEADPEAD@std@@YAPEADPEAD00@Z ; std::_Copy_memmove PUBLIC ??$_Emplace_back@D@?$_Uninitialized_backout@PEAD@std@@QEAAX$$QEAD@Z ; std::_Uninitialized_backout::_Emplace_back PUBLIC ??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@@0@AEBV10@@Z ; std::_Construct_in_place > > > >,std::_List_unchecked_iterator > > > > const &> PUBLIC ??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@0@AEBV10@@Z ; std::_Construct_in_place,std::hash,std::equal_to,std::allocator > > > > > > >,std::_List_unchecked_iterator,std::hash,std::equal_to,std::allocator > > > > > > > const &> -PUBLIC ??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &> +PUBLIC ??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &> PUBLIC ??$destroy_at@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@YAXQEAU?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@0@@Z ; std::destroy_at,std::hash,std::equal_to,std::allocator > > > > > PUBLIC ??$destroy_at@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@YAXQEAU?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@0@@Z ; std::destroy_at > > PUBLIC ??$_Emplace_back_with_unused_capacity@AEAUperformance_metrics@bnch_swt@@@?$vector@Uperformance_metrics@bnch_swt@@V?$allocator@Uperformance_metrics@bnch_swt@@@std@@@std@@AEAAAEAUperformance_metrics@bnch_swt@@AEAU23@@Z ; std::vector >::_Emplace_back_with_unused_capacity @@ -2854,7 +2854,7 @@ PUBLIC ??$construct_at@_K_K@std@@YAPEA_KQEA_K$$QEA_K@Z ; std::construct_at PUBLIC ??$_Eval@V?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@std@@@?$uniform_int@_K@std@@AEBA_KAEAV?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@1@_K1@Z ; std::uniform_int::_Eval > PUBLIC ??$construct_at@Uevent_count@bnch_swt@@U12@@std@@YAPEAUevent_count@bnch_swt@@QEAU12@$$QEAU12@@Z ; std::construct_at -PUBLIC ??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ; std::optional::emplace +PUBLIC ??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ; std::optional::emplace PUBLIC ??$?0_JU?$ratio@$00$0DLJKMKAA@@std@@$0A@@?$duration@NU?$ratio@$00$00@std@@@chrono@std@@QEAA@AEBV?$duration@_JU?$ratio@$00$0DLJKMKAA@@std@@@12@@Z ; std::chrono::duration >::duration ><__int64,std::ratio<1,1000000000>,0> PUBLIC ??$emplace@AEA_K@?$optional@_K@std@@QEAAAEA_KAEA_K@Z ; std::optional::emplace PUBLIC ??$emplace@$$V@?$optional@N@std@@QEAAAEANXZ ; std::optional::emplace<> @@ -2875,14 +2875,14 @@ PUBLIC ??$_Emplace_back@U_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@@?$_Uninitialize PUBLIC ??$construct@U_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@$$V@?$_Default_allocator_traits@V?$allocator@U_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@@std@@@std@@SAXAEAV?$allocator@U_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@@1@QEAU_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@@Z ; std::_Default_allocator_traits >::construct<_SYSTEM_LOGICAL_PROCESSOR_INFORMATION> PUBLIC ??$construct@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@AEBU12@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@std@@@1@QEAU?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@1@AEBU31@@Z ; std::_Default_allocator_traits >,void *> > >::construct >,std::pair > const &> PUBLIC ??$construct@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@AEBU12@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@PEAX@std@@@1@QEAU?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@1@AEBU31@@Z ; std::_Default_allocator_traits,std::hash,std::equal_to,std::allocator > > > >,void *> > >::construct,std::hash,std::equal_to,std::allocator > > > >,std::pair,std::hash,std::equal_to,std::allocator > > > > const &> -PUBLIC ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z ; std::destroy_at,std::allocator > const ,unsigned int> > +PUBLIC ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z ; std::destroy_at,std::allocator > const ,unsigned int32_t> > PUBLIC ??$_Construct_in_place@DD@std@@YAXAEAD$$QEAD@Z ; std::_Construct_in_place PUBLIC ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof > > > > > PUBLIC ??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ; std::construct_at > > > >,std::_List_unchecked_iterator > > > > const &> PUBLIC ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof,std::hash,std::equal_to,std::allocator > > > > > > > > PUBLIC ??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBW4error_classes@jsonifier_internal@@V?$unordered_map@_KV?$string_view_base@D@jsonifier@@U?$hash@_K@std@@U?$equal_to@_K@4@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@@std@@@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ; std::construct_at,std::hash,std::equal_to,std::allocator > > > > > > >,std::_List_unchecked_iterator,std::hash,std::equal_to,std::allocator > > > > > > > const &> -PUBLIC ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof,std::allocator > const ,unsigned int> > > > > -PUBLIC ??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ; std::construct_at,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &> +PUBLIC ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t> > > > > +PUBLIC ??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ; std::construct_at,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &> PUBLIC ??$construct@Uperformance_metrics@bnch_swt@@AEAU12@@?$_Default_allocator_traits@V?$allocator@Uperformance_metrics@bnch_swt@@@std@@@std@@SAXAEAV?$allocator@Uperformance_metrics@bnch_swt@@@1@QEAUperformance_metrics@bnch_swt@@AEAU34@@Z ; std::_Default_allocator_traits >::construct PUBLIC ??$_Allocate_at_least_helper@V?$allocator@Uperformance_metrics@bnch_swt@@@std@@@std@@YAPEAUperformance_metrics@bnch_swt@@AEAV?$allocator@Uperformance_metrics@bnch_swt@@@0@AEA_K@Z ; std::_Allocate_at_least_helper > PUBLIC ??$_Uninitialized_move@PEAUperformance_metrics@bnch_swt@@V?$allocator@Uperformance_metrics@bnch_swt@@@std@@@std@@YAPEAUperformance_metrics@bnch_swt@@QEAU12@0PEAU12@AEAV?$allocator@Uperformance_metrics@bnch_swt@@@0@@Z ; std::_Uninitialized_move > @@ -2926,7 +2926,7 @@ PUBLIC ??R?$_Rng_from_urng_v2@_KV?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0B PUBLIC ?_Get_all_bits@?$_Rng_from_urng_v2@_KV?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@std@@@std@@QEAA_KXZ ; std::_Rng_from_urng_v2 >::_Get_all_bits PUBLIC ?_Get_bits@?$_Rng_from_urng_v2@_KV?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@std@@@std@@AEAA_KXZ ; std::_Rng_from_urng_v2 >::_Get_bits PUBLIC ?_Get_random_product@?$_Rng_from_urng_v2@_KV?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@std@@@std@@AEAA?AU_Unsigned128@2@_KI@Z ; std::_Rng_from_urng_v2 >::_Get_random_product -PUBLIC ??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z ; std::_Optional_construct_base::_Construct +PUBLIC ??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z ; std::_Optional_construct_base::_Construct PUBLIC ??$duration_cast@V?$duration@NU?$ratio@$00$00@std@@@chrono@std@@_JU?$ratio@$00$0DLJKMKAA@@3@$0A@@chrono@std@@YA?AV?$duration@NU?$ratio@$00$00@std@@@01@AEBV?$duration@_JU?$ratio@$00$0DLJKMKAA@@std@@@01@@Z ; std::chrono::duration_cast >,__int64,std::ratio<1,1000000000>,0> PUBLIC ??$_Construct@AEA_K@?$_Optional_construct_base@_K@std@@QEAAAEA_KAEA_K@Z ; std::_Optional_construct_base::_Construct PUBLIC ??$_Construct@$$V@?$_Optional_construct_base@N@std@@QEAAAEANXZ ; std::_Optional_construct_base::_Construct<> @@ -2963,10 +2963,10 @@ PUBLIC ??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_ PUBLIC ??$?0V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$V$0A@@?$tuple@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@QEAA@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z ; std::tuple,std::allocator > &&>::tuple,std::allocator > &&>,std::allocator >,0> PUBLIC ??$construct@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@std@@AEBUpiecewise_construct_t@2@V?$tuple@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$tuple@$$V@2@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@1@AEBUpiecewise_construct_t@1@$$QEAV?$tuple@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@$$QEAV?$tuple@$$V@1@@Z ; std::_Default_allocator_traits,std::allocator > const ,bnch_swt::performance_metrics>,void *> > >::construct,std::allocator > const ,bnch_swt::performance_metrics>,std::piecewise_construct_t const &,std::tuple,std::allocator > &&>,std::tuple<> > PUBLIC ??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@std@@PEAX@std@@AEBQEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@std@@PEAX@0@QEAPEAU10@AEBQEAU10@@Z ; std::construct_at,std::allocator > const ,bnch_swt::performance_metrics>,void *> *,std::_List_node,std::allocator > const ,bnch_swt::performance_metrics>,void *> * const &> -PUBLIC ??$?0I@_Base128@std@@QEAA@I@Z ; std::_Base128::_Base128 +PUBLIC ??$?0I@_Base128@std@@QEAA@I@Z ; std::_Base128::_Base128 PUBLIC ??$_Get_size_of_n@$0BBI@@std@@YA_K_K@Z ; std::_Get_size_of_n<280> PUBLIC ??$_Hash_array_representation@D@std@@YA_KQEBD_K@Z ; std::_Hash_array_representation -PUBLIC ??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z ; std::_Construct_in_place +PUBLIC ??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z ; std::_Construct_in_place PUBLIC ??$_Construct_in_place@_KAEA_K@std@@YAXAEA_K0@Z ; std::_Construct_in_place PUBLIC ??$_Construct_in_place@N$$V@std@@YAXAEAN@Z ; std::_Construct_in_place PUBLIC ??$construct_at@U_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@U1@@std@@YAPEAU_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@QEAU1@$$QEAU1@@Z ; std::construct_at<_SYSTEM_LOGICAL_PROCESSOR_INFORMATION,_SYSTEM_LOGICAL_PROCESSOR_INFORMATION> @@ -2979,7 +2979,7 @@ PUBLIC ??$?0$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$ PUBLIC ??$construct_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@std@@AEBUpiecewise_construct_t@2@V?$tuple@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$tuple@$$V@2@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uperformance_metrics@bnch_swt@@@0@QEAU10@AEBUpiecewise_construct_t@0@$$QEAV?$tuple@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@0@$$QEAV?$tuple@$$V@0@@Z ; std::construct_at,std::allocator > const ,bnch_swt::performance_metrics>,std::piecewise_construct_t const &,std::tuple,std::allocator > &&>,std::tuple<> > PUBLIC ??$_Refancy_maybe_null@PEAUevent_count@bnch_swt@@$0A@@std@@YAPEAUevent_count@bnch_swt@@PEAU12@@Z ; std::_Refancy_maybe_null PUBLIC ??$?0V?$allocator@U?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@std@@@std@@@?$_Hash@V?$_Umap_traits@_KV?$string_view_base@D@jsonifier@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@std@@V?$allocator@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@@4@$0A@@std@@@std@@IEAA@AEBV01@AEBV?$allocator@U?$_List_node@U?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@PEAX@std@@@1@@Z ; std::_Hash,std::_Uhash_compare,std::equal_to >,std::allocator > >,0> >::_Hash,std::_Uhash_compare,std::equal_to >,std::allocator > >,0> > >,void *> > > -PUBLIC ??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z ; std::construct_at +PUBLIC ??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z ; std::construct_at PUBLIC ??$construct_at@_KAEA_K@std@@YAPEA_KQEA_KAEA_K@Z ; std::construct_at PUBLIC ??$construct_at@N$$V@std@@YAPEANQEAN@Z ; std::construct_at PUBLIC ??$construct_at@Uperformance_metrics@bnch_swt@@U12@@std@@YAPEAUperformance_metrics@bnch_swt@@QEAU12@$$QEAU12@@Z ; std::construct_at @@ -4631,9 +4631,9 @@ $pdata$?branches@event_count@bnch_swt@@QEBA_NAEAN@Z DD imagerel $LN7 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z DD imagerel $LN7 +$pdata$?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z DD imagerel $LN7 DD imagerel $LN7+109 - DD imagerel $unwind$?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z + DD imagerel $unwind$?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z pdata ENDS ; COMDAT pdata pdata SEGMENT @@ -6371,15 +6371,15 @@ $pdata$??__Egen@bnch_swt@@YAXXZ DD imagerel ??__Egen@bnch_swt@@YAXXZ pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z DD imagerel $LN6 +$pdata$?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z DD imagerel $LN6 DD imagerel $LN6+127 - DD imagerel $unwind$?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z + DD imagerel $unwind$?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z DD imagerel $LN3 +$pdata$??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z DD imagerel $LN3 DD imagerel $LN3+56 - DD imagerel $unwind$??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z + DD imagerel $unwind$??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z pdata ENDS pdata SEGMENT $pdata$?testFunction01@@YA_J_J@Z DD imagerel $LN3 @@ -13466,12 +13466,12 @@ $unwind$??R@?$benchmark_stage@$2U?$string_literal@$0GK@D@bnch_swt@@3D xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z DD 010e01H +$unwind$??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z DD 010e01H DD 0620eH xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z DD 010e01H +$unwind$?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z DD 010e01H DD 0820eH xdata ENDS ; COMDAT xdata @@ -15040,7 +15040,7 @@ $unwind$?bytesProcessed@event_count@bnch_swt@@QEBA_NAEAN@Z DD 010e01H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z DD 010e01H +$unwind$?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z DD 010e01H DD 0420eH xdata ENDS ; COMDAT xdata @@ -16748,7 +16748,7 @@ _TEXT SEGMENT $T1 = 32 _Location$ = 64 <_Args_0>$ = 72 -??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z PROC ; std::construct_at, COMDAT +??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z PROC ; std::construct_at, COMDAT ; 392 : noexcept(::new(static_cast(_Location)) _Ty(_STD forward<_Types>(_Args)...))) /* strengthened */ { @@ -16773,7 +16773,7 @@ $LN3: 00039 48 83 c4 38 add rsp, 56 ; 00000038H 0003d c3 ret 0 -??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z ENDP ; std::construct_at +??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z ENDP ; std::construct_at _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash @@ -17520,7 +17520,7 @@ _TEXT SEGMENT $T1 = 32 _Obj$ = 64 <_Args_0>$ = 72 -??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z PROC ; std::_Construct_in_place, COMDAT +??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z PROC ; std::_Construct_in_place, COMDAT ; 399 : is_nothrow_constructible_v<_Ty, _Types...>) { @@ -17543,7 +17543,7 @@ $LN5: 0001f e8 00 00 00 00 call ??$addressof@N@std@@YAPEANAEAN@Z ; std::addressof 00024 48 8b 54 24 48 mov rdx, QWORD PTR <_Args_0>$[rsp] 00029 48 8b c8 mov rcx, rax - 0002c e8 00 00 00 00 call ??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z ; std::construct_at + 0002c e8 00 00 00 00 call ??$construct_at@NH@std@@YAPEANQEAN$$QEAH@Z ; std::construct_at 00031 90 npad 1 ; 403 : } else @@ -17572,7 +17572,7 @@ $LN3@Construct_: 00062 48 83 c4 38 add rsp, 56 ; 00000038H 00066 c3 ret 0 -??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z ENDP ; std::_Construct_in_place +??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z ENDP ; std::_Construct_in_place _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\type_traits @@ -17666,7 +17666,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 16 _Val$ = 24 -??$?0I@_Base128@std@@QEAA@I@Z PROC ; std::_Base128::_Base128, COMDAT +??$?0I@_Base128@std@@QEAA@I@Z PROC ; std::_Base128::_Base128, COMDAT ; 306 : constexpr _Base128(const _Ty _Val) noexcept : _Word{static_cast(_Val)} { @@ -17699,7 +17699,7 @@ $LN3: 0002b 48 8b 44 24 10 mov rax, QWORD PTR this$[rsp] 00030 5f pop rdi 00031 c3 ret 0 -??$?0I@_Base128@std@@QEAA@I@Z ENDP ; std::_Base128::_Base128 +??$?0I@_Base128@std@@QEAA@I@Z ENDP ; std::_Base128::_Base128 _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -19319,7 +19319,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 48 <_Args_0>$ = 56 -??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z PROC ; std::_Optional_construct_base::_Construct, COMDAT +??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z PROC ; std::_Optional_construct_base::_Construct, COMDAT ; 143 : _CONSTEXPR20 _Ty& _Construct(_Types&&... _Args) noexcept(is_nothrow_constructible_v<_Ty, _Types...>) { @@ -19334,7 +19334,7 @@ $LN3: 0000e 48 8b 54 24 38 mov rdx, QWORD PTR <_Args_0>$[rsp] 00013 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 00018 e8 00 00 00 00 call ??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z ; std::_Construct_in_place + 00018 e8 00 00 00 00 call ??$_Construct_in_place@NH@std@@YAXAEAN$$QEAH@Z ; std::_Construct_in_place ; 147 : this->_Has_value = true; @@ -19349,7 +19349,7 @@ $LN3: 0002b 48 83 c4 28 add rsp, 40 ; 00000028H 0002f c3 ret 0 -??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z ENDP ; std::_Optional_construct_base::_Construct +??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z ENDP ; std::_Optional_construct_base::_Construct _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\random @@ -19364,7 +19364,7 @@ _Index$ = 96 _Niter$ = 104 ?_Get_random_product@?$_Rng_from_urng_v2@_KV?$mersenne_twister_engine@_K$0EA@$0BDI@$0JM@$0BP@$0?EKPNJAKFFGJJOGBH@$0BN@$0FFFFFFFFFFFFFFFF@$0BB@$0HBNGHPPPONKGAAAA@$0CF@$0?IBBCAAAAAAAAA@$0CL@$0FIFBPECNEMJFHPCN@@std@@@std@@AEAA?AU_Unsigned128@2@_KI@Z PROC ; std::_Rng_from_urng_v2 >::_Get_random_product, COMDAT -; 2169 : _Uprod _Get_random_product(const _Diff _Index, unsigned int _Niter) { +; 2169 : _Uprod _Get_random_product(const _Diff _Index, unsigned int32_t _Niter) { $LN3: 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d @@ -19484,7 +19484,7 @@ $LN3: ; 2133 : ; 2134 : if constexpr (_Bits < _Udiff_bits) { -; 2135 : for (unsigned int _Num = _Bits; _Num < _Udiff_bits; _Num += _Bits) { // don't mask away any bits +; 2135 : for (unsigned int32_t _Num = _Bits; _Num < _Udiff_bits; _Num += _Bits) { // don't mask away any bits ; 2136 : _Ret <<= _Bits; ; 2137 : _Ret |= _Get_bits(); ; 2138 : } @@ -19547,7 +19547,7 @@ $LN6: 00023 48 c7 44 24 28 ff ff ff ff mov QWORD PTR _Mask$[rsp], -1 -; 2095 : unsigned int _Niter = 1; +; 2095 : unsigned int32_t _Niter = 1; 0002c c7 44 24 20 01 00 00 00 mov DWORD PTR _Niter$[rsp], 1 @@ -19639,9 +19639,9 @@ $LN4@operator: ; 2118 : } ; 2119 : -; 2120 : unsigned int _Generated_bits; +; 2120 : unsigned int32_t _Generated_bits; ; 2121 : if constexpr (_Bits < _Udiff_bits) { -; 2122 : _Generated_bits = static_cast(_Popcount(_Mask)); +; 2122 : _Generated_bits = static_cast(_Popcount(_Mask)); ; 2123 : } else { ; 2124 : _Generated_bits = _Udiff_bits; @@ -19655,7 +19655,7 @@ $LN4@operator: 000f0 8b 54 24 24 mov edx, DWORD PTR _Generated_bits$[rsp] 000f4 48 8d 4c 24 50 lea rcx, QWORD PTR $T2[rsp] - 000f9 e8 00 00 00 00 call ??$?0I@_Base128@std@@QEAA@I@Z ; std::_Base128::_Base128 + 000f9 e8 00 00 00 00 call ??$?0I@_Base128@std@@QEAA@I@Z ; std::_Base128::_Base128 000fe 4c 8d 44 24 50 lea r8, QWORD PTR $T2[rsp] 00103 48 8d 54 24 40 lea rdx, QWORD PTR _Product$[rsp] 00108 48 8d 4c 24 70 lea rcx, QWORD PTR $T4[rsp] @@ -21869,7 +21869,7 @@ _TEXT SEGMENT $T1 = 32 _Location$ = 64 <_Args_0>$ = 72 -??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z PROC ; std::construct_at,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &>, COMDAT +??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z PROC ; std::construct_at,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &>, COMDAT ; 392 : noexcept(::new(static_cast(_Location)) _Ty(_STD forward<_Types>(_Args)...))) /* strengthened */ { @@ -21894,14 +21894,14 @@ $LN3: 00037 48 83 c4 38 add rsp, 56 ; 00000038H 0003b c3 ret 0 -??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ENDP ; std::construct_at,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &> +??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ENDP ; std::construct_at,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\type_traits ; COMDAT ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z _TEXT SEGMENT _Val$ = 8 -??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z PROC ; std::addressof,std::allocator > const ,unsigned int> > > > >, COMDAT +??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z PROC ; std::addressof,std::allocator > const ,unsigned int32_t> > > > >, COMDAT ; 1549 : _NODISCARD constexpr _Ty* addressof(_Ty& _Val) noexcept { @@ -21914,7 +21914,7 @@ _Val$ = 8 ; 1551 : } 0000a c3 ret 0 -??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ENDP ; std::addressof,std::allocator > const ,unsigned int> > > > > +??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ENDP ; std::addressof,std::allocator > const ,unsigned int32_t> > > > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -22090,7 +22090,7 @@ _TEXT ENDS ; COMDAT ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z _TEXT SEGMENT _Location$ = 48 -??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z PROC ; std::destroy_at,std::allocator > const ,unsigned int> >, COMDAT +??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z PROC ; std::destroy_at,std::allocator > const ,unsigned int32_t> >, COMDAT ; 299 : _CONSTEXPR20 void destroy_at(_Ty* const _Location) noexcept /* strengthened */ { @@ -22116,7 +22116,7 @@ $LN3: 00016 48 83 c4 28 add rsp, 40 ; 00000028H 0001a c3 ret 0 -??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z ENDP ; std::destroy_at,std::allocator > const ,unsigned int> > +??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z ENDP ; std::destroy_at,std::allocator > const ,unsigned int32_t> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -22854,7 +22854,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 48 <_Args_0>$ = 56 -??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z PROC ; std::optional::emplace, COMDAT +??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z PROC ; std::optional::emplace, COMDAT ; 334 : is_nothrow_constructible_v<_Ty, _Types...>) /* strengthened */ { @@ -22872,13 +22872,13 @@ $LN3: 00018 48 8b 54 24 38 mov rdx, QWORD PTR <_Args_0>$[rsp] 0001d 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 00022 e8 00 00 00 00 call ??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z ; std::_Optional_construct_base::_Construct + 00022 e8 00 00 00 00 call ??$_Construct@H@?$_Optional_construct_base@N@std@@QEAAAEAN$$QEAH@Z ; std::_Optional_construct_base::_Construct ; 337 : } 00027 48 83 c4 28 add rsp, 40 ; 00000028H 0002b c3 ret 0 -??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ENDP ; std::optional::emplace +??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ENDP ; std::optional::emplace _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -24594,7 +24594,7 @@ __catch$??$_Emplace_reallocate@AEAUperformance_metrics@bnch_swt@@@?$vector@Uperf 00040 48 83 c4 20 add rsp, 32 ; 00000020H 00044 5d pop rbp 00045 c3 ret 0 - 00046 cc int 3 + 00046 cc int32_t 3 ?catch$0@?0???$_Emplace_reallocate@AEAUperformance_metrics@bnch_swt@@@?$vector@Uperformance_metrics@bnch_swt@@V?$allocator@Uperformance_metrics@bnch_swt@@@std@@@std@@AEAAPEAUperformance_metrics@bnch_swt@@QEAU23@AEAU23@@Z@4HA ENDP ; `std::vector >::_Emplace_reallocate'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -24753,7 +24753,7 @@ _TEXT SEGMENT $T1 = 32 _Obj$ = 64 <_Args_0>$ = 72 -??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z PROC ; std::_Construct_in_place,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &>, COMDAT +??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z PROC ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &>, COMDAT ; 399 : is_nothrow_constructible_v<_Ty, _Types...>) { @@ -24773,10 +24773,10 @@ $LN5: ; 402 : _STD construct_at(_STD addressof(_Obj), _STD forward<_Types>(_Args)...); 0001a 48 8b 4c 24 40 mov rcx, QWORD PTR _Obj$[rsp] - 0001f e8 00 00 00 00 call ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof,std::allocator > const ,unsigned int> > > > > + 0001f e8 00 00 00 00 call ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t> > > > > 00024 48 8b 54 24 48 mov rdx, QWORD PTR <_Args_0>$[rsp] 00029 48 8b c8 mov rcx, rax - 0002c e8 00 00 00 00 call ??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ; std::construct_at,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &> + 0002c e8 00 00 00 00 call ??$construct_at@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@AEBV10@@Z ; std::construct_at,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &> 00031 90 npad 1 ; 403 : } else @@ -24789,7 +24789,7 @@ $LN2@Construct_: ; 406 : ::new (static_cast(_STD addressof(_Obj))) _Ty(_STD forward<_Types>(_Args)...); 00034 48 8b 4c 24 40 mov rcx, QWORD PTR _Obj$[rsp] - 00039 e8 00 00 00 00 call ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof,std::allocator > const ,unsigned int> > > > > + 00039 e8 00 00 00 00 call ??$addressof@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEAV10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t> > > > > 0003e 48 8b d0 mov rdx, rax 00041 b9 08 00 00 00 mov ecx, 8 00046 e8 00 00 00 00 call ??2@YAPEAX_KPEAX@Z ; operator new @@ -24805,7 +24805,7 @@ $LN3@Construct_: 00060 48 83 c4 38 add rsp, 56 ; 00000038H 00064 c3 ret 0 -??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z ENDP ; std::_Construct_in_place,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &> +??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z ENDP ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -25063,7 +25063,7 @@ _TEXT ENDS _TEXT SEGMENT __formal$ = 48 _Ptr$ = 56 -??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z PROC ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::destroy,std::allocator > const ,unsigned int> >, COMDAT +??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z PROC ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::destroy,std::allocator > const ,unsigned int32_t> >, COMDAT ; 705 : static _CONSTEXPR20 void destroy(_Alloc&, _Uty* const _Ptr) { @@ -25076,7 +25076,7 @@ $LN3: ; 707 : _STD destroy_at(_Ptr); 0000e 48 8b 4c 24 38 mov rcx, QWORD PTR _Ptr$[rsp] - 00013 e8 00 00 00 00 call ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z ; std::destroy_at,std::allocator > const ,unsigned int> > + 00013 e8 00 00 00 00 call ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAXQEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@@Z ; std::destroy_at,std::allocator > const ,unsigned int32_t> > 00018 90 npad 1 ; 708 : #else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv @@ -25086,14 +25086,14 @@ $LN3: 00019 48 83 c4 28 add rsp, 40 ; 00000028H 0001d c3 ret 0 -??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z ENDP ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::destroy,std::allocator > const ,unsigned int> > +??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z ENDP ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::destroy,std::allocator > const ,unsigned int32_t> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\type_traits ; COMDAT ??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z _TEXT SEGMENT _Val$ = 8 -??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z PROC ; std::addressof,std::allocator > const ,unsigned int> >, COMDAT +??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z PROC ; std::addressof,std::allocator > const ,unsigned int32_t> >, COMDAT ; 1549 : _NODISCARD constexpr _Ty* addressof(_Ty& _Val) noexcept { @@ -25106,7 +25106,7 @@ _Val$ = 8 ; 1551 : } 0000a c3 ret 0 -??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z ENDP ; std::addressof,std::allocator > const ,unsigned int> > +??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z ENDP ; std::addressof,std::allocator > const ,unsigned int32_t> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -25888,12 +25888,12 @@ minNs$ = 80 cycles$ = 96 instructions$ = 104 branches$ = 112 -missedBranchesVal$ = 120 +branchMissesVal$ = 120 instructionsMin$ = 128 ns$3 = 136 branchesMin$ = 144 -missedBranchesMin$ = 152 -missedBranchesAvg$ = 160 +branchMissesMin$ = 152 +branchMissesAvg$ = 160 $L0$4 = 168 tv224 = 176 tv229 = 184 @@ -25940,7 +25940,7 @@ offset$ = 840 measuredIterationCount$ = 848 ??$collectMetrics@$2U?$string_literal@$0BB@D@bnch_swt@@3D0HD@@0GP@@0GN@@0GF@@0HE@@0GJ@@0GN@@0GF@@0HD@@0CN@@0GJ@@0GO@@0GM@@0GJ@@0GO@@0GF@@0A@@@@@?$benchmark_stage@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$0GE@@bnch_swt@@SA?AUperformance_metrics@1@_K0@Z PROC ; bnch_swt::benchmark_stage{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},100>::collectMetrics{char{115,111,109,101,116,105,109,101,115,45,105,110,108,105,110,101,0}}>, COMDAT -; 256 : template BNCH_SWT_ALWAYS_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { +; 256 : template BNCH_SWT_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { $LN38: 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 @@ -26171,17 +26171,17 @@ $LN38: 0021e f2 0f 11 44 24 38 movsd QWORD PTR branchesAvg$[rsp], xmm0 -; 272 : double missedBranchesMin{ std::numeric_limits::max() }; +; 272 : double branchMissesMin{ std::numeric_limits::max() }; 00224 e8 00 00 00 00 call ?max@?$numeric_limits@N@std@@SANXZ ; std::numeric_limits::max 00229 f2 0f 11 84 24 - 98 00 00 00 movsd QWORD PTR missedBranchesMin$[rsp], xmm0 + 98 00 00 00 movsd QWORD PTR branchMissesMin$[rsp], xmm0 -; 273 : double missedBranchesAvg{ 0 }; +; 273 : double branchMissesAvg{ 0 }; 00232 0f 57 c0 xorps xmm0, xmm0 00235 f2 0f 11 84 24 - a0 00 00 00 movsd QWORD PTR missedBranchesAvg$[rsp], xmm0 + a0 00 00 00 movsd QWORD PTR branchMissesAvg$[rsp], xmm0 ; 274 : double cycles{}; @@ -26201,11 +26201,11 @@ $LN38: 00253 f2 0f 11 44 24 70 movsd QWORD PTR branches$[rsp], xmm0 -; 277 : double missedBranchesVal{}; +; 277 : double branchMissesVal{}; 00259 0f 57 c0 xorps xmm0, xmm0 0025c f2 0f 11 44 24 - 78 movsd QWORD PTR missedBranchesVal$[rsp], xmm0 + 78 movsd QWORD PTR branchMissesVal$[rsp], xmm0 ; 278 : std::copy(eventsNew.begin() + static_cast(offset - measuredIterationCount), eventsNew.begin() + static_cast(offset), measuredEventsNew.begin()); @@ -26472,45 +26472,45 @@ $LN16@collectMet: 90 00 00 00 movsd QWORD PTR branchesMin$[rsp], xmm0 ; 295 : -; 296 : e.missedBranches(missedBranchesVal); +; 296 : e.branchMisses(branchMissesVal); - 00587 48 8d 54 24 78 lea rdx, QWORD PTR missedBranchesVal$[rsp] + 00587 48 8d 54 24 78 lea rdx, QWORD PTR branchMissesVal$[rsp] 0058c 48 8b 4c 24 40 mov rcx, QWORD PTR e$1[rsp] - 00591 e8 00 00 00 00 call ?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::missedBranches + 00591 e8 00 00 00 00 call ?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::branchMisses -; 297 : missedBranchesAvg += missedBranchesVal; +; 297 : branchMissesAvg += branchMissesVal; 00596 f2 0f 10 84 24 - a0 00 00 00 movsd xmm0, QWORD PTR missedBranchesAvg$[rsp] + a0 00 00 00 movsd xmm0, QWORD PTR branchMissesAvg$[rsp] 0059f f2 0f 58 44 24 - 78 addsd xmm0, QWORD PTR missedBranchesVal$[rsp] + 78 addsd xmm0, QWORD PTR branchMissesVal$[rsp] 005a5 f2 0f 11 84 24 - a0 00 00 00 movsd QWORD PTR missedBranchesAvg$[rsp], xmm0 + a0 00 00 00 movsd QWORD PTR branchMissesAvg$[rsp], xmm0 -; 298 : missedBranchesMin = missedBranchesMin < missedBranchesVal ? missedBranchesMin : missedBranchesVal; +; 298 : branchMissesMin = branchMissesMin < branchMissesVal ? branchMissesMin : branchMissesVal; 005ae f2 0f 10 44 24 - 78 movsd xmm0, QWORD PTR missedBranchesVal$[rsp] + 78 movsd xmm0, QWORD PTR branchMissesVal$[rsp] 005b4 66 0f 2f 84 24 - 98 00 00 00 comisd xmm0, QWORD PTR missedBranchesMin$[rsp] + 98 00 00 00 comisd xmm0, QWORD PTR branchMissesMin$[rsp] 005bd 76 14 jbe SHORT $LN17@collectMet 005bf f2 0f 10 84 24 - 98 00 00 00 movsd xmm0, QWORD PTR missedBranchesMin$[rsp] + 98 00 00 00 movsd xmm0, QWORD PTR branchMissesMin$[rsp] 005c8 f2 0f 11 84 24 d0 00 00 00 movsd QWORD PTR tv244[rsp], xmm0 005d1 eb 0f jmp SHORT $LN18@collectMet $LN17@collectMet: 005d3 f2 0f 10 44 24 - 78 movsd xmm0, QWORD PTR missedBranchesVal$[rsp] + 78 movsd xmm0, QWORD PTR branchMissesVal$[rsp] 005d9 f2 0f 11 84 24 d0 00 00 00 movsd QWORD PTR tv244[rsp], xmm0 $LN18@collectMet: 005e2 f2 0f 10 84 24 d0 00 00 00 movsd xmm0, QWORD PTR tv244[rsp] 005eb f2 0f 11 84 24 - 98 00 00 00 movsd QWORD PTR missedBranchesMin$[rsp], xmm0 + 98 00 00 00 movsd QWORD PTR branchMissesMin$[rsp], xmm0 -; 256 : template BNCH_SWT_ALWAYS_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { +; 256 : template BNCH_SWT_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { 005f4 e9 cc fd ff ff jmp $LN2@collectMet $LN3@collectMet: @@ -26854,7 +26854,7 @@ $LN6@collectMet: 00 je $LN7@collectMet $LN23@collectMet: -; 320 : metrics.branchMissesPerExecution.emplace(missedBranchesAvg / static_cast(measuredIterationCount)); +; 320 : metrics.branchMissesPerExecution.emplace(branchMissesAvg / static_cast(measuredIterationCount)); 009a2 48 8b 84 24 50 03 00 00 mov rax, QWORD PTR measuredIterationCount$[rsp] @@ -26872,7 +26872,7 @@ $LN21@collectMet: 009cc 0f 28 c1 movaps xmm0, xmm1 $LN22@collectMet: 009cf f2 0f 10 8c 24 - a0 00 00 00 movsd xmm1, QWORD PTR missedBranchesAvg$[rsp] + a0 00 00 00 movsd xmm1, QWORD PTR branchMissesAvg$[rsp] 009d8 f2 0f 5e c8 divsd xmm1, xmm0 009dc 0f 28 c1 movaps xmm0, xmm1 009df f2 0f 11 84 24 @@ -26957,7 +26957,7 @@ __$ReturnUdt$ = 120 function$ = 128 ??@a190d3ad48a29342f4365779a21d571a@ PROC ; ??@a190d3ad48a29342f4365779a21d571a@, COMDAT -; 44 : template BNCH_SWT_ALWAYS_INLINE event_count start(function_type&& function, arg_types&&... args) { +; 44 : template BNCH_SWT_INLINE event_count start(function_type&& function, arg_types&&... args) { $LN3: 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 @@ -26995,7 +26995,7 @@ $LN3: 00056 48 83 c0 20 add rax, 32 ; 00000020H 0005a 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 0005f 48 8b c8 mov rcx, rax - 00062 e8 00 00 00 00 call ??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ; std::optional::emplace + 00062 e8 00 00 00 00 call ??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ; std::optional::emplace 00067 90 npad 1 ; 49 : volatile uint64_t cycleEnd = rdtsc(); @@ -27132,12 +27132,12 @@ minNs$ = 80 cycles$ = 96 instructions$ = 104 branches$ = 112 -missedBranchesVal$ = 120 +branchMissesVal$ = 120 instructionsMin$ = 128 ns$3 = 136 branchesMin$ = 144 -missedBranchesMin$ = 152 -missedBranchesAvg$ = 160 +branchMissesMin$ = 152 +branchMissesAvg$ = 160 $L0$4 = 168 tv224 = 176 tv229 = 184 @@ -27184,7 +27184,7 @@ offset$ = 840 measuredIterationCount$ = 848 ??$collectMetrics@$2U?$string_literal@$09D@bnch_swt@@3D0GO@@0GP@@0CN@@0GJ@@0GO@@0GM@@0GJ@@0GO@@0GF@@0A@@@@@?$benchmark_stage@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$0GE@@bnch_swt@@SA?AUperformance_metrics@1@_K0@Z PROC ; bnch_swt::benchmark_stage{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},100>::collectMetrics{char{110,111,45,105,110,108,105,110,101,0}}>, COMDAT -; 256 : template BNCH_SWT_ALWAYS_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { +; 256 : template BNCH_SWT_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { $LN38: 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 @@ -27415,17 +27415,17 @@ $LN38: 0021e f2 0f 11 44 24 38 movsd QWORD PTR branchesAvg$[rsp], xmm0 -; 272 : double missedBranchesMin{ std::numeric_limits::max() }; +; 272 : double branchMissesMin{ std::numeric_limits::max() }; 00224 e8 00 00 00 00 call ?max@?$numeric_limits@N@std@@SANXZ ; std::numeric_limits::max 00229 f2 0f 11 84 24 - 98 00 00 00 movsd QWORD PTR missedBranchesMin$[rsp], xmm0 + 98 00 00 00 movsd QWORD PTR branchMissesMin$[rsp], xmm0 -; 273 : double missedBranchesAvg{ 0 }; +; 273 : double branchMissesAvg{ 0 }; 00232 0f 57 c0 xorps xmm0, xmm0 00235 f2 0f 11 84 24 - a0 00 00 00 movsd QWORD PTR missedBranchesAvg$[rsp], xmm0 + a0 00 00 00 movsd QWORD PTR branchMissesAvg$[rsp], xmm0 ; 274 : double cycles{}; @@ -27445,11 +27445,11 @@ $LN38: 00253 f2 0f 11 44 24 70 movsd QWORD PTR branches$[rsp], xmm0 -; 277 : double missedBranchesVal{}; +; 277 : double branchMissesVal{}; 00259 0f 57 c0 xorps xmm0, xmm0 0025c f2 0f 11 44 24 - 78 movsd QWORD PTR missedBranchesVal$[rsp], xmm0 + 78 movsd QWORD PTR branchMissesVal$[rsp], xmm0 ; 278 : std::copy(eventsNew.begin() + static_cast(offset - measuredIterationCount), eventsNew.begin() + static_cast(offset), measuredEventsNew.begin()); @@ -27716,45 +27716,45 @@ $LN16@collectMet: 90 00 00 00 movsd QWORD PTR branchesMin$[rsp], xmm0 ; 295 : -; 296 : e.missedBranches(missedBranchesVal); +; 296 : e.branchMisses(branchMissesVal); - 00587 48 8d 54 24 78 lea rdx, QWORD PTR missedBranchesVal$[rsp] + 00587 48 8d 54 24 78 lea rdx, QWORD PTR branchMissesVal$[rsp] 0058c 48 8b 4c 24 40 mov rcx, QWORD PTR e$1[rsp] - 00591 e8 00 00 00 00 call ?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::missedBranches + 00591 e8 00 00 00 00 call ?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z ; bnch_swt::event_count::branchMisses -; 297 : missedBranchesAvg += missedBranchesVal; +; 297 : branchMissesAvg += branchMissesVal; 00596 f2 0f 10 84 24 - a0 00 00 00 movsd xmm0, QWORD PTR missedBranchesAvg$[rsp] + a0 00 00 00 movsd xmm0, QWORD PTR branchMissesAvg$[rsp] 0059f f2 0f 58 44 24 - 78 addsd xmm0, QWORD PTR missedBranchesVal$[rsp] + 78 addsd xmm0, QWORD PTR branchMissesVal$[rsp] 005a5 f2 0f 11 84 24 - a0 00 00 00 movsd QWORD PTR missedBranchesAvg$[rsp], xmm0 + a0 00 00 00 movsd QWORD PTR branchMissesAvg$[rsp], xmm0 -; 298 : missedBranchesMin = missedBranchesMin < missedBranchesVal ? missedBranchesMin : missedBranchesVal; +; 298 : branchMissesMin = branchMissesMin < branchMissesVal ? branchMissesMin : branchMissesVal; 005ae f2 0f 10 44 24 - 78 movsd xmm0, QWORD PTR missedBranchesVal$[rsp] + 78 movsd xmm0, QWORD PTR branchMissesVal$[rsp] 005b4 66 0f 2f 84 24 - 98 00 00 00 comisd xmm0, QWORD PTR missedBranchesMin$[rsp] + 98 00 00 00 comisd xmm0, QWORD PTR branchMissesMin$[rsp] 005bd 76 14 jbe SHORT $LN17@collectMet 005bf f2 0f 10 84 24 - 98 00 00 00 movsd xmm0, QWORD PTR missedBranchesMin$[rsp] + 98 00 00 00 movsd xmm0, QWORD PTR branchMissesMin$[rsp] 005c8 f2 0f 11 84 24 d0 00 00 00 movsd QWORD PTR tv244[rsp], xmm0 005d1 eb 0f jmp SHORT $LN18@collectMet $LN17@collectMet: 005d3 f2 0f 10 44 24 - 78 movsd xmm0, QWORD PTR missedBranchesVal$[rsp] + 78 movsd xmm0, QWORD PTR branchMissesVal$[rsp] 005d9 f2 0f 11 84 24 d0 00 00 00 movsd QWORD PTR tv244[rsp], xmm0 $LN18@collectMet: 005e2 f2 0f 10 84 24 d0 00 00 00 movsd xmm0, QWORD PTR tv244[rsp] 005eb f2 0f 11 84 24 - 98 00 00 00 movsd QWORD PTR missedBranchesMin$[rsp], xmm0 + 98 00 00 00 movsd QWORD PTR branchMissesMin$[rsp], xmm0 -; 256 : template BNCH_SWT_ALWAYS_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { +; 256 : template BNCH_SWT_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { 005f4 e9 cc fd ff ff jmp $LN2@collectMet $LN3@collectMet: @@ -28098,7 +28098,7 @@ $LN6@collectMet: 00 je $LN7@collectMet $LN23@collectMet: -; 320 : metrics.branchMissesPerExecution.emplace(missedBranchesAvg / static_cast(measuredIterationCount)); +; 320 : metrics.branchMissesPerExecution.emplace(branchMissesAvg / static_cast(measuredIterationCount)); 009a2 48 8b 84 24 50 03 00 00 mov rax, QWORD PTR measuredIterationCount$[rsp] @@ -28116,7 +28116,7 @@ $LN21@collectMet: 009cc 0f 28 c1 movaps xmm0, xmm1 $LN22@collectMet: 009cf f2 0f 10 8c 24 - a0 00 00 00 movsd xmm1, QWORD PTR missedBranchesAvg$[rsp] + a0 00 00 00 movsd xmm1, QWORD PTR branchMissesAvg$[rsp] 009d8 f2 0f 5e c8 divsd xmm1, xmm0 009dc 0f 28 c1 movaps xmm0, xmm1 009df f2 0f 11 84 24 @@ -28201,7 +28201,7 @@ __$ReturnUdt$ = 120 function$ = 128 ??@2171bead59dcbfb9c8a65b996d607452@ PROC ; ??@2171bead59dcbfb9c8a65b996d607452@, COMDAT -; 44 : template BNCH_SWT_ALWAYS_INLINE event_count start(function_type&& function, arg_types&&... args) { +; 44 : template BNCH_SWT_INLINE event_count start(function_type&& function, arg_types&&... args) { $LN3: 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 @@ -28239,7 +28239,7 @@ $LN3: 00056 48 83 c0 20 add rax, 32 ; 00000020H 0005a 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 0005f 48 8b c8 mov rcx, rax - 00062 e8 00 00 00 00 call ??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ; std::optional::emplace + 00062 e8 00 00 00 00 call ??$emplace@H@?$optional@N@std@@QEAAAEAN$$QEAH@Z ; std::optional::emplace 00067 90 npad 1 ; 49 : volatile uint64_t cycleEnd = rdtsc(); @@ -30205,7 +30205,7 @@ $LN3@Traits_equ: 00034 4c 8b 44 24 48 mov r8, QWORD PTR _Left_size$[rsp] 00039 48 8b 54 24 50 mov rdx, QWORD PTR _Right$[rsp] 0003e 48 8b 4c 24 40 mov rcx, QWORD PTR _Left$[rsp] - 00043 e8 00 00 00 00 call ?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z ; std::_Narrow_char_traits::compare + 00043 e8 00 00 00 00 call ?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z ; std::_Narrow_char_traits::compare 00048 85 c0 test eax, eax 0004a 75 0a jne SHORT $LN5@Traits_equ 0004c c7 44 24 20 01 @@ -31400,7 +31400,7 @@ _TEXT SEGMENT $T1 = 32 _Location$ = 64 <_Args_0>$ = 72 -??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z PROC ; std::construct_at,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &>, COMDAT +??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z PROC ; std::construct_at,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &>, COMDAT ; 392 : noexcept(::new(static_cast(_Location)) _Ty(_STD forward<_Types>(_Args)...))) /* strengthened */ { @@ -31425,14 +31425,14 @@ $LN3: 00037 48 83 c4 38 add rsp, 56 ; 00000038H 0003b c3 ret 0 -??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ENDP ; std::construct_at,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &> +??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ENDP ; std::construct_at,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\type_traits ; COMDAT ??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z _TEXT SEGMENT _Val$ = 8 -??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z PROC ; std::addressof,std::allocator > const ,unsigned int>,void *> *>, COMDAT +??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z PROC ; std::addressof,std::allocator > const ,unsigned int32_t>,void *> *>, COMDAT ; 1549 : _NODISCARD constexpr _Ty* addressof(_Ty& _Val) noexcept { @@ -31445,7 +31445,7 @@ _Val$ = 8 ; 1551 : } 0000a c3 ret 0 -??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ENDP ; std::addressof,std::allocator > const ,unsigned int>,void *> *> +??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ENDP ; std::addressof,std::allocator > const ,unsigned int32_t>,void *> *> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -31653,7 +31653,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 48 <_Vals_0>$ = 56 -??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Emplace_back,std::allocator > const ,unsigned int> > > > const &>, COMDAT +??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Emplace_back,std::allocator > const ,unsigned int32_t> > > > const &>, COMDAT ; 1594 : _CONSTEXPR20 void _Emplace_back(_Types&&... _Vals) { @@ -31668,7 +31668,7 @@ $LN3: 0000e 48 8b 54 24 38 mov rdx, QWORD PTR <_Vals_0>$[rsp] 00013 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00018 48 8b 48 08 mov rcx, QWORD PTR [rax+8] - 0001c e8 00 00 00 00 call ??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > const &> + 0001c e8 00 00 00 00 call ??$_Construct_in_place@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@AEBV12@@std@@YAXAEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@AEBV10@@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t> > > >,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > const &> ; 1597 : ++_Last; @@ -31682,14 +31682,14 @@ $LN3: 00037 48 83 c4 28 add rsp, 40 ; 00000028H 0003b c3 ret 0 -??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Emplace_back,std::allocator > const ,unsigned int> > > > const &> +??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Emplace_back,std::allocator > const ,unsigned int32_t> > > > const &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory ; COMDAT ?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ _TEXT SEGMENT this$ = 8 -?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Release, COMDAT +?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Release, COMDAT ; 1600 : constexpr _NoThrowFwdIt _Release() { // suppress any exception handling backout and return _Last @@ -31710,14 +31710,14 @@ this$ = 8 ; 1603 : } 0001f c3 ret 0 -?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Release +?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Release _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory ; COMDAT ??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 48 -??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>, COMDAT +??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>, COMDAT ; 1589 : _CONSTEXPR20 ~_Uninitialized_backout() { @@ -31731,14 +31731,14 @@ $LN3: 0000e 48 8b 50 08 mov rdx, QWORD PTR [rax+8] 00012 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00017 48 8b 08 mov rcx, QWORD PTR [rax] - 0001a e8 00 00 00 00 call ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> + 0001a e8 00 00 00 00 call ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> 0001f 90 npad 1 ; 1591 : } 00020 48 83 c4 28 add rsp, 40 ; 00000028H 00024 c3 ret 0 -??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *> +??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -31746,7 +31746,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 8 _Dest$ = 16 -??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>, COMDAT +??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z PROC ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>, COMDAT ; 1582 : constexpr explicit _Uninitialized_backout(_NoThrowFwdIt _Dest) : _First(_Dest), _Last(_Dest) {} @@ -31760,7 +31760,7 @@ _Dest$ = 16 00021 48 89 48 08 mov QWORD PTR [rax+8], rcx 00025 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 0002a c3 ret 0 -??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *> +??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ENDP ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -31768,7 +31768,7 @@ _TEXT ENDS _TEXT SEGMENT _First$ = 8 _Last$ = 16 -??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z PROC ; std::_Adl_verify_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *>, COMDAT +??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z PROC ; std::_Adl_verify_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *>, COMDAT ; 1300 : constexpr void _Adl_verify_range(const _Iter& _First, const _Sentinel& _Last) { @@ -31786,14 +31786,14 @@ _Last$ = 16 ; 1309 : } 0000a c3 ret 0 -??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ENDP ; std::_Adl_verify_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> +??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ENDP ; std::_Adl_verify_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility ; COMDAT ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z _TEXT SEGMENT _It$ = 8 -??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z PROC ; std::_Get_unwrapped,std::allocator > const ,unsigned int> > > > * const &>, COMDAT +??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z PROC ; std::_Get_unwrapped,std::allocator > const ,unsigned int32_t> > > > * const &>, COMDAT ; 1327 : !_Unwrappable_v<_Iter> || _Has_nothrow_unwrapped<_Iter>) { @@ -31814,7 +31814,7 @@ _It$ = 8 ; 1336 : } 0000d c3 ret 0 -??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ENDP ; std::_Get_unwrapped,std::allocator > const ,unsigned int> > > > * const &> +??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ENDP ; std::_Get_unwrapped,std::allocator > const ,unsigned int32_t> > > > * const &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -32436,7 +32436,7 @@ _TEXT ENDS ; COMDAT ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z _TEXT SEGMENT _Obj$ = 8 -??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z PROC ; std::_Destroy_in_place,std::allocator > const ,unsigned int>,void *> *>, COMDAT +??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z PROC ; std::_Destroy_in_place,std::allocator > const ,unsigned int32_t>,void *> *>, COMDAT ; 289 : _CONSTEXPR20 void _Destroy_in_place(_Ty& _Obj) noexcept { @@ -32450,7 +32450,7 @@ _Obj$ = 8 ; 295 : } 00005 c3 ret 0 -??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ENDP ; std::_Destroy_in_place,std::allocator > const ,unsigned int>,void *> *> +??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ENDP ; std::_Destroy_in_place,std::allocator > const ,unsigned int32_t>,void *> *> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list @@ -32458,7 +32458,7 @@ _TEXT ENDS _TEXT SEGMENT _Al$ = 48 _Ptr$ = 56 -??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z PROC ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode,std::allocator > const ,unsigned int>,void *> > >, COMDAT +??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z PROC ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode,std::allocator > const ,unsigned int32_t>,void *> > >, COMDAT ; 316 : static void _Freenode(_Alnode& _Al, _Nodeptr _Ptr) noexcept { // destroy all members in _Ptr and deallocate with _Al @@ -32472,23 +32472,23 @@ $LN3: 0000e 48 8b 44 24 38 mov rax, QWORD PTR _Ptr$[rsp] 00013 48 83 c0 10 add rax, 16 00017 48 8b c8 mov rcx, rax - 0001a e8 00 00 00 00 call ??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int> > + 0001a e8 00 00 00 00 call ??$addressof@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@0@AEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t> > 0001f 48 8b d0 mov rdx, rax 00022 48 8b 4c 24 30 mov rcx, QWORD PTR _Al$[rsp] - 00027 e8 00 00 00 00 call ??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::destroy,std::allocator > const ,unsigned int> > + 00027 e8 00 00 00 00 call ??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@QEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@1@@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::destroy,std::allocator > const ,unsigned int32_t> > ; 318 : _Freenode0(_Al, _Ptr); 0002c 48 8b 54 24 38 mov rdx, QWORD PTR _Ptr$[rsp] 00031 48 8b 4c 24 30 mov rcx, QWORD PTR _Al$[rsp] - 00036 e8 00 00 00 00 call ??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode0,std::allocator > const ,unsigned int>,void *> > > + 00036 e8 00 00 00 00 call ??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode0,std::allocator > const ,unsigned int32_t>,void *> > > 0003b 90 npad 1 ; 319 : } 0003c 48 83 c4 28 add rsp, 40 ; 00000028H 00040 c3 ret 0 -??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ENDP ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode,std::allocator > const ,unsigned int>,void *> > > +??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ENDP ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode,std::allocator > const ,unsigned int32_t>,void *> > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -32496,7 +32496,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 8 __formal$ = 16 -??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocator,std::allocator > const ,unsigned int> > > > >,std::allocator > const ,unsigned int> >, COMDAT +??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocator,std::allocator > const ,unsigned int32_t> > > > >,std::allocator > const ,unsigned int32_t> >, COMDAT ; 942 : constexpr allocator(const allocator<_Other>&) noexcept {} @@ -32504,7 +32504,7 @@ __formal$ = 16 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000a 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 0000f c3 ret 0 -??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocator,std::allocator > const ,unsigned int> > > > >,std::allocator > const ,unsigned int> > +??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocator,std::allocator > const ,unsigned int32_t> > > > >,std::allocator > const ,unsigned int32_t> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -32513,7 +32513,7 @@ _TEXT SEGMENT this$ = 48 __formal$ = 56 _Val1$ = 64 -??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>,std::allocator > const ,unsigned int> > const &>, COMDAT +??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>,std::allocator > const ,unsigned int32_t> > const &>, COMDAT ; 1500 : : _Ty1(_STD forward<_Other1>(_Val1)), _Myval2(_STD forward<_Other2>(_Val2)...) {} @@ -32524,15 +32524,15 @@ $LN3: 0000e 48 83 ec 28 sub rsp, 40 ; 00000028H 00012 48 8b 54 24 40 mov rdx, QWORD PTR _Val1$[rsp] 00017 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 0001c e8 00 00 00 00 call ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocator,std::allocator > const ,unsigned int> > > > >,std::allocator > const ,unsigned int> > + 0001c e8 00 00 00 00 call ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocator,std::allocator > const ,unsigned int32_t> > > > >,std::allocator > const ,unsigned int32_t> > 00021 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00026 48 8b c8 mov rcx, rax - 00029 e8 00 00 00 00 call ??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Vector_val,std::allocator > const ,unsigned int> > > > > >::_Vector_val,std::allocator > const ,unsigned int> > > > > > + 00029 e8 00 00 00 00 call ??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > > 0002e 90 npad 1 0002f 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00034 48 83 c4 28 add rsp, 40 ; 00000028H 00038 c3 ret 0 -??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>,std::allocator > const ,unsigned int> > const &> +??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>,std::allocator > const ,unsigned int32_t> > const &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -33760,7 +33760,7 @@ __catch$??$_Resize_reallocate@U_Value_init_tag@std@@@?$vector@U_SYSTEM_LOGICAL_P 00040 48 83 c4 20 add rsp, 32 ; 00000020H 00044 5d pop rbp 00045 c3 ret 0 - 00046 cc int 3 + 00046 cc int32_t 3 ?catch$0@?0???$_Resize_reallocate@U_Value_init_tag@std@@@?$vector@U_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@V?$allocator@U_SYSTEM_LOGICAL_PROCESSOR_INFORMATION@@@std@@@std@@AEAAX_KAEBU_Value_init_tag@1@@Z@4HA ENDP ; `std::vector<_SYSTEM_LOGICAL_PROCESSOR_INFORMATION,std::allocator<_SYSTEM_LOGICAL_PROCESSOR_INFORMATION> >::_Resize_reallocate'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -34768,7 +34768,7 @@ __$ArrayPad$ = 960 functionNew$ = 992 ??$runBenchmark@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U?$string_literal@$0BB@D@2@3D0HD@@0GP@@0GN@@0GF@@0HE@@0GJ@@0GN@@0GF@@0HD@@0CN@@0GJ@@0GO@@0GM@@0GJ@@0GO@@0GF@@0A@@@@$2U?$string_literal@$0L@D@2@3D0GE@@0GP@@0GE@@0GH@@0GF@@0HC@@0GC@@0GM@@0HF@@0GF@@0A@@@@V@?1???$parseFunction@$00$00$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U12@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@@@YAXXZ@$$V@?$benchmark_stage@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$0GE@@bnch_swt@@SAAEBUperformance_metrics@1@$$QEAV@?1???$parseFunction@$00$00$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U12@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@@@YAXXZ@@Z PROC ; bnch_swt::benchmark_stage{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},100>::runBenchmark{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},bnch_swt::string_literal<17,char>{char{115,111,109,101,116,105,109,101,115,45,105,110,108,105,110,101,0}},bnch_swt::string_literal<11,char>{char{100,111,100,103,101,114,98,108,117,101,0}},`parseFunction<1,1,bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}}>'::`2':: >, COMDAT -; 225 : BNCH_SWT_ALWAYS_INLINE static const performance_metrics& runBenchmark(function_type&& functionNew, arg_types&&... args) { +; 225 : BNCH_SWT_INLINE static const performance_metrics& runBenchmark(function_type&& functionNew, arg_types&&... args) { $LN9: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -35141,7 +35141,7 @@ this$ = 64 __$ReturnUdt$ = 72 ??B?$string_literal@$0BB@D@bnch_swt@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ PROC ; bnch_swt::string_literal<17,char>::operator std::basic_string,std::allocator >, COMDAT -; 105 : BNCH_SWT_ALWAYS_INLINE operator std::string() const noexcept { +; 105 : BNCH_SWT_INLINE operator std::string() const noexcept { $LN3: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -35374,7 +35374,7 @@ __$ArrayPad$ = 928 functionNew$ = 960 ??$runBenchmark@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U?$string_literal@$09D@2@3D0GO@@0GP@@0CN@@0GJ@@0GO@@0GM@@0GJ@@0GO@@0GF@@0A@@@@$2U?$string_literal@$0L@D@2@3D0GE@@0GP@@0GE@@0GH@@0GF@@0HC@@0GC@@0GM@@0HF@@0GF@@0A@@@@V@?1???$parseFunction@$00$00$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U12@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@@@YAXXZ@$$V@?$benchmark_stage@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$0GE@@bnch_swt@@SAAEBUperformance_metrics@1@$$QEAV@?1???$parseFunction@$00$00$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U12@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@@@YAXXZ@@Z PROC ; bnch_swt::benchmark_stage{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},100>::runBenchmark{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},bnch_swt::string_literal<10,char>{char{110,111,45,105,110,108,105,110,101,0}},bnch_swt::string_literal<11,char>{char{100,111,100,103,101,114,98,108,117,101,0}},`parseFunction<1,1,bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}}>'::`2':: >, COMDAT -; 225 : BNCH_SWT_ALWAYS_INLINE static const performance_metrics& runBenchmark(function_type&& functionNew, arg_types&&... args) { +; 225 : BNCH_SWT_INLINE static const performance_metrics& runBenchmark(function_type&& functionNew, arg_types&&... args) { $LN9: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -35781,7 +35781,7 @@ this$ = 64 __$ReturnUdt$ = 72 ??B?$string_literal@$09D@bnch_swt@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ PROC ; bnch_swt::string_literal<10,char>::operator std::basic_string,std::allocator >, COMDAT -; 105 : BNCH_SWT_ALWAYS_INLINE operator std::string() const noexcept { +; 105 : BNCH_SWT_INLINE operator std::string() const noexcept { $LN3: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -35856,7 +35856,7 @@ valuePtr$ = 32 value$ = 64 ??$doNotOptimizeAway@AEA_K@bnch_swt@@YAXAEA_K@Z PROC ; bnch_swt::doNotOptimizeAway, COMDAT -; 60 : template BNCH_SWT_ALWAYS_INLINE void doNotOptimizeAway(value_type&& value) { +; 60 : template BNCH_SWT_INLINE void doNotOptimizeAway(value_type&& value) { $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -36026,7 +36026,7 @@ __$ArrayPad$ = 856 showComparison$ = 896 ?printResults@?$benchmark_stage@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$0GE@@bnch_swt@@SAX_N@Z PROC ; bnch_swt::benchmark_stage{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},100>::printResults, COMDAT -; 169 : BNCH_SWT_ALWAYS_INLINE static void printResults(bool showComparison = true) { +; 169 : BNCH_SWT_INLINE static void printResults(bool showComparison = true) { $LN13: 00000 88 4c 24 08 mov BYTE PTR [rsp+8], cl @@ -36743,7 +36743,7 @@ $T9 = 96 $T10 = 104 ?warmupThread@?$benchmark_stage@$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$0GE@@bnch_swt@@SAXXZ PROC ; bnch_swt::benchmark_stage{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},100>::warmupThread, COMDAT -; 158 : BNCH_SWT_ALWAYS_INLINE static void warmupThread() { +; 158 : BNCH_SWT_INLINE static void warmupThread() { $LN5: 00000 40 57 push rdi @@ -36783,7 +36783,7 @@ $LN2@warmupThre: 03 00 00 mov DWORD PTR $T6[rsp], 1000 ; 000003e8H 0005a 48 8d 54 24 28 lea rdx, QWORD PTR $T6[rsp] 0005f 48 8d 4c 24 48 lea rcx, QWORD PTR $T7[rsp] - 00064 e8 00 00 00 00 call ??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z ; std::chrono::duration >::duration > + 00064 e8 00 00 00 00 call ??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z ; std::chrono::duration >::duration > 00069 48 89 44 24 50 mov QWORD PTR tv87[rsp], rax 0006e 48 8d 54 24 40 lea rdx, QWORD PTR duration$[rsp] 00073 48 8d 4c 24 4c lea rcx, QWORD PTR $T8[rsp] @@ -37675,7 +37675,7 @@ __catch$??$_Resize_reallocate@U_Value_init_tag@std@@@?$vector@Uevent_count@bnch_ 00040 48 83 c4 20 add rsp, 32 ; 00000020H 00044 5d pop rbp 00045 c3 ret 0 - 00046 cc int 3 + 00046 cc int32_t 3 ?catch$0@?0???$_Resize_reallocate@U_Value_init_tag@std@@@?$vector@Uevent_count@bnch_swt@@V?$allocator@Uevent_count@bnch_swt@@@std@@@std@@AEAAX_KAEBU_Value_init_tag@1@@Z@4HA ENDP ; `std::vector >::_Resize_reallocate'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -41451,11 +41451,11 @@ $LN4@Insert_str: 0018e 48 8b 4c 24 40 mov rcx, QWORD PTR tv191[rsp] 00193 e8 00 00 00 00 call ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z ; std::basic_streambuf >::sputc 00198 89 44 24 30 mov DWORD PTR tv198[rsp], eax - 0019c e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof + 0019c e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof 001a1 89 44 24 34 mov DWORD PTR tv196[rsp], eax 001a5 8b 54 24 30 mov edx, DWORD PTR tv198[rsp] 001a9 8b 4c 24 34 mov ecx, DWORD PTR tv196[rsp] - 001ad e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type + 001ad e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type 001b2 0f b6 c0 movzx eax, al 001b5 85 c0 test eax, eax 001b7 74 0d je SHORT $LN15@Insert_str @@ -41557,11 +41557,11 @@ $LN7@Insert_str: 002a3 48 8b 4c 24 50 mov rcx, QWORD PTR tv256[rsp] 002a8 e8 00 00 00 00 call ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z ; std::basic_streambuf >::sputc 002ad 89 44 24 38 mov DWORD PTR tv263[rsp], eax - 002b1 e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof + 002b1 e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof 002b6 89 44 24 3c mov DWORD PTR tv261[rsp], eax 002ba 8b 54 24 38 mov edx, DWORD PTR tv263[rsp] 002be 8b 4c 24 3c mov ecx, DWORD PTR tv261[rsp] - 002c2 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type + 002c2 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type 002c7 0f b6 c0 movzx eax, al 002ca 85 c0 test eax, eax 002cc 74 0d je SHORT $LN18@Insert_str @@ -41690,7 +41690,7 @@ __catch$??$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@D 00045 48 83 c4 20 add rsp, 32 ; 00000020H 00049 5d pop rbp 0004a c3 ret 0 - 0004b cc int 3 + 0004b cc int32_t 3 ?catch$0@?0???$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z@4HA ENDP ; `std::_Insert_string,unsigned __int64>'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -42554,7 +42554,7 @@ $LN3: 00018 4c 8b 44 24 58 mov r8, QWORD PTR _Old_size$[rsp] 0001d 48 8b 54 24 50 mov rdx, QWORD PTR _Old_ptr$[rsp] 00022 48 8b 4c 24 48 mov rcx, QWORD PTR _New_ptr$[rsp] - 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy ; 1541 : _Traits::assign(_New_ptr + _Old_size, _Count, _Ch); @@ -42566,7 +42566,7 @@ $LN3: 68 movzx r8d, BYTE PTR _Ch$[rsp] 00042 48 8b 54 24 60 mov rdx, QWORD PTR _Count$[rsp] 00047 48 8b c8 mov rcx, rax - 0004a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign + 0004a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign 0004f 90 npad 1 ; 1542 : _Traits::assign(_New_ptr[_Old_size + _Count], _Elem()); @@ -42581,7 +42581,7 @@ $LN3: 0006d 48 8b c1 mov rax, rcx 00070 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00075 48 8b c8 mov rcx, rax - 00078 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 00078 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0007d 90 npad 1 ; 1543 : }, @@ -42840,7 +42840,7 @@ $LN3: 00018 4c 8b 44 24 60 mov r8, QWORD PTR _Off$[rsp] 0001d 48 8b 54 24 50 mov rdx, QWORD PTR _Old_ptr$[rsp] 00022 48 8b 4c 24 48 mov rcx, QWORD PTR _New_ptr$[rsp] - 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy ; 1790 : _Traits::assign(_New_ptr + _Off, _Count, _Ch); @@ -42852,7 +42852,7 @@ $LN3: 70 movzx r8d, BYTE PTR _Ch$[rsp] 00042 48 8b 54 24 68 mov rdx, QWORD PTR _Count$[rsp] 00047 48 8b c8 mov rcx, rax - 0004a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign + 0004a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign ; 1791 : _Traits::copy(_New_ptr + _Off + _Count, _Old_ptr + _Off, _Old_size - _Off + 1); @@ -42875,7 +42875,7 @@ $LN3: 0008f 48 8b d1 mov rdx, rcx 00092 48 8b 44 24 20 mov rax, QWORD PTR tv78[rsp] 00097 48 8b c8 mov rcx, rax - 0009a e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 0009a e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 0009f 90 npad 1 ; 1792 : }, @@ -42891,7 +42891,7 @@ _TEXT SEGMENT $T1 = 32 _Obj$ = 64 <_Args_0>$ = 72 -??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z PROC ; std::_Construct_in_place,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &>, COMDAT +??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z PROC ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &>, COMDAT ; 399 : is_nothrow_constructible_v<_Ty, _Types...>) { @@ -42911,10 +42911,10 @@ $LN5: ; 402 : _STD construct_at(_STD addressof(_Obj), _STD forward<_Types>(_Args)...); 0001a 48 8b 4c 24 40 mov rcx, QWORD PTR _Obj$[rsp] - 0001f e8 00 00 00 00 call ??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int>,void *> *> + 0001f e8 00 00 00 00 call ??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t>,void *> *> 00024 48 8b 54 24 48 mov rdx, QWORD PTR <_Args_0>$[rsp] 00029 48 8b c8 mov rcx, rax - 0002c e8 00 00 00 00 call ??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ; std::construct_at,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &> + 0002c e8 00 00 00 00 call ??$construct_at@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@QEAPEAU10@AEAPEAU10@@Z ; std::construct_at,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &> 00031 90 npad 1 ; 403 : } else @@ -42927,7 +42927,7 @@ $LN2@Construct_: ; 406 : ::new (static_cast(_STD addressof(_Obj))) _Ty(_STD forward<_Types>(_Args)...); 00034 48 8b 4c 24 40 mov rcx, QWORD PTR _Obj$[rsp] - 00039 e8 00 00 00 00 call ??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int>,void *> *> + 00039 e8 00 00 00 00 call ??$addressof@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAPEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@AEAPEAU10@@Z ; std::addressof,std::allocator > const ,unsigned int32_t>,void *> *> 0003e 48 8b d0 mov rdx, rax 00041 b9 08 00 00 00 mov ecx, 8 00046 e8 00 00 00 00 call ??2@YAPEAX_KPEAX@Z ; operator new @@ -42943,7 +42943,7 @@ $LN3@Construct_: 00060 48 83 c4 38 add rsp, 56 ; 00000038H 00064 c3 ret 0 -??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ENDP ; std::_Construct_in_place,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &> +??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ENDP ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -43402,7 +43402,7 @@ $LN3: 00018 4c 8b 44 24 50 mov r8, QWORD PTR _Count$[rsp] 0001d 48 8b 54 24 58 mov rdx, QWORD PTR _Ptr$[rsp] 00022 48 8b 4c 24 48 mov rcx, QWORD PTR _New_ptr$[rsp] - 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 0002c 90 npad 1 ; 1619 : _Traits::assign(_New_ptr[_Count], _Elem()); @@ -43414,7 +43414,7 @@ $LN3: 0003f 48 8b c1 mov rax, rcx 00042 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00047 48 8b c8 mov rcx, rax - 0004a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 0004a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0004f 90 npad 1 ; 1620 : }, @@ -43476,7 +43476,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 8 __formal$ = 16 -??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocator,std::allocator > const ,unsigned int>,void *> >,std::allocator > const ,unsigned int> >, COMDAT +??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocator,std::allocator > const ,unsigned int32_t>,void *> >,std::allocator > const ,unsigned int32_t> >, COMDAT ; 942 : constexpr allocator(const allocator<_Other>&) noexcept {} @@ -43484,7 +43484,7 @@ __formal$ = 16 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000a 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 0000f c3 ret 0 -??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocator,std::allocator > const ,unsigned int>,void *> >,std::allocator > const ,unsigned int> > +??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocator,std::allocator > const ,unsigned int32_t>,void *> >,std::allocator > const ,unsigned int32_t> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -43493,7 +43493,7 @@ _TEXT SEGMENT this$ = 48 __formal$ = 56 _Val1$ = 64 -??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>,std::allocator > const ,unsigned int> > const &>, COMDAT +??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>,std::allocator > const ,unsigned int32_t> > const &>, COMDAT ; 1500 : : _Ty1(_STD forward<_Other1>(_Val1)), _Myval2(_STD forward<_Other2>(_Val2)...) {} @@ -43504,15 +43504,15 @@ $LN3: 0000e 48 83 ec 28 sub rsp, 40 ; 00000028H 00012 48 8b 54 24 40 mov rdx, QWORD PTR _Val1$[rsp] 00017 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 0001c e8 00 00 00 00 call ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocator,std::allocator > const ,unsigned int>,void *> >,std::allocator > const ,unsigned int> > + 0001c e8 00 00 00 00 call ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocator,std::allocator > const ,unsigned int32_t>,void *> >,std::allocator > const ,unsigned int32_t> > 00021 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00026 48 8b c8 mov rcx, rax - 00029 e8 00 00 00 00 call ??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ ; std::_List_val,std::allocator > const ,unsigned int> > >::_List_val,std::allocator > const ,unsigned int> > > + 00029 e8 00 00 00 00 call ??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ ; std::_List_val,std::allocator > const ,unsigned int32_t> > >::_List_val,std::allocator > const ,unsigned int32_t> > > 0002e 90 npad 1 0002f 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00034 48 83 c4 28 add rsp, 40 ; 00000028H 00038 c3 ret 0 -??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>,std::allocator > const ,unsigned int> > const &> +??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>,std::allocator > const ,unsigned int32_t> > const &> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xutility @@ -43523,7 +43523,7 @@ _ULast$2 = 40 _First$ = 64 _Last$ = 72 _Val$ = 80 -??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z PROC ; std::fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > >, COMDAT +??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z PROC ; std::fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > >, COMDAT ; 5177 : _CONSTEXPR20 void fill(const _FwdIt _First, const _FwdIt _Last, const _Ty& _Val) { @@ -43538,7 +43538,7 @@ $LN7: 00013 48 8d 54 24 48 lea rdx, QWORD PTR _Last$[rsp] 00018 48 8d 4c 24 40 lea rcx, QWORD PTR _First$[rsp] - 0001d e8 00 00 00 00 call ??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ; std::_Adl_verify_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> + 0001d e8 00 00 00 00 call ??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ; std::_Adl_verify_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> 00022 90 npad 1 ; 5180 : if constexpr (_Is_vb_iterator<_FwdIt, true>) { @@ -43547,13 +43547,13 @@ $LN7: ; 5183 : auto _UFirst = _STD _Get_unwrapped(_First); 00023 48 8d 4c 24 40 lea rcx, QWORD PTR _First$[rsp] - 00028 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int> > > > * const &> + 00028 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int32_t> > > > * const &> 0002d 48 89 44 24 20 mov QWORD PTR _UFirst$1[rsp], rax ; 5184 : const auto _ULast = _STD _Get_unwrapped(_Last); 00032 48 8d 4c 24 48 lea rcx, QWORD PTR _Last$[rsp] - 00037 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int> > > > * const &> + 00037 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int32_t> > > > * const &> 0003c 48 89 44 24 28 mov QWORD PTR _ULast$2[rsp], rax ; 5185 : #if _HAS_CXX20 @@ -43604,7 +43604,7 @@ $LN3@fill: 00077 48 83 c4 38 add rsp, 56 ; 00000038H 0007b c3 ret 0 -??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ENDP ; std::fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > > +??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ENDP ; std::fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -43616,7 +43616,7 @@ _Backout$1 = 48 _First$ = 80 _Last$ = 88 _Val$ = 96 -??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z PROC ; std::uninitialized_fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > >, COMDAT +??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z PROC ; std::uninitialized_fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > >, COMDAT ; 1963 : void uninitialized_fill(const _NoThrowFwdIt _First, const _NoThrowFwdIt _Last, const _Tval& _Val) { @@ -43631,18 +43631,18 @@ $LN5: 00013 48 8d 54 24 58 lea rdx, QWORD PTR _Last$[rsp] 00018 48 8d 4c 24 50 lea rcx, QWORD PTR _First$[rsp] - 0001d e8 00 00 00 00 call ??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ; std::_Adl_verify_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> + 0001d e8 00 00 00 00 call ??$_Adl_verify_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0@Z ; std::_Adl_verify_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> ; 1966 : auto _UFirst = _STD _Get_unwrapped(_First); 00022 48 8d 4c 24 50 lea rcx, QWORD PTR _First$[rsp] - 00027 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int> > > > * const &> + 00027 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int32_t> > > > * const &> 0002c 48 89 44 24 20 mov QWORD PTR _UFirst$[rsp], rax ; 1967 : const auto _ULast = _STD _Get_unwrapped(_Last); 00031 48 8d 4c 24 58 lea rcx, QWORD PTR _Last$[rsp] - 00036 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int> > > > * const &> + 00036 e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@YA?A_TAEBQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@@Z ; std::_Get_unwrapped,std::allocator > const ,unsigned int32_t> > > > * const &> 0003b 48 89 44 24 28 mov QWORD PTR _ULast$[rsp], rax ; 1968 : if constexpr (_Fill_memset_is_safe<_Unwrapped_t, _Tval>) { @@ -43659,7 +43659,7 @@ $LN5: 00040 48 8b 54 24 20 mov rdx, QWORD PTR _UFirst$[rsp] 00045 48 8d 4c 24 30 lea rcx, QWORD PTR _Backout$1[rsp] - 0004a e8 00 00 00 00 call ??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *> + 0004a e8 00 00 00 00 call ??0?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *> 0004f 90 npad 1 $LN2@uninitiali: @@ -43673,7 +43673,7 @@ $LN2@uninitiali: 0005c 48 8b 54 24 60 mov rdx, QWORD PTR _Val$[rsp] 00061 48 8d 4c 24 30 lea rcx, QWORD PTR _Backout$1[rsp] - 00066 e8 00 00 00 00 call ??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Emplace_back,std::allocator > const ,unsigned int> > > > const &> + 00066 e8 00 00 00 00 call ??$_Emplace_back@AEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXAEBV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@1@@Z ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Emplace_back,std::allocator > const ,unsigned int32_t> > > > const &> 0006b 90 npad 1 ; 1981 : } @@ -43685,19 +43685,19 @@ $LN3@uninitiali: ; 1983 : _Backout._Release(); 0006e 48 8d 4c 24 30 lea rcx, QWORD PTR _Backout$1[rsp] - 00073 e8 00 00 00 00 call ?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::_Release + 00073 e8 00 00 00 00 call ?_Release@?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::_Release ; 1984 : } 00078 48 8d 4c 24 30 lea rcx, QWORD PTR _Backout$1[rsp] - 0007d e8 00 00 00 00 call ??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int> > > > *> + 0007d e8 00 00 00 00 call ??1?$_Uninitialized_backout@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *>::~_Uninitialized_backout,std::allocator > const ,unsigned int32_t> > > > *> 00082 90 npad 1 ; 1985 : } 00083 48 83 c4 48 add rsp, 72 ; 00000048H 00087 c3 ret 0 -??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ENDP ; std::uninitialized_fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > > +??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ENDP ; std::uninitialized_fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -44561,7 +44561,7 @@ $LN3: 00018 4c 8b 44 24 58 mov r8, QWORD PTR _Old_size$[rsp] 0001d 48 8b 54 24 50 mov rdx, QWORD PTR _Old_ptr$[rsp] 00022 48 8b 4c 24 48 mov rcx, QWORD PTR _New_ptr$[rsp] - 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy ; 1514 : _Traits::copy(_New_ptr + _Old_size, _Ptr, _Count); @@ -44572,7 +44572,7 @@ $LN3: 0003c 4c 8b 44 24 68 mov r8, QWORD PTR _Count$[rsp] 00041 48 8b 54 24 60 mov rdx, QWORD PTR _Ptr$[rsp] 00046 48 8b c8 mov rcx, rax - 00049 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 00049 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 0004e 90 npad 1 ; 1515 : _Traits::assign(_New_ptr[_Old_size + _Count], _Elem()); @@ -44587,7 +44587,7 @@ $LN3: 0006c 48 8b c1 mov rax, rcx 0006f 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00074 48 8b c8 mov rcx, rax - 00077 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 00077 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0007c 90 npad 1 ; 1516 : }, @@ -44945,7 +44945,7 @@ _TEXT ENDS _TEXT SEGMENT _Al$ = 48 _Ptr$ = 56 -??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z PROC ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode0,std::allocator > const ,unsigned int>,void *> > >, COMDAT +??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z PROC ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode0,std::allocator > const ,unsigned int32_t>,void *> > >, COMDAT ; 307 : static void _Freenode0(_Alnode& _Al, _Nodeptr _Ptr) noexcept { @@ -44960,14 +44960,14 @@ $LN3: 0000e 48 8b 44 24 38 mov rax, QWORD PTR _Ptr$[rsp] 00013 48 8b c8 mov rcx, rax - 00016 e8 00 00 00 00 call ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ; std::_Destroy_in_place,std::allocator > const ,unsigned int>,void *> *> + 00016 e8 00 00 00 00 call ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ; std::_Destroy_in_place,std::allocator > const ,unsigned int32_t>,void *> *> ; 311 : _Destroy_in_place(_Ptr->_Prev); 0001b 48 8b 44 24 38 mov rax, QWORD PTR _Ptr$[rsp] 00020 48 83 c0 08 add rax, 8 00024 48 8b c8 mov rcx, rax - 00027 e8 00 00 00 00 call ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ; std::_Destroy_in_place,std::allocator > const ,unsigned int>,void *> *> + 00027 e8 00 00 00 00 call ??$_Destroy_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@@Z ; std::_Destroy_in_place,std::allocator > const ,unsigned int32_t>,void *> *> ; 312 : allocator_traits<_Alnode>::deallocate(_Al, _Ptr, 1); @@ -44975,14 +44975,14 @@ $LN3: 00 mov r8d, 1 00032 48 8b 54 24 38 mov rdx, QWORD PTR _Ptr$[rsp] 00037 48 8b 4c 24 30 mov rcx, QWORD PTR _Al$[rsp] - 0003c e8 00 00 00 00 call ?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::deallocate + 0003c e8 00 00 00 00 call ?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::deallocate 00041 90 npad 1 ; 313 : } 00042 48 83 c4 28 add rsp, 40 ; 00000028H 00046 c3 ret 0 -??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ENDP ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode0,std::allocator > const ,unsigned int>,void *> > > +??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ENDP ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode0,std::allocator > const ,unsigned int32_t>,void *> > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list @@ -44992,7 +44992,7 @@ _Pnode$ = 32 _Pnext$1 = 40 _Al$ = 64 _Head$ = 72 -??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z PROC ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Free_non_head,std::allocator > const ,unsigned int>,void *> > >, COMDAT +??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z PROC ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Free_non_head,std::allocator > const ,unsigned int32_t>,void *> > >, COMDAT ; 323 : _Alnode& _Al, _Nodeptr _Head) noexcept { // free a list starting at _First and terminated at nullptr @@ -45036,7 +45036,7 @@ $LN4@Free_non_h: 0004c 48 8b 54 24 20 mov rdx, QWORD PTR _Pnode$[rsp] 00051 48 8b 4c 24 40 mov rcx, QWORD PTR _Al$[rsp] - 00056 e8 00 00 00 00 call ??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode,std::allocator > const ,unsigned int>,void *> > > + 00056 e8 00 00 00 00 call ??$_Freenode@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode,std::allocator > const ,unsigned int32_t>,void *> > > 0005b 90 npad 1 ; 330 : } @@ -45048,7 +45048,7 @@ $LN3@Free_non_h: 0005e 48 83 c4 38 add rsp, 56 ; 00000038H 00062 c3 ret 0 -??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ENDP ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Free_non_head,std::allocator > const ,unsigned int>,void *> > > +??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ENDP ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Free_non_head,std::allocator > const ,unsigned int32_t>,void *> > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash @@ -45059,7 +45059,7 @@ tv70 = 40 tv79 = 48 this$ = 80 _Al$ = 88 -??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Hash_vec,std::allocator > const ,unsigned int> > > > > >,std::allocator > const ,unsigned int> > const &,0>, COMDAT +??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >,std::allocator > const ,unsigned int32_t> > const &,0>, COMDAT ; 267 : : _Mypair(_One_then_variadic_args_t{}, _STD forward<_Any_alloc>(_Al)) { // construct empty vector, allocator @@ -45072,7 +45072,7 @@ $LN3: 00018 4c 8b 44 24 58 mov r8, QWORD PTR _Al$[rsp] 0001d 0f b6 54 24 20 movzx edx, BYTE PTR $T1[rsp] 00022 48 8b 4c 24 28 mov rcx, QWORD PTR tv70[rsp] - 00027 e8 00 00 00 00 call ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>,std::allocator > const ,unsigned int> > const &> + 00027 e8 00 00 00 00 call ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>,std::allocator > const ,unsigned int32_t> > const &> 0002c 90 npad 1 ; 268 : _Mypair._Myval2._Alloc_proxy(_GET_PROXY_ALLOCATOR(_Aliter, _Mypair._Get_first())); @@ -45090,7 +45090,7 @@ $LN3: 00049 48 8b 44 24 50 mov rax, QWORD PTR this$[rsp] 0004e 48 83 c4 48 add rsp, 72 ; 00000048H 00052 c3 ret 0 -??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Hash_vec,std::allocator > const ,unsigned int> > > > > >,std::allocator > const ,unsigned int> > const &,0> +??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >,std::allocator > const ,unsigned int32_t> > const &,0> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -45098,7 +45098,7 @@ _TEXT ENDS _TEXT SEGMENT _First$ = 8 _Last$ = 16 -??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z PROC ; std::_Destroy_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *>, COMDAT +??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z PROC ; std::_Destroy_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *>, COMDAT ; 1073 : _CONSTEXPR20 void _Destroy_range(_NoThrowFwdIt _First, const _NoThrowSentinel _Last) noexcept { @@ -45114,14 +45114,14 @@ _Last$ = 16 ; 1080 : } 0000a c3 ret 0 -??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ENDP ; std::_Destroy_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> +??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ENDP ; std::_Destroy_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> _TEXT ENDS ; Function compile flags: /Odtp ; COMDAT ??_G?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAAPEAXI@Z _TEXT SEGMENT this$ = 48 __flags$ = 56 -??_G?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAAPEAXI@Z PROC ; std::pair,std::allocator > const ,unsigned int>::`scalar deleting destructor', COMDAT +??_G?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAAPEAXI@Z PROC ; std::pair,std::allocator > const ,unsigned int32_t>::`scalar deleting destructor', COMDAT $LN4: 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -45140,13 +45140,13 @@ $LN2@scalar: 00032 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00037 48 83 c4 28 add rsp, 40 ; 00000028H 0003b c3 ret 0 -??_G?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAAPEAXI@Z ENDP ; std::pair,std::allocator > const ,unsigned int>::`scalar deleting destructor' +??_G?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAAPEAXI@Z ENDP ; std::pair,std::allocator > const ,unsigned int32_t>::`scalar deleting destructor' _TEXT ENDS ; Function compile flags: /Odtp ; COMDAT ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAA@XZ _TEXT SEGMENT this$ = 48 -??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAA@XZ PROC ; std::pair,std::allocator > const ,unsigned int>::~pair,std::allocator > const ,unsigned int>, COMDAT +??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAA@XZ PROC ; std::pair,std::allocator > const ,unsigned int32_t>::~pair,std::allocator > const ,unsigned int32_t>, COMDAT $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 83 ec 28 sub rsp, 40 ; 00000028H @@ -45156,7 +45156,7 @@ $LN3: 00016 90 npad 1 00017 48 83 c4 28 add rsp, 40 ; 00000028H 0001b c3 ret 0 -??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAA@XZ ENDP ; std::pair,std::allocator > const ,unsigned int>::~pair,std::allocator > const ,unsigned int> +??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@QEAA@XZ ENDP ; std::pair,std::allocator > const ,unsigned int32_t>::~pair,std::allocator > const ,unsigned int32_t> _TEXT ENDS ; Function compile flags: /Odtp ; COMDAT ??0?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z @@ -45164,7 +45164,7 @@ _TEXT SEGMENT this$ = 48 __param0$ = 56 __param1$ = 64 -??0?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z PROC ; std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > >::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > >, COMDAT +??0?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z PROC ; std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > >::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > >, COMDAT $LN3: 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -45173,12 +45173,12 @@ $LN3: 00013 4c 8b 44 24 40 mov r8, QWORD PTR __param1$[rsp] 00018 48 8b 54 24 38 mov rdx, QWORD PTR __param0$[rsp] 0001d 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 00022 e8 00 00 00 00 call ??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0> + 00022 e8 00 00 00 00 call ??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0> 00027 90 npad 1 00028 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0002d 48 83 c4 28 add rsp, 40 ; 00000028H 00031 c3 ret 0 -??0?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ENDP ; std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > >::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > +??0?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ENDP ; std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > >::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list @@ -45187,7 +45187,7 @@ _TEXT SEGMENT this$ = 48 _Pnode$ = 56 _Plist$ = 64 -??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z PROC ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0>, COMDAT +??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z PROC ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0>, COMDAT ; 37 : _List_unchecked_const_iterator(_Nodeptr _Pnode, const _Mylist* _Plist) noexcept : _Ptr(_Pnode) { @@ -45212,7 +45212,7 @@ $LN3: 00030 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00035 48 83 c4 28 add rsp, 40 ; 00000028H 00039 c3 ret 0 -??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ENDP ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int> > >,std::_Iterator_base0> +??0?$_List_unchecked_const_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@U_Iterator_base0@2@@std@@QEAA@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@1@PEBV?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@1@@Z ENDP ; std::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0>::_List_unchecked_const_iterator,std::allocator > const ,unsigned int32_t> > >,std::_Iterator_base0> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -46229,7 +46229,7 @@ _TEXT SEGMENT _First$ = 8 _Last$ = 16 _Al$ = 24 -??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z PROC ; std::_Destroy_range >, COMDAT +??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z PROC ; std::_Destroy_range >, COMDAT ; 1062 : _CONSTEXPR20 void _Destroy_range(_Alloc_ptr_t<_Alloc> _First, const _Alloc_ptr_t<_Alloc> _Last, _Alloc& _Al) noexcept { @@ -46247,7 +46247,7 @@ _Al$ = 24 ; 1070 : } 0000f c3 ret 0 -??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z ENDP ; std::_Destroy_range > +??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z ENDP ; std::_Destroy_range > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\type_traits @@ -48021,7 +48021,7 @@ $LN2@Construct: 00 mov r8d, 16 0009b 48 8b 54 24 78 mov rdx, QWORD PTR _Arg$[rsp] 000a0 48 8b c8 mov rcx, rax - 000a3 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 000a3 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 000a8 90 npad 1 ; 885 : #endif // ^^^ !_INSERT_STRING_ANNOTATION ^^^ @@ -48098,7 +48098,7 @@ $LN3@Construct: 00141 4c 8b c1 mov r8, rcx 00144 48 8b 54 24 78 mov rdx, QWORD PTR _Arg$[rsp] 00149 48 8b c8 mov rcx, rax - 0014c e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 0014c e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 00151 90 npad 1 ; 906 : } @@ -48221,7 +48221,7 @@ $LN2@Construct: 0008c 4c 8b 44 24 70 mov r8, QWORD PTR _Count$[rsp] 00091 48 8b 54 24 68 mov rdx, QWORD PTR _Arg$[rsp] 00096 48 8b c8 mov rcx, rax - 00099 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 00099 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 0009e 90 npad 1 ; 879 : _Traits::assign(_My_data._Bx._Buf[_Count], _Elem()); @@ -48233,7 +48233,7 @@ $LN2@Construct: 000b1 48 8b c1 mov rax, rcx 000b4 48 8d 54 24 21 lea rdx, QWORD PTR $T1[rsp] 000b9 48 8b c8 mov rcx, rax - 000bc e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 000bc e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 000c1 90 npad 1 ; 880 : } else { // _Strat == _Construct_strategy::_From_string @@ -48305,7 +48305,7 @@ $LN3@Construct: 0013f 4c 8b 44 24 70 mov r8, QWORD PTR _Count$[rsp] 00144 48 8b 54 24 68 mov rdx, QWORD PTR _Arg$[rsp] 00149 48 8b c8 mov rcx, rax - 0014c e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 0014c e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 00151 90 npad 1 ; 903 : _Traits::assign(_Unfancy(_New_ptr)[_Count], _Elem()); @@ -48316,7 +48316,7 @@ $LN3@Construct: 00161 48 03 44 24 70 add rax, QWORD PTR _Count$[rsp] 00166 48 8d 54 24 22 lea rdx, QWORD PTR $T2[rsp] 0016b 48 8b c8 mov rcx, rax - 0016e e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 0016e e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 00173 90 npad 1 ; 904 : } else { // _Strat == _Construct_strategy::_From_string @@ -48439,7 +48439,7 @@ $LN2@Construct: 68 movzx r8d, BYTE PTR _Arg$[rsp] 00091 48 8b 54 24 70 mov rdx, QWORD PTR _Count$[rsp] 00096 48 8b c8 mov rcx, rax - 00099 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign + 00099 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign 0009e 90 npad 1 ; 876 : _Traits::assign(_My_data._Bx._Buf[_Count], _Elem()); @@ -48451,7 +48451,7 @@ $LN2@Construct: 000b1 48 8b c1 mov rax, rcx 000b4 48 8d 54 24 21 lea rdx, QWORD PTR $T1[rsp] 000b9 48 8b c8 mov rcx, rax - 000bc e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 000bc e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 000c1 90 npad 1 ; 877 : } else if constexpr (_Strat == _Construct_strategy::_From_ptr) { @@ -48524,7 +48524,7 @@ $LN3@Construct: 68 movzx r8d, BYTE PTR _Arg$[rsp] 00145 48 8b 54 24 70 mov rdx, QWORD PTR _Count$[rsp] 0014a 48 8b c8 mov rcx, rax - 0014d e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign + 0014d e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign 00152 90 npad 1 ; 900 : _Traits::assign(_Unfancy(_New_ptr)[_Count], _Elem()); @@ -48535,7 +48535,7 @@ $LN3@Construct: 00162 48 03 44 24 70 add rax, QWORD PTR _Count$[rsp] 00167 48 8d 54 24 22 lea rdx, QWORD PTR $T2[rsp] 0016c 48 8b c8 mov rcx, rax - 0016f e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 0016f e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 00174 90 npad 1 ; 901 : } else if constexpr (_Strat == _Construct_strategy::_From_ptr) { @@ -48912,7 +48912,7 @@ $LN3: 00018 4c 8b 44 24 58 mov r8, QWORD PTR _Old_size$[rsp] 0001d 48 8b 54 24 50 mov rdx, QWORD PTR _Old_ptr$[rsp] 00022 48 8b 4c 24 48 mov rcx, QWORD PTR _New_ptr$[rsp] - 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 00027 e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy ; 2292 : _Traits::assign(_New_ptr[_Old_size], _Ch); @@ -48922,7 +48922,7 @@ $LN3: 00039 48 8b c1 mov rax, rcx 0003c 48 8d 54 24 60 lea rdx, QWORD PTR _Ch$[rsp] 00041 48 8b c8 mov rcx, rax - 00044 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 00044 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 00049 90 npad 1 ; 2293 : _Traits::assign(_New_ptr[_Old_size + 1], _Elem()); @@ -48933,7 +48933,7 @@ $LN3: 00059 48 8d 44 08 01 lea rax, QWORD PTR [rax+rcx+1] 0005e 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00063 48 8b c8 mov rcx, rax - 00066 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 00066 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0006b 90 npad 1 ; 2294 : }, @@ -49033,11 +49033,11 @@ $LN5: 0002c 48 8b 4c 24 28 mov rcx, QWORD PTR tv72[rsp] 00031 e8 00 00 00 00 call ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z ; std::basic_streambuf >::sputc 00036 89 44 24 20 mov DWORD PTR tv79[rsp], eax - 0003a e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof + 0003a e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof 0003f 89 44 24 24 mov DWORD PTR tv77[rsp], eax 00043 8b 54 24 20 mov edx, DWORD PTR tv79[rsp] 00047 8b 4c 24 24 mov ecx, DWORD PTR tv77[rsp] - 0004b e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type + 0004b e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type 00050 0f b6 c0 movzx eax, al 00053 85 c0 test eax, eax 00055 74 08 je SHORT $LN2@operator @@ -49093,7 +49093,7 @@ _Sb$ = 16 ; 540 : return *this; ; 541 : } ; 542 : -; 543 : ostreambuf_iterator& operator++(int) noexcept /* strengthened */ { +; 543 : ostreambuf_iterator& operator++(int32_t) noexcept /* strengthened */ { ; 544 : return *this; ; 545 : } ; 546 : @@ -50581,7 +50581,7 @@ $LN9@do_put: 000b6 48 8b 44 24 68 mov rax, QWORD PTR tv78[rsp] 000bb 48 89 44 24 70 mov QWORD PTR _Precision$[rsp], rax -; 1392 : const int _Desired_precision = +; 1392 : const int32_t _Desired_precision = 000c0 8b 54 24 48 mov edx, DWORD PTR _Float_flags$[rsp] 000c4 48 8b 4c 24 70 mov rcx, QWORD PTR _Precision$[rsp] @@ -50606,7 +50606,7 @@ $LN9@do_put: 00 00 00 comisd xmm0, QWORD PTR __real@4202a05f20000000 000fb 76 3c jbe SHORT $LN2@do_put -; 1396 : int _Ptwo; +; 1396 : int32_t _Ptwo; ; 1397 : (void) _CSTD frexpl(_Val, &_Ptwo); 000fd 48 8d 54 24 54 lea rdx, QWORD PTR _Ptwo$1[rsp] @@ -50706,7 +50706,7 @@ $LN11@do_put: 0021d 48 89 84 24 90 00 00 00 mov QWORD PTR _Ngen$[rsp], rax -; 1406 : &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 'L', _Adjusted_flags), static_cast(_Precision), _Val)); +; 1406 : &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 'L', _Adjusted_flags), static_cast(_Precision), _Val)); ; 1407 : ; 1408 : return _Fput_v3(_Dest, _Iosbase, _Fill, _Buf.c_str(), _Ngen, _Is_finite); @@ -50880,7 +50880,7 @@ $LN9@do_put: 000b6 48 8b 44 24 68 mov rax, QWORD PTR tv78[rsp] 000bb 48 89 44 24 70 mov QWORD PTR _Precision$[rsp], rax -; 1365 : const int _Desired_precision = +; 1365 : const int32_t _Desired_precision = 000c0 8b 54 24 48 mov edx, DWORD PTR _Float_flags$[rsp] 000c4 48 8b 4c 24 70 mov rcx, QWORD PTR _Precision$[rsp] @@ -50905,7 +50905,7 @@ $LN9@do_put: 00 00 00 comisd xmm0, QWORD PTR __real@4202a05f20000000 000fb 76 3c jbe SHORT $LN2@do_put -; 1369 : int _Ptwo; +; 1369 : int32_t _Ptwo; ; 1370 : (void) _CSTD frexp(_Val, &_Ptwo); 000fd 48 8d 54 24 54 lea rdx, QWORD PTR _Ptwo$1[rsp] @@ -51005,7 +51005,7 @@ $LN11@do_put: 0021d 48 89 84 24 90 00 00 00 mov QWORD PTR _Ngen$[rsp], rax -; 1379 : &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 0, _Adjusted_flags), static_cast(_Precision), _Val)); +; 1379 : &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 0, _Adjusted_flags), static_cast(_Precision), _Val)); ; 1380 : ; 1381 : return _Fput_v3(_Dest, _Iosbase, _Fill, _Buf.c_str(), _Ngen, _Is_finite); @@ -51087,7 +51087,7 @@ _Fill$ = 272 _Val$ = 280 ?do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_K@Z PROC ; std::num_put > >::do_put, COMDAT -; 1349 : unsigned long long _Val) const { // put formatted unsigned long long to _Dest +; 1349 : uint64_t _Val) const { // put formatted uint64_t to _Dest $LN3: 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 @@ -51910,7 +51910,7 @@ _Fill$ = 144 _Val$ = 152 ?put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_K@Z PROC ; std::num_put > >::put, COMDAT -; 1269 : unsigned long long _Val) const { // put formatted unsigned long long to _Dest +; 1269 : uint64_t _Val) const { // put formatted uint64_t to _Dest $LN3: 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 @@ -52785,7 +52785,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 48 __formal$ = 56 -??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z PROC ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><>, COMDAT +??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z PROC ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><>, COMDAT ; 1495 : : _Ty1(), _Myval2(_STD forward<_Other2>(_Val2)...) {} @@ -52794,15 +52794,15 @@ $LN3: 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00009 48 83 ec 28 sub rsp, 40 ; 00000028H 0000d 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 00012 e8 00 00 00 00 call ??0?$allocator@H@std@@QEAA@XZ ; std::allocator::allocator + 00012 e8 00 00 00 00 call ??0?$allocator@H@std@@QEAA@XZ ; std::allocator::allocator 00017 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0001c 48 8b c8 mov rcx, rax - 0001f e8 00 00 00 00 call ??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ ; std::_Vector_val >::_Vector_val > + 0001f e8 00 00 00 00 call ??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ ; std::_Vector_val >::_Vector_val > 00024 90 npad 1 00025 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0002a 48 83 c4 28 add rsp, 40 ; 00000028H 0002e c3 ret 0 -??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z ENDP ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><> +??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z ENDP ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Users\Chris\source\repos\BenchmarkSuite\Benchmark\main.cpp @@ -52815,7 +52815,7 @@ results$ = 112 __$ArrayPad$ = 400 ??$parseFunction@$00$00$2U?$string_literal@$0GK@D@bnch_swt@@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@$2U12@3D0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0HG@@0HD@@0CN@@0GG@@0GB@@0HD@@0HE@@0FP@@0GG@@0GM@@0GP@@0GB@@0HE@@0DK@@0DK@@0GM@@0GP@@0GP@@0HA@@0FP@@0HA@@0GB@@0HC@@0HD@@0GF@@0FP@@0GJ@@0GG@@0FP@@0GF@@0GJ@@0GH@@0GI@@0HE@@0FP@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0HD@@0CN@@0GG@@0GP@@0HC@@0CN@@0GM@@0GF@@0GO@@0GH@@0HE@@0GI@@0CN@@0DB@@0CN@@0GB@@0GO@@0GE@@0CN@@0GE@@0GJ@@0GH@@0GJ@@0HE@@0CN@@0GD@@0GP@@0HF@@0GO@@0HE@@0CN@@0DB@@0A@@@@@@YAXXZ PROC ; parseFunction<1,1,bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}},bnch_swt::string_literal<106,char>{char{102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,100,105,103,105,116,115,45,118,115,45,102,97,115,116,95,102,108,111,97,116,58,58,108,111,111,112,95,112,97,114,115,101,95,105,102,95,101,105,103,104,116,95,100,105,103,105,116,115,45,102,111,114,45,108,101,110,103,116,104,45,49,45,97,110,100,45,100,105,103,105,116,45,99,111,117,110,116,45,49,0}}>, COMDAT -; 56 : template BNCH_SWT_ALWAYS_INLINE void parseFunction() { +; 56 : template BNCH_SWT_INLINE void parseFunction() { $LN3: 00000 48 81 ec a8 01 @@ -52828,11 +52828,11 @@ $LN3: ; 57 : static constexpr bnch_swt::string_literal testStage{ testStageNew.values }; ; 58 : static constexpr bnch_swt::string_literal testName{ testNameNew.values }; -; 59 : std::string newString{ bnch_swt::test_generator::generateString(8) }; +; 59 : std::string newString{ bnch_swt::random_generator::generateString(8) }; 00019 ba 08 00 00 00 mov edx, 8 0001e 48 8d 4c 24 28 lea rcx, QWORD PTR newString$[rsp] - 00023 e8 00 00 00 00 call ?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z ; bnch_swt::test_generator::generateString + 00023 e8 00 00 00 00 call ?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z ; bnch_swt::random_generator::generateString 00028 90 npad 1 ; 60 : auto results = bnch_swt::benchmark_stage::template runBenchmark([&]() mutable { @@ -52934,7 +52934,7 @@ _TEXT ENDS ; COMDAT ??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z _TEXT SEGMENT value$ = 48 -??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z PROC ; testFunction > >, COMDAT +??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z PROC ; testFunction > >, COMDAT ; 81 : template void testFunction(value_type value) {}; @@ -52942,18 +52942,18 @@ $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 83 ec 28 sub rsp, 40 ; 00000028H 00009 48 8b 4c 24 30 mov rcx, QWORD PTR value$[rsp] - 0000e e8 00 00 00 00 call ??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::~vector > + 0000e e8 00 00 00 00 call ??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::~vector > 00013 90 npad 1 00014 48 83 c4 28 add rsp, 40 ; 00000028H 00018 c3 ret 0 -??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z ENDP ; testFunction > > +??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z ENDP ; testFunction > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory ; COMDAT ?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ _TEXT SEGMENT this$ = 8 -?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ PROC ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first, COMDAT +?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ PROC ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first, COMDAT ; 1502 : constexpr _Ty1& _Get_first() noexcept { @@ -52966,14 +52966,14 @@ this$ = 8 ; 1504 : } 0000a c3 ret 0 -?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ ENDP ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first +?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ ENDP ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\vector ; COMDAT ??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 8 -??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ PROC ; std::_Vector_val >::_Vector_val >, COMDAT +??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ PROC ; std::_Vector_val >::_Vector_val >, COMDAT ; 400 : _CONSTEXPR20 _Vector_val() noexcept : _Myfirst(), _Mylast(), _Myend() {} @@ -52989,14 +52989,14 @@ this$ = 8 00 00 00 mov QWORD PTR [rax+16], 0 0002b 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 00030 c3 ret 0 -??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ ENDP ; std::_Vector_val >::_Vector_val > +??0?$_Vector_val@U?$_Simple_types@H@std@@@std@@QEAA@XZ ENDP ; std::_Vector_val >::_Vector_val > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\vector ; COMDAT ?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ _TEXT SEGMENT this$ = 48 -?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ PROC ; std::vector >::_Getal, COMDAT +?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ PROC ; std::vector >::_Getal, COMDAT ; 2183 : _NODISCARD _CONSTEXPR20 _Alty& _Getal() noexcept { @@ -53008,13 +53008,13 @@ $LN3: 00009 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0000e 48 8b c8 mov rcx, rax - 00011 e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first + 00011 e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAAAEAV?$allocator@H@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first ; 2185 : } 00016 48 83 c4 28 add rsp, 40 ; 00000028H 0001a c3 ret 0 -?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ ENDP ; std::vector >::_Getal +?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ ENDP ; std::vector >::_Getal _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\vector @@ -53026,7 +53026,7 @@ _Al$ = 48 _Mylast$ = 56 _Myend$ = 64 this$ = 96 -?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ PROC ; std::vector >::_Tidy, COMDAT +?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ PROC ; std::vector >::_Tidy, COMDAT ; 2038 : _CONSTEXPR20 void _Tidy() noexcept { // free all storage @@ -53037,7 +53037,7 @@ $LN4: ; 2039 : auto& _Al = _Getal(); 00009 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp] - 0000e e8 00 00 00 00 call ?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ ; std::vector >::_Getal + 0000e e8 00 00 00 00 call ?_Getal@?$vector@HV?$allocator@H@std@@@std@@AEAAAEAV?$allocator@H@2@XZ ; std::vector >::_Getal 00013 48 89 44 24 30 mov QWORD PTR _Al$[rsp], rax ; 2040 : auto& _My_data = _Mypair._Myval2; @@ -53083,7 +53083,7 @@ $LN4: 00068 48 8b 10 mov rdx, QWORD PTR [rax] 0006b 48 8b 44 24 20 mov rax, QWORD PTR _Myfirst$[rsp] 00070 48 8b 08 mov rcx, QWORD PTR [rax] - 00073 e8 00 00 00 00 call ??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z ; std::_Destroy_range > + 00073 e8 00 00 00 00 call ??$_Destroy_range@V?$allocator@H@std@@@std@@YAXPEAHQEAHAEAV?$allocator@H@0@@Z ; std::_Destroy_range > ; 2049 : _ASAN_VECTOR_REMOVE; ; 2050 : _Al.deallocate(_Myfirst, static_cast(_Myend - _Myfirst)); @@ -53098,7 +53098,7 @@ $LN4: 00092 48 8b 44 24 20 mov rax, QWORD PTR _Myfirst$[rsp] 00097 48 8b 10 mov rdx, QWORD PTR [rax] 0009a 48 8b 4c 24 30 mov rcx, QWORD PTR _Al$[rsp] - 0009f e8 00 00 00 00 call ?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z ; std::allocator::deallocate + 0009f e8 00 00 00 00 call ?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z ; std::allocator::deallocate ; 2051 : ; 2052 : _Myfirst = nullptr; @@ -53125,14 +53125,14 @@ $LN2@Tidy: 000c8 48 83 c4 58 add rsp, 88 ; 00000058H 000cc c3 ret 0 -?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ ENDP ; std::vector >::_Tidy +?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ ENDP ; std::vector >::_Tidy _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\vector ; COMDAT ??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 48 -??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ PROC ; std::vector >::~vector >, COMDAT +??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ PROC ; std::vector >::~vector >, COMDAT ; 760 : _CONSTEXPR20 ~vector() noexcept { @@ -53143,7 +53143,7 @@ $LN3: ; 761 : _Tidy(); 00009 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 0000e e8 00 00 00 00 call ?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ ; std::vector >::_Tidy + 0000e e8 00 00 00 00 call ?_Tidy@?$vector@HV?$allocator@H@std@@@std@@AEAAXXZ ; std::vector >::_Tidy 00013 90 npad 1 ; 762 : #if _ITERATOR_DEBUG_LEVEL != 0 @@ -53154,7 +53154,7 @@ $LN3: 00014 48 83 c4 28 add rsp, 40 ; 00000028H 00018 c3 ret 0 -??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ENDP ; std::vector >::~vector > +??1?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ENDP ; std::vector >::~vector > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\vector @@ -53164,7 +53164,7 @@ $T1 = 32 tv69 = 40 tv78 = 48 this$ = 80 -??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ PROC ; std::vector >::vector >, COMDAT +??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ PROC ; std::vector >::vector >, COMDAT ; 601 : _CONSTEXPR20 vector() noexcept(is_nothrow_default_constructible_v<_Alty>) : _Mypair(_Zero_then_variadic_args_t{}) { @@ -53175,7 +53175,7 @@ $LN3: 0000e 48 89 44 24 28 mov QWORD PTR tv69[rsp], rax 00013 0f b6 54 24 20 movzx edx, BYTE PTR $T1[rsp] 00018 48 8b 4c 24 28 mov rcx, QWORD PTR tv69[rsp] - 0001d e8 00 00 00 00 call ??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><> + 0001d e8 00 00 00 00 call ??$?0$$V@?$_Compressed_pair@V?$allocator@H@std@@V?$_Vector_val@U?$_Simple_types@H@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><> 00022 90 npad 1 ; 602 : _Mypair._Myval2._Alloc_proxy(_GET_PROXY_ALLOCATOR(_Alty, _Getal())); @@ -53193,7 +53193,7 @@ $LN3: 0003f 48 8b 44 24 50 mov rax, QWORD PTR this$[rsp] 00044 48 83 c4 48 add rsp, 72 ; 00000048H 00048 c3 ret 0 -??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ENDP ; std::vector >::vector > +??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ENDP ; std::vector >::vector > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -53202,7 +53202,7 @@ _TEXT SEGMENT this$ = 48 _Ptr$ = 56 _Count$ = 64 -?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z PROC ; std::allocator::deallocate, COMDAT +?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z PROC ; std::allocator::deallocate, COMDAT ; 946 : _CONSTEXPR20 void deallocate(_Ty* const _Ptr, const size_t _Count) { @@ -53227,21 +53227,21 @@ $LN3: 0002a 48 83 c4 28 add rsp, 40 ; 00000028H 0002e c3 ret 0 -?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z ENDP ; std::allocator::deallocate +?deallocate@?$allocator@H@std@@QEAAXQEAH_K@Z ENDP ; std::allocator::deallocate _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory ; COMDAT ??0?$allocator@H@std@@QEAA@XZ _TEXT SEGMENT this$ = 8 -??0?$allocator@H@std@@QEAA@XZ PROC ; std::allocator::allocator, COMDAT +??0?$allocator@H@std@@QEAA@XZ PROC ; std::allocator::allocator, COMDAT ; 938 : constexpr allocator() noexcept {} 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 0000a c3 ret 0 -??0?$allocator@H@std@@QEAA@XZ ENDP ; std::allocator::allocator +??0?$allocator@H@std@@QEAA@XZ ENDP ; std::allocator::allocator _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Users\Chris\source\repos\BenchmarkSuite\Benchmark\main.cpp @@ -53250,7 +53250,7 @@ $T1 = 32 $T2 = 40 main PROC -; 83 : int main() { +; 83 : int32_t main() { $LN3: 00000 48 83 ec 48 sub rsp, 72 ; 00000048H @@ -53260,9 +53260,9 @@ $LN3: 00004 48 8d 44 24 28 lea rax, QWORD PTR $T2[rsp] 00009 48 89 44 24 20 mov QWORD PTR $T1[rsp], rax 0000e 48 8b 4c 24 20 mov rcx, QWORD PTR $T1[rsp] - 00013 e8 00 00 00 00 call ??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::vector > + 00013 e8 00 00 00 00 call ??0?$vector@HV?$allocator@H@std@@@std@@QEAA@XZ ; std::vector >::vector > 00018 48 8b c8 mov rcx, rax - 0001b e8 00 00 00 00 call ??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z ; testFunction > > + 0001b e8 00 00 00 00 call ??$testFunction@V?$vector@HV?$allocator@H@std@@@std@@@@YAXV?$vector@HV?$allocator@H@std@@@std@@@Z ; testFunction > > 00020 90 npad 1 ; 85 : @@ -53481,12 +53481,12 @@ $LN3: _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Users\Chris\source\repos\BenchmarkSuite\Benchmark\RandomGenerators.hpp -; COMDAT ??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z +; COMDAT ??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z _TEXT SEGMENT dis$ = 32 start$ = 64 end$ = 72 -??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z PROC ; bnch_swt::test_generator::randomizeNumberUniform, COMDAT +??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z PROC ; bnch_swt::random_generator::randomizeNumberUniform, COMDAT ; 44 : static value_type01 randomizeNumberUniform(value_type01 start, value_type02 end) { @@ -53513,18 +53513,18 @@ $LN3: 00033 48 83 c4 38 add rsp, 56 ; 00000038H 00037 c3 ret 0 -??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z ENDP ; bnch_swt::test_generator::randomizeNumberUniform +??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z ENDP ; bnch_swt::random_generator::randomizeNumberUniform _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Users\Chris\source\repos\BenchmarkSuite\Benchmark\RandomGenerators.hpp -; COMDAT ?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z +; COMDAT ?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z _TEXT SEGMENT x$1 = 32 charsetSize$ = 40 tv65 = 48 __$ReturnUdt$ = 80 length$ = 88 -?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z PROC ; bnch_swt::test_generator::generateString, COMDAT +?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z PROC ; bnch_swt::random_generator::generateString, COMDAT ; 49 : static std::string generateString(size_t length) { @@ -53562,7 +53562,7 @@ $LN4@generateSt: 0004a ba 62 00 00 00 mov edx, 98 ; 00000062H 0004f 33 c9 xor ecx, ecx - 00051 e8 00 00 00 00 call ??$randomizeNumberUniform@_K_K@test_generator@bnch_swt@@SA_K_K0@Z ; bnch_swt::test_generator::randomizeNumberUniform + 00051 e8 00 00 00 00 call ??$randomizeNumberUniform@_K_K@random_generator@bnch_swt@@SA_K_K0@Z ; bnch_swt::random_generator::randomizeNumberUniform 00056 48 8b d0 mov rdx, rax 00059 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:?charset@bnch_swt@@3V?$basic_string_view@DU?$char_traits@D@std@@@std@@B @@ -53585,7 +53585,7 @@ $LN3@generateSt: 0007a 48 83 c4 48 add rsp, 72 ; 00000048H 0007e c3 ret 0 -?generateString@test_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z ENDP ; bnch_swt::test_generator::generateString +?generateString@random_generator@bnch_swt@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z ENDP ; bnch_swt::random_generator::generateString _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Users\Chris\source\repos\BenchmarkSuite\Benchmark\RandomGenerators.hpp @@ -54763,7 +54763,7 @@ __$ArrayPad$ = 2288 00030 48 8d 54 24 28 lea rdx, QWORD PTR $T6[rsp] 00035 48 8d 8c 24 e0 05 00 00 lea rcx, QWORD PTR $T69[rsp] - 0003d e8 00 00 00 00 call ??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z ; std::pair >::pair > + 0003d e8 00 00 00 00 call ??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z ; std::pair >::pair > 00042 c7 44 24 2c 02 00 00 00 mov DWORD PTR $T7[rsp], 2 0004a 4c 8d 05 00 00 @@ -54771,7 +54771,7 @@ __$ArrayPad$ = 2288 00051 48 8d 54 24 2c lea rdx, QWORD PTR $T7[rsp] 00056 48 8d 8c 24 f8 05 00 00 lea rcx, QWORD PTR $T69[rsp+24] - 0005e e8 00 00 00 00 call ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > + 0005e e8 00 00 00 00 call ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > 00063 c7 44 24 30 04 00 00 00 mov DWORD PTR $T8[rsp], 4 0006b 4c 8d 05 00 00 @@ -54779,7 +54779,7 @@ __$ArrayPad$ = 2288 00072 48 8d 54 24 30 lea rdx, QWORD PTR $T8[rsp] 00077 48 8d 8c 24 10 06 00 00 lea rcx, QWORD PTR $T69[rsp+48] - 0007f e8 00 00 00 00 call ??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z ; std::pair >::pair > + 0007f e8 00 00 00 00 call ??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z ; std::pair >::pair > 00084 c7 44 24 34 08 00 00 00 mov DWORD PTR $T9[rsp], 8 0008c 4c 8d 05 00 00 @@ -54787,7 +54787,7 @@ __$ArrayPad$ = 2288 00093 48 8d 54 24 34 lea rdx, QWORD PTR $T9[rsp] 00098 48 8d 8c 24 28 06 00 00 lea rcx, QWORD PTR $T69[rsp+72] - 000a0 e8 00 00 00 00 call ??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z ; std::pair >::pair > + 000a0 e8 00 00 00 00 call ??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z ; std::pair >::pair > 000a5 c7 44 24 38 10 00 00 00 mov DWORD PTR $T10[rsp], 16 000ad 4c 8d 05 00 00 @@ -54795,7 +54795,7 @@ __$ArrayPad$ = 2288 000b4 48 8d 54 24 38 lea rdx, QWORD PTR $T10[rsp] 000b9 48 8d 8c 24 40 06 00 00 lea rcx, QWORD PTR $T69[rsp+96] - 000c1 e8 00 00 00 00 call ??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ; std::pair >::pair > + 000c1 e8 00 00 00 00 call ??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ; std::pair >::pair > 000c6 c7 44 24 3c 20 00 00 00 mov DWORD PTR $T11[rsp], 32 ; 00000020H 000ce 4c 8d 05 00 00 @@ -54803,7 +54803,7 @@ __$ArrayPad$ = 2288 000d5 48 8d 54 24 3c lea rdx, QWORD PTR $T11[rsp] 000da 48 8d 8c 24 58 06 00 00 lea rcx, QWORD PTR $T69[rsp+120] - 000e2 e8 00 00 00 00 call ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > + 000e2 e8 00 00 00 00 call ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > 000e7 c7 44 24 40 40 00 00 00 mov DWORD PTR $T12[rsp], 64 ; 00000040H 000ef 4c 8d 05 00 00 @@ -54811,7 +54811,7 @@ __$ArrayPad$ = 2288 000f6 48 8d 54 24 40 lea rdx, QWORD PTR $T12[rsp] 000fb 48 8d 8c 24 70 06 00 00 lea rcx, QWORD PTR $T69[rsp+144] - 00103 e8 00 00 00 00 call ??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ; std::pair >::pair > + 00103 e8 00 00 00 00 call ??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ; std::pair >::pair > 00108 c7 44 24 44 80 00 00 00 mov DWORD PTR $T13[rsp], 128 ; 00000080H 00110 4c 8d 05 00 00 @@ -54819,7 +54819,7 @@ __$ArrayPad$ = 2288 00117 48 8d 54 24 44 lea rdx, QWORD PTR $T13[rsp] 0011c 48 8d 8c 24 88 06 00 00 lea rcx, QWORD PTR $T69[rsp+168] - 00124 e8 00 00 00 00 call ??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z ; std::pair >::pair > + 00124 e8 00 00 00 00 call ??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z ; std::pair >::pair > 00129 c7 44 24 48 00 01 00 00 mov DWORD PTR $T14[rsp], 256 ; 00000100H 00131 4c 8d 05 00 00 @@ -54827,7 +54827,7 @@ __$ArrayPad$ = 2288 00138 48 8d 54 24 48 lea rdx, QWORD PTR $T14[rsp] 0013d 48 8d 8c 24 a0 06 00 00 lea rcx, QWORD PTR $T69[rsp+192] - 00145 e8 00 00 00 00 call ??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z ; std::pair >::pair > + 00145 e8 00 00 00 00 call ??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z ; std::pair >::pair > 0014a c7 44 24 4c 00 02 00 00 mov DWORD PTR $T15[rsp], 512 ; 00000200H 00152 4c 8d 05 00 00 @@ -54835,7 +54835,7 @@ __$ArrayPad$ = 2288 00159 48 8d 54 24 4c lea rdx, QWORD PTR $T15[rsp] 0015e 48 8d 8c 24 b8 06 00 00 lea rcx, QWORD PTR $T69[rsp+216] - 00166 e8 00 00 00 00 call ??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ; std::pair >::pair > + 00166 e8 00 00 00 00 call ??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ; std::pair >::pair > 0016b c7 44 24 50 00 04 00 00 mov DWORD PTR $T16[rsp], 1024 ; 00000400H 00173 4c 8d 05 00 00 @@ -54843,7 +54843,7 @@ __$ArrayPad$ = 2288 0017a 48 8d 54 24 50 lea rdx, QWORD PTR $T16[rsp] 0017f 48 8d 8c 24 d0 06 00 00 lea rcx, QWORD PTR $T69[rsp+240] - 00187 e8 00 00 00 00 call ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > + 00187 e8 00 00 00 00 call ??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ; std::pair >::pair > 0018c c7 44 24 54 00 08 00 00 mov DWORD PTR $T17[rsp], 2048 ; 00000800H 00194 4c 8d 05 00 00 @@ -54851,7 +54851,7 @@ __$ArrayPad$ = 2288 0019b 48 8d 54 24 54 lea rdx, QWORD PTR $T17[rsp] 001a0 48 8d 8c 24 e8 06 00 00 lea rcx, QWORD PTR $T69[rsp+264] - 001a8 e8 00 00 00 00 call ??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ; std::pair >::pair > + 001a8 e8 00 00 00 00 call ??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ; std::pair >::pair > 001ad c7 44 24 58 00 10 00 00 mov DWORD PTR $T18[rsp], 4096 ; 00001000H 001b5 4c 8d 05 00 00 @@ -54859,7 +54859,7 @@ __$ArrayPad$ = 2288 001bc 48 8d 54 24 58 lea rdx, QWORD PTR $T18[rsp] 001c1 48 8d 8c 24 00 07 00 00 lea rcx, QWORD PTR $T69[rsp+288] - 001c9 e8 00 00 00 00 call ??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ; std::pair >::pair > + 001c9 e8 00 00 00 00 call ??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ; std::pair >::pair > 001ce c7 44 24 5c 00 20 00 00 mov DWORD PTR $T19[rsp], 8192 ; 00002000H 001d6 4c 8d 05 00 00 @@ -54867,7 +54867,7 @@ __$ArrayPad$ = 2288 001dd 48 8d 54 24 5c lea rdx, QWORD PTR $T19[rsp] 001e2 48 8d 8c 24 18 07 00 00 lea rcx, QWORD PTR $T69[rsp+312] - 001ea e8 00 00 00 00 call ??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ; std::pair >::pair > + 001ea e8 00 00 00 00 call ??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ; std::pair >::pair > 001ef c7 44 24 60 00 40 00 00 mov DWORD PTR $T20[rsp], 16384 ; 00004000H 001f7 4c 8d 05 00 00 @@ -54875,7 +54875,7 @@ __$ArrayPad$ = 2288 001fe 48 8d 54 24 60 lea rdx, QWORD PTR $T20[rsp] 00203 48 8d 8c 24 30 07 00 00 lea rcx, QWORD PTR $T69[rsp+336] - 0020b e8 00 00 00 00 call ??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z ; std::pair >::pair > + 0020b e8 00 00 00 00 call ??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z ; std::pair >::pair > 00210 c7 44 24 64 00 80 00 00 mov DWORD PTR $T21[rsp], 32768 ; 00008000H 00218 4c 8d 05 00 00 @@ -54883,7 +54883,7 @@ __$ArrayPad$ = 2288 0021f 48 8d 54 24 64 lea rdx, QWORD PTR $T21[rsp] 00224 48 8d 8c 24 48 07 00 00 lea rcx, QWORD PTR $T69[rsp+360] - 0022c e8 00 00 00 00 call ??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z ; std::pair >::pair > + 0022c e8 00 00 00 00 call ??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z ; std::pair >::pair > 00231 c7 44 24 68 00 00 01 00 mov DWORD PTR $T22[rsp], 65536 ; 00010000H 00239 4c 8d 05 00 00 @@ -54891,7 +54891,7 @@ __$ArrayPad$ = 2288 00240 48 8d 54 24 68 lea rdx, QWORD PTR $T22[rsp] 00245 48 8d 8c 24 60 07 00 00 lea rcx, QWORD PTR $T69[rsp+384] - 0024d e8 00 00 00 00 call ??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z ; std::pair >::pair > + 0024d e8 00 00 00 00 call ??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z ; std::pair >::pair > 00252 48 8d 84 24 78 07 00 00 lea rax, QWORD PTR $T69[rsp+408] 0025a 4c 8b c0 mov r8, rax @@ -55739,7 +55739,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -55765,7 +55765,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BG@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BG@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -55775,7 +55775,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -55801,7 +55801,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BB@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BB@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -55811,7 +55811,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -55837,7 +55837,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY08$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY08$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -55847,7 +55847,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -55873,7 +55873,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BD@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BD@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -55883,7 +55883,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -55909,7 +55909,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BL@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BL@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -55919,7 +55919,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -55945,7 +55945,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BM@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BM@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -55955,7 +55955,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -55981,7 +55981,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0O@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0O@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -55991,7 +55991,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -56017,7 +56017,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BK@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BK@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -56027,7 +56027,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -56053,7 +56053,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BE@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BE@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -56063,7 +56063,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -56089,7 +56089,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BJ@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BJ@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -56099,7 +56099,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -56125,7 +56125,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY0BF@$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY0BF@$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\utility @@ -56135,7 +56135,7 @@ tv71 = 32 this$ = 64 _Val1$ = 72 _Val2$ = 80 -??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z PROC ; std::pair >::pair >, COMDAT +??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z PROC ; std::pair >::pair >, COMDAT ; 263 : : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { @@ -56161,7 +56161,7 @@ $LN3: 00041 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 00046 48 83 c4 38 add rsp, 56 ; 00000038H 0004a c3 ret 0 -??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z ENDP ; std::pair >::pair > +??$?0HAEAY07$$CBD$0A@@?$pair@$$CB_KV?$string_view_base@D@jsonifier@@@std@@QEAA@$$QEAHAEAY07$$CBD@Z ENDP ; std::pair >::pair > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\initializer_list @@ -63484,7 +63484,7 @@ text$di SEGMENT 00000 48 83 ec 28 sub rsp, 40 ; 00000028H 00004 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:?types@jsonifier_internal@@3V?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@A ; jsonifier_internal::types - 0000b e8 00 00 00 00 call ??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > > + 0000b e8 00 00 00 00 call ??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > > 00010 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??__Ftypes@jsonifier_internal@@YAXXZ ; jsonifier_internal::`dynamic atexit destructor for 'types'' 00017 e8 00 00 00 00 call atexit @@ -63497,7 +63497,7 @@ text$di ENDS ; COMDAT ??1?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ _TEXT SEGMENT this$ = 48 -??1?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ PROC ; std::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >::~unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >, COMDAT +??1?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ PROC ; std::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >::~unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >, COMDAT $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 83 ec 28 sub rsp, 40 ; 00000028H @@ -63506,7 +63506,7 @@ $LN3: 00013 90 npad 1 00014 48 83 c4 28 add rsp, 40 ; 00000028H 00018 c3 ret 0 -??1?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ENDP ; std::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >::~unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > > +??1?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ENDP ; std::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >::~unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\unordered_map @@ -63517,7 +63517,7 @@ $T2 = 36 tv79 = 40 tv77 = 48 this$ = 80 -??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ PROC ; std::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >, COMDAT +??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ PROC ; std::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >, COMDAT ; 101 : unordered_map() : _Mybase(_Key_compare(), allocator_type()) {} @@ -63525,7 +63525,7 @@ $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 83 ec 48 sub rsp, 72 ; 00000048H 00009 48 8d 4c 24 20 lea rcx, QWORD PTR $T1[rsp] - 0000e e8 00 00 00 00 call ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ ; std::allocator,std::allocator > const ,unsigned int> >::allocator,std::allocator > const ,unsigned int> > + 0000e e8 00 00 00 00 call ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ ; std::allocator,std::allocator > const ,unsigned int32_t> >::allocator,std::allocator > const ,unsigned int32_t> > 00013 48 89 44 24 28 mov QWORD PTR tv79[rsp], rax 00018 48 8d 4c 24 24 lea rcx, QWORD PTR $T2[rsp] 0001d e8 00 00 00 00 call ??0?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@QEAA@XZ ; std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > > @@ -63533,40 +63533,40 @@ $LN3: 00027 4c 8b 44 24 28 mov r8, QWORD PTR tv79[rsp] 0002c 48 8b 54 24 30 mov rdx, QWORD PTR tv77[rsp] 00031 48 8b 4c 24 50 mov rcx, QWORD PTR this$[rsp] - 00036 e8 00 00 00 00 call ??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> > + 00036 e8 00 00 00 00 call ??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> > 0003b 90 npad 1 0003c 48 8b 44 24 50 mov rax, QWORD PTR this$[rsp] 00041 48 83 c4 48 add rsp, 72 ; 00000048H 00045 c3 ret 0 -??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ENDP ; std::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > >::unordered_map,std::allocator >,unsigned int,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int> > > +??0?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IU?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ENDP ; std::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > >::unordered_map,std::allocator >,unsigned int32_t,std::hash,std::allocator > >,std::equal_to,std::allocator > >,std::allocator,std::allocator > const ,unsigned int32_t> > > _TEXT ENDS ; Function compile flags: /Odtp ; COMDAT ??1?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 48 -??1?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@QEAA@XZ PROC ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::~_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >, COMDAT +??1?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@QEAA@XZ PROC ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::~_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >, COMDAT $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 83 ec 28 sub rsp, 40 ; 00000028H 00009 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0000e 48 83 c0 18 add rax, 24 00012 48 8b c8 mov rcx, rax - 00015 e8 00 00 00 00 call ??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int> > > > > > + 00015 e8 00 00 00 00 call ??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > > 0001a 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0001f 48 83 c0 08 add rax, 8 00023 48 8b c8 mov rcx, rax - 00026 e8 00 00 00 00 call ??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::~list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > > + 00026 e8 00 00 00 00 call ??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::~list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > > 0002b 90 npad 1 0002c 48 83 c4 28 add rsp, 40 ; 00000028H 00030 c3 ret 0 -??1?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@QEAA@XZ ENDP ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::~_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> > +??1?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@QEAA@XZ ENDP ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::~_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory ; COMDAT ?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ _TEXT SEGMENT this$ = 8 -?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Get_first, COMDAT +?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Get_first, COMDAT ; 1502 : constexpr _Ty1& _Get_first() noexcept { @@ -63579,14 +63579,14 @@ this$ = 8 ; 1504 : } 0000a c3 ret 0 -?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Get_first +?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Get_first _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\vector ; COMDAT ??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 8 -??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ PROC ; std::_Vector_val,std::allocator > const ,unsigned int> > > > > >::_Vector_val,std::allocator > const ,unsigned int> > > > > >, COMDAT +??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ PROC ; std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >, COMDAT ; 400 : _CONSTEXPR20 _Vector_val() noexcept : _Myfirst(), _Mylast(), _Myend() {} @@ -63602,14 +63602,14 @@ this$ = 8 00 00 00 mov QWORD PTR [rax+16], 0 0002b 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 00030 c3 ret 0 -??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ENDP ; std::_Vector_val,std::allocator > const ,unsigned int> > > > > >::_Vector_val,std::allocator > const ,unsigned int> > > > > > +??0?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ENDP ; std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash ; COMDAT ??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 48 -??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int> > > > > >, COMDAT +??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >, COMDAT ; 323 : ~_Hash_vec() { @@ -63620,7 +63620,7 @@ $LN3: ; 324 : _Tidy(); 00009 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 0000e e8 00 00 00 00 call ?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Tidy + 0000e e8 00 00 00 00 call ?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Tidy 00013 90 npad 1 ; 325 : #if _ITERATOR_DEBUG_LEVEL != 0 @@ -63631,7 +63631,7 @@ $LN3: 00014 48 83 c4 28 add rsp, 40 ; 00000028H 00018 c3 ret 0 -??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int> > > > > > +??1?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@XZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::~_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash @@ -63641,7 +63641,7 @@ tv90 = 32 tv88 = 40 tv92 = 48 this$ = 80 -?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Tidy, COMDAT +?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Tidy, COMDAT ; 313 : void _Tidy() noexcept { @@ -63661,16 +63661,16 @@ $LN4: 00019 48 8b 50 08 mov rdx, QWORD PTR [rax+8] 0001d 48 8b 44 24 50 mov rax, QWORD PTR this$[rsp] 00022 48 8b 08 mov rcx, QWORD PTR [rax] - 00025 e8 00 00 00 00 call ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> + 00025 e8 00 00 00 00 call ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> ; 316 : _Mypair._Get_first().deallocate(_Mypair._Myval2._Myfirst, capacity()); 0002a 48 8b 44 24 50 mov rax, QWORD PTR this$[rsp] 0002f 48 8b c8 mov rcx, rax - 00032 e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Get_first + 00032 e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Get_first 00037 48 89 44 24 30 mov QWORD PTR tv92[rsp], rax 0003c 48 8b 4c 24 50 mov rcx, QWORD PTR this$[rsp] - 00041 e8 00 00 00 00 call ?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::capacity + 00041 e8 00 00 00 00 call ?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::capacity 00046 48 89 44 24 20 mov QWORD PTR tv90[rsp], rax 0004b 48 8b 44 24 50 mov rax, QWORD PTR this$[rsp] 00050 48 8b 00 mov rax, QWORD PTR [rax] @@ -63678,7 +63678,7 @@ $LN4: 00058 4c 8b 44 24 20 mov r8, QWORD PTR tv90[rsp] 0005d 48 8b 54 24 28 mov rdx, QWORD PTR tv88[rsp] 00062 48 8b 4c 24 30 mov rcx, QWORD PTR tv92[rsp] - 00067 e8 00 00 00 00 call ?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int> > > > >::deallocate + 00067 e8 00 00 00 00 call ?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::deallocate ; 317 : _Mypair._Myval2._Myfirst = nullptr; @@ -63704,7 +63704,7 @@ $LN2@Tidy: 00092 48 83 c4 48 add rsp, 72 ; 00000048H 00096 c3 ret 0 -?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Tidy +?_Tidy@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAXXZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Tidy _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash @@ -63718,7 +63718,7 @@ _Oldsize$ = 64 this$ = 96 _Cells$ = 104 _Val$ = 112 -?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z PROC ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Assign_grow, COMDAT +?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z PROC ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Assign_grow, COMDAT ; 289 : void _Assign_grow(const size_type _Cells, const value_type _Val) { @@ -63732,7 +63732,7 @@ $LN6: ; 291 : const auto _Oldsize = size(); 00013 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp] - 00018 e8 00 00 00 00 call ?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::size + 00018 e8 00 00 00 00 call ?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::size 0001d 48 89 44 24 40 mov QWORD PTR _Oldsize$[rsp], rax ; 292 : _STL_INTERNAL_CHECK(_Oldsize <= _Cells); @@ -63740,7 +63740,7 @@ $LN6: 00022 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 00027 48 8b c8 mov rcx, rax - 0002a e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int> > > > >,std::_Vector_val,std::allocator > const ,unsigned int> > > > > >,1>::_Get_first + 0002a e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@V?$_Vector_val@U?$_Simple_types@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t> > > > >,std::_Vector_val,std::allocator > const ,unsigned int32_t> > > > > >,1>::_Get_first 0002f 48 89 44 24 38 mov QWORD PTR _Alvec$[rsp], rax ; 294 : if (_Oldsize < _Cells) { @@ -63754,14 +63754,14 @@ $LN6: 00044 48 8b 54 24 68 mov rdx, QWORD PTR _Cells$[rsp] 00049 48 8b 4c 24 38 mov rcx, QWORD PTR _Alvec$[rsp] - 0004e e8 00 00 00 00 call ?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocate + 0004e e8 00 00 00 00 call ?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocate 00053 48 89 44 24 28 mov QWORD PTR _Newvec$2[rsp], rax ; 296 : // nothrow hereafter ; 297 : const auto _Oldcapacity = capacity(); 00058 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp] - 0005d e8 00 00 00 00 call ?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::capacity + 0005d e8 00 00 00 00 call ?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::capacity 00062 48 89 44 24 30 mov QWORD PTR _Oldcapacity$3[rsp], rax ; 298 : if (_Oldcapacity != 0) { @@ -63776,7 +63776,7 @@ $LN6: 00074 48 8b 50 08 mov rdx, QWORD PTR [rax+8] 00078 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 0007d 48 8b 08 mov rcx, QWORD PTR [rax] - 00080 e8 00 00 00 00 call ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > *> + 00080 e8 00 00 00 00 call ??$_Destroy_range@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@PEAV12@@std@@YAXPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@QEAV10@@Z ; std::_Destroy_range,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > *> ; 300 : _Alvec.deallocate(_Mypair._Myval2._Myfirst, _Oldcapacity); @@ -63784,7 +63784,7 @@ $LN6: 0008a 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 0008f 48 8b 10 mov rdx, QWORD PTR [rax] 00092 48 8b 4c 24 38 mov rcx, QWORD PTR _Alvec$[rsp] - 00097 e8 00 00 00 00 call ?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int> > > > >::deallocate + 00097 e8 00 00 00 00 call ?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::deallocate 0009c 90 npad 1 $LN4@Assign_gro: @@ -63820,7 +63820,7 @@ $LN4@Assign_gro: 000d9 4c 8d 44 24 70 lea r8, QWORD PTR _Val$[rsp] 000de 48 8b 54 24 20 mov rdx, QWORD PTR _Newend$1[rsp] 000e3 48 8b 4c 24 28 mov rcx, QWORD PTR _Newvec$2[rsp] - 000e8 e8 00 00 00 00 call ??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::uninitialized_fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > > + 000e8 e8 00 00 00 00 call ??$uninitialized_fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::uninitialized_fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > > 000ed 90 npad 1 ; 308 : } else { @@ -63835,7 +63835,7 @@ $LN2@Assign_gro: 000fa 48 8b 50 08 mov rdx, QWORD PTR [rax+8] 000fe 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 00103 48 8b 08 mov rcx, QWORD PTR [rax] - 00106 e8 00 00 00 00 call ??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::fill,std::allocator > const ,unsigned int> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int> > > > > + 00106 e8 00 00 00 00 call ??$fill@PEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@V12@@std@@YAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@0@0AEBV10@@Z ; std::fill,std::allocator > const ,unsigned int32_t> > > > *,std::_List_unchecked_iterator,std::allocator > const ,unsigned int32_t> > > > > 0010b 90 npad 1 $LN3@Assign_gro: @@ -63844,14 +63844,14 @@ $LN3@Assign_gro: 0010c 48 83 c4 58 add rsp, 88 ; 00000058H 00110 c3 ret 0 -?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Assign_grow +?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Assign_grow _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash ; COMDAT ?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ _TEXT SEGMENT this$ = 8 -?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::capacity, COMDAT +?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::capacity, COMDAT ; 283 : _NODISCARD size_type capacity() const noexcept { @@ -63871,14 +63871,14 @@ this$ = 8 ; 287 : } 0001d c3 ret 0 -?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::capacity +?capacity@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::capacity _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash ; COMDAT ?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ _TEXT SEGMENT this$ = 8 -?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::size, COMDAT +?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ PROC ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::size, COMDAT ; 274 : _NODISCARD size_type size() const noexcept { @@ -63896,7 +63896,7 @@ this$ = 8 ; 276 : } 0001d c3 ret 0 -?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::size +?size@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEBA_KXZ ENDP ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::size _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -63904,7 +63904,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 48 _Count$ = 56 -?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocate, COMDAT +?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocate, COMDAT ; 952 : _NODISCARD_RAW_PTR_ALLOC _CONSTEXPR20 __declspec(allocator) _Ty* allocate(_CRT_GUARDOVERFLOW const size_t _Count) { @@ -63925,7 +63925,7 @@ $LN3: 00020 48 83 c4 28 add rsp, 40 ; 00000028H 00024 c3 ret 0 -?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int> > > > >::allocate +?allocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAPEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::allocate _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -63934,7 +63934,7 @@ _TEXT SEGMENT this$ = 48 _Ptr$ = 56 _Count$ = 64 -?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int> > > > >::deallocate, COMDAT +?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::deallocate, COMDAT ; 946 : _CONSTEXPR20 void deallocate(_Ty* const _Ptr, const size_t _Count) { @@ -63959,14 +63959,14 @@ $LN3: 0002a 48 83 c4 28 add rsp, 40 ; 00000028H 0002e c3 ret 0 -?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int> > > > >::deallocate +?deallocate@?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int32_t> > > > >::deallocate _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash ; COMDAT ?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ _TEXT SEGMENT this$ = 48 -?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ PROC ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Max_bucket_size, COMDAT +?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ PROC ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Max_bucket_size, COMDAT ; 1772 : float& _Max_bucket_size() noexcept { @@ -63984,7 +63984,7 @@ $LN3: 00016 48 83 c4 28 add rsp, 40 ; 00000028H 0001a c3 ret 0 -?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ ENDP ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Max_bucket_size +?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ ENDP ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Max_bucket_size _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xhash @@ -63999,7 +63999,7 @@ $T1 = 72 this$ = 96 _Parg$ = 104 _Al$ = 112 -??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >, COMDAT +??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >, COMDAT ; 378 : : _Traitsobj(_Parg), _List(_Al), _Vec(_Al), _Mask(_Min_buckets - 1), _Maxidx(_Min_buckets) { @@ -64012,19 +64012,19 @@ $LN3: 00018 48 89 44 24 20 mov QWORD PTR tv69[rsp], rax 0001d 48 8b 54 24 68 mov rdx, QWORD PTR _Parg$[rsp] 00022 48 8b 4c 24 20 mov rcx, QWORD PTR tv69[rsp] - 00027 e8 00 00 00 00 call ??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z ; std::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0>::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> + 00027 e8 00 00 00 00 call ??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z ; std::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0>::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> 0002c 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 00031 48 83 c0 08 add rax, 8 00035 48 89 44 24 28 mov QWORD PTR tv74[rsp], rax 0003a 48 8b 54 24 70 mov rdx, QWORD PTR _Al$[rsp] 0003f 48 8b 4c 24 28 mov rcx, QWORD PTR tv74[rsp] - 00044 e8 00 00 00 00 call ??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > > + 00044 e8 00 00 00 00 call ??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > > 00049 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 0004e 48 83 c0 18 add rax, 24 00052 48 89 44 24 30 mov QWORD PTR tv82[rsp], rax 00057 48 8b 54 24 70 mov rdx, QWORD PTR _Al$[rsp] 0005c 48 8b 4c 24 30 mov rcx, QWORD PTR tv82[rsp] - 00061 e8 00 00 00 00 call ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Hash_vec,std::allocator > const ,unsigned int> > > > > >,std::allocator > const ,unsigned int> > const &,0> + 00061 e8 00 00 00 00 call ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$0A@@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >,std::allocator > const ,unsigned int32_t> > const &,0> 00066 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 0006b 48 c7 40 30 07 00 00 00 mov QWORD PTR [rax+48], 7 @@ -64036,7 +64036,7 @@ $LN3: ; 380 : _Max_bucket_size() = _Bucket_size; 00080 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp] - 00085 e8 00 00 00 00 call ?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Max_bucket_size + 00085 e8 00 00 00 00 call ?_Max_bucket_size@?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAAAEAMXZ ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Max_bucket_size 0008a f3 0f 10 05 00 00 00 00 movss xmm0, DWORD PTR __real@3f800000 00092 f3 0f 11 00 movss DWORD PTR [rax], xmm0 @@ -64051,11 +64051,11 @@ $LN3: 000ad 48 89 44 24 38 mov QWORD PTR tv128[rsp], rax 000b2 48 8d 54 24 48 lea rdx, QWORD PTR $T1[rsp] 000b7 48 8b 4c 24 38 mov rcx, QWORD PTR tv128[rsp] - 000bc e8 00 00 00 00 call ?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Unchecked_end + 000bc e8 00 00 00 00 call ?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Unchecked_end 000c1 4c 8b 00 mov r8, QWORD PTR [rax] 000c4 ba 10 00 00 00 mov edx, 16 000c9 48 8b 4c 24 40 mov rcx, QWORD PTR tv132[rsp] - 000ce e8 00 00 00 00 call ?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int> > > > > >::_Assign_grow + 000ce e8 00 00 00 00 call ?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@@Z ; std::_Hash_vec,std::allocator > const ,unsigned int32_t> > > > > >::_Assign_grow 000d3 90 npad 1 ; 382 : #ifdef _ENABLE_STL_INTERNAL_CHECK @@ -64066,14 +64066,14 @@ $LN3: 000d4 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 000d9 48 83 c4 58 add rsp, 88 ; 00000058H 000dd c3 ret 0 -??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> >::_Hash,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> > +??0?$_Hash@V?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@@std@@IEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> >::_Hash,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory ; COMDAT ?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ _TEXT SEGMENT this$ = 8 -?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Get_first, COMDAT +?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ PROC ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Get_first, COMDAT ; 1502 : constexpr _Ty1& _Get_first() noexcept { @@ -64086,14 +64086,14 @@ this$ = 8 ; 1504 : } 0000a c3 ret 0 -?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Get_first +?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ENDP ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Get_first _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list ; COMDAT ??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 8 -??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ PROC ; std::_List_val,std::allocator > const ,unsigned int> > >::_List_val,std::allocator > const ,unsigned int> > >, COMDAT +??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ PROC ; std::_List_val,std::allocator > const ,unsigned int32_t> > >::_List_val,std::allocator > const ,unsigned int32_t> > >, COMDAT ; 353 : _List_val() noexcept : _Myhead(), _Mysize(0) {} // initialize data @@ -64106,14 +64106,14 @@ this$ = 8 00 00 00 mov QWORD PTR [rax+8], 0 0001e 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 00023 c3 ret 0 -??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ ENDP ; std::_List_val,std::allocator > const ,unsigned int> > >::_List_val,std::allocator > const ,unsigned int> > > +??0?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@QEAA@XZ ENDP ; std::_List_val,std::allocator > const ,unsigned int32_t> > >::_List_val,std::allocator > const ,unsigned int32_t> > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list ; COMDAT ?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ _TEXT SEGMENT this$ = 48 -?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ PROC ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Getal, COMDAT +?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ PROC ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Getal, COMDAT ; 1849 : _Alnode& _Getal() noexcept { @@ -64125,13 +64125,13 @@ $LN3: 00009 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0000e 48 8b c8 mov rcx, rax - 00011 e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Get_first + 00011 e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Get_first ; 1851 : } 00016 48 83 c4 28 add rsp, 40 ; 00000028H 0001a c3 ret 0 -?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ENDP ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Getal +?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ENDP ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Getal _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list @@ -64142,7 +64142,7 @@ _Newhead$ = 40 _Alproxy$ = 48 _Al$ = 56 this$ = 80 -?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ PROC ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Alloc_sentinel_and_proxy, COMDAT +?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ PROC ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Alloc_sentinel_and_proxy, COMDAT ; 1834 : void _Alloc_sentinel_and_proxy() { @@ -64167,14 +64167,14 @@ $LN3: ; 1837 : auto& _Al = _Getal(); 0002c 48 8b 4c 24 50 mov rcx, QWORD PTR this$[rsp] - 00031 e8 00 00 00 00 call ?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Getal + 00031 e8 00 00 00 00 call ?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Getal 00036 48 89 44 24 38 mov QWORD PTR _Al$[rsp], rax ; 1838 : auto _Newhead = _Al.allocate(1); 0003b ba 01 00 00 00 mov edx, 1 00040 48 8b 4c 24 38 mov rcx, QWORD PTR _Al$[rsp] - 00045 e8 00 00 00 00 call ?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocate + 00045 e8 00 00 00 00 call ?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocate 0004a 48 89 44 24 28 mov QWORD PTR _Newhead$[rsp], rax ; 1839 : _Construct_in_place(_Newhead->_Next, _Newhead); @@ -64182,7 +64182,7 @@ $LN3: 0004f 48 8b 44 24 28 mov rax, QWORD PTR _Newhead$[rsp] 00054 48 8d 54 24 28 lea rdx, QWORD PTR _Newhead$[rsp] 00059 48 8b c8 mov rcx, rax - 0005c e8 00 00 00 00 call ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &> + 0005c e8 00 00 00 00 call ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &> ; 1840 : _Construct_in_place(_Newhead->_Prev, _Newhead); @@ -64190,7 +64190,7 @@ $LN3: 00066 48 83 c0 08 add rax, 8 0006a 48 8d 54 24 28 lea rdx, QWORD PTR _Newhead$[rsp] 0006f 48 8b c8 mov rcx, rax - 00072 e8 00 00 00 00 call ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int>,void *> *,std::_List_node,std::allocator > const ,unsigned int>,void *> * &> + 00072 e8 00 00 00 00 call ??$_Construct_in_place@PEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@AEAPEAU12@@std@@YAXAEAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@0@0@Z ; std::_Construct_in_place,std::allocator > const ,unsigned int32_t>,void *> *,std::_List_node,std::allocator > const ,unsigned int32_t>,void *> * &> ; 1841 : _Mypair._Myval2._Myhead = _Newhead; @@ -64208,7 +64208,7 @@ $LN3: 0008f 48 83 c4 48 add rsp, 72 ; 00000048H 00093 c3 ret 0 -?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ENDP ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Alloc_sentinel_and_proxy +?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ENDP ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Alloc_sentinel_and_proxy _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list @@ -64217,7 +64217,7 @@ _TEXT SEGMENT _My_data$ = 32 _Al$ = 40 this$ = 64 -?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ PROC ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Tidy, COMDAT +?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ PROC ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Tidy, COMDAT ; 1499 : void _Tidy() noexcept { @@ -64228,7 +64228,7 @@ $LN3: ; 1500 : auto& _Al = _Getal(); 00009 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp] - 0000e e8 00 00 00 00 call ?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Getal + 0000e e8 00 00 00 00 call ?_Getal@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@XZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Getal 00013 48 89 44 24 28 mov QWORD PTR _Al$[rsp], rax ; 1501 : auto& _My_data = _Mypair._Myval2; @@ -64246,21 +64246,21 @@ $LN3: 0002c 48 8b 44 24 20 mov rax, QWORD PTR _My_data$[rsp] 00031 48 8b 10 mov rdx, QWORD PTR [rax] 00034 48 8b 4c 24 28 mov rcx, QWORD PTR _Al$[rsp] - 00039 e8 00 00 00 00 call ??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Free_non_head,std::allocator > const ,unsigned int>,void *> > > + 00039 e8 00 00 00 00 call ??$_Free_non_head@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Free_non_head,std::allocator > const ,unsigned int32_t>,void *> > > ; 1504 : _Node::_Freenode0(_Al, _My_data._Myhead); 0003e 48 8b 44 24 20 mov rax, QWORD PTR _My_data$[rsp] 00043 48 8b 10 mov rdx, QWORD PTR [rax] 00046 48 8b 4c 24 28 mov rcx, QWORD PTR _Al$[rsp] - 0004b e8 00 00 00 00 call ??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int>,void *>::_Freenode0,std::allocator > const ,unsigned int>,void *> > > + 0004b e8 00 00 00 00 call ??$_Freenode0@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@1@PEAU01@@Z ; std::_List_node,std::allocator > const ,unsigned int32_t>,void *>::_Freenode0,std::allocator > const ,unsigned int32_t>,void *> > > 00050 90 npad 1 ; 1505 : } 00051 48 83 c4 38 add rsp, 56 ; 00000038H 00055 c3 ret 0 -?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ENDP ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Tidy +?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ENDP ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Tidy _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list @@ -64268,7 +64268,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 48 __$ReturnUdt$ = 56 -?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ PROC ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Unchecked_end, COMDAT +?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ PROC ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Unchecked_end, COMDAT ; 1115 : _Unchecked_iterator _Unchecked_end() noexcept { @@ -64290,14 +64290,14 @@ $LN3: 00028 48 83 c4 28 add rsp, 40 ; 00000028H 0002c c3 ret 0 -?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ENDP ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Unchecked_end +?_Unchecked_end@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA?AV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@std@@@2@XZ ENDP ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Unchecked_end _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list ; COMDAT ??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ _TEXT SEGMENT this$ = 48 -??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ PROC ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::~list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >, COMDAT +??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ PROC ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::~list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >, COMDAT ; 1047 : ~list() noexcept { @@ -64308,7 +64308,7 @@ $LN3: ; 1048 : _Tidy(); 00009 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] - 0000e e8 00 00 00 00 call ?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Tidy + 0000e e8 00 00 00 00 call ?_Tidy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Tidy 00013 90 npad 1 ; 1049 : #if _ITERATOR_DEBUG_LEVEL != 0 // TRANSITION, ABI @@ -64319,7 +64319,7 @@ $LN3: 00014 48 83 c4 28 add rsp, 40 ; 00000028H 00018 c3 ret 0 -??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ENDP ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::~list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > > +??1?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@XZ ENDP ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::~list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\list @@ -64329,7 +64329,7 @@ $T1 = 32 tv70 = 40 this$ = 64 _Al$ = 72 -??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >, COMDAT +??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z PROC ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >, COMDAT ; 802 : explicit list(const _Alloc& _Al) : _Mypair(_One_then_variadic_args_t{}, _Al) { @@ -64342,13 +64342,13 @@ $LN3: 00018 4c 8b 44 24 48 mov r8, QWORD PTR _Al$[rsp] 0001d 0f b6 54 24 20 movzx edx, BYTE PTR $T1[rsp] 00022 48 8b 4c 24 28 mov rcx, QWORD PTR tv70[rsp] - 00027 e8 00 00 00 00 call ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int>,void *> >,std::_List_val,std::allocator > const ,unsigned int> > >,1>,std::allocator > const ,unsigned int> > const &> + 00027 e8 00 00 00 00 call ??$?0AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@$$V@?$_Compressed_pair@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@V?$_List_val@U?$_List_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@@2@$00@std@@QEAA@U_One_then_variadic_args_t@1@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ; std::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>::_Compressed_pair,std::allocator > const ,unsigned int32_t>,void *> >,std::_List_val,std::allocator > const ,unsigned int32_t> > >,1>,std::allocator > const ,unsigned int32_t> > const &> 0002c 90 npad 1 ; 803 : _Alloc_sentinel_and_proxy(); 0002d 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp] - 00032 e8 00 00 00 00 call ?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::_Alloc_sentinel_and_proxy + 00032 e8 00 00 00 00 call ?_Alloc_sentinel_and_proxy@?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@AEAAXXZ ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::_Alloc_sentinel_and_proxy 00037 90 npad 1 ; 804 : } @@ -64356,7 +64356,7 @@ $LN3: 00038 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp] 0003d 48 83 c4 38 add rsp, 56 ; 00000038H 00041 c3 ret 0 -??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > >::list,std::allocator > const ,unsigned int>,std::allocator,std::allocator > const ,unsigned int> > > +??0?$list@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@@std@@QEAA@AEBV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@1@@Z ENDP ; std::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > >::list,std::allocator > const ,unsigned int32_t>,std::allocator,std::allocator > const ,unsigned int32_t> > > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -64365,7 +64365,7 @@ _TEXT SEGMENT _Al$ = 48 _Ptr$ = 56 _Count$ = 64 -?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z PROC ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::deallocate, COMDAT +?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z PROC ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::deallocate, COMDAT ; 682 : static _CONSTEXPR20 void deallocate(_Alloc& _Al, const pointer _Ptr, const size_type _Count) { @@ -64389,7 +64389,7 @@ $LN5: 0001f 4c 8b 44 24 40 mov r8, QWORD PTR _Count$[rsp] 00024 48 8b 54 24 38 mov rdx, QWORD PTR _Ptr$[rsp] 00029 48 8b 4c 24 30 mov rcx, QWORD PTR _Al$[rsp] - 0002e e8 00 00 00 00 call ?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int>,void *> >::deallocate + 0002e e8 00 00 00 00 call ?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::deallocate 00033 90 npad 1 ; 687 : } else @@ -64415,7 +64415,7 @@ $LN3@deallocate: 0004a 48 83 c4 28 add rsp, 40 ; 00000028H 0004e c3 ret 0 -?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ENDP ; std::_Default_allocator_traits,std::allocator > const ,unsigned int>,void *> > >::deallocate +?deallocate@?$_Default_allocator_traits@V?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@@std@@SAXAEAV?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@2@QEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ENDP ; std::_Default_allocator_traits,std::allocator > const ,unsigned int32_t>,void *> > >::deallocate _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -64423,7 +64423,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 48 _Count$ = 56 -?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocate, COMDAT +?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocate, COMDAT ; 952 : _NODISCARD_RAW_PTR_ALLOC _CONSTEXPR20 __declspec(allocator) _Ty* allocate(_CRT_GUARDOVERFLOW const size_t _Count) { @@ -64444,7 +64444,7 @@ $LN3: 00020 48 83 c4 28 add rsp, 40 ; 00000028H 00024 c3 ret 0 -?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int>,void *> >::allocate +?allocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAPEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::allocate _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -64453,7 +64453,7 @@ _TEXT SEGMENT this$ = 48 _Ptr$ = 56 _Count$ = 64 -?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int>,void *> >::deallocate, COMDAT +?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z PROC ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::deallocate, COMDAT ; 946 : _CONSTEXPR20 void deallocate(_Ty* const _Ptr, const size_t _Count) { @@ -64478,7 +64478,7 @@ $LN3: 00027 48 83 c4 28 add rsp, 40 ; 00000028H 0002b c3 ret 0 -?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int>,void *> >::deallocate +?deallocate@?$allocator@U?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@std@@@std@@QEAAXQEAU?$_List_node@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@PEAX@2@_K@Z ENDP ; std::allocator,std::allocator > const ,unsigned int32_t>,void *> >::deallocate _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\unordered_map @@ -64486,7 +64486,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 8 _Traits$ = 16 -??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z PROC ; std::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0>::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0>, COMDAT +??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z PROC ; std::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0>::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0>, COMDAT ; 49 : explicit _Umap_traits(const _Tr& _Traits) noexcept(is_nothrow_copy_constructible_v<_Tr>) : _Tr(_Traits) {} @@ -64498,21 +64498,21 @@ _Traits$ = 16 00016 89 01 mov DWORD PTR [rcx], eax 00018 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 0001d c3 ret 0 -??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z ENDP ; std::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0>::_Umap_traits,std::allocator >,unsigned int,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int> >,0> +??0?$_Umap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@2@$0A@@std@@QEAA@AEBV?$_Uhash_compare@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@1@@Z ENDP ; std::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0>::_Umap_traits,std::allocator >,unsigned int32_t,std::_Uhash_compare,std::allocator >,std::hash,std::allocator > >,std::equal_to,std::allocator > > >,std::allocator,std::allocator > const ,unsigned int32_t> >,0> _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory ; COMDAT ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ _TEXT SEGMENT this$ = 8 -??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ PROC ; std::allocator,std::allocator > const ,unsigned int> >::allocator,std::allocator > const ,unsigned int> >, COMDAT +??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ PROC ; std::allocator,std::allocator > const ,unsigned int32_t> >::allocator,std::allocator > const ,unsigned int32_t> >, COMDAT ; 938 : constexpr allocator() noexcept {} 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 0000a c3 ret 0 -??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ ENDP ; std::allocator,std::allocator > const ,unsigned int> >::allocator,std::allocator > const ,unsigned int> > +??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@std@@@std@@QEAA@XZ ENDP ; std::allocator,std::allocator > const ,unsigned int32_t> >::allocator,std::allocator > const ,unsigned int32_t> > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\xmemory @@ -64732,7 +64732,7 @@ $LN3: 00013 48 8b 4c 24 38 mov rcx, QWORD PTR pointerNew$[rsp] 00018 48 89 08 mov QWORD PTR [rax], rcx 0001b 48 8b 4c 24 38 mov rcx, QWORD PTR pointerNew$[rsp] - 00020 e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length + 00020 e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length 00025 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] 0002a 48 89 41 08 mov QWORD PTR [rcx+8], rax 0002e 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] @@ -65379,7 +65379,7 @@ __catch$?resize@?$string_base@D$0CAAAAA@@jsonifier@@QEAAX_K@Z$0: 0003a 48 83 c4 20 add rsp, 32 ; 00000020H 0003e 5d pop rbp 0003f c3 ret 0 - 00040 cc int 3 + 00040 cc int32_t 3 ?catch$0@?0??resize@?$string_base@D$0CAAAAA@@jsonifier@@QEAAX_K@Z@4HA ENDP ; `jsonifier::string_base::resize'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -66647,7 +66647,7 @@ _TEXT ENDS _TEXT SEGMENT this$ = 8 _Val$ = 16 -??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z PROC ; std::chrono::duration >::duration >, COMDAT +??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z PROC ; std::chrono::duration >::duration >, COMDAT ; 108 : : _MyRep(static_cast<_Rep>(_Val)) {} @@ -66659,7 +66659,7 @@ _Val$ = 16 00018 f3 0f 11 00 movss DWORD PTR [rax], xmm0 0001c 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp] 00021 c3 ret 0 -??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z ENDP ; std::chrono::duration >::duration > +??$?0H$0A@@?$duration@MU?$ratio@$00$0DOI@@std@@@chrono@std@@QEAA@AEBH@Z ENDP ; std::chrono::duration >::duration > _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_chrono.hpp @@ -68369,7 +68369,7 @@ this$ = 64 other$ = 72 ??Operformance_metrics@bnch_swt@@QEBA_NAEBU01@@Z PROC ; bnch_swt::performance_metrics::operator>, COMDAT -; 114 : BNCH_SWT_ALWAYS_INLINE bool operator>(const performance_metrics& other) const { +; 114 : BNCH_SWT_INLINE bool operator>(const performance_metrics& other) const { $LN11: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -68704,7 +68704,7 @@ $LN3@Knuth_4_3_: ; 163 : } ; 164 : -; 165 : for (int __j = 0; __j < static_cast(__n); ++__j) { +; 165 : for (int32_t __j = 0; __j < static_cast(__n); ++__j) { 00068 c7 04 24 00 00 00 00 mov DWORD PTR __j$1[rsp], 0 @@ -68724,7 +68724,7 @@ $LN7@Knuth_4_3_: 00083 48 c7 44 24 08 00 00 00 00 mov QWORD PTR __t$3[rsp], 0 -; 168 : for (int __i = 0; __i < static_cast(__m); ++__i) { +; 168 : for (int32_t __i = 0; __i < static_cast(__m); ++__i) { 0008c c7 44 24 04 00 00 00 00 mov DWORD PTR __i$2[rsp], 0 @@ -69711,7 +69711,7 @@ tv90 = 72 evict_buffer$ = 80 ?evictL1Cache@cache_clearer@bnch_swt@@SAXXZ PROC ; bnch_swt::cache_clearer::evictL1Cache, COMDAT -; 155 : BNCH_SWT_ALWAYS_INLINE static void evictL1Cache() { +; 155 : BNCH_SWT_INLINE static void evictL1Cache() { $LN6: 00000 48 83 ec 78 sub rsp, 120 ; 00000078H @@ -69796,7 +69796,7 @@ ptr$ = 32 size$ = 40 ?flushCache@cache_clearer@bnch_swt@@SAXPEAX_K@Z PROC ; bnch_swt::cache_clearer::flushCache, COMDAT -; 120 : BNCH_SWT_ALWAYS_INLINE static void flushCache(void* ptr, size_t size) { +; 120 : BNCH_SWT_INLINE static void flushCache(void* ptr, size_t size) { $LN6: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -69992,7 +69992,7 @@ $LN24: 00019 48 8b 8c 24 b8 00 00 00 mov rcx, QWORD PTR _Val$[rsp] - 00021 e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length + 00021 e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length 00026 48 89 44 24 30 mov QWORD PTR _Count$[rsp], rax ; 781 : streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count ? 0 : _Ostr.width() - _Count; @@ -70130,11 +70130,11 @@ $LN4@operator: 001a5 48 8b 4c 24 50 mov rcx, QWORD PTR tv194[rsp] 001aa e8 00 00 00 00 call ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z ; std::basic_streambuf >::sputc 001af 89 44 24 38 mov DWORD PTR tv201[rsp], eax - 001b3 e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof + 001b3 e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof 001b8 89 44 24 3c mov DWORD PTR tv199[rsp], eax 001bc 8b 54 24 38 mov edx, DWORD PTR tv201[rsp] 001c0 8b 4c 24 3c mov ecx, DWORD PTR tv199[rsp] - 001c4 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type + 001c4 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type 001c9 0f b6 c0 movzx eax, al 001cc 85 c0 test eax, eax 001ce 74 0d je SHORT $LN12@operator @@ -70237,11 +70237,11 @@ $LN7@operator: 002ba 48 8b 4c 24 60 mov rcx, QWORD PTR tv260[rsp] 002bf e8 00 00 00 00 call ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z ; std::basic_streambuf >::sputc 002c4 89 44 24 40 mov DWORD PTR tv267[rsp], eax - 002c8 e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof + 002c8 e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof 002cd 89 44 24 44 mov DWORD PTR tv265[rsp], eax 002d1 8b 54 24 40 mov edx, DWORD PTR tv267[rsp] 002d5 8b 4c 24 44 mov ecx, DWORD PTR tv265[rsp] - 002d9 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type + 002d9 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type 002de 0f b6 c0 movzx eax, al 002e1 85 c0 test eax, eax 002e3 74 0d je SHORT $LN15@operator @@ -70374,7 +70374,7 @@ __catch$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D 00045 48 83 c4 20 add rsp, 32 ; 00000020H 00049 5d pop rbp 0004a c3 ret 0 - 0004b cc int 3 + 0004b cc int32_t 3 ?catch$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z@4HA ENDP ; `std::operator<< >'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -71204,7 +71204,7 @@ infoCount$ = 96 $T3 = 104 ?getL1CacheSize@bnch_swt@@YA_KXZ PROC ; bnch_swt::getL1CacheSize, COMDAT -; 46 : BNCH_SWT_ALWAYS_INLINE size_t getL1CacheSize() { +; 46 : BNCH_SWT_INLINE size_t getL1CacheSize() { $LN8: 00000 48 83 ec 78 sub rsp, 120 ; 00000078H @@ -71858,7 +71858,7 @@ this$ = 48 other$ = 56 ??0event_count@bnch_swt@@QEAA@AEBU01@@Z PROC ; bnch_swt::event_count::event_count, COMDAT -; 123 : BNCH_SWT_ALWAYS_INLINE event_count(const event_count& other) noexcept { +; 123 : BNCH_SWT_INLINE event_count(const event_count& other) noexcept { $LN3: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -71867,7 +71867,7 @@ $LN3: 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H ; 126 : -; 127 : BNCH_SWT_ALWAYS_INLINE event_count operator+(const event_count& other) const noexcept { +; 127 : BNCH_SWT_INLINE event_count operator+(const event_count& other) const noexcept { ; 128 : event_count countNew{}; ; 129 : if (instructionsVal.has_value() && other.instructionsVal.has_value()) { ; 130 : countNew.instructionsVal.emplace(instructionsVal.value() + other.instructionsVal.value()); @@ -71878,8 +71878,8 @@ $LN3: ; 135 : if (branchesVal.has_value() && other.branchesVal.has_value()) { ; 136 : countNew.branchesVal.emplace(branchesVal.value() + other.branchesVal.value()); ; 137 : } -; 138 : if (missedBranchesVal.has_value() && other.missedBranchesVal.has_value()) { -; 139 : countNew.missedBranchesVal.emplace(missedBranchesVal.value() + other.missedBranchesVal.value()); +; 138 : if (branchMissesVal.has_value() && other.branchMissesVal.has_value()) { +; 139 : countNew.branchMissesVal.emplace(branchMissesVal.value() + other.branchMissesVal.value()); ; 140 : } ; 141 : if (cyclesVal.has_value() && other.cyclesVal.has_value()) { ; 142 : countNew.cyclesVal.emplace(cyclesVal.value() + other.cyclesVal.value()); @@ -71888,13 +71888,13 @@ $LN3: ; 145 : return countNew; ; 146 : } ; 147 : -; 148 : BNCH_SWT_ALWAYS_INLINE event_count& operator+=(const event_count& other) { +; 148 : BNCH_SWT_INLINE event_count& operator+=(const event_count& other) { ; 149 : *this = *this + other; ; 150 : return *this; ; 151 : } ; 152 : ; 153 : protected: -; 154 : std::optional missedBranchesVal{}; +; 154 : std::optional branchMissesVal{}; 0000f 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00014 48 8b c8 mov rcx, rax @@ -71966,7 +71966,7 @@ this$ = 96 other$ = 104 ??4event_count@bnch_swt@@QEAAAEAU01@AEBU01@@Z PROC ; bnch_swt::event_count::operator=, COMDAT -; 100 : BNCH_SWT_ALWAYS_INLINE event_count& operator=(const event_count& other) noexcept { +; 100 : BNCH_SWT_INLINE event_count& operator=(const event_count& other) noexcept { $LN9: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -72025,7 +72025,7 @@ $LN2@operator: $LN3@operator: ; 106 : } -; 107 : if (other.missedBranchesVal.has_value()) { +; 107 : if (other.branchMissesVal.has_value()) { 00098 48 8b 44 24 68 mov rax, QWORD PTR other$[rsp] 0009d 48 8b c8 mov rcx, rax @@ -72034,7 +72034,7 @@ $LN3@operator: 000a8 85 c0 test eax, eax 000aa 74 25 je SHORT $LN4@operator -; 108 : missedBranchesVal.emplace(other.missedBranchesVal.value()); +; 108 : branchMissesVal.emplace(other.branchMissesVal.value()); 000ac 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 000b1 48 89 44 24 30 mov QWORD PTR tv135[rsp], rax @@ -72048,7 +72048,7 @@ $LN3@operator: $LN4@operator: ; 109 : } -; 110 : if (other.missedBranchesVal.has_value()) { +; 110 : if (other.branchMissesVal.has_value()) { 000d1 48 8b 44 24 68 mov rax, QWORD PTR other$[rsp] 000d6 48 8b c8 mov rcx, rax @@ -72057,7 +72057,7 @@ $LN4@operator: 000e1 85 c0 test eax, eax 000e3 74 25 je SHORT $LN5@operator -; 111 : missedBranchesVal.emplace(other.missedBranchesVal.value()); +; 111 : branchMissesVal.emplace(other.branchMissesVal.value()); 000e5 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp] 000ea 48 89 44 24 38 mov QWORD PTR tv148[rsp], rax @@ -72148,7 +72148,7 @@ this$ = 48 bytesProcessedNew$ = 56 ?bytesProcessed@event_count@bnch_swt@@QEBA_NAEAN@Z PROC ; bnch_swt::event_count::bytesProcessed, COMDAT -; 91 : BNCH_SWT_ALWAYS_INLINE bool bytesProcessed(double& bytesProcessedNew) const noexcept { +; 91 : BNCH_SWT_INLINE bool bytesProcessed(double& bytesProcessedNew) const noexcept { $LN5: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -72200,20 +72200,20 @@ $LN1@bytesProce: _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Users\Chris\source\repos\BenchmarkSuite\Include\BnchSwt\EventCounter.hpp -; COMDAT ?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z +; COMDAT ?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z _TEXT SEGMENT this$ = 48 -missedBranchesNew$ = 56 -?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z PROC ; bnch_swt::event_count::missedBranches, COMDAT +branchMissesNew$ = 56 +?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z PROC ; bnch_swt::event_count::branchMisses, COMDAT -; 82 : BNCH_SWT_ALWAYS_INLINE bool missedBranches(double& missedBranchesNew) const noexcept { +; 82 : BNCH_SWT_INLINE bool branchMisses(double& branchMissesNew) const noexcept { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000a 48 83 ec 28 sub rsp, 40 ; 00000028H -; 83 : if (missedBranchesVal.has_value()) { +; 83 : if (branchMissesVal.has_value()) { 0000e 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00013 48 8b c8 mov rcx, rax @@ -72222,7 +72222,7 @@ $LN7: 0001e 85 c0 test eax, eax 00020 74 44 je SHORT $LN2@missedBran -; 84 : missedBranchesNew = static_cast(missedBranchesVal.value()); +; 84 : branchMissesNew = static_cast(branchMissesVal.value()); 00022 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00027 48 8b c8 mov rcx, rax @@ -72241,7 +72241,7 @@ $LN5@missedBran: 00050 f2 0f 58 c9 addsd xmm1, xmm1 00054 0f 28 c1 movaps xmm0, xmm1 $LN6@missedBran: - 00057 48 8b 44 24 38 mov rax, QWORD PTR missedBranchesNew$[rsp] + 00057 48 8b 44 24 38 mov rax, QWORD PTR branchMissesNew$[rsp] 0005c f2 0f 11 00 movsd QWORD PTR [rax], xmm0 ; 85 : return true; @@ -72265,7 +72265,7 @@ $LN1@missedBran: 00068 48 83 c4 28 add rsp, 40 ; 00000028H 0006c c3 ret 0 -?missedBranches@event_count@bnch_swt@@QEBA_NAEAN@Z ENDP ; bnch_swt::event_count::missedBranches +?branchMisses@event_count@bnch_swt@@QEBA_NAEAN@Z ENDP ; bnch_swt::event_count::branchMisses _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Users\Chris\source\repos\BenchmarkSuite\Include\BnchSwt\EventCounter.hpp @@ -72275,7 +72275,7 @@ this$ = 48 branchesNew$ = 56 ?branches@event_count@bnch_swt@@QEBA_NAEAN@Z PROC ; bnch_swt::event_count::branches, COMDAT -; 73 : BNCH_SWT_ALWAYS_INLINE bool branches(double& branchesNew) const noexcept { +; 73 : BNCH_SWT_INLINE bool branches(double& branchesNew) const noexcept { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -72346,7 +72346,7 @@ this$ = 48 instructionsNew$ = 56 ?instructions@event_count@bnch_swt@@QEBA_NAEAN@Z PROC ; bnch_swt::event_count::instructions, COMDAT -; 64 : BNCH_SWT_ALWAYS_INLINE bool instructions(double& instructionsNew) const noexcept { +; 64 : BNCH_SWT_INLINE bool instructions(double& instructionsNew) const noexcept { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -72417,7 +72417,7 @@ this$ = 48 cyclesNew$ = 56 ?cycles@event_count@bnch_swt@@QEBA_NAEAN@Z PROC ; bnch_swt::event_count::cycles, COMDAT -; 55 : BNCH_SWT_ALWAYS_INLINE bool cycles(double& cyclesNew) const { +; 55 : BNCH_SWT_INLINE bool cycles(double& cyclesNew) const { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -72488,7 +72488,7 @@ $T1 = 32 this$ = 64 ?elapsedNs@event_count@bnch_swt@@QEBANXZ PROC ; bnch_swt::event_count::elapsedNs, COMDAT -; 51 : BNCH_SWT_ALWAYS_INLINE double elapsedNs() const noexcept { +; 51 : BNCH_SWT_INLINE double elapsedNs() const noexcept { $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -72517,7 +72517,7 @@ _TEXT SEGMENT this$ = 48 ??0event_count@bnch_swt@@QEAA@XZ PROC ; bnch_swt::event_count::event_count, COMDAT -; 49 : BNCH_SWT_ALWAYS_INLINE event_count() noexcept = default; +; 49 : BNCH_SWT_INLINE event_count() noexcept = default; $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -72525,11 +72525,11 @@ $LN3: 00006 48 83 ec 20 sub rsp, 32 ; 00000020H ; 50 : -; 51 : BNCH_SWT_ALWAYS_INLINE double elapsedNs() const noexcept { +; 51 : BNCH_SWT_INLINE double elapsedNs() const noexcept { ; 52 : return std::chrono::duration(elapsed).count(); ; 53 : } ; 54 : -; 55 : BNCH_SWT_ALWAYS_INLINE bool cycles(double& cyclesNew) const { +; 55 : BNCH_SWT_INLINE bool cycles(double& cyclesNew) const { ; 56 : if (cyclesVal.has_value()) { ; 57 : cyclesNew = static_cast(cyclesVal.value()); ; 58 : return true; @@ -72538,7 +72538,7 @@ $LN3: ; 61 : } ; 62 : } ; 63 : -; 64 : BNCH_SWT_ALWAYS_INLINE bool instructions(double& instructionsNew) const noexcept { +; 64 : BNCH_SWT_INLINE bool instructions(double& instructionsNew) const noexcept { ; 65 : if (instructionsVal.has_value()) { ; 66 : instructionsNew = static_cast(instructionsVal.value()); ; 67 : return true; @@ -72547,7 +72547,7 @@ $LN3: ; 70 : } ; 71 : } ; 72 : -; 73 : BNCH_SWT_ALWAYS_INLINE bool branches(double& branchesNew) const noexcept { +; 73 : BNCH_SWT_INLINE bool branches(double& branchesNew) const noexcept { ; 74 : if (branchesVal.has_value()) { ; 75 : branchesNew = static_cast(branchesVal.value()); ; 76 : return true; @@ -72556,16 +72556,16 @@ $LN3: ; 79 : } ; 80 : } ; 81 : -; 82 : BNCH_SWT_ALWAYS_INLINE bool missedBranches(double& missedBranchesNew) const noexcept { -; 83 : if (missedBranchesVal.has_value()) { -; 84 : missedBranchesNew = static_cast(missedBranchesVal.value()); +; 82 : BNCH_SWT_INLINE bool branchMisses(double& branchMissesNew) const noexcept { +; 83 : if (branchMissesVal.has_value()) { +; 84 : branchMissesNew = static_cast(branchMissesVal.value()); ; 85 : return true; ; 86 : } else { ; 87 : return false; ; 88 : } ; 89 : } ; 90 : -; 91 : BNCH_SWT_ALWAYS_INLINE bool bytesProcessed(double& bytesProcessedNew) const noexcept { +; 91 : BNCH_SWT_INLINE bool bytesProcessed(double& bytesProcessedNew) const noexcept { ; 92 : if (bytesProcessedVal.has_value()) { ; 93 : bytesProcessedNew = static_cast(bytesProcessedVal.value()); ; 94 : return true; @@ -72574,18 +72574,18 @@ $LN3: ; 97 : } ; 98 : } ; 99 : -; 100 : BNCH_SWT_ALWAYS_INLINE event_count& operator=(const event_count& other) noexcept { +; 100 : BNCH_SWT_INLINE event_count& operator=(const event_count& other) noexcept { ; 101 : if (other.instructionsVal.has_value()) { ; 102 : instructionsVal.emplace(other.instructionsVal.value()); ; 103 : } ; 104 : if (other.bytesProcessedVal.has_value()) { ; 105 : bytesProcessedVal.emplace(other.bytesProcessedVal.value()); ; 106 : } -; 107 : if (other.missedBranchesVal.has_value()) { -; 108 : missedBranchesVal.emplace(other.missedBranchesVal.value()); +; 107 : if (other.branchMissesVal.has_value()) { +; 108 : branchMissesVal.emplace(other.branchMissesVal.value()); ; 109 : } -; 110 : if (other.missedBranchesVal.has_value()) { -; 111 : missedBranchesVal.emplace(other.missedBranchesVal.value()); +; 110 : if (other.branchMissesVal.has_value()) { +; 111 : branchMissesVal.emplace(other.branchMissesVal.value()); ; 112 : } ; 113 : if (other.branchesVal.has_value()) { ; 114 : branchesVal.emplace(other.branchesVal.value()); @@ -72597,11 +72597,11 @@ $LN3: ; 120 : return *this; ; 121 : } ; 122 : -; 123 : BNCH_SWT_ALWAYS_INLINE event_count(const event_count& other) noexcept { +; 123 : BNCH_SWT_INLINE event_count(const event_count& other) noexcept { ; 124 : *this = other; ; 125 : } ; 126 : -; 127 : BNCH_SWT_ALWAYS_INLINE event_count operator+(const event_count& other) const noexcept { +; 127 : BNCH_SWT_INLINE event_count operator+(const event_count& other) const noexcept { ; 128 : event_count countNew{}; ; 129 : if (instructionsVal.has_value() && other.instructionsVal.has_value()) { ; 130 : countNew.instructionsVal.emplace(instructionsVal.value() + other.instructionsVal.value()); @@ -72612,8 +72612,8 @@ $LN3: ; 135 : if (branchesVal.has_value() && other.branchesVal.has_value()) { ; 136 : countNew.branchesVal.emplace(branchesVal.value() + other.branchesVal.value()); ; 137 : } -; 138 : if (missedBranchesVal.has_value() && other.missedBranchesVal.has_value()) { -; 139 : countNew.missedBranchesVal.emplace(missedBranchesVal.value() + other.missedBranchesVal.value()); +; 138 : if (branchMissesVal.has_value() && other.branchMissesVal.has_value()) { +; 139 : countNew.branchMissesVal.emplace(branchMissesVal.value() + other.branchMissesVal.value()); ; 140 : } ; 141 : if (cyclesVal.has_value() && other.cyclesVal.has_value()) { ; 142 : countNew.cyclesVal.emplace(cyclesVal.value() + other.cyclesVal.value()); @@ -72622,13 +72622,13 @@ $LN3: ; 145 : return countNew; ; 146 : } ; 147 : -; 148 : BNCH_SWT_ALWAYS_INLINE event_count& operator+=(const event_count& other) { +; 148 : BNCH_SWT_INLINE event_count& operator+=(const event_count& other) { ; 149 : *this = *this + other; ; 150 : return *this; ; 151 : } ; 152 : ; 153 : protected: -; 154 : std::optional missedBranchesVal{}; +; 154 : std::optional branchMissesVal{}; 0000a 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 0000f 48 8b c8 mov rcx, rax @@ -72672,7 +72672,7 @@ $LN3: 0006b e8 00 00 00 00 call ??0?$optional@_K@std@@QEAA@XZ ; std::optional::optional 00070 90 npad 1 -; 49 : BNCH_SWT_ALWAYS_INLINE event_count() noexcept = default; +; 49 : BNCH_SWT_INLINE event_count() noexcept = default; 00071 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp] 00076 48 83 c4 20 add rsp, 32 ; 00000020H @@ -73259,7 +73259,7 @@ $LN5: 00026 0f b6 4c 24 48 movzx ecx, BYTE PTR _Ch$[rsp] 0002b 88 08 mov BYTE PTR [rax], cl 0002d 0f b6 4c 24 48 movzx ecx, BYTE PTR _Ch$[rsp] - 00032 e8 00 00 00 00 call ?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ; std::_Narrow_char_traits::to_int_type + 00032 e8 00 00 00 00 call ?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ; std::_Narrow_char_traits::to_int_type 00037 89 44 24 20 mov DWORD PTR tv82[rsp], eax 0003b eb 30 jmp SHORT $LN4@sputc $LN3@sputc: @@ -73268,7 +73268,7 @@ $LN3@sputc: 00045 48 8b 40 18 mov rax, QWORD PTR [rax+24] 00049 48 89 44 24 28 mov QWORD PTR tv81[rsp], rax 0004e 0f b6 4c 24 48 movzx ecx, BYTE PTR _Ch$[rsp] - 00053 e8 00 00 00 00 call ?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ; std::_Narrow_char_traits::to_int_type + 00053 e8 00 00 00 00 call ?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ; std::_Narrow_char_traits::to_int_type 00058 89 44 24 24 mov DWORD PTR tv79[rsp], eax 0005c 8b 54 24 24 mov edx, DWORD PTR tv79[rsp] 00060 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp] @@ -73290,7 +73290,7 @@ _TEXT SEGMENT this$ = 48 ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ PROC ; std::basic_streambuf >::pubsync, COMDAT -; 120 : int __CLR_OR_THIS_CALL pubsync() { // synchronize with external agent +; 120 : int32_t __CLR_OR_THIS_CALL pubsync() { // synchronize with external agent $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -73455,7 +73455,7 @@ __catch$?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ$0: 0003f 48 83 c4 20 add rsp, 32 ; 00000020H 00043 5d pop rbp 00044 c3 ret 0 - 00045 cc int 3 + 00045 cc int32_t 3 ?catch$0@?0??flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ@4HA ENDP ; `std::basic_ostream >::flush'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -73529,11 +73529,11 @@ $LN2@put: 0006c 48 8b 4c 24 30 mov rcx, QWORD PTR tv90[rsp] 00071 e8 00 00 00 00 call ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z ; std::basic_streambuf >::sputc 00076 89 44 24 24 mov DWORD PTR tv129[rsp], eax - 0007a e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof + 0007a e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof 0007f 89 44 24 28 mov DWORD PTR tv95[rsp], eax 00083 8b 54 24 24 mov edx, DWORD PTR tv129[rsp] 00087 8b 4c 24 28 mov ecx, DWORD PTR tv95[rsp] - 0008b e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type + 0008b e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ; std::_Narrow_char_traits::eq_int_type 00090 0f b6 c0 movzx eax, al 00093 85 c0 test eax, eax 00095 74 0b je SHORT $LN5@put @@ -73620,7 +73620,7 @@ __catch$?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z$0: 0003f 48 83 c4 20 add rsp, 32 ; 00000020H 00043 5d pop rbp 00044 c3 ret 0 - 00045 cc int 3 + 00045 cc int32_t 3 ?catch$0@?0??put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z@4HA ENDP ; `std::basic_ostream >::put'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -73877,7 +73877,7 @@ __catch$??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z$0: 00045 48 83 c4 30 add rsp, 48 ; 00000030H 00049 5d pop rbp 0004a c3 ret 0 - 0004b cc int 3 + 0004b cc int32_t 3 ?catch$0@?0???6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z@4HA ENDP ; `std::basic_ostream >::operator<<'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -73903,7 +73903,7 @@ this$ = 256 _Val$ = 264 ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z PROC ; std::basic_ostream >::operator<<, COMDAT -; 382 : basic_ostream& __CLR_OR_THIS_CALL operator<<(unsigned long long _Val) { // insert an unsigned long long +; 382 : basic_ostream& __CLR_OR_THIS_CALL operator<<(uint64_t _Val) { // insert an uint64_t $LN11: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -74132,7 +74132,7 @@ __catch$??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z$0: 00045 48 83 c4 30 add rsp, 48 ; 00000030H 00049 5d pop rbp 0004a c3 ret 0 - 0004b cc int 3 + 0004b cc int32_t 3 ?catch$0@?0???6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z@4HA ENDP ; `std::basic_ostream >::operator<<'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -74312,7 +74312,7 @@ __catch$?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ$0: 00014 48 83 c4 20 add rsp, 32 ; 00000020H 00018 5d pop rbp 00019 c3 ret 0 - 0001a cc int 3 + 0001a cc int32_t 3 ?catch$0@?0??_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ@4HA ENDP ; `std::basic_ostream >::_Osfx'::`1'::catch$0 text$x ENDS ; Function compile flags: /Odtp @@ -74617,7 +74617,7 @@ _Precision$ = 32 _Float_flags$ = 40 ??$_Float_put_desired_precision@O@std@@YAH_JH@Z PROC ; std::_Float_put_desired_precision, COMDAT -; 1184 : int _Float_put_desired_precision(const streamsize _Precision, const ios_base::fmtflags _Float_flags) { +; 1184 : int32_t _Float_put_desired_precision(const streamsize _Precision, const ios_base::fmtflags _Float_flags) { $LN14: 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -74665,7 +74665,7 @@ $LN2@Float_put_: 00 cmp QWORD PTR _Precision$[rsp], 0 0003f 7e 08 jle SHORT $LN3@Float_put_ -; 1199 : return static_cast(_Precision); +; 1199 : return static_cast(_Precision); 00041 8b 44 24 20 mov eax, DWORD PTR _Precision$[rsp] 00045 eb 4b jmp SHORT $LN1@Float_put_ @@ -74718,7 +74718,7 @@ $LN8@Float_put_: 00083 eb 0d jmp SHORT $LN6@Float_put_ $LN5@Float_put_: -; 1208 : constexpr int _Default_precision = 6; +; 1208 : constexpr int32_t _Default_precision = 6; 00085 c7 44 24 04 06 00 00 00 mov DWORD PTR _Default_precision$2[rsp], 6 @@ -74787,7 +74787,7 @@ _Precision$ = 32 _Float_flags$ = 40 ??$_Float_put_desired_precision@N@std@@YAH_JH@Z PROC ; std::_Float_put_desired_precision, COMDAT -; 1184 : int _Float_put_desired_precision(const streamsize _Precision, const ios_base::fmtflags _Float_flags) { +; 1184 : int32_t _Float_put_desired_precision(const streamsize _Precision, const ios_base::fmtflags _Float_flags) { $LN14: 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -74835,7 +74835,7 @@ $LN2@Float_put_: 00 cmp QWORD PTR _Precision$[rsp], 0 0003f 7e 08 jle SHORT $LN3@Float_put_ -; 1199 : return static_cast(_Precision); +; 1199 : return static_cast(_Precision); 00041 8b 44 24 20 mov eax, DWORD PTR _Precision$[rsp] 00045 eb 4b jmp SHORT $LN1@Float_put_ @@ -74888,7 +74888,7 @@ $LN8@Float_put_: 00083 eb 0d jmp SHORT $LN6@Float_put_ $LN5@Float_put_: -; 1208 : constexpr int _Default_precision = 6; +; 1208 : constexpr int32_t _Default_precision = 6; 00085 c7 44 24 04 06 00 00 00 mov DWORD PTR _Default_precision$2[rsp], 6 @@ -77759,7 +77759,7 @@ __$ReturnUdt$ = 72 _Errcode$ = 80 ?message@_Iostream_error_category2@std@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@H@Z PROC ; std::_Iostream_error_category2::message, COMDAT -; 555 : _NODISCARD string message(int _Errcode) const override { +; 555 : _NODISCARD string message(int32_t _Errcode) const override { $LN5: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -77767,7 +77767,7 @@ $LN5: 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000f 48 83 ec 38 sub rsp, 56 ; 00000038H -; 556 : if (_Errcode == static_cast(io_errc::stream)) { +; 556 : if (_Errcode == static_cast(io_errc::stream)) { 00013 83 7c 24 50 01 cmp DWORD PTR _Errcode$[rsp], 1 00018 75 29 jne SHORT $LN2@message @@ -78205,7 +78205,7 @@ $LN3: 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00009 48 83 ec 28 sub rsp, 40 ; 00000028H -; 430 : return error_code(static_cast(_Ec), _STD iostream_category()); +; 430 : return error_code(static_cast(_Ec), _STD iostream_category()); 0000d e8 00 00 00 00 call ?iostream_category@std@@YAAEBVerror_category@1@XZ ; std::iostream_category 00012 4c 8b c0 mov r8, rax @@ -78304,7 +78304,7 @@ _TEXT SEGMENT this$ = 8 ?value@error_condition@std@@QEBAHXZ PROC ; std::error_condition::value, COMDAT -; 287 : _NODISCARD int value() const noexcept { +; 287 : _NODISCARD int32_t value() const noexcept { 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -78327,7 +78327,7 @@ _Val$ = 16 _Cat$ = 24 ??0error_condition@std@@QEAA@HAEBVerror_category@1@@Z PROC ; std::error_condition::error_condition, COMDAT -; 262 : error_condition(int _Val, const error_category& _Cat) noexcept : _Myval(_Val), _Mycat(&_Cat) {} +; 262 : error_condition(int32_t _Val, const error_category& _Cat) noexcept : _Myval(_Val), _Mycat(&_Cat) {} 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -78412,7 +78412,7 @@ _TEXT SEGMENT this$ = 8 ?value@error_code@std@@QEBAHXZ PROC ; std::error_code::value, COMDAT -; 196 : _NODISCARD int value() const noexcept { +; 196 : _NODISCARD int32_t value() const noexcept { 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -78435,7 +78435,7 @@ _Val$ = 16 _Cat$ = 24 ??0error_code@std@@QEAA@HAEBVerror_category@1@@Z PROC ; std::error_code::error_code, COMDAT -; 171 : error_code(int _Val, const error_category& _Cat) noexcept : _Myval(_Val), _Mycat(&_Cat) {} +; 171 : error_code(int32_t _Val, const error_category& _Cat) noexcept : _Myval(_Val), _Mycat(&_Cat) {} 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -78536,7 +78536,7 @@ _Code$ = 72 _Errval$ = 80 ?equivalent@error_category@std@@UEBA_NAEBVerror_code@2@H@Z PROC ; std::error_category::equivalent, COMDAT -; 416 : _NODISCARD inline bool error_category::equivalent(const error_code& _Code, int _Errval) const noexcept { +; 416 : _NODISCARD inline bool error_category::equivalent(const error_code& _Code, int32_t _Errval) const noexcept { $LN5: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -78584,7 +78584,7 @@ _Errval$ = 88 _Cond$ = 96 ?equivalent@error_category@std@@UEBA_NHAEBVerror_condition@2@@Z PROC ; std::error_category::equivalent, COMDAT -; 412 : _NODISCARD inline bool error_category::equivalent(int _Errval, const error_condition& _Cond) const noexcept { +; 412 : _NODISCARD inline bool error_category::equivalent(int32_t _Errval, const error_condition& _Cond) const noexcept { $LN3: 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 @@ -78621,7 +78621,7 @@ __$ReturnUdt$ = 56 _Errval$ = 64 ?default_error_condition@error_category@std@@UEBA?AVerror_condition@2@H@Z PROC ; std::error_category::default_error_condition, COMDAT -; 407 : _NODISCARD inline error_condition error_category::default_error_condition(int _Errval) const noexcept { +; 407 : _NODISCARD inline error_condition error_category::default_error_condition(int32_t _Errval) const noexcept { $LN3: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -79325,7 +79325,7 @@ $LN2@Tidy_deall: 00097 48 8b c1 mov rax, rcx 0009a 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 0009f 48 8b c8 mov rcx, rax - 000a2 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 000a2 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 000a7 90 npad 1 ; 3069 : } @@ -79366,7 +79366,7 @@ $LN3: 0002e 48 03 44 24 48 add rax, QWORD PTR _New_size$[rsp] 00033 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00038 48 8b c8 mov rcx, rax - 0003b e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 0003b e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 00040 90 npad 1 ; 3053 : } @@ -79847,7 +79847,7 @@ $LN4: 0005b 48 8b c1 mov rax, rcx 0005e 48 8d 54 24 58 lea rdx, QWORD PTR _Ch$[rsp] 00063 48 8b c8 mov rcx, rax - 00066 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 00066 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0006b 90 npad 1 ; 2283 : _Traits::assign(_Ptr[_Old_size + 1], _Elem()); @@ -79858,7 +79858,7 @@ $LN4: 0007b 48 8d 44 08 01 lea rax, QWORD PTR [rax+rcx+1] 00080 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00085 48 8b c8 mov rcx, rax - 00088 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 00088 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0008d 90 npad 1 ; 2284 : return; @@ -80046,7 +80046,7 @@ $LN4: 000c4 48 8b ca mov rcx, rdx 000c7 4c 8b c0 mov r8, rax 000ca 48 8b 54 24 40 mov rdx, QWORD PTR _Insert_at$2[rsp] - 000cf e8 00 00 00 00 call ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move + 000cf e8 00 00 00 00 call ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move ; 1781 : _Traits::assign(_Insert_at, _Count, _Ch); // fill hole @@ -80055,7 +80055,7 @@ $LN4: 000dd 48 8b 94 24 80 00 00 00 mov rdx, QWORD PTR _Count$[rsp] 000e5 48 8b 4c 24 40 mov rcx, QWORD PTR _Insert_at$2[rsp] - 000ea e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign + 000ea e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign ; 1782 : return *this; @@ -80143,7 +80143,7 @@ $LN4: 00043 4c 8b 44 24 50 mov r8, QWORD PTR _Count$[rsp] 00048 48 8b 54 24 48 mov rdx, QWORD PTR _Ptr$[rsp] 0004d 48 8b 4c 24 28 mov rcx, QWORD PTR _Old_ptr$3[rsp] - 00052 e8 00 00 00 00 call ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move + 00052 e8 00 00 00 00 call ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move 00057 90 npad 1 ; 1610 : _Traits::assign(_Old_ptr[_Count], _Elem()); @@ -80155,7 +80155,7 @@ $LN4: 0006a 48 8b c1 mov rax, rcx 0006d 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00072 48 8b c8 mov rcx, rax - 00075 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 00075 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0007a 90 npad 1 ; 1611 : _ASAN_STRING_CREATE(*this); @@ -80254,7 +80254,7 @@ $LN4: 70 movzx r8d, BYTE PTR _Ch$[rsp] 0007e 48 8b 54 24 68 mov rdx, QWORD PTR _Count$[rsp] 00083 48 8b c8 mov rcx, rax - 00086 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign + 00086 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Narrow_char_traits::assign 0008b 90 npad 1 ; 1532 : _Traits::assign(_Old_ptr[_Old_size + _Count], _Elem()); @@ -80269,7 +80269,7 @@ $LN4: 000a9 48 8b c1 mov rax, rcx 000ac 48 8d 54 24 30 lea rdx, QWORD PTR $T1[rsp] 000b1 48 8b c8 mov rcx, rax - 000b4 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 000b4 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 000b9 90 npad 1 ; 1533 : return *this; @@ -80324,7 +80324,7 @@ $LN3: ; 1521 : return append(_Ptr, _Convert_size(_Traits::length(_Ptr))); 0000e 48 8b 4c 24 38 mov rcx, QWORD PTR _Ptr$[rsp] - 00013 e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length + 00013 e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length 00018 48 8b c8 mov rcx, rax 0001b e8 00 00 00 00 call ??$_Convert_size@_K_K@std@@YA_K_K@Z ; std::_Convert_size 00020 4c 8b c0 mov r8, rax @@ -80402,7 +80402,7 @@ $LN4: 00078 4c 8b 44 24 70 mov r8, QWORD PTR _Count$[rsp] 0007d 48 8b 54 24 68 mov rdx, QWORD PTR _Ptr$[rsp] 00082 48 8b c8 mov rcx, rax - 00085 e8 00 00 00 00 call ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move + 00085 e8 00 00 00 00 call ?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::move 0008a 90 npad 1 ; 1505 : _Traits::assign(_Old_ptr[_Old_size + _Count], _Elem()); @@ -80417,7 +80417,7 @@ $LN4: 000a8 48 8b c1 mov rax, rcx 000ab 48 8d 54 24 30 lea rdx, QWORD PTR $T1[rsp] 000b0 48 8b c8 mov rcx, rax - 000b3 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 000b3 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 000b8 90 npad 1 ; 1506 : return *this; @@ -80779,7 +80779,7 @@ $LN6: 000a6 48 8b c1 mov rax, rcx 000a9 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 000ae 48 8b c8 mov rcx, rax - 000b1 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 000b1 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 000b6 90 npad 1 ; 1279 : return; @@ -80848,7 +80848,7 @@ $LN3@Take_conte: 00130 48 8b d1 mov rdx, rcx 00133 48 8b 44 24 48 mov rax, QWORD PTR tv151[rsp] 00138 48 8b c8 mov rcx, rax - 0013b e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy + 0013b e8 00 00 00 00 call ?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ; std::_Char_traits::copy 00140 90 npad 1 $LN4@Take_conte: @@ -80891,7 +80891,7 @@ $LN4@Take_conte: 00195 48 8b c1 mov rax, rcx 00198 48 8d 54 24 21 lea rdx, QWORD PTR $T2[rsp] 0019d 48 8b c8 mov rcx, rax - 001a0 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 001a0 e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 001a5 90 npad 1 $LN1@Take_conte: @@ -81137,7 +81137,7 @@ $LN3: 0005f 48 8b c1 mov rax, rcx 00062 48 8d 54 24 20 lea rdx, QWORD PTR $T1[rsp] 00067 48 8b c8 mov rcx, rax - 0006a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign + 0006a e8 00 00 00 00 call ?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Narrow_char_traits::assign 0006f 90 npad 1 ; 847 : } @@ -81246,7 +81246,7 @@ $LN3: ; 750 : _Construct<_Construct_strategy::_From_ptr>(_Ptr, _Convert_size(_Traits::length(_Ptr))); 00028 48 8b 4c 24 48 mov rcx, QWORD PTR _Ptr$[rsp] - 0002d e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length + 0002d e8 00 00 00 00 call ?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ; std::_Narrow_char_traits::length 00032 48 8b c8 mov rcx, rax 00035 e8 00 00 00 00 call ??$_Convert_size@_K_K@std@@YA_K_K@Z ; std::_Convert_size 0003a 4c 8b c0 mov r8, rax @@ -83095,7 +83095,7 @@ _TEXT ENDS ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp ; COMDAT ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ _TEXT SEGMENT -?eof@?$_Narrow_char_traits@DH@std@@SAHXZ PROC ; std::_Narrow_char_traits::eof, COMDAT +?eof@?$_Narrow_char_traits@DH@std@@SAHXZ PROC ; std::_Narrow_char_traits::eof, COMDAT ; 457 : return static_cast(EOF); @@ -83104,7 +83104,7 @@ _TEXT SEGMENT ; 458 : } 00005 c3 ret 0 -?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ENDP ; std::_Narrow_char_traits::eof +?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ENDP ; std::_Narrow_char_traits::eof _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83113,7 +83113,7 @@ _TEXT SEGMENT tv65 = 0 _Left$ = 32 _Right$ = 40 -?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z PROC ; std::_Narrow_char_traits::eq_int_type, COMDAT +?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z PROC ; std::_Narrow_char_traits::eq_int_type, COMDAT ; 448 : _NODISCARD static constexpr bool eq_int_type(const int_type _Left, const int_type _Right) noexcept { @@ -83140,14 +83140,14 @@ $LN4@eq_int_typ: 0002a 48 83 c4 18 add rsp, 24 0002e c3 ret 0 -?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ENDP ; std::_Narrow_char_traits::eq_int_type +?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NHH@Z ENDP ; std::_Narrow_char_traits::eq_int_type _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp ; COMDAT ?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z _TEXT SEGMENT _Ch$ = 8 -?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z PROC ; std::_Narrow_char_traits::to_int_type, COMDAT +?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z PROC ; std::_Narrow_char_traits::to_int_type, COMDAT ; 444 : _NODISCARD static constexpr int_type to_int_type(const _Elem _Ch) noexcept { @@ -83160,7 +83160,7 @@ _Ch$ = 8 ; 446 : } 00009 c3 ret 0 -?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ENDP ; std::_Narrow_char_traits::to_int_type +?to_int_type@?$_Narrow_char_traits@DH@std@@SAHD@Z ENDP ; std::_Narrow_char_traits::to_int_type _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83168,7 +83168,7 @@ _TEXT ENDS _TEXT SEGMENT _Left$ = 48 _Right$ = 56 -?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z PROC ; std::_Narrow_char_traits::assign, COMDAT +?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z PROC ; std::_Narrow_char_traits::assign, COMDAT ; 423 : static _CONSTEXPR17 void assign(_Elem& _Left, const _Elem& _Right) noexcept { @@ -83189,7 +83189,7 @@ $LN4: 0001a 48 8b 54 24 38 mov rdx, QWORD PTR _Right$[rsp] 0001f 48 8b 4c 24 30 mov rcx, QWORD PTR _Left$[rsp] - 00024 e8 00 00 00 00 call ?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Char_traits::assign + 00024 e8 00 00 00 00 call ?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z ; std::_Char_traits::assign 00029 90 npad 1 0002a eb 0f jmp SHORT $LN1@assign $LN2@assign: @@ -83208,7 +83208,7 @@ $LN1@assign: 0003b 48 83 c4 28 add rsp, 40 ; 00000028H 0003f c3 ret 0 -?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ENDP ; std::_Narrow_char_traits::assign +?assign@?$_Narrow_char_traits@DH@std@@SAXAEADAEBD@Z ENDP ; std::_Narrow_char_traits::assign _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83217,7 +83217,7 @@ _TEXT SEGMENT _First$ = 48 _Count$ = 56 _Ch$ = 64 -?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z PROC ; std::_Narrow_char_traits::assign, COMDAT +?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z PROC ; std::_Narrow_char_traits::assign, COMDAT ; 412 : _Out_writes_all_(_Count) _Elem* const _First, size_t _Count, const _Elem _Ch) noexcept /* strengthened */ { @@ -83242,7 +83242,7 @@ $LN4: 40 movzx r8d, BYTE PTR _Ch$[rsp] 00025 48 8b 54 24 38 mov rdx, QWORD PTR _Count$[rsp] 0002a 48 8b 4c 24 30 mov rcx, QWORD PTR _First$[rsp] - 0002f e8 00 00 00 00 call ?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Char_traits::assign + 0002f e8 00 00 00 00 call ?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z ; std::_Char_traits::assign 00034 eb 16 jmp SHORT $LN1@assign $LN2@assign: @@ -83262,7 +83262,7 @@ $LN1@assign: 0004c 48 83 c4 28 add rsp, 40 ; 00000028H 00050 c3 ret 0 -?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ENDP ; std::_Narrow_char_traits::assign +?assign@?$_Narrow_char_traits@DH@std@@SAPEADQEAD_KD@Z ENDP ; std::_Narrow_char_traits::assign _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83271,7 +83271,7 @@ _TEXT SEGMENT tv68 = 0 tv67 = 8 _First$ = 32 -?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z PROC ; std::_Narrow_char_traits::length, COMDAT +?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z PROC ; std::_Narrow_char_traits::length, COMDAT ; 370 : _NODISCARD static _CONSTEXPR17 size_t length(_In_z_ const _Elem* const _First) noexcept /* strengthened */ { @@ -83313,7 +83313,7 @@ $LL3@length: 00032 48 83 c4 18 add rsp, 24 00036 c3 ret 0 -?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ENDP ; std::_Narrow_char_traits::length +?length@?$_Narrow_char_traits@DH@std@@SA_KQEBD@Z ENDP ; std::_Narrow_char_traits::length _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83322,7 +83322,7 @@ _TEXT SEGMENT _First1$ = 48 _First2$ = 56 _Count$ = 64 -?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z PROC ; std::_Narrow_char_traits::compare, COMDAT +?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z PROC ; std::_Narrow_char_traits::compare, COMDAT ; 361 : _In_reads_(_Count) const _Elem* const _First2, const size_t _Count) noexcept /* strengthened */ { @@ -83348,7 +83348,7 @@ $LN3: 00027 48 83 c4 28 add rsp, 40 ; 00000028H 0002b c3 ret 0 -?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z ENDP ; std::_Narrow_char_traits::compare +?compare@?$_Narrow_char_traits@DH@std@@SAHQEBD0_K@Z ENDP ; std::_Narrow_char_traits::compare _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83356,7 +83356,7 @@ _TEXT ENDS _TEXT SEGMENT _Left$ = 8 _Right$ = 16 -?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z PROC ; std::_Char_traits::assign, COMDAT +?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z PROC ; std::_Char_traits::assign, COMDAT ; 166 : static _CONSTEXPR17 void assign(_Elem& _Left, const _Elem& _Right) noexcept { @@ -83373,7 +83373,7 @@ _Right$ = 16 ; 168 : } 00019 c3 ret 0 -?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z ENDP ; std::_Char_traits::assign +?assign@?$_Char_traits@DH@std@@SAXAEADAEBD@Z ENDP ; std::_Char_traits::assign _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83383,7 +83383,7 @@ _Next$1 = 0 _First$ = 32 _Count$ = 40 _Ch$ = 48 -?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z PROC ; std::_Char_traits::assign, COMDAT +?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z PROC ; std::_Char_traits::assign, COMDAT ; 157 : _Out_writes_all_(_Count) _Elem* const _First, size_t _Count, const _Elem _Ch) noexcept /* strengthened */ { @@ -83431,7 +83431,7 @@ $LN3@assign: 00050 48 83 c4 18 add rsp, 24 00054 c3 ret 0 -?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z ENDP ; std::_Char_traits::assign +?assign@?$_Char_traits@DH@std@@SAPEADQEAD_KD@Z ENDP ; std::_Char_traits::assign _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83444,7 +83444,7 @@ _Src$4 = 56 _First1$ = 80 _First2$ = 88 _Count$ = 96 -?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z PROC ; std::_Char_traits::move, COMDAT +?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z PROC ; std::_Char_traits::move, COMDAT ; 74 : _In_reads_(_Count) const _Elem* const _First2, const size_t _Count) noexcept /* strengthened */ { @@ -83624,7 +83624,7 @@ $LN1@move: 0012d 48 83 c4 48 add rsp, 72 ; 00000048H 00131 c3 ret 0 -?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ENDP ; std::_Char_traits::move +?move@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ENDP ; std::_Char_traits::move _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\include\__msvc_string_view.hpp @@ -83634,7 +83634,7 @@ _Idx$1 = 32 _First1$ = 64 _First2$ = 72 _Count$ = 80 -?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z PROC ; std::_Char_traits::copy, COMDAT +?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z PROC ; std::_Char_traits::copy, COMDAT ; 43 : _In_reads_(_Count) const _Elem* const _First2, const size_t _Count) noexcept /* strengthened */ { @@ -83717,7 +83717,7 @@ $LN1@copy: 0008a 48 83 c4 38 add rsp, 56 ; 00000038H 0008e c3 ret 0 -?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ENDP ; std::_Char_traits::copy +?copy@?$_Char_traits@DH@std@@SAPEADQEADQEBD_K@Z ENDP ; std::_Char_traits::copy _TEXT ENDS ; Function compile flags: /Odtp ; File C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\corecrt_math.h @@ -83981,7 +83981,7 @@ $LN3: 0000f 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 00014 48 83 ec 48 sub rsp, 72 ; 00000048H -; 1824 : int _Result; +; 1824 : int32_t _Result; ; 1825 : va_list _ArgList; ; 1826 : __crt_va_start(_ArgList, _Format); @@ -84036,7 +84036,7 @@ $LN5: 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00014 48 83 ec 48 sub rsp, 72 ; 00000048H -; 1491 : int const _Result = __stdio_common_vsprintf_s( +; 1491 : int32_t const _Result = __stdio_common_vsprintf_s( 00018 e8 00 00 00 00 call __local_stdio_printf_options 0001d 48 8b 4c 24 70 mov rcx, QWORD PTR _ArgList$[rsp] diff --git a/Benchmark/CMakeLists.txt b/Benchmark/CMakeLists.txt index 1c8702d4..fb03e479 100644 --- a/Benchmark/CMakeLists.txt +++ b/Benchmark/CMakeLists.txt @@ -1,9 +1,13 @@ -# CMakeList.txt : Top-level CMake project file, do global configuration -# and include sub-projects here. -# -set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/../CMake") +cmake_minimum_required(VERSION 3.18) -include (FetchContent) +project( + "BenchmarkExe" + VERSION "1.0.0" + LANGUAGES CXX +) + +include(FetchContent) +include(GetCommitHash) FetchContent_Declare( jsonifier @@ -12,114 +16,50 @@ FetchContent_Declare( GIT_SHALLOW TRUE ) FetchContent_MakeAvailable(jsonifier) +getCommitHash("${jsonifier_SOURCE_DIR}" JSONIFIER_COMMIT_HASH) +message(STATUS "Jsonifier Commit Hash: https://github.com/RealTimeChris/Jsonifier/commit/${JSONIFIER_COMMIT_HASH}") -add_executable("BenchmarkExe" "main.cpp") +FetchContent_Declare( + glaze + GIT_REPOSITORY https://github.com/stephenberry/glaze.git + GIT_TAG main + GIT_SHALLOW TRUE +) +FetchContent_MakeAvailable(glaze) -target_link_libraries( - "BenchmarkExe" - PUBLIC - BenchmarkSuite::BenchmarkSuite - Jsonifier::Jsonifier +add_executable( + "BenchmarkExe" + "./main.cpp" ) -target_link_options( - "BenchmarkExe" PUBLIC - "$<$,TRUE>,$>>:-fsanitize=undefined>" +target_link_libraries( + "BenchmarkExe" PUBLIC + Jsonifier::Jsonifier glaze::glaze BenchmarkSuite::BenchmarkSuite ) -target_compile_options ( +target_compile_options( "BenchmarkExe" PUBLIC "$<$:$<$:/fsanitize=address>>" - "$<$:$<$:-fsanitize=address>>" - "$<$,TRUE>,$>>:-fsanitize=undefined>" + "$<$:-Wpedantic>" + "$<$:-Wpedantic>" + "$<$:-Wextra>" + "$<$:-Wall>" + "$<$:-Wextra>" + "$<$:/Wall>" + "$<$:-Wall>" + "$<$:/W4>" ) -target_compile_definitions( +target_link_options( "BenchmarkExe" PUBLIC - "$<$:ASAN>" - "JSON_TEST_PATH=\"${CMAKE_CURRENT_SOURCE_DIR}\"" + "$<$:$<$:-fsanitize=address>>" ) -if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") - set(ASM_OUTPUT "${CMAKE_SOURCE_DIR}/Assembly/Assembly.cod") - - add_custom_command( - OUTPUT "${ASM_OUTPUT}" - COMMAND "${CMAKE_CXX_COMPILER}" -S ${CMAKE_SOURCE_DIR}/Benchmark/main.cpp -o ${ASM_OUTPUT} - -I ${CMAKE_SOURCE_DIR}/Build/_deps/jsonifier-src/Include/ - -I ${CMAKE_SOURCE_DIR}/Include/ - -std=c++2b - -DOPERATING_SYSTEM_NAME="TEST_OS" - -DOPERATING_SYSTEM_VERSION="TEST_OS_VERSION" - -DCOMPILER_VERSION="TEST_COMPILER_VERSION" - -DCOMPILER_ID="TEST_ID" - -DBASE_PATH="${CMAKE_SOURCE_DIR}" - -DSIMDJSON_COMMIT="SIMDJSON_COMMIT" - -DGLAZE_COMMIT="GLAZE_COMMIT" - -DJSONIFIER_COMMIT="JSONIFIER_COMMIT" - "-march=native" - "-O3" - "-DNDEBUG" - DEPENDS "${CMAKE_SOURCE_DIR}/Benchmark/main.cpp" - COMMENT "Generating assembly for main.cpp" - VERBATIM - ) - - add_custom_target(generate_asm ALL DEPENDS "${ASM_OUTPUT}") - add_dependencies("BenchmarkExe" generate_asm) - -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - set(ASM_OUTPUT_DIR "${CMAKE_SOURCE_DIR}/Assembly") - - file(MAKE_DIRECTORY "${ASM_OUTPUT_DIR}") - - add_custom_command( - OUTPUT "${ASM_OUTPUT_DIR}/main.asm" - COMMAND "${CMAKE_CXX_COMPILER}" /Fa${ASM_OUTPUT_DIR}/ /FAsc /FoNUL /c - "${CMAKE_SOURCE_DIR}/Benchmark/main.cpp" - /I "${CMAKE_SOURCE_DIR}/Build/_deps/jsonifier-src/Include/" - /I "${CMAKE_SOURCE_DIR}/Include/" - /std:c++latest - /DOPERATING_SYSTEM_NAME="TEST_OS" - /DOPERATING_SYSTEM_VERSION="TEST_OS_VERSION" - /DCOMPILER_VERSION="TEST_COMPILER_VERSION" - /DCOMPILER_ID="TEST_ID" - /DBASE_PATH="${CMAKE_SOURCE_DIR}" - /DSIMDJSON_COMMIT="SIMDJSON_COMMIT" - /DGLAZE_COMMIT="GLAZE_COMMIT" - /DJSONIFIER_COMMIT="JSONIFIER_COMMIT" - "/Zc:preprocessor" - "/permissive-" - "/Zc:lambda" - "/bigobj" - "/GL" - "/Zi" - "/Gy" - "/arch:AVX" - "/arch:AVX2" - "/DWIN32" - "/D_WINDOWS" - "/GR" - "/EHsc" - "/O2" - "/Ob2" - "/DNDEBUG" - DEPENDS "${CMAKE_SOURCE_DIR}/Benchmark/main.cpp" - COMMENT "Generating human-readable assembly for main.cpp" - VERBATIM - ) - - add_custom_target(generate_asm ALL DEPENDS "${ASM_OUTPUT_DIR}/main.asm") - - add_dependencies("BenchmarkExe" generate_asm) -endif() - - if (WIN32) install( FILES "$" - DESTINATION "Tests/${CMAKE_BUILD_TYPE}" + DESTINATION "$,bin,bin>" OPTIONAL ) endif() @@ -127,13 +67,84 @@ endif() install( FILES "$" - DESTINATION "Tests/${CMAKE_BUILD_TYPE}" + DESTINATION "$,bin,bin>" OPTIONAL ) -install( - FILES - "$" - DESTINATION "Tests/${CMAKE_BUILD_TYPE}" - OPTIONAL -) \ No newline at end of file +if (GENERATE_ASSEMBLY STREQUAL "TRUE") + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + set(ASM_OUTPUT "${CMAKE_SOURCE_DIR}/Assembly/Assembly.cod") + + add_custom_command( + OUTPUT "${ASM_OUTPUT}" + COMMAND "${CMAKE_CXX_COMPILER}" -S "${CMAKE_SOURCE_DIR}/Benchmark/main.cpp" -o "${ASM_OUTPUT}" + -I "${CMAKE_SOURCE_DIR}/Build/_deps/jsonifier-src/Include/" + -I "${CMAKE_SOURCE_DIR}/Build/_deps/glaze-src/include/" + -I "${CMAKE_SOURCE_DIR}/Include/" + -std=c++2b + -DOPERATING_SYSTEM_NAME="TEST_OS" + -DOPERATING_SYSTEM_VERSION="TEST_OS_VERSION" + -DCOMPILER_VERSION="TEST_COMPILER_VERSION" + -DCOMPILER_ID="TEST_ID" + -DBASE_PATH="${CMAKE_SOURCE_DIR}" + -DSIMDJSON_COMMIT="SIMDJSON_COMMIT" + -DGLAZE_COMMIT="GLAZE_COMMIT" + -DJSONIFIER_COMMIT="JSONIFIER_COMMIT" + "-march=native" + "-O3" + "-DNDEBUG" + DEPENDS "${CMAKE_SOURCE_DIR}/Benchmark/main.cpp" + COMMENT "Generating assembly for main.cpp" + VERBATIM + ) + + add_custom_target(generate_asm ALL DEPENDS "${ASM_OUTPUT}") + add_dependencies("BenchmarkExe" generate_asm) + + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + set(ASM_OUTPUT_DIR "${CMAKE_SOURCE_DIR}/Assembly") + + file(MAKE_DIRECTORY "${ASM_OUTPUT_DIR}") + + add_custom_command( + OUTPUT "${ASM_OUTPUT_DIR}/main.asm" + COMMAND "${CMAKE_CXX_COMPILER}" /Fa${ASM_OUTPUT_DIR}/ /FAsc /FoNUL /c + "${CMAKE_SOURCE_DIR}/Benchmark/main.cpp" + /I "${CMAKE_SOURCE_DIR}/Build/_deps/jsonifier-src/Include/" + /I "${CMAKE_SOURCE_DIR}/Build/_deps/glaze-src/include/" + /I "${CMAKE_SOURCE_DIR}/Include/" + /std:c++latest + /DOPERATING_SYSTEM_NAME="TEST_OS" + /DOPERATING_SYSTEM_VERSION="TEST_OS_VERSION" + /DCOMPILER_VERSION="TEST_COMPILER_VERSION" + /DCOMPILER_ID="TEST_ID" + /DBASE_PATH="${CMAKE_SOURCE_DIR}" + /DSIMDJSON_COMMIT="SIMDJSON_COMMIT" + /DGLAZE_COMMIT="GLAZE_COMMIT" + /DJSONIFIER_COMMIT="JSONIFIER_COMMIT" + "/Zc:preprocessor" + "/permissive-" + "/Zc:lambda" + "/bigobj" + "/GL" + "/Zi" + "/Gy" + "/arch:AVX" + "/arch:AVX2" + "/DWIN32" + "/D_WINDOWS" + "/GR" + "/EHsc" + "/O2" + "/Ob2" + "/DNDEBUG" + DEPENDS "${CMAKE_SOURCE_DIR}/Benchmark/main.cpp" + COMMENT "Generating human-readable assembly for main.cpp" + VERBATIM + ) + + add_custom_target(generate_asm ALL DEPENDS "${ASM_OUTPUT_DIR}/main.asm") + + add_dependencies("BenchmarkExe" generate_asm) + endif() +endif() diff --git a/Benchmark/RandomGenerators.hpp b/Benchmark/RandomGenerators.hpp index 9e550ca2..a54e7e9a 100644 --- a/Benchmark/RandomGenerators.hpp +++ b/Benchmark/RandomGenerators.hpp @@ -23,46 +23,53 @@ /// Feb 3, 2023 #pragma once -#include +#include #include +#include #include +#include namespace bnch_swt { - struct test_generator { + struct random_generator { static constexpr std::string_view charset{ "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~\"\\\r\b\f\t\n" }; inline static std::uniform_real_distribution disDouble{ log(std::numeric_limits::min()), log(std::numeric_limits::max()) }; inline static std::uniform_int_distribution disInt{ std::numeric_limits::min(), std::numeric_limits::max() }; - inline static std::uniform_int_distribution disUint{ std::numeric_limits::min(), std::numeric_limits::max() }; - inline static std::uniform_int_distribution disCharSet{ 0ull, charset.size() - 1 }; - inline static std::uniform_int_distribution disBool{ 0, 100 }; + inline static std::uniform_int_distribution disUint{ std::numeric_limits::min(), std::numeric_limits::max() }; + inline static std::uniform_int_distribution disCharSet{ 0ull, charset.size() - 1 }; + inline static std::uniform_int_distribution disBool{ 0, 100 }; inline static std::random_device randomEngine{}; inline static std::mt19937_64 gen{ randomEngine() }; - static std::string generateString(size_t length) { - std::string result{}; - for (size_t x = 0; x < length; ++x) { + template static value_type generateValue(uint64_t length) { + value_type result{}; + for (uint64_t x = 0; x < length; ++x) { result += charset[disCharSet(gen)]; } return result; } - static double generateDouble() { + template static value_type generateValue() { double logValue = std::exp(disDouble(gen)); - return generateBool() ? -logValue : logValue; + return generateValue() ? -logValue : logValue; } - static bool generateBool() { + template static value_type generateValue() { return static_cast(disBool(gen) >= 50); } - static size_t generateUint() { + template + requires(std::is_unsigned_v) + static value_type generateValue() { return disUint(gen); } - static int64_t generateInt() { + template + requires(std::is_signed_v) + static value_type generateValue() { return disInt(gen); } }; + } diff --git a/Benchmark/main.cpp b/Benchmark/main.cpp index 1f676e47..88390594 100644 --- a/Benchmark/main.cpp +++ b/Benchmark/main.cpp @@ -1,11 +1,84 @@ #include #include +#include #include "RandomGenerators.hpp" -#include -int main() { - bnch_swt::benchmark_stage<"TEST STAGE">::runBenchmark<"TEST", "CYAN">([] { - return 0; +#if defined(JSONIFIER_MAC) +template JSONIFIER_INLINE static simd_int_type_new gatherValues(const void* str) noexcept { + return vld1q_u8(static_cast(str)); +} + +template JSONIFIER_INLINE static simd_int_type_new gatherValuesU(const void* str) noexcept { + return vld1q_u8(static_cast(str)); +} +#else +template JSONIFIER_INLINE static simd_int_type_new gatherValues(const void* str) noexcept { + return _mm256_load_si256(static_cast(str)); +} +template JSONIFIER_INLINE static simd_int_type_new gatherValuesU(const void* str) noexcept { + return _mm256_loadu_si256(static_cast(str)); +} +#endif + +static constexpr uint64_t maxIterations{ 100 }; + +template BNCH_SWT_INLINE void testFunction() { + static constexpr bnch_swt::string_literal testName{ testNameNew }; + std::vector> stringsToLoad{ maxIterations }; + for (size_t x = 0; x < maxIterations; ++x) { + for (size_t y = 0; y < countNew; ++y) { + stringsToLoad[x].emplace_back(bnch_swt::random_generator::generateValue(lengthNew)); + } + } + size_t currentIndex{}; + bnch_swt::benchmark_stage::template runBenchmark<"unaligned", "CYAN">([&] { + size_t bytesProcessed{}; + char valuesToLoad[lengthNew * countNew]; + char* ptr{ valuesToLoad }; + for (size_t x = 0; x < countNew; ++x) { + std::memcpy(ptr, stringsToLoad[currentIndex][x].data(), lengthNew); + ptr += lengthNew; + } + jsonifier::jsonifier_simd_int_t values01{}; + jsonifier::jsonifier_simd_int_t values02{}; + jsonifier::jsonifier_simd_int_t values03{}; + for (size_t y = 0; y < countNew; ++y) { + values01 = gatherValuesU(valuesToLoad + (y * lengthNew)); + values02 = gatherValuesU(valuesToLoad + (y * lengthNew) + jsonifier::bytesPerStep); + bnch_swt::doNotOptimizeAway(values01); + bnch_swt::doNotOptimizeAway(values02); + bytesProcessed += stringsToLoad[currentIndex][y].size(); + } + ++currentIndex; + return bytesProcessed; }); + currentIndex = 0; + bnch_swt::benchmark_stage::template runBenchmark<"aligned", "CYAN">([&] { + size_t bytesProcessed{}; + JSONIFIER_ALIGN(jsonifier::bytesPerStep) char valuesToLoad[lengthNew * countNew]; + char* ptr{ valuesToLoad }; + for (size_t x = 0; x < countNew; ++x) { + std::memcpy(ptr, stringsToLoad[currentIndex][x].data(), lengthNew); + ptr += lengthNew; + } + jsonifier::jsonifier_simd_int_t values01{}; + jsonifier::jsonifier_simd_int_t values02{}; + jsonifier::jsonifier_simd_int_t values03{}; + for (size_t y = 0; y < countNew; ++y) { + values01 = gatherValues(valuesToLoad + (y * lengthNew)); + values02 = gatherValues(valuesToLoad + (y * lengthNew) + jsonifier::bytesPerStep); + bnch_swt::doNotOptimizeAway(values01); + bnch_swt::doNotOptimizeAway(values02); + bytesProcessed += stringsToLoad[currentIndex][y].size(); + } + ++currentIndex; + return bytesProcessed; + }); + + bnch_swt::benchmark_stage::printResults(true, true); +} + +int main() { + testFunction<64, 10000, "aligned-vs-aligned-loads">(); return 0; } \ No newline at end of file diff --git a/CMake/GetCommitHash.cmake b/CMake/GetCommitHash.cmake new file mode 100644 index 00000000..fce6d6ee --- /dev/null +++ b/CMake/GetCommitHash.cmake @@ -0,0 +1,14 @@ +# Define a function to get the short commit hash +function(getCommitHash repo_path commit_var) + execute_process( + COMMAND git -C ${repo_path} rev-parse --short HEAD + OUTPUT_VARIABLE git_commit + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE git_result + ) + if (git_result EQUAL 0) + set(${commit_var} "${git_commit}" PARENT_SCOPE) + else() + message(FATAL_ERROR "Failed to get the short commit hash from ${repo_path}") + endif() +endfunction() \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 789425c7..aaabc68b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,12 @@ cmake_minimum_required(VERSION 3.18) set(PROJECT_NAME "BenchmarkSuite") -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) project("${PROJECT_NAME}" LANGUAGES CXX) -set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/../CMake;") +set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/CMake;") file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/Include/benchmarksuite/*.hpp") @@ -19,8 +19,6 @@ set(CMAKE_VERBOSE_MAKEFILE ON) set_target_properties( "${PROJECT_NAME}" PROPERTIES OUTPUT_NAME "benchmarksuite" - CXX_STANDARD_REQUIRED ON - CXX_EXTENSIONS OFF ) target_include_directories( @@ -37,13 +35,23 @@ target_compile_options( "${PROJECT_NAME}" INTERFACE "$<$:$<$:/fsanitize=address>>" "$<$,TRUE>,$>>:-fsanitize=undefined>" + "$<$:-Wnull-dereference>" + "$<$:-Wuninitialized>" + "$<$:-Wconversion>" "$<$:-Wpedantic>" - "$<$:-Wpedantic>" + "$<$:-Wshadow>" "$<$:-Wextra>" "$<$:-Wall>" + + "$<$:-Wnull-dereference>" + "$<$:-Wuninitialized>" + "$<$:-Wconversion>" + "$<$:-Wpedantic>" + "$<$:-Wshadow>" "$<$:-Wextra>" - "$<$:/Wall>" "$<$:-Wall>" + + "$<$:/Wall>" "$<$:/W4>" ) diff --git a/Include/BnchSwt/BenchmarkSuite.hpp b/Include/BnchSwt/BenchmarkSuite.hpp index 1012aa1c..566fa64d 100644 --- a/Include/BnchSwt/BenchmarkSuite.hpp +++ b/Include/BnchSwt/BenchmarkSuite.hpp @@ -28,330 +28,147 @@ #endif #include -#include #include +#include #include +#include #include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include namespace bnch_swt { - class file_loader { - public: - BNCH_SWT_INLINE constexpr file_loader(){}; + namespace internal { - BNCH_SWT_INLINE static std::string loadFile(const std::string& filePath) { - std::string directory{ filePath.substr(0, filePath.find_last_of("/") + 1) }; - if (!std::filesystem::exists(directory)) { - std::filesystem::create_directories(directory); - } + template struct arg_passer : public arg_types... { + template constexpr arg_passer(arg_types_new&&... argTupleNew) : arg_types{ std::forward(argTupleNew)... }... {} - if (!std::filesystem::exists(static_cast(filePath))) { - std::ofstream createFile(filePath.data()); - createFile.close(); + template BNCH_SWT_INLINE auto impl(function_type&& function) { + return (function(*static_cast(this)...)); } - std::string fileContents{}; - std::ifstream theStream(filePath.data(), std::ios::binary | std::ios::in); - std::stringstream inputStream{}; - inputStream << theStream.rdbuf(); - fileContents = inputStream.str(); - theStream.close(); - return fileContents; - } + }; - BNCH_SWT_INLINE static void saveFile(const std::string& fileToSave, const std::string& filePath, bool retry = true) { - std::ofstream theStream(filePath.data(), std::ios::binary | std::ios::out | std::ios::trunc); - theStream.write(fileToSave.data(), static_cast(fileToSave.size())); - if (theStream.is_open()) { - std::cout << "File succesfully written to: " << filePath << std::endl; - } else { - std::string directory{ filePath.substr(0, filePath.find_last_of("/") + 1) }; - if (!std::filesystem::exists(directory) && retry) { - std::filesystem::create_directories(directory); - return saveFile(fileToSave, filePath, false); - } - std::cerr << "File failed to be written to: " << filePath << std::endl; - } - theStream.close(); - } - }; + template arg_passer(arg_types...) -> arg_passer; -#if defined(small) - #undef small -#endif - - struct performance_metrics { - std::optional instructionsPercentageDeviation{}; - std::optional cyclesPercentageDeviation{}; - std::optional instructionsPerExecution{}; - std::optional branchMissesPerExecution{}; - std::optional measuredIterationCount{}; - std::optional totalIterationCount{}; - std::optional instructionsPerCycle{}; - std::optional branchesPerExecution{}; - std::optional instructionsPerByte{}; - std::optional cyclesPerExecution{}; - double throughputPercentageDeviation{}; - std::optional cyclesPerByte{}; - std::optional frequencyGHz{}; - double throughputMbPerSec{}; - double bytesProcessed{}; - std::string name{}; - double timeInNs{}; - - BNCH_SWT_ALWAYS_INLINE bool operator>(const performance_metrics& other) const { - return throughputMbPerSec > other.throughputMbPerSec; + template BNCH_SWT_INLINE constexpr value_type01 max(value_type01 val01, value_type02 val02) { + return val01 > static_cast(val02) ? val01 : static_cast(val02); } - }; - BNCH_SWT_ALWAYS_INLINE static std::string urlEncode(std::string value) { - std::ostringstream escaped; - escaped.fill('0'); - escaped << std::hex; - - for (char c: value) { - if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') { - escaped << c; - } else if (c == ':') { - escaped << '%' << std::setw(2) << int32_t(( unsigned char )' '); - } else { - escaped << '%' << std::setw(2) << int32_t(( unsigned char )c); - } + template BNCH_SWT_INLINE constexpr value_type01 min(value_type01 val01, value_type02 val02) { + return val01 < static_cast(val02) ? val01 : static_cast(val02); } - return escaped.str(); } - template struct benchmark_stage { - static constexpr auto addAmount{ maxExecutionCount % 2 == 0 ? 0 : 1 }; - inline static std::unordered_map results{}; - inline static std::vector measuredEventsNew{ [] { - std::vector returnValues{}; - returnValues.resize((maxExecutionCount + addAmount) / 2); - return returnValues; - }() }; - inline static std::vector eventsNew{ [] { - std::vector returnValues{}; - returnValues.resize(maxExecutionCount + addAmount); - return returnValues; - }() }; - - BNCH_SWT_ALWAYS_INLINE static void warmupThread() { - auto start = clock_type::now(); - auto end = clock_type::now(); - auto duration = end - start; - while (std::chrono::duration_cast>(duration) < std::chrono::duration{ 1000 }) { - cache_clearer::evictL1Cache(); - end = clock_type::now(); - duration = end - start; - } - } + template struct benchmark_stage { + static_assert(maxExecutionCount % measuredIterationCount == 0, "Sorry, but please enter a maxExecutionCount that is divisible by measuredIterationCount."); + inline static thread_local std::unordered_map results{}; - BNCH_SWT_ALWAYS_INLINE static void printResults(bool showComparison = true) { + BNCH_SWT_INLINE static void printResults(bool showComparison = true, bool showMetrics = true) { std::vector resultsNew{}; - for (auto& [key, value]: results) { + for (const auto& [key, value]: results) { resultsNew.emplace_back(value); } if (resultsNew.size() > 0) { std::sort(resultsNew.begin(), resultsNew.end(), std::greater{}); - std::cout << "Performance Metrics for: " << stageNameNew.view() << "\n"; - for (auto& value: resultsNew) { - std::cout << "Metrics for: " << value.name << "\n"; - std::cout << std::fixed << std::setprecision(2); - - auto printMetric = [](const std::string& label, const auto& value) { - if constexpr (optional_t) { - if (value.has_value()) { - std::cout << std::left << std::setw(40) << label << ": " << value.value() << "\n"; + std::cout << "Performance Metrics for: " << stageNameNew.operator std::string_view() << std::endl; + if (showMetrics) { + for (const auto& value: resultsNew) { + std::cout << "Metrics for: " << value.name << std::endl; + std::cout << std::fixed << std::setprecision(2); + + static constexpr auto printMetric = [](const std::string_view& label, const value_type& valueNew) { + if constexpr (internal::optional_t) { + if (valueNew.has_value()) { + std::cout << std::left << std::setw(60ull) << label << ": " << valueNew.value() << std::endl; + } + } else { + std::cout << std::left << std::setw(60ull) << label << ": " << valueNew << std::endl; } - } else { - std::cout << std::left << std::setw(40) << label << ": " << value << "\n"; - } - }; - - printMetric("Bytes Processed", value.bytesProcessed); - printMetric("Throughput (MB/s)", value.throughputMbPerSec); - printMetric("Throughput Percentage Deviation (+/-%)", value.throughputPercentageDeviation); - printMetric("Instructions per Execution", value.instructionsPerExecution); - printMetric("Instructions Percentage Deviation (+/-%)", value.instructionsPercentageDeviation); - printMetric("Instructions per Cycle", value.instructionsPerCycle); - printMetric("Instructions per Byte", value.instructionsPerByte); - printMetric("Branches per Execution", value.branchesPerExecution); - printMetric("Branch Misses per Execution", value.branchMissesPerExecution); - printMetric("Cycles per Execution", value.cyclesPerExecution); - printMetric("Cycles Percentage Deviation (+/-%)", value.cyclesPercentageDeviation); - printMetric("Cycles per Byte", value.cyclesPerByte); - printMetric("Frequency (GHz)", value.frequencyGHz); - printMetric("Measured Iterations", value.measuredIterationCount); - printMetric("Total Iterations", value.totalIterationCount); - - std::cout << "----------------------------------------\n"; + }; + printMetric("Total Iterations to Stabilize", value.totalIterationCount); + printMetric("Measured Iterations", value.measuredIterationCount); + printMetric("Bytes Processed", value.bytesProcessed); + printMetric("Nanoseconds per Execution", value.timeInNs); + printMetric("Frequency (GHz)", value.frequencyGHz); + printMetric("Throughput (MB/s)", value.throughputMbPerSec); + printMetric("Throughput Percentage Deviation (+/-%)", value.throughputPercentageDeviation); + printMetric("Cycles per Execution", value.cyclesPerExecution); + printMetric("Cycles per Byte", value.cyclesPerByte); + printMetric("Instructions per Execution", value.instructionsPerExecution); + printMetric("Instructions per Cycle", value.instructionsPerCycle); + printMetric("Instructions per Byte", value.instructionsPerByte); + printMetric("Branches per Execution", value.branchesPerExecution); + printMetric("Branch Misses per Execution", value.branchMissesPerExecution); + printMetric("Cache References per Execution", value.cacheReferencesPerExecution); + printMetric("Cache Misses per Execution", value.cacheMissesPerExecution); + std::cout << "----------------------------------------" << std::endl; + } } if (showComparison) { double difference{}; - for (uint64_t x = 0; x < resultsNew.size() - 1; ++x) { + for (size_t x = 0; x < resultsNew.size() - 1; ++x) { difference = ((resultsNew[x].throughputMbPerSec - resultsNew[x + 1].throughputMbPerSec) / resultsNew[x + 1].throughputMbPerSec) * 100.0f; std::cout << "Library " << resultsNew[x].name << ", is faster than library: " << resultsNew[x + 1].name << ", by roughly: " << difference << "%." << std::endl; } } } else { - std::cout << "Not enough data for benchmark stage: " << stageNameNew.view() << "\n"; + std::cout << "Not enough data for benchmark stage: " << stageNameNew.operator std::string_view() << std::endl; } } -#if defined(NDEBUG) - static constexpr double thresholdStart{ 4.5f }; - static constexpr double threshold{ 4.0f }; -#else - static constexpr double thresholdStart{ 25.0f }; - static constexpr double threshold{ 20.0f }; -#endif - template - BNCH_SWT_ALWAYS_INLINE static const performance_metrics& runBenchmarkWithPrep(prep_function_type&& prepFunctionNew, execution_function_type&& functionNew, - arg_types&&... args) { + template + BNCH_SWT_INLINE static performance_metrics runBenchmark(function_type&& functionNew, arg_types&&... args) { static constexpr string_literal subjectName{ subjectNameNew }; - static constexpr string_literal color{ colorNew }; - std::string subjectNameNewer{ subjectName.data(), subjectName.size() }; - event_collector collector{}; - std::string colorName{ color.data(), color.size() }; - - auto prepLambda = [=]() mutable { - return std::forward(prepFunctionNew)(); - }; - auto executionLambda = [=]() mutable { - return std::forward(functionNew)(std::forward(args)...); - }; - std::vector aggregate{}; - double variation{ thresholdStart }; + static_assert(std::convertible_to, size_t>, + "Sorry, but the lambda passed to runBenchmark() must return a size_t, reflecting the number of bytes processed!"); + std::remove_cvref_t functionNewer{ std::forward(functionNew) }; + internal::event_collector events{}; + internal::cache_clearer cacheClearer{}; + performance_metrics lowestResults{}; performance_metrics resultsTemp{}; - uint64_t i{}; - warmupThread(); - while ((variation > threshold && i < maxExecutionCount + addAmount)) { - cache_clearer::evictL1Cache(); - prepLambda(); - eventsNew[i] = collector.start(executionLambda); - if ((i % (maxExecutionCount / 2) == 0 && i > 0) || maxExecutionCount < 2) { - resultsTemp = collectMetrics(i, maxExecutionCount / 2); - variation = resultsTemp.throughputPercentageDeviation; - } - ++i; + size_t currentGlobalIndex{ measuredIterationCount }; + for (size_t x = 0; x < maxExecutionCount; ++x) { + //cacheClearer.evictCaches(); + events.run(functionNewer, std::forward(args)...); } - results[static_cast(subjectName)] = resultsTemp; - return results[static_cast(subjectName)]; + for (size_t x = 0; x < maxExecutionCount - measuredIterationCount; ++x, ++currentGlobalIndex) { + auto newPtr = events.data() + x; + resultsTemp = collectMetrics(std::span{ newPtr, measuredIterationCount }, currentGlobalIndex); + lowestResults = resultsTemp.throughputPercentageDeviation < lowestResults.throughputPercentageDeviation ? resultsTemp : lowestResults; + } + results[subjectName.operator std::string_view()] = lowestResults; + return results[subjectName.operator std::string_view()]; } - template - BNCH_SWT_ALWAYS_INLINE static const performance_metrics& runBenchmark(function_type&& functionNew, arg_types&&... args) { + template + BNCH_SWT_INLINE static performance_metrics runBenchmarkWithPrep(prep_function_type&& prepFunctionNew, function_type&& functionNew, arg_types&&... args) { static constexpr string_literal subjectName{ subjectNameNew }; - static constexpr string_literal color{ colorNew }; - std::string subjectNameNewer{ subjectName.data(), subjectName.size() }; - event_collector collector{}; - std::string colorName{ color.data(), color.size() }; - auto executionLambda = [=]() mutable { - return std::forward(functionNew)(std::forward(args)...); - }; - std::vector aggregate{}; - double variation{ thresholdStart }; + static_assert(std::convertible_to, size_t>, + "Sorry, but the lambda passed to runBenchmarkWithPrep() must return a size_t, reflecting the number of bytes processed!"); + std::remove_cvref_t prepFunctionNewer{ std::forward(prepFunctionNew) }; + std::remove_cvref_t functionNewer{ std::forward(functionNew) }; + internal::event_collector events{}; + internal::cache_clearer cacheClearer{}; + performance_metrics lowestResults{}; performance_metrics resultsTemp{}; - uint64_t i{}; - warmupThread(); - while ((variation > threshold && i < maxExecutionCount + addAmount)) { - cache_clearer::evictL1Cache(); - eventsNew[i] = collector.start(executionLambda); - if ((i % (maxExecutionCount / 2) == 0 && i > 0) || maxExecutionCount < 2) { - resultsTemp = collectMetrics(i, maxExecutionCount / 2); - variation = resultsTemp.throughputPercentageDeviation; - } - ++i; - } - results[static_cast(subjectName)] = resultsTemp; - return results[static_cast(subjectName)]; - } - - template BNCH_SWT_ALWAYS_INLINE static performance_metrics collectMetrics(uint64_t offset, uint64_t measuredIterationCount) { - static constexpr string_literal benchmarkName{ benchmarkNameNew }; - performance_metrics metrics{}; - metrics.name = static_cast(benchmarkName.data()); - metrics.measuredIterationCount.emplace(measuredIterationCount); - metrics.totalIterationCount.emplace(offset); - eventsNew[offset].bytesProcessed(metrics.bytesProcessed); - double volumeMB{ static_cast(metrics.bytesProcessed) / (1024. * 1024.) }; - double averageNs{ 0 }; - double minNs{ std::numeric_limits::max() }; - double cyclesMin{ std::numeric_limits::max() }; - double instructionsMin{ std::numeric_limits::max() }; - double cyclesAvg{ 0 }; - double instructionsAvg{ 0 }; - double branchesMin{ 0 }; - double branchesAvg{ 0 }; - double missedBranchesMin{ std::numeric_limits::max() }; - double missedBranchesAvg{ 0 }; - double cycles{}; - double instructions{}; - double branches{}; - double missedBranchesVal{}; - std::copy(eventsNew.begin() + static_cast(offset - measuredIterationCount), eventsNew.begin() + static_cast(offset), measuredEventsNew.begin()); - for (const event_count& e: measuredEventsNew) { - double ns = e.elapsedNs(); - averageNs += ns; - minNs = minNs < ns ? minNs : ns; - - e.cycles(cycles); - cyclesAvg += cycles; - cyclesMin = cyclesMin < cycles ? cyclesMin : cycles; - - e.instructions(instructions); - instructionsAvg += instructions; - instructionsMin = instructionsMin < instructions ? instructionsMin : instructions; - - e.branches(branches); - branchesAvg += branches; - branchesMin = branchesMin < branches ? branchesMin : branches; - - e.missedBranches(missedBranchesVal); - missedBranchesAvg += missedBranchesVal; - missedBranchesMin = missedBranchesMin < missedBranchesVal ? missedBranchesMin : missedBranchesVal; - } - metrics.timeInNs = averageNs; - cyclesAvg /= static_cast(measuredIterationCount); - instructionsAvg /= static_cast(measuredIterationCount); - averageNs /= static_cast(measuredIterationCount); - branchesAvg /= static_cast(measuredIterationCount); - metrics.throughputMbPerSec = volumeMB * 1000000000 / averageNs; - metrics.throughputPercentageDeviation = (averageNs - minNs) * 100.0 / averageNs; - if (instructionsAvg != 0.0f) { - metrics.instructionsPerByte.emplace(instructionsAvg / metrics.bytesProcessed); - metrics.instructionsPerCycle.emplace(instructionsAvg / cyclesAvg); - metrics.instructionsPerExecution.emplace(instructionsAvg / static_cast(measuredIterationCount)); - metrics.instructionsPercentageDeviation.emplace((instructionsAvg - instructionsMin) * 100.0 / instructionsAvg); - } - if (cyclesAvg != 0.0f) { - metrics.cyclesPerByte.emplace(cyclesAvg / metrics.bytesProcessed); - metrics.cyclesPerExecution.emplace(cyclesAvg / static_cast(measuredIterationCount)); - metrics.cyclesPercentageDeviation.emplace((cyclesAvg - cyclesMin) * 100.0 / cyclesAvg); - metrics.frequencyGHz.emplace(cyclesMin / minNs); + size_t currentGlobalIndex{ measuredIterationCount }; + for (size_t x = 0; x < maxExecutionCount; ++x) { + prepFunctionNewer(); + //cacheClearer.evictCaches(); + events.run(functionNewer, std::forward(args)...); } - if (branchesAvg != 0.0f) { - metrics.branchMissesPerExecution.emplace(missedBranchesAvg / static_cast(measuredIterationCount)); - metrics.branchesPerExecution.emplace(branchesAvg / static_cast(measuredIterationCount)); + for (size_t x = 0; x < maxExecutionCount - measuredIterationCount; ++x, ++currentGlobalIndex) { + auto newPtr = events.data() + x; + resultsTemp = collectMetrics(std::span{ newPtr, measuredIterationCount }, currentGlobalIndex); + lowestResults = resultsTemp.throughputPercentageDeviation < lowestResults.throughputPercentageDeviation ? resultsTemp : lowestResults; } - return metrics; + results[subjectName.operator std::string_view()] = lowestResults; + return results[subjectName.operator std::string_view()]; } }; -} +} \ No newline at end of file diff --git a/Include/BnchSwt/CacheClearer.hpp b/Include/BnchSwt/CacheClearer.hpp index 02044277..035d77ba 100644 --- a/Include/BnchSwt/CacheClearer.hpp +++ b/Include/BnchSwt/CacheClearer.hpp @@ -29,135 +29,226 @@ #if defined(BNCH_SWT_WIN) #include + #if defined(small) + #undef small + #endif + #elif defined(BNCH_SWT_LINUX) - #include + #include #include + #include #include #elif defined(BNCH_SWT_MAC) - #include + #include #include + #include + #include #endif -namespace bnch_swt { +namespace bnch_swt::internal { -#if defined(BNCH_SWT_WIN) + enum class cache_level { + one = 1, + two = 2, + three = 3, + }; - BNCH_SWT_ALWAYS_INLINE size_t getL1CacheSize() { + BNCH_SWT_INLINE size_t getCacheLineSize() { +#if defined(BNCH_SWT_WIN) DWORD bufferSize = 0; - std::vector buffer{}; - GetLogicalProcessorInformation(nullptr, &bufferSize); - buffer.resize(bufferSize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION)); - + std::vector buffer(bufferSize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION)); if (!GetLogicalProcessorInformation(buffer.data(), &bufferSize)) { std::cerr << "Failed to retrieve processor information!" << std::endl; return 0; } - size_t l1CacheSize = 0; - const auto infoCount = bufferSize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); - for (size_t i = 0; i < infoCount; ++i) { - if (buffer[i].Relationship == RelationCache && buffer[i].Cache.Level == 1 && buffer[i].Cache.Type == CacheData) { - l1CacheSize = buffer[i].Cache.Size; - break; + for (const auto& info: buffer) { + if (info.Relationship == RelationCache && info.Cache.Level == 1) { + return info.Cache.LineSize; } } - - return l1CacheSize; - } - #elif defined(BNCH_SWT_LINUX) - - BNCH_SWT_ALWAYS_INLINE size_t getL1CacheSize() { - const std::string cache_file = "/sys/devices/system/cpu/cpu0/cache/index0/size"; - std::ifstream file(cache_file); - if (!file.is_open()) { - std::cerr << "Failed to open cache info file: " << cache_file << std::endl; + long lineSize = sysconf(_SC_LEVEL1_DCACHE_LINESIZE); + if (lineSize <= 0) { + std::cerr << "Failed to retrieve cache line size using sysconf!" << std::endl; return 0; } - - std::string size_str; - file >> size_str; - file.close(); - - if (size_str.back() == 'K') { - return std::stoi(size_str) * 1024; - } else if (size_str.back() == 'M') { - return std::stoi(size_str) * 1024 * 1024; + return static_cast(lineSize); +#elif defined(BNCH_SWT_MAC) + size_t lineSize = 0; + size_t size = sizeof(lineSize); + if (sysctlbyname("hw.cachelinesize", &lineSize, &size, nullptr, 0) != 0) { + std::cerr << "Failed to retrieve cache line size using sysctl!" << std::endl; + return 0; } - - return std::stoi(size_str); + return lineSize; +#else + std::cerr << "Unsupported platform!" << std::endl; + return 0; +#endif + return 0; } -#elif defined(BNCH_SWT_MAC) + BNCH_SWT_INLINE size_t getCacheSize(cache_level level) { +#if defined(BNCH_SWT_WIN) + DWORD bufferSize = 0; + cache_level cacheLevel{ level }; + PROCESSOR_CACHE_TYPE cacheType{ level == cache_level::one ? PROCESSOR_CACHE_TYPE::CacheInstruction : PROCESSOR_CACHE_TYPE::CacheUnified }; + std::vector buffer{}; - BNCH_SWT_ALWAYS_INLINE size_t getL1CacheSize() { - size_t l1CacheSize = 0; - size_t size = sizeof(l1CacheSize); + GetLogicalProcessorInformation(nullptr, &bufferSize); + buffer.resize(bufferSize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION)); - if (sysctlbyname("hw.l1dcachesize", &l1CacheSize, &size, nullptr, 0) != 0) { - std::cerr << "Failed to retrieve L1 cache size using sysctl!" << std::endl; + if (!GetLogicalProcessorInformation(buffer.data(), &bufferSize)) { + std::cerr << "Failed to retrieve processor information!" << std::endl; return 0; } - return l1CacheSize; - } + size_t cacheSize = 0; + auto collectSize = [&](auto cacheLevelNew, auto cacheTypeNew) { + size_t cacheSizeNew{}; + const auto infoCount = bufferSize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); + for (size_t i = 0; i < infoCount; ++i) { + if (buffer[i].Relationship == RelationCache && buffer[i].Cache.Level == static_cast(cacheLevelNew) && buffer[i].Cache.Type == cacheTypeNew) { + cacheSizeNew = buffer[i].Cache.Size; + break; + } + } + return cacheSizeNew; + }; + if (level == cache_level::one) { + cacheSize += collectSize(cacheLevel, PROCESSOR_CACHE_TYPE::CacheData); + } + return cacheSize + collectSize(cacheLevel, cacheType); +#elif defined(BNCH_SWT_LINUX) + size_t cacheSize = 0; + + auto getCacheSizeFromFile = [](const std::string& cacheType) { + const std::string cacheFilePath = "/sys/devices/system/cpu/cpu0/cache/index" + cacheType + "/size"; + std::ifstream file(cacheFilePath); + if (!file.is_open()) { + std::cerr << "Failed to open cache info file: " << cacheFilePath << std::endl; + return static_cast(0); + } -#else + std::string sizeStr; + file >> sizeStr; + file.close(); + + size_t size = 0; + if (sizeStr.back() == 'K') { + size = std::stoul(sizeStr) * 1024; + } else if (sizeStr.back() == 'M') { + size = std::stoul(sizeStr) * 1024 * 1024; + } else { + size = std::stoul(sizeStr); + } + return size; + }; + + if (level == cache_level::one) { + cacheSize += getCacheSizeFromFile("0"); + cacheSize += getCacheSizeFromFile("1"); + } else { + std::string index = (level == cache_level::two) ? "2" : "3"; + cacheSize = getCacheSizeFromFile(index); + } - BNCH_SWT_ALWAYS_INLINE size_t getL1CacheSize() { - std::cerr << "L1 cache size detection is not supported on this platform!" << std::endl; - return 0; - } -#endif + return cacheSize; +#elif defined(BNCH_SWT_MAC) + auto getCacheSize = [](const std::string& cacheType) { + size_t cacheSizeNew = 0; + size_t size = sizeof(cacheSizeNew); - struct cache_clearer { - inline static size_t cacheLineSize = 64; - inline static size_t l1CacheSize{ getL1CacheSize() }; + std::string sysctlQuery = "hw." + cacheType + "cachesize"; + if (sysctlbyname(sysctlQuery.c_str(), &cacheSizeNew, &size, nullptr, 0) != 0) { + return size_t{ 0 }; + } + return cacheSizeNew; + }; + + switch (level) { + case cache_level::one: + return getCacheSize("l1d") + getCacheSize("l1i"); + case cache_level::two: + return getCacheSize("l2"); + case cache_level::three: { + size_t l3Cache = getCacheSize("l3"); + return l3Cache; + } + } +#endif + } + BNCH_SWT_INLINE static void flushCache(void* ptr, size_t size, size_t cacheLineSize, bool clearInstructionCache = false) { #if defined(BNCH_SWT_WIN) - BNCH_SWT_ALWAYS_INLINE static void flushCache(void* ptr, size_t size) { - char* buffer = static_cast(ptr); - for (size_t i = 0; i < size; i += cacheLineSize) { - _mm_clflush(buffer + i); - } - _mm_sfence(); + char* buffer = static_cast(ptr); + for (size_t i = 0; i < size; i += cacheLineSize) { + _mm_clflush(buffer + i); } + _mm_sfence(); -#elif defined(BNCH_SWT_LINUX) || defined(BNCH_SWT_MAC) - BNCH_SWT_ALWAYS_INLINE static void flushCache(void* ptr, size_t size) { - char* buffer = static_cast(ptr); - #if defined(__x86_64__) || defined(__i386__) - for (size_t i = 0; i < size; i += cacheLineSize) { - __builtin_ia32_clflush(buffer + i); - } - _mm_sfence(); - #elif defined(__arm__) || defined(__aarch64__) - for (size_t i = 0; i < size; i += cacheLineSize) { - asm volatile("dc cvac, %0" ::"r"(buffer + i) : "memory"); + if (clearInstructionCache) { + if (!FlushInstructionCache(GetCurrentProcess(), buffer, size)) { + std::cerr << "Failed to flush instruction cache!" << std::endl; } - asm volatile("dsb sy" ::: "memory"); - #else - std::cerr << "Flush cache is not supported on this architecture!" << std::endl; - #endif } - -#else - BNCH_SWT_ALWAYS_INLINE static void flushCache(void* ptr, size_t size) { - ( void )ptr; - ( void )size; - std::cerr << "Flush cache is not supported on this platform!" << std::endl; +#elif defined(BNCH_SWT_LINUX) + char* buffer = static_cast(ptr); + for (size_t i = 0; i < size; i += cacheLineSize) { + __builtin_ia32_clflush(buffer + i); } + if (clearInstructionCache) { + __builtin___clear_cache(buffer, buffer + size); + } +#elif defined(BNCH_SWT_MAC) + if (clearInstructionCache) { + sys_icache_invalidate(ptr, size); + } else { + sys_dcache_flush(ptr, size); + } #endif + } - BNCH_SWT_ALWAYS_INLINE static void evictL1Cache() { - std::vector evict_buffer(l1CacheSize + cacheLineSize); - for (size_t i = 0; i < evict_buffer.size(); i += cacheLineSize) { - evict_buffer[i] = static_cast(i); + class cache_clearer { + size_t cacheLineSize{ getCacheLineSize() }; + size_t cacheSizes[3]{ getCacheSize(cache_level::one), getCacheSize(cache_level::two), getCacheSize(cache_level::three) }; + size_t topLevelCache{ [&] { + if (cacheSizes[2] > cacheSizes[1]) { + return 2ull; + } else if (cacheSizes[1] > cacheSizes[0]) { + return 1ull; + } else { + return 0ull; } - flushCache(evict_buffer.data(), evict_buffer.size()); + }() }; + std::vector evictBuffer{ [&] { + std::vector returnValues{}; + returnValues.resize(cacheSizes[topLevelCache] + cacheLineSize); + return returnValues; + }() }; + + BNCH_SWT_INLINE void evictCache(size_t cacheLevel) { + if (cacheSizes[cacheLevel - 1] > 0) { + for (size_t i = 0; i < cacheSizes[cacheLevel - 1] + cacheLineSize; i += cacheLineSize) { + evictBuffer[i] = static_cast(i); + } + + flushCache(evictBuffer.data(), evictBuffer.size(), cacheLineSize); + if (cacheLevel == 1) { + flushCache(evictBuffer.data(), evictBuffer.size(), cacheLineSize, true); + } + } + } + + public: + BNCH_SWT_INLINE void evictCaches() { + evictCache(3); + evictCache(2); + evictCache(1); } }; diff --git a/Include/BnchSwt/Config.hpp b/Include/BnchSwt/Config.hpp index 602edf25..caea65de 100644 --- a/Include/BnchSwt/Config.hpp +++ b/Include/BnchSwt/Config.hpp @@ -37,14 +37,6 @@ #define BNCH_SWT_GNUCXX 1 #endif -#if defined(__has_builtin) - #define BNCH_SWT_HAS_BUILTIN(x) __has_builtin(x) -#else - #define BNCH_SWT_HAS_BUILTIN(x) 0 -#endif - -#define BNCH_SWT_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) - #if defined(macintosh) || defined(Macintosh) || (defined(__APPLE__) && defined(__MACH__)) #define BNCH_SWT_MAC 1 #elif defined(linux) || defined(__linux) || defined(__linux__) || defined(__gnu_linux__) @@ -53,39 +45,16 @@ #define BNCH_SWT_WIN 1 #endif -#if defined(BNCH_SWT_GNUCXX) || defined(BNCH_SWT_CLANG) - #define JSONIFIER_ASSUME(x) \ - do { \ - if (!(x)) \ - __builtin_unreachable(); \ - } while (0) -#elif defined(BNCH_SWT_MSVC) - #include - #define JSONIFIER_ASSUME(x) __assume(x) -#else - #define JSONIFIER_ASSUME(x) (( void )0) -#endif - #if defined(BNCH_SWT_MSVC) - #define BNCH_SWT_NO_INLINE __declspec(noinline) - #define BNCH_SWT_FLATTEN [[msvc::flatten]] inline - #define BNCH_SWT_ALWAYS_INLINE [[msvc::forceinline]] inline - #define BNCH_SWT_INLINE inline + #define BNCH_SWT_INLINE [[msvc::forceinline]] inline #elif defined(BNCH_SWT_CLANG) - #define BNCH_SWT_NO_INLINE __attribute__((__noinline__)) - #define BNCH_SWT_FLATTEN inline __attribute__((flatten)) - #define BNCH_SWT_ALWAYS_INLINE inline __attribute__((always_inline)) - #define BNCH_SWT_INLINE inline + #define BNCH_SWT_INLINE inline __attribute__((always_inline)) #elif defined(BNCH_SWT_GNUCXX) - #define BNCH_SWT_NO_INLINE __attribute__((noinline)) - #define BNCH_SWT_FLATTEN inline __attribute__((flatten)) - #define BNCH_SWT_ALWAYS_INLINE inline __attribute__((always_inline)) - #define BNCH_SWT_INLINE inline + #define BNCH_SWT_INLINE inline __attribute__((always_inline)) #else - #define BNCH_SWT_FLATTEN inline - #define BNCH_SWT_NO_INLINE - #define BNCH_SWT_ALWAYS_INLINE inline #define BNCH_SWT_INLINE inline #endif +#define BNCH_SWT_ALIGN alignas(64) + using clock_type = std::conditional_t; \ No newline at end of file diff --git a/Include/BnchSwt/Counters/AppleArmPerfEvents.hpp b/Include/BnchSwt/Counters/AppleArmPerfEvents.hpp index 97ff305d..59dfeadc 100644 --- a/Include/BnchSwt/Counters/AppleArmPerfEvents.hpp +++ b/Include/BnchSwt/Counters/AppleArmPerfEvents.hpp @@ -29,7 +29,7 @@ // // // Created by YaoYuan on 2021. -// Released into the public domain (unlicense.org). +// Released into the public domain (https://unlicense.org). // ============================================================================= #pragma once @@ -38,82 +38,65 @@ #if defined(BNCH_SWT_MAC) - #include - #include - #include - #include - #include + #include + #include + #include + #include + #include + #include - #include // for dlopen() and dlsym() - #include // for mach_absolute_time() - #include // for kdebug trace decode - #include // for sysctl() - #include // for usleep() - -namespace bnch_swt { +namespace bnch_swt::internal { struct performance_counters { - double missedBranches{}; + double branchMisses{}; double instructions{}; double branches{}; double cycles{}; - BNCH_SWT_ALWAYS_INLINE performance_counters(uint64_t c, uint64_t b, uint64_t m, uint64_t i) : cycles(c), branches(b), missedBranches(m), instructions(i) { + BNCH_SWT_INLINE performance_counters(uint64_t c, uint64_t b, uint64_t m, uint64_t i) : cycles(c), branches(b), branchMisses(m), instructions(i) { } - BNCH_SWT_ALWAYS_INLINE performance_counters(double c, double b, double m, double i) : cycles(c), branches(b), missedBranches(m), instructions(i) { + BNCH_SWT_INLINE performance_counters(double c, double b, double m, double i) : cycles(c), branches(b), branchMisses(m), instructions(i) { } - BNCH_SWT_ALWAYS_INLINE performance_counters(double init = 0.0f) : cycles(init), branches(init), missedBranches(init), instructions(init) { + BNCH_SWT_INLINE performance_counters(double init = 0.0f) : cycles(init), branches(init), branchMisses(init), instructions(init) { } - BNCH_SWT_ALWAYS_INLINE performance_counters& operator-=(const performance_counters& other) { + BNCH_SWT_INLINE performance_counters& operator-=(const performance_counters& other) { cycles -= other.cycles; branches -= other.branches; - missedBranches -= other.missedBranches; + branchMisses -= other.branchMisses; instructions -= other.instructions; return *this; } - BNCH_SWT_ALWAYS_INLINE performance_counters& min(const performance_counters& other) { + BNCH_SWT_INLINE performance_counters& min(const performance_counters& other) { cycles = other.cycles < cycles ? other.cycles : cycles; branches = other.branches < branches ? other.branches : branches; - missedBranches = other.missedBranches < missedBranches ? other.missedBranches : missedBranches; + branchMisses = other.branchMisses < branchMisses ? other.branchMisses : branchMisses; instructions = other.instructions < instructions ? other.instructions : instructions; return *this; } - BNCH_SWT_ALWAYS_INLINE performance_counters& operator+=(const performance_counters& other) { + BNCH_SWT_INLINE performance_counters& operator+=(const performance_counters& other) { cycles += other.cycles; branches += other.branches; - missedBranches += other.missedBranches; + branchMisses += other.branchMisses; instructions += other.instructions; return *this; } - BNCH_SWT_ALWAYS_INLINE performance_counters& operator/=(double numerator) { + BNCH_SWT_INLINE performance_counters& operator/=(double numerator) { cycles /= numerator; branches /= numerator; - missedBranches /= numerator; + branchMisses /= numerator; instructions /= numerator; return *this; } }; - BNCH_SWT_ALWAYS_INLINE performance_counters operator-(const performance_counters& a, const performance_counters& b) { - return performance_counters(a.cycles - b.cycles, a.branches - b.branches, a.missedBranches - b.missedBranches, a.instructions - b.instructions); + BNCH_SWT_INLINE performance_counters operator-(const performance_counters& a, const performance_counters& b) { + return performance_counters(a.cycles - b.cycles, a.branches - b.branches, a.branchMisses - b.branchMisses, a.instructions - b.instructions); } - using f32 = float; - using f64 = double; - using i8 = int8_t; - using u8 = uint8_t; - using i16 = int16_t; - using u16 = uint16_t; - using i32 = int32_t; - using u32 = uint32_t; - using i64 = int64_t; - using u64 = uint64_t; - using usize = size_t; - // ----------------------------------------------------------------------------- // header (reverse engineered) // This framework wraps some sysctl calls to communicate with the kpc in kernel. @@ -170,45 +153,45 @@ namespace bnch_swt { #define KPERF_TIMER_MAX (8) // x86/arm config registers are 64-bit - using kpc_config_t = u64; + using kpc_config_t = uint64_t; /// Print current CPU identification string to the buffer (same as snprintf), /// such as "cpu_7_8_10b282dc_46". This string can be used to locate the PMC /// database in /usr/share/kpep. /// @return string's length, or negative value if error occurs. /// @note This method does not requires root privileges. - /// @details sysctl get(hw.cputype), get(hw.cpusubtype), + /// @internals sysctl get(hw.cputype), get(hw.cpusubtype), /// get(hw.cpufamily), get(machdep.cpu.model) - static int32_t (*kpc_cpu_string)(char* buf, usize buf_size); + static int32_t (*kpc_cpu_string)(char* buf, size_t buf_size); /// Get the version of KPC that's being run. /// @return See `PMU version constants` above. - /// @details sysctl get(kpc.pmu_version) - static u32 (*kpc_pmu_version)(void); + /// @internals sysctl get(kpc.pmu_version) + static uint32_t (*kpc_pmu_version)(); /// Get running PMC classes. /// @return See `class mask constants` above, /// 0 if error occurs or no class is set. - /// @details sysctl get(kpc.counting) - static u32 (*kpc_get_counting)(void); + /// @internals sysctl get(kpc.counting) + static uint32_t (*kpc_get_counting)(); /// Set PMC classes to enable counting. /// @param classes See `class mask constants` above, set 0 to shutdown counting. /// @return 0 for success. - /// @details sysctl set(kpc.counting) - static int32_t (*kpc_set_counting)(u32 classes); + /// @internals sysctl set(kpc.counting) + static int32_t (*kpc_set_counting)(uint32_t classes); /// Get running PMC classes for current thread. /// @return See `class mask constants` above, /// 0 if error occurs or no class is set. - /// @details sysctl get(kpc.thread_counting) - static u32 (*kpc_get_thread_counting)(void); + /// @internals sysctl get(kpc.thread_counting) + static uint32_t (*kpc_get_thread_counting)(); /// Set PMC classes to enable counting for current thread. /// @param classes See `class mask constants` above, set 0 to shutdown counting. /// @return 0 for success. - /// @details sysctl set(kpc.thread_counting) - static int32_t (*kpc_set_thread_counting)(u32 classes); + /// @internals sysctl set(kpc.thread_counting) + static int32_t (*kpc_set_thread_counting)(uint32_t classes); /// Get how many config registers there are for a given mask. /// For example: Intel may returns 1 for `KPC_CLASS_FIXED_MASK`, @@ -216,32 +199,32 @@ namespace bnch_swt { /// @param classes See `class mask constants` above. /// @return 0 if error occurs or no class is set. /// @note This method does not requires root privileges. - /// @details sysctl get(kpc.config_count) - static u32 (*kpc_get_config_count)(u32 classes); + /// @internals sysctl get(kpc.config_count) + static uint32_t (*kpc_get_config_count)(uint32_t classes); /// Get config registers. /// @param classes see `class mask constants` above. /// @param config Config buffer to receive values, should not smaller than /// kpc_get_config_count(classes) * sizeof(kpc_config_t). /// @return 0 for success. - /// @details sysctl get(kpc.config_count), get(kpc.config) - static int32_t (*kpc_get_config)(u32 classes, kpc_config_t* config); + /// @internals sysctl get(kpc.config_count), get(kpc.config) + static int32_t (*kpc_get_config)(uint32_t classes, kpc_config_t* config); /// Set config registers. /// @param classes see `class mask constants` above. /// @param config Config buffer, should not smaller than /// kpc_get_config_count(classes) * sizeof(kpc_config_t). /// @return 0 for success. - /// @details sysctl get(kpc.config_count), set(kpc.config) - static int32_t (*kpc_set_config)(u32 classes, kpc_config_t* config); + /// @internals sysctl get(kpc.config_count), set(kpc.config) + static int32_t (*kpc_set_config)(uint32_t classes, kpc_config_t* config); /// Get how many counters there are for a given mask. /// For example: Intel may returns 3 for `KPC_CLASS_FIXED_MASK`, /// returns 4 for `KPC_CLASS_CONFIGURABLE_MASK`. /// @param classes See `class mask constants` above. /// @note This method does not requires root privileges. - /// @details sysctl get(kpc.counter_count) - static u32 (*kpc_get_counter_count)(u32 classes); + /// @internals sysctl get(kpc.counter_count) + static uint32_t (*kpc_get_counter_count)(uint32_t classes); /// Get counter accumulations. /// If `all_cpus` is true, the buffer count should not smaller than @@ -253,8 +236,8 @@ namespace bnch_swt { /// @param curcpu A pointer to receive current cpu id, can be NULL. /// @param buf Buffer to receive counter's value. /// @return 0 for success. - /// @details sysctl get(hw.ncpu), get(kpc.counter_count), get(kpc.counters) - static int32_t (*kpc_get_cpu_counters)(bool all_cpus, u32 classes, int32_t* curcpu, u64* buf); + /// @internals sysctl get(hw.ncpu), get(kpc.counter_count), get(kpc.counters) + static int32_t (*kpc_get_cpu_counters)(bool all_cpus, uint32_t classes, int32_t* curcpu, uint64_t* buf); /// Get counter accumulations for current thread. /// @param tid Thread id, should be 0. @@ -262,109 +245,109 @@ namespace bnch_swt { /// should not smaller than kpc_get_counter_count(). /// @param buf Buffer to receive counter's value. /// @return 0 for success. - /// @details sysctl get(kpc.thread_counters) - static int32_t (*kpc_get_thread_counters)(u32 tid, u32 buf_count, u64* buf); + /// @internals sysctl get(kpc.thread_counters) + static int32_t (*kpc_get_thread_counters)(uint32_t tid, uint32_t buf_count, uint64_t* buf); /// Acquire/release the counters used by the Power Manager. /// @param val 1:acquire, 0:release /// @return 0 for success. - /// @details sysctl set(kpc.force_all_ctrs) + /// @internals sysctl set(kpc.force_all_ctrs) static int32_t (*kpc_force_all_ctrs_set)(int32_t val); /// Get the state of all_ctrs. /// @return 0 for success. - /// @details sysctl get(kpc.force_all_ctrs) + /// @internals sysctl get(kpc.force_all_ctrs) static int32_t (*kpc_force_all_ctrs_get)(int32_t* val_out); /// Set number of actions, should be `KPERF_ACTION_MAX`. - /// @details sysctl set(kperf.action.count) - static int32_t (*kperf_action_count_set)(u32 count); + /// @internals sysctl set(kperf.action.count) + static int32_t (*kperf_action_count_set)(uint32_t count); /// Get number of actions. - /// @details sysctl get(kperf.action.count) - static int32_t (*kperf_action_count_get)(u32* count); + /// @internals sysctl get(kperf.action.count) + static int32_t (*kperf_action_count_get)(uint32_t* count); /// Set what to sample when a trigger fires an action, e.g. /// `KPERF_SAMPLER_PMC_CPU`. - /// @details sysctl set(kperf.action.samplers) - static int32_t (*kperf_action_samplers_set)(u32 actionid, u32 sample); + /// @internals sysctl set(kperf.action.samplers) + static int32_t (*kperf_action_samplers_set)(uint32_t actionid, uint32_t sample); /// Get what to sample when a trigger fires an action. - /// @details sysctl get(kperf.action.samplers) - static int32_t (*kperf_action_samplers_get)(u32 actionid, u32* sample); + /// @internals sysctl get(kperf.action.samplers) + static int32_t (*kperf_action_samplers_get)(uint32_t actionid, uint32_t* sample); /// Apply a task filter to the action, -1 to disable filter. - /// @details sysctl set(kperf.action.filter_by_task) - static int32_t (*kperf_action_filter_set_by_task)(u32 actionid, i32 port); + /// @internals sysctl set(kperf.action.filter_by_task) + static int32_t (*kperf_action_filter_set_by_task)(uint32_t actionid, int32_t port); /// Apply a pid filter to the action, -1 to disable filter. - /// @details sysctl set(kperf.action.filter_by_pid) - static int32_t (*kperf_action_filter_set_by_pid)(u32 actionid, i32 pid); + /// @internals sysctl set(kperf.action.filter_by_pid) + static int32_t (*kperf_action_filter_set_by_pid)(uint32_t actionid, int32_t pid); /// Set number of time triggers, should be `KPERF_TIMER_MAX`. - /// @details sysctl set(kperf.timer.count) - static int32_t (*kperf_timer_count_set)(u32 count); + /// @internals sysctl set(kperf.timer.count) + static int32_t (*kperf_timer_count_set)(uint32_t count); /// Get number of time triggers. - /// @details sysctl get(kperf.timer.count) - static int32_t (*kperf_timer_count_get)(u32* count); + /// @internals sysctl get(kperf.timer.count) + static int32_t (*kperf_timer_count_get)(uint32_t* count); /// Set timer number and period. - /// @details sysctl set(kperf.timer.period) - static int32_t (*kperf_timer_period_set)(u32 actionid, u64 tick); + /// @internals sysctl set(kperf.timer.period) + static int32_t (*kperf_timer_period_set)(uint32_t actionid, uint64_t tick); /// Get timer number and period. - /// @details sysctl get(kperf.timer.period) - static int32_t (*kperf_timer_period_get)(u32 actionid, u64* tick); + /// @internals sysctl get(kperf.timer.period) + static int32_t (*kperf_timer_period_get)(uint32_t actionid, uint64_t* tick); /// Set timer number and actionid. - /// @details sysctl set(kperf.timer.action) - static int32_t (*kperf_timer_action_set)(u32 actionid, u32 timerid); + /// @internals sysctl set(kperf.timer.action) + static int32_t (*kperf_timer_action_set)(uint32_t actionid, uint32_t timerid); /// Get timer number and actionid. - /// @details sysctl get(kperf.timer.action) - static int32_t (*kperf_timer_action_get)(u32 actionid, u32* timerid); + /// @internals sysctl get(kperf.timer.action) + static int32_t (*kperf_timer_action_get)(uint32_t actionid, uint32_t* timerid); /// Set which timer ID does PET (Profile Every Thread). - /// @details sysctl set(kperf.timer.pet_timer) - static int32_t (*kperf_timer_pet_set)(u32 timerid); + /// @internals sysctl set(kperf.timer.pet_timer) + static int32_t (*kperf_timer_pet_set)(uint32_t timerid); /// Get which timer ID does PET (Profile Every Thread). - /// @details sysctl get(kperf.timer.pet_timer) - static int32_t (*kperf_timer_pet_get)(u32* timerid); + /// @internals sysctl get(kperf.timer.pet_timer) + static int32_t (*kperf_timer_pet_get)(uint32_t* timerid); /// Enable or disable sampling. - /// @details sysctl set(kperf.sampling) - static int32_t (*kperf_sample_set)(u32 enabled); + /// @internals sysctl set(kperf.sampling) + static int32_t (*kperf_sample_set)(uint32_t enabled); /// Get is currently sampling. - /// @details sysctl get(kperf.sampling) - static int32_t (*kperf_sample_get)(u32* enabled); + /// @internals sysctl get(kperf.sampling) + static int32_t (*kperf_sample_get)(uint32_t* enabled); /// Reset kperf: stop sampling, kdebug, timers and actions. /// @return 0 for success. - static int32_t (*kperf_reset)(void); + static int32_t (*kperf_reset)(); /// Nanoseconds to CPU ticks. - static u64 (*kperf_ns_to_ticks)(u64 ns); + static uint64_t (*kperf_ns_to_ticks)(uint64_t ns); /// CPU ticks to nanoseconds. - static u64 (*kperf_ticks_to_ns)(u64 ticks); + static uint64_t (*kperf_ticks_to_ns)(uint64_t ticks); /// CPU ticks frequency (mach_absolute_time). - static u64 (*kperf_tick_frequency)(void); + static uint64_t (*kperf_tick_frequency)(); /// Get lightweight PET mode (not in kperf.framework). - static int32_t kperf_lightweight_pet_get(u32* enabled) { + BNCH_SWT_INLINE static int32_t kperf_lightweight_pet_get(uint32_t* enabled) { if (!enabled) { return -1; } - usize size = 4; + size_t size = 4; return sysctlbyname("kperf.lightweight_pet", enabled, &size, NULL, 0); } /// Set lightweight PET mode (not in kperf.framework). - static int32_t kperf_lightweight_pet_set(u32 enabled) { + BNCH_SWT_INLINE static int32_t kperf_lightweight_pet_set(uint32_t enabled) { return sysctlbyname("kperf.lightweight_pet", NULL, NULL, &enabled, 4); } @@ -387,11 +370,11 @@ namespace bnch_swt { const char* errata;///< Errata, currently NULL. const char* alias;///< Alias name, such as "Instructions", "Cycles". const char* fallback;///< Fallback event name for fixed counter. - u32 mask; - u8 number; - u8 umask; - u8 reserved; - u8 is_fixed; + uint32_t mask; + uint8_t number; + uint8_t umask; + uint8_t reserved; + uint8_t is_fixed; }; /// KPEP database (size: 144/80 bytes on 64/32 bit OS) @@ -405,34 +388,34 @@ namespace bnch_swt { kpep_event** fixed_event_arr;///< Fixed counter events (sizeof(kpep_event *) ///< * fixed_counter_count) void* alias_map;///< All aliases (CFDict). - usize reserved_1; - usize reserved_2; - usize reserved_3; - usize event_count;///< All events count. - usize alias_count; - usize fixed_counter_count; - usize config_counter_count; - usize power_counter_count; - u32 archtecture;///< see `KPEP CPU archtecture constants` above. - u32 fixed_counter_bits; - u32 config_counter_bits; - u32 power_counter_bits; + size_t reserved_1; + size_t reserved_2; + size_t reserved_3; + size_t event_count;///< All events eventCounts[currentIndex]. + size_t alias_count; + size_t fixed_counter_count; + size_t config_counter_count; + size_t power_counter_count; + uint32_t archtecture;///< see `KPEP CPU archtecture constants` above. + uint32_t fixed_counter_bits; + uint32_t config_counter_bits; + uint32_t power_counter_bits; }; /// KPEP config (size: 80/44 bytes on 64/32 bit OS) struct kpep_config { kpep_db* db; kpep_event** ev_arr;///< (sizeof(kpep_event *) * counter_count), init NULL - usize* ev_map;///< (sizeof(usize *) * counter_count), init 0 - usize* ev_idx;///< (sizeof(usize *) * counter_count), init -1 - u32* flags;///< (sizeof(u32 *) * counter_count), init 0 - u64* kpc_periods;///< (sizeof(u64 *) * counter_count), init 0 - usize event_count;/// kpep_config_events_count() - usize counter_count; - u32 classes;///< See `class mask constants` above. - u32 config_counter; - u32 power_counter; - u32 reserved; + size_t* ev_map;///< (sizeof(size_t *) * counter_count), init 0 + size_t* ev_idx;///< (sizeof(size_t *) * counter_count), init -1 + uint32_t* flags;///< (sizeof(uint32_t *) * counter_count), init 0 + uint64_t* kpc_periods;///< (sizeof(uint64_t *) * counter_count), init 0 + size_t event_count;/// kpep_config_events_count() + size_t counter_count; + uint32_t classes;///< See `class mask constants` above. + uint32_t config_counter; + uint32_t power_counter; + uint32_t reserved; }; /// Error code for kpep_config_xxx() and kpep_db_xxx() functions. @@ -486,49 +469,49 @@ namespace bnch_swt { /// If return value is `CONFLICTING_EVENTS`, this bitmap contains /// the conflicted event indices, e.g. "1 << 2" means index 2. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_add_event)(kpep_config* cfg, kpep_event** ev_ptr, u32 flag, u32* err); + static int32_t (*kpep_config_add_event)(kpep_config* cfg, kpep_event** ev_ptr, uint32_t flag, uint32_t* err); /// Remove event at index. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_remove_event)(kpep_config* cfg, usize idx); + static int32_t (*kpep_config_remove_event)(kpep_config* cfg, size_t idx); /// Force all counters. /// @return kpep_config_error_code, 0 for success. static int32_t (*kpep_config_force_counters)(kpep_config* cfg); - /// Get events count. + /// Get events eventCounts[currentIndex]. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_events_count)(kpep_config* cfg, usize* count_ptr); + static int32_t (*kpep_config_events_count)(kpep_config* cfg, size_t* count_ptr); /// Get all event pointers. /// @param buf A buffer to receive event pointers. /// @param buf_size The buffer's size in bytes, should not smaller than /// kpep_config_events_count() * sizeof(void *). /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_events)(kpep_config* cfg, kpep_event** buf, usize buf_size); + static int32_t (*kpep_config_events)(kpep_config* cfg, kpep_event** buf, size_t buf_size); /// Get kpc register configs. /// @param buf A buffer to receive kpc register configs. /// @param buf_size The buffer's size in bytes, should not smaller than /// kpep_config_kpc_count() * sizeof(kpc_config_t). /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_kpc)(kpep_config* cfg, kpc_config_t* buf, usize buf_size); + static int32_t (*kpep_config_kpc)(kpep_config* cfg, kpc_config_t* buf, size_t buf_size); - /// Get kpc register config count. + /// Get kpc register config eventCounts[currentIndex]. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_kpc_count)(kpep_config* cfg, usize* count_ptr); + static int32_t (*kpep_config_kpc_count)(kpep_config* cfg, size_t* count_ptr); /// Get kpc classes. /// @param classes See `class mask constants` above. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_kpc_classes)(kpep_config* cfg, u32* classes_ptr); + static int32_t (*kpep_config_kpc_classes)(kpep_config* cfg, uint32_t* classes_ptr); /// Get the index mapping from event to counter. /// @param buf A buffer to receive indexes. /// @param buf_size The buffer's size in bytes, should not smaller than /// kpep_config_events_count() * sizeof(kpc_config_t). /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_config_kpc_map)(kpep_config* cfg, usize* buf, usize buf_size); + static int32_t (*kpep_config_kpc_map)(kpep_config* cfg, size_t* buf, size_t buf_size); /// Open a kpep database file in "/usr/share/kpep/" or "/usr/local/share/kpep/". /// @param name File name, for example "haswell", "cpu_100000c_1_92fb37c8". @@ -543,32 +526,32 @@ namespace bnch_swt { /// @return kpep_config_error_code, 0 for success. static int32_t (*kpep_db_name)(kpep_db* db, const char** name); - /// Get the event alias count. + /// Get the event alias eventCounts[currentIndex]. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_db_aliases_count)(kpep_db* db, usize* count); + static int32_t (*kpep_db_aliases_count)(kpep_db* db, size_t* count); /// Get all alias. /// @param buf A buffer to receive all alias strings. /// @param buf_size The buffer's size in bytes, /// should not smaller than kpep_db_aliases_count() * sizeof(void *). /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_db_aliases)(kpep_db* db, const char** buf, usize buf_size); + static int32_t (*kpep_db_aliases)(kpep_db* db, const char** buf, size_t buf_size); /// Get counters count for given classes. /// @param classes 1: Fixed, 2: Configurable. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_db_counters_count)(kpep_db* db, u8 classes, usize* count); + static int32_t (*kpep_db_counters_count)(kpep_db* db, uint8_t classes, size_t* count); - /// Get all event count. + /// Get all event eventCounts[currentIndex]. /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_db_events_count)(kpep_db* db, usize* count); + static int32_t (*kpep_db_events_count)(kpep_db* db, size_t* count); /// Get all events. /// @param buf A buffer to receive all event pointers. /// @param buf_size The buffer's size in bytes, /// should not smaller than kpep_db_events_count() * sizeof(void *). /// @return kpep_config_error_code, 0 for success. - static int32_t (*kpep_db_events)(kpep_db* db, kpep_event** buf, usize buf_size); + static int32_t (*kpep_db_events)(kpep_db* db, kpep_event** buf, size_t buf_size); /// Get one event by name. /// @return kpep_config_error_code, 0 for success. @@ -595,8 +578,6 @@ namespace bnch_swt { void** impl; }; - static constexpr void* ptr{}; - #define lib_nelems(x) (sizeof(x) / sizeof((x)[0])) #define lib_symbol_def(name) { #name, ( void** )&name } @@ -639,7 +620,7 @@ namespace bnch_swt { static const lib_symbol lib_symbols_kperfdata[] = { lib_symbol_def(kpep_config_create), - lib_symbol_def(ptr), + lib_symbol_def(kpep_config_free), lib_symbol_def(kpep_config_add_event), lib_symbol_def(kpep_config_remove_event), lib_symbol_def(kpep_config_force_counters), @@ -673,7 +654,7 @@ namespace bnch_swt { static void* lib_handle_kperf = NULL; static void* lib_handle_kperfdata = NULL; - static void lib_deinit(void) { + static void lib_deinit() { lib_inited = false; lib_has_err = false; if (lib_handle_kperf) @@ -682,17 +663,17 @@ namespace bnch_swt { dlclose(lib_handle_kperfdata); lib_handle_kperf = NULL; lib_handle_kperfdata = NULL; - for (usize i = 0; i < lib_nelems(lib_symbols_kperf); i++) { + for (size_t i = 0; i < lib_nelems(lib_symbols_kperf); i++) { const lib_symbol* symbol = &lib_symbols_kperf[i]; *symbol->impl = NULL; } - for (usize i = 0; i < lib_nelems(lib_symbols_kperfdata); i++) { + for (size_t i = 0; i < lib_nelems(lib_symbols_kperfdata); i++) { const lib_symbol* symbol = &lib_symbols_kperfdata[i]; *symbol->impl = NULL; } } - static bool lib_init(void) { + static bool lib_init() { #define return_err() \ do { \ lib_deinit(); \ @@ -717,7 +698,7 @@ namespace bnch_swt { } // load symbol address from dynamic library - for (usize i = 0; i < lib_nelems(lib_symbols_kperf); i++) { + for (size_t i = 0; i < lib_nelems(lib_symbols_kperf); i++) { const lib_symbol* symbol = &lib_symbols_kperf[i]; *symbol->impl = dlsym(lib_handle_kperf, symbol->name); if (!*symbol->impl) { @@ -725,7 +706,7 @@ namespace bnch_swt { return_err(); } } - for (usize i = 0; i < lib_nelems(lib_symbols_kperfdata); i++) { + for (size_t i = 0; i < lib_nelems(lib_symbols_kperfdata); i++) { const lib_symbol* symbol = &lib_symbols_kperfdata[i]; *symbol->impl = dlsym(lib_handle_kperfdata, symbol->name); if (!*symbol->impl) { @@ -812,29 +793,29 @@ namespace bnch_swt { /// Clean up trace buffers and reset ktrace/kdebug/kperf. /// @return 0 on success. - static int32_t kdebug_reset(void) { + BNCH_SWT_INLINE static int32_t kdebug_reset() { int32_t mib[3] = { CTL_KERN, KERN_KDEBUG, KERN_KDREMOVE }; return sysctl(mib, 3, NULL, NULL, NULL, 0); } /// Disable and reinitialize the trace buffers. /// @return 0 on success. - static int32_t kdebug_reinit(void) { + BNCH_SWT_INLINE static int32_t kdebug_reinit() { int32_t mib[3] = { CTL_KERN, KERN_KDEBUG, KERN_KDSETUP }; return sysctl(mib, 3, NULL, NULL, NULL, 0); } /// Set debug filter. - static int32_t kdebug_setreg(kd_regtype* kdr) { + BNCH_SWT_INLINE static int32_t kdebug_setreg(kd_regtype* kdr) { int32_t mib[3] = { CTL_KERN, KERN_KDEBUG, KERN_KDSETREG }; - usize size = sizeof(kd_regtype); + size_t size = sizeof(kd_regtype); return sysctl(mib, 3, kdr, &size, NULL, 0); } /// Set maximum number of trace entries (kd_buf). /// Only allow allocation up to half the available memory (sane_size). /// @return 0 on success. - static int32_t kdebug_trace_setbuf(int32_t nbufs) { + BNCH_SWT_INLINE static int32_t kdebug_trace_setbuf(int32_t nbufs) { int32_t mib[4] = { CTL_KERN, KERN_KDEBUG, KERN_KDSETBUF, nbufs }; return sysctl(mib, 4, NULL, NULL, NULL, 0); } @@ -842,14 +823,14 @@ namespace bnch_swt { /// Enable or disable kdebug trace. /// Trace buffer must already be initialized. /// @return 0 on success. - static int32_t kdebug_trace_enable(bool enable) { + BNCH_SWT_INLINE static int32_t kdebug_trace_enable(bool enable) { int32_t mib[4] = { CTL_KERN, KERN_KDEBUG, KERN_KDENABLE, enable }; return sysctl(mib, 4, NULL, 0, NULL, 0); } /// Retrieve trace buffer information from kernel. /// @return 0 on success. - static int32_t kdebug_get_bufinfo(kbufinfo_t* info) { + BNCH_SWT_INLINE static int32_t kdebug_get_bufinfo(kbufinfo_t* info) { if (!info) { return -1; } @@ -863,7 +844,7 @@ namespace bnch_swt { /// @param len Length of `buf` in bytes. /// @param count Number of trace entries (kd_buf) obtained. /// @return 0 on success. - static int32_t kdebug_trace_read(void* buf, usize len, usize* count) { + BNCH_SWT_INLINE static int32_t kdebug_trace_read(void* buf, size_t len, size_t* count) { if (count) { *count = 0; } @@ -887,12 +868,12 @@ namespace bnch_swt { /// @param timeout_ms timeout milliseconds, 0 means wait forever. /// @param suc set true if new buffers filled. /// @return 0 on success. - static int32_t kdebug_wait(usize timeout_ms, bool* suc) { + BNCH_SWT_INLINE static int32_t kdebug_wait(size_t timeout_ms, bool* suc) { if (timeout_ms == 0) { return -1; } int32_t mib[3] = { CTL_KERN, KERN_KDEBUG, KERN_KDBUFWAIT }; - usize val = timeout_ms; + size_t val = timeout_ms; int32_t ret = sysctl(mib, 3, NULL, &val, NULL, 0); if (suc) { *suc = !!val; @@ -939,7 +920,7 @@ namespace bnch_swt { }; static kpep_event* get_event(kpep_db* db, const event_alias* alias) { - for (usize j = 0; j < EVENT_NAME_MAX; j++) { + for (size_t j = 0; j < EVENT_NAME_MAX; j++) { const char* name = alias->names[j]; if (!name) { break; @@ -952,11 +933,11 @@ namespace bnch_swt { return NULL; } - kpc_config_t regs[KPC_MAX_COUNTERS] = { 0 }; - usize counter_map[KPC_MAX_COUNTERS] = { 0 }; - u64 counters_0[KPC_MAX_COUNTERS] = { 0 }; - u64 counters_1[KPC_MAX_COUNTERS] = { 0 }; - const usize ev_count = sizeof(profile_events) / sizeof(profile_events[0]); + kpc_config_t regs[KPC_MAX_COUNTERS] = { 0 }; + size_t counter_map[KPC_MAX_COUNTERS] = { 0 }; + uint64_t counters_0[KPC_MAX_COUNTERS] = { 0 }; + uint64_t counters_1[KPC_MAX_COUNTERS] = { 0 }; + const size_t ev_count = sizeof(profile_events) / sizeof(profile_events[0]); bool setup_performance_counters() { static bool init = false; @@ -969,155 +950,149 @@ namespace bnch_swt { // load dylib if (!lib_init()) { - printf("Error: %s\n", lib_err_msg); + std::cout << "Error: " << lib_err_msg << std::endl; return (worked = false); } // check permission int32_t force_ctrs = 0; if (kpc_force_all_ctrs_get(&force_ctrs)) { - // printf("Permission denied, xnu/kpc requires root privileges.\n"); + std::cout << "Permission denied, xnu/kpc requires root privileges." << std::endl; return (worked = false); } + int32_t ret; // load pmc db kpep_db* db = NULL; if ((ret = kpep_db_create(NULL, &db))) { - printf("Error: cannot load pmc database: %d.\n", ret); + std::cout << "Error: cannot load pmc database: " << ret << "." << std::endl; return (worked = false); } - printf("loaded db: %s (%s)\n", db->name, db->marketing_name); + std::cout << "loaded db: " << db->name << " (" << db->marketing_name << ")" << std::endl; // create a config kpep_config* cfg = NULL; if ((ret = kpep_config_create(db, &cfg))) { - printf("Failed to create kpep config: %d (%s).\n", ret, kpep_config_error_desc(ret)); + std::cout << "Failed to create kpep config: " << ret << " (" << kpep_config_error_desc(ret) << ")." << std::endl; return (worked = false); } if ((ret = kpep_config_force_counters(cfg))) { - printf("Failed to force counters: %d (%s).\n", ret, kpep_config_error_desc(ret)); + std::cout << "Failed to force counters: " << ret << " (" << kpep_config_error_desc(ret) << ")." << std::endl; return (worked = false); } // get events kpep_event* ev_arr[ev_count] = { 0 }; - for (usize i = 0; i < ev_count; i++) { + for (size_t i = 0; i < ev_count; i++) { const event_alias* alias = profile_events + i; ev_arr[i] = get_event(db, alias); if (!ev_arr[i]) { - printf("Cannot find event: %s.\n", alias->alias); + std::cout << "Cannot find event: " << alias->alias << "." << std::endl; return (worked = false); } } // add event to config - for (usize i = 0; i < ev_count; i++) { + for (size_t i = 0; i < ev_count; i++) { kpep_event* ev = ev_arr[i]; if ((ret = kpep_config_add_event(cfg, &ev, 0, NULL))) { - printf("Failed to add event: %d (%s).\n", ret, kpep_config_error_desc(ret)); + std::cout << "Failed to add event: " << ret << " (" << kpep_config_error_desc(ret) << ")." << std::endl; return (worked = false); } } // prepare buffer and config - u32 classes = 0; - usize reg_count = 0; + uint32_t classes = 0; + size_t reg_count = 0; if ((ret = kpep_config_kpc_classes(cfg, &classes))) { - printf("Failed get kpc classes: %d (%s).\n", ret, kpep_config_error_desc(ret)); + std::cout << "Failed to get kpc classes: " << ret << " (" << kpep_config_error_desc(ret) << ")." << std::endl; return (worked = false); } if ((ret = kpep_config_kpc_count(cfg, ®_count))) { - printf("Failed get kpc count: %d (%s).\n", ret, kpep_config_error_desc(ret)); + std::cout << "Failed to get kpc count: " << ret << " (" << kpep_config_error_desc(ret) << ")." << std::endl; return (worked = false); } if ((ret = kpep_config_kpc_map(cfg, counter_map, sizeof(counter_map)))) { - printf("Failed get kpc map: %d (%s).\n", ret, kpep_config_error_desc(ret)); + std::cout << "Failed to get kpc map: " << ret << " (" << kpep_config_error_desc(ret) << ")." << std::endl; return (worked = false); } if ((ret = kpep_config_kpc(cfg, regs, sizeof(regs)))) { - printf("Failed get kpc registers: %d (%s).\n", ret, kpep_config_error_desc(ret)); + std::cout << "Failed to get kpc registers: " << ret << " (" << kpep_config_error_desc(ret) << ")." << std::endl; return (worked = false); } // set config to kernel if ((ret = kpc_force_all_ctrs_set(1))) { - printf("Failed force all ctrs: %d.\n", ret); + std::cout << "Failed to force all ctrs: " << ret << "." << std::endl; return (worked = false); } if ((classes & KPC_CLASS_CONFIGURABLE_MASK) && reg_count) { if ((ret = kpc_set_config(classes, regs))) { - printf("Failed set kpc config: %d.\n", ret); + std::cout << "Failed to set kpc config: " << ret << "." << std::endl; return (worked = false); } } - // start counting + // run counting if ((ret = kpc_set_counting(classes))) { - printf("Failed set counting: %d.\n", ret); + std::cout << "Failed to set counting: " << ret << "." << std::endl; return (worked = false); } if ((ret = kpc_set_thread_counting(classes))) { - printf("Failed set thread counting: %d.\n", ret); + std::cout << "Failed to set thread counting: " << ret << "." << std::endl; return (worked = false); } return (worked = true); } - BNCH_SWT_ALWAYS_INLINE performance_counters get_counters() { + BNCH_SWT_INLINE performance_counters get_counters() { static bool warned = false; int32_t ret; // get counters before if ((ret = kpc_get_thread_counters(0, KPC_MAX_COUNTERS, counters_0))) { if (!warned) { - printf("Failed get thread counters before: %d.\n", ret); + std::cout << "Failed to get thread counters before: " << ret << "." << std::endl; warned = true; } return 1; } - /*printf("counters value:\n"); - for (usize i = 0; i < ev_count; i++) { - const event_alias *alias = profile_events + i; - usize idx = counter_map[i]; - u64 val = counters_1[idx] - counters_0[idx]; - printf("%14s: %llu\n", alias->alias, val); - }*/ return performance_counters{ counters_0[counter_map[0]], counters_0[counter_map[2]], counters_0[counter_map[3]], counters_0[counter_map[1]] }; } - template struct event_collector_type { - std::chrono::time_point startClock{}; + template struct event_collector_type : public std::vector { performance_counters diff{}; - event_count count{}; + size_t currentIndex{}; + bool hasEventsVal{}; - BNCH_SWT_ALWAYS_INLINE event_collector_type() : diff(0) { - setup_performance_counters(); - } + BNCH_SWT_INLINE event_collector_type() : diff(0), hasEventsVal{ setup_performance_counters() }, std::vector{ count } {}; - BNCH_SWT_ALWAYS_INLINE bool has_events() { - return setup_performance_counters(); + BNCH_SWT_INLINE bool hasEvents() { + return hasEventsVal; } - template BNCH_SWT_ALWAYS_INLINE event_count start(function_type&& function, arg_types&&... args) { - event_count count{}; - const auto startClock = clock_type::now(); - if (has_events()) { + template BNCH_SWT_INLINE void run(function_type&& function, arg_types&&... args) { + + if (hasEvents()) { diff = get_counters(); } - count.bytesProcessedVal.emplace(std::forward(function)(std::forward(args)...)); + const auto startClock = clock_type::now(); + std::vector::operator[](currentIndex).bytesProcessedVal.emplace(std::forward(function)(std::forward(args)...)); const auto endClock = clock_type::now(); - if (has_events()) { + if (hasEvents()) { performance_counters end = get_counters(); diff = end - diff; - count.cyclesVal.emplace(diff.cycles); - count.instructionsVal.emplace(diff.instructions); - count.branchesVal.emplace(diff.branches); - count.missedBranchesVal.emplace(diff.missedBranches); + std::vector::operator[](currentIndex).cyclesVal.emplace(diff.cycles); + std::vector::operator[](currentIndex).instructionsVal.emplace(diff.instructions); + std::vector::operator[](currentIndex).branchesVal.emplace(diff.branches); + std::vector::operator[](currentIndex).branchMissesVal.emplace(diff.branchMisses); } - count.elapsed = endClock - startClock; - return count; + std::vector::operator[](currentIndex).elapsed = endClock - startClock; + ++currentIndex; + return; } }; + } #endif \ No newline at end of file diff --git a/Include/BnchSwt/Counters/LinuxPerfEvents.hpp b/Include/BnchSwt/Counters/LinuxPerfEvents.hpp index f1fa00d3..6800e752 100644 --- a/Include/BnchSwt/Counters/LinuxPerfEvents.hpp +++ b/Include/BnchSwt/Counters/LinuxPerfEvents.hpp @@ -28,22 +28,16 @@ #if defined(BNCH_SWT_LINUX) - #include #include #include #include - #include #include - #include - #include #include - #include #include +namespace bnch_swt::internal { -namespace bnch_swt { - - __inline__ size_t rdtsc() { + BNCH_SWT_INLINE size_t rdtsc() { #if defined(__x86_64__) uint32_t a, d; __asm__ volatile("rdtsc" : "=a"(a), "=d"(d)); @@ -57,19 +51,19 @@ namespace bnch_swt { #endif } - template class linux_events { + class linux_events { protected: std::vector temp_result_vec{}; std::vector ids{}; perf_event_attr attribs{}; - bool working{ true }; size_t num_events{}; + bool working{}; int32_t fd{}; public: - BNCH_SWT_ALWAYS_INLINE linux_events(std::vector config_vec) { + BNCH_SWT_INLINE explicit linux_events(std::vector config_vec) : working(true) { memset(&attribs, 0, sizeof(attribs)); - attribs.type = TYPE; + attribs.type = PERF_TYPE_HARDWARE; attribs.size = sizeof(attribs); attribs.disabled = 1; attribs.exclude_kernel = 1; @@ -77,11 +71,11 @@ namespace bnch_swt { attribs.sample_period = 0; attribs.read_format = PERF_FORMAT_GROUP | PERF_FORMAT_ID; - const int32_t pid = 0;// the current process - const int32_t cpu = -1;// all CPUs + const int32_t pid = 0; + const int32_t cpu = -1; const unsigned long flags = 0; - int32_t group = -1;// no group + int32_t group = -1; num_events = config_vec.size(); ids.resize(config_vec.size()); uint32_t i = 0; @@ -89,7 +83,7 @@ namespace bnch_swt { attribs.config = config; int32_t _fd = static_cast(syscall(__NR_perf_event_open, &attribs, pid, cpu, group, flags)); if (_fd == -1) { - report_error("perf_event_open"); + reportError("perf_event_open"); } ioctl(_fd, PERF_EVENT_IOC_ID, &ids[i++]); if (group == -1) { @@ -101,89 +95,93 @@ namespace bnch_swt { temp_result_vec.resize(num_events * 2 + 1); } - BNCH_SWT_ALWAYS_INLINE ~linux_events() { + BNCH_SWT_INLINE ~linux_events() { if (fd != -1) { close(fd); } } - BNCH_SWT_ALWAYS_INLINE void start() { + BNCH_SWT_INLINE void run() { if (fd != -1) { if (ioctl(fd, PERF_EVENT_IOC_RESET, PERF_IOC_FLAG_GROUP) == -1) { - report_error("ioctl(PERF_EVENT_IOC_RESET)"); + reportError("ioctl(PERF_EVENT_IOC_RESET)"); } if (ioctl(fd, PERF_EVENT_IOC_ENABLE, PERF_IOC_FLAG_GROUP) == -1) { - report_error("ioctl(PERF_EVENT_IOC_ENABLE)"); + reportError("ioctl(PERF_EVENT_IOC_ENABLE)"); } } } - BNCH_SWT_ALWAYS_INLINE void end(std::vector& results) { + BNCH_SWT_INLINE void end(std::vector& results) { if (fd != -1) { if (ioctl(fd, PERF_EVENT_IOC_DISABLE, PERF_IOC_FLAG_GROUP) == -1) { - report_error("ioctl(PERF_EVENT_IOC_DISABLE)"); + reportError("ioctl(PERF_EVENT_IOC_DISABLE)"); } if (read(fd, temp_result_vec.data(), temp_result_vec.size() * 8) == -1) { - report_error("read"); + reportError("read"); } } - // our actual results are in slots 1,3,5, ... of this structure + for (uint32_t i = 1; i < temp_result_vec.size(); i += 2) { results[i / 2] = temp_result_vec[i]; } for (uint32_t i = 2; i < temp_result_vec.size(); i += 2) { if (ids[i / 2 - 1] != temp_result_vec[i]) { - report_error("event mismatch"); + reportError("event mismatch"); } } } - BNCH_SWT_ALWAYS_INLINE bool is_working() { + bool isWorking() { return working; } protected: - BNCH_SWT_ALWAYS_INLINE void report_error(const std::string&) { + BNCH_SWT_INLINE void reportError(const std::string&) { working = false; } }; - template struct event_collector_type : public linux_events<> { - BNCH_SWT_ALWAYS_INLINE event_collector_type() - : linux_events<>{ std::vector{ PERF_COUNT_HW_CPU_CYCLES, PERF_COUNT_HW_INSTRUCTIONS, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, PERF_COUNT_HW_BRANCH_MISSES } } {}; + template struct event_collector_type : public linux_events, public std::vector { + std::vector results{}; + size_t currentIndex{}; + BNCH_SWT_INLINE event_collector_type() + : linux_events{ std::vector{ PERF_COUNT_HW_CPU_CYCLES, PERF_COUNT_HW_INSTRUCTIONS, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, PERF_COUNT_HW_BRANCH_MISSES, + PERF_COUNT_HW_CACHE_REFERENCES, PERF_COUNT_HW_CACHE_MISSES } }, + std::vector{ count } {}; - BNCH_SWT_ALWAYS_INLINE bool has_events() { - return linux_events<>::is_working(); + BNCH_SWT_INLINE bool hasEvents() { + return linux_events::isWorking(); } - template BNCH_SWT_ALWAYS_INLINE event_count start(function_type&& function, arg_types&&... args) { - event_count count{}; - std::vector results{}; - if (has_events()) { - linux_events<>::start(); + template BNCH_SWT_INLINE void run(function_type&& function, arg_types&&... args) { + if (hasEvents()) { + linux_events::run(); } - const auto startClock = clock_type::now(); volatile uint64_t cycleStart = rdtsc(); - count.bytesProcessedVal.emplace(std::forward(function)(std::forward(args)...)); - volatile uint64_t cycleEnd = rdtsc(); + const auto startClock = clock_type::now(); + std::vector::operator[](currentIndex).bytesProcessedVal.emplace(std::forward(function)(std::forward(args)...)); const auto endClock = clock_type::now(); - count.cyclesVal.emplace(cycleEnd - cycleStart); - count.elapsed = endClock - startClock; - if (has_events()) { - if (results.size() != linux_events<>::temp_result_vec.size()) { - results.resize(linux_events<>::temp_result_vec.size()); + volatile uint64_t cycleEnd = rdtsc(); + std::vector::operator[](currentIndex).cyclesVal.emplace(cycleEnd - cycleStart); + std::vector::operator[](currentIndex).elapsed = endClock - startClock; + if (hasEvents()) { + if (results.size() != linux_events::temp_result_vec.size()) { + results.resize(linux_events::temp_result_vec.size()); } - linux_events<>::end(results); - count.instructionsVal.emplace(results[1]); - count.branchesVal.emplace(results[2]); - count.missedBranchesVal.emplace(results[3]); + linux_events::end(results); + std::vector::operator[](currentIndex).instructionsVal.emplace(results[1]); + std::vector::operator[](currentIndex).branchesVal.emplace(results[2]); + std::vector::operator[](currentIndex).branchMissesVal.emplace(results[3]); + std::vector::operator[](currentIndex).cacheReferencesVal.emplace(results[4]); + std::vector::operator[](currentIndex).cacheMissesVal.emplace(results[5]); } - return count; + ++currentIndex; + return; } }; - } #endif \ No newline at end of file diff --git a/Include/BnchSwt/Counters/WindowsPerfEvents.hpp b/Include/BnchSwt/Counters/WindowsPerfEvents.hpp index e4610ebe..d5a71c65 100644 --- a/Include/BnchSwt/Counters/WindowsPerfEvents.hpp +++ b/Include/BnchSwt/Counters/WindowsPerfEvents.hpp @@ -27,30 +27,27 @@ #if defined(BNCH_SWT_WIN) - #include // for errno - #include // for memset - #include - - #include + #include #include -namespace bnch_swt { +namespace bnch_swt::internal { + + template struct event_collector_type : public std::vector { + size_t currentIndex{}; - BNCH_SWT_ALWAYS_INLINE size_t rdtsc() { - return __rdtsc(); - } + BNCH_SWT_INLINE event_collector_type() : std::vector{ count } {}; - template struct event_collector_type { - template BNCH_SWT_ALWAYS_INLINE event_count start(function_type&& function, arg_types&&... args) { - event_count count{}; + template BNCH_SWT_INLINE void run(function_type&& function, arg_types&&... args) { + volatile uint64_t cycleStart = __rdtsc(); const auto startClock = clock_type::now(); - volatile uint64_t cycleStart = rdtsc(); - count.bytesProcessedVal.emplace(std::forward(function)(std::forward(args)...)); - volatile uint64_t cycleEnd = rdtsc(); + std::vector::operator[](currentIndex) + .bytesProcessedVal.emplace(static_cast(std::forward(function)(std::forward(args)...))); const auto endClock = clock_type::now(); - count.cyclesVal.emplace(cycleEnd - cycleStart); - count.elapsed = endClock - startClock; - return count; + volatile uint64_t cycleEnd = __rdtsc(); + std::vector::operator[](currentIndex).cyclesVal.emplace(cycleEnd - cycleStart); + std::vector::operator[](currentIndex).elapsed = endClock - startClock; + ++currentIndex; + return; } }; diff --git a/Include/BnchSwt/DoNotOptimize.hpp b/Include/BnchSwt/DoNotOptimize.hpp index 4faf0620..13ab67fd 100644 --- a/Include/BnchSwt/DoNotOptimize.hpp +++ b/Include/BnchSwt/DoNotOptimize.hpp @@ -25,13 +25,13 @@ #include -namespace bnch_swt { +namespace bnch_swt::internal { template concept invocable = std::is_invocable_v, arg_types...>; template - concept not_invocable = !std::is_invocable_v, arg_types...>; + concept not_invocable = !invocable; template concept invocable_void = invocable && std::is_void_v>; @@ -39,34 +39,39 @@ namespace bnch_swt { template concept invocable_not_void = invocable && !std::is_void_v>; - static void const volatile* volatile globalForceEscapePointer; - - void useCharPointer(char const volatile* const v) { - globalForceEscapePointer = reinterpret_cast(v); - } - #if defined(BNCH_SWT_MSVC) - #define doNotOptimize(value) \ - useCharPointer(&reinterpret_cast(value)); \ - _ReadWriteBarrier(); -#elif defined(BNCH_SWT_CLANG) - #define doNotOptimize(value) asm volatile("" : "+r,m"(value) : : "memory"); + #pragma optimize("", off) + BNCH_SWT_INLINE void doNotOptimize(const void* value) { + ( void )value; + }; + #pragma optimize("", on) #else - #define doNotOptimize(value) asm volatile("" : "+m,r"(value) : : "memory"); + BNCH_SWT_INLINE void doNotOptimize(const void* value) { + #if defined(BNCH_SWT_CLANG) + asm volatile("" : "+r,m"(value) : : "memory"); + #elif defined(BNCH_SWT_GNUCXX) + asm volatile("" : "+m,r"(value) : : "memory"); + #endif + } #endif +} + +namespace bnch_swt { - template BNCH_SWT_ALWAYS_INLINE void doNotOptimizeAway(value_type&& value) { + template BNCH_SWT_INLINE void doNotOptimizeAway(value_type&& value) { auto* valuePtr = &value; - doNotOptimize(valuePtr); + internal::doNotOptimize(valuePtr); } - template BNCH_SWT_ALWAYS_INLINE void doNotOptimizeAway(function_type&& value, arg_types&&... args) { + template BNCH_SWT_INLINE void doNotOptimizeAway(function_type&& value, arg_types&&... args) { std::forward(value)(std::forward(args)...); - doNotOptimize(value); + internal::doNotOptimize(value); } - template BNCH_SWT_ALWAYS_INLINE void doNotOptimizeAway(function_type&& value, arg_types&&... args) { + template BNCH_SWT_INLINE auto doNotOptimizeAway(function_type&& value, arg_types&&... args) { auto resultVal = std::forward(value)(std::forward(args)...); - doNotOptimize(&resultVal); + internal::doNotOptimize(&resultVal); + return resultVal; } + } \ No newline at end of file diff --git a/Include/BnchSwt/EventCounter.hpp b/Include/BnchSwt/EventCounter.hpp index 19d94951..e6e587d6 100644 --- a/Include/BnchSwt/EventCounter.hpp +++ b/Include/BnchSwt/EventCounter.hpp @@ -24,35 +24,32 @@ /// Dec 6, 2024 #pragma once -#if !defined(_MSC_VER) - #include -#endif - -#include - -#include -#include -#include -#include -#include -#include - +#include #include #include -#include +#include -namespace bnch_swt { +namespace bnch_swt::internal { struct event_count { - template friend struct event_collector_type; + template friend struct event_collector_type; - BNCH_SWT_ALWAYS_INLINE event_count() noexcept = default; + BNCH_SWT_INLINE event_count() noexcept = default; - BNCH_SWT_ALWAYS_INLINE double elapsedNs() const noexcept { + BNCH_SWT_INLINE double elapsedNs() const noexcept { return std::chrono::duration(elapsed).count(); } - BNCH_SWT_ALWAYS_INLINE bool cycles(double& cyclesNew) const { + BNCH_SWT_INLINE bool bytesProcessed(uint64_t& bytesProcessedNew) const noexcept { + if (bytesProcessedVal.has_value()) { + bytesProcessedNew = bytesProcessedVal.value(); + return true; + } else { + return false; + } + } + + BNCH_SWT_INLINE bool cycles(double& cyclesNew) const { if (cyclesVal.has_value()) { cyclesNew = static_cast(cyclesVal.value()); return true; @@ -61,7 +58,7 @@ namespace bnch_swt { } } - BNCH_SWT_ALWAYS_INLINE bool instructions(double& instructionsNew) const noexcept { + BNCH_SWT_INLINE bool instructions(double& instructionsNew) const noexcept { if (instructionsVal.has_value()) { instructionsNew = static_cast(instructionsVal.value()); return true; @@ -70,7 +67,7 @@ namespace bnch_swt { } } - BNCH_SWT_ALWAYS_INLINE bool branches(double& branchesNew) const noexcept { + BNCH_SWT_INLINE bool branches(double& branchesNew) const noexcept { if (branchesVal.has_value()) { branchesNew = static_cast(branchesVal.value()); return true; @@ -79,86 +76,44 @@ namespace bnch_swt { } } - BNCH_SWT_ALWAYS_INLINE bool missedBranches(double& missedBranchesNew) const noexcept { - if (missedBranchesVal.has_value()) { - missedBranchesNew = static_cast(missedBranchesVal.value()); + BNCH_SWT_INLINE bool branchMisses(double& branchMissesNew) const noexcept { + if (branchMissesVal.has_value()) { + branchMissesNew = static_cast(branchMissesVal.value()); return true; } else { return false; } } - BNCH_SWT_ALWAYS_INLINE bool bytesProcessed(double& bytesProcessedNew) const noexcept { - if (bytesProcessedVal.has_value()) { - bytesProcessedNew = static_cast(bytesProcessedVal.value()); + BNCH_SWT_INLINE bool cacheMisses(double& cacheMissesNew) const noexcept { + if (cacheMissesVal.has_value()) { + cacheMissesNew = static_cast(cacheMissesVal.value()); return true; } else { return false; } } - BNCH_SWT_ALWAYS_INLINE event_count& operator=(const event_count& other) noexcept { - if (other.instructionsVal.has_value()) { - instructionsVal.emplace(other.instructionsVal.value()); - } - if (other.bytesProcessedVal.has_value()) { - bytesProcessedVal.emplace(other.bytesProcessedVal.value()); - } - if (other.missedBranchesVal.has_value()) { - missedBranchesVal.emplace(other.missedBranchesVal.value()); - } - if (other.missedBranchesVal.has_value()) { - missedBranchesVal.emplace(other.missedBranchesVal.value()); - } - if (other.branchesVal.has_value()) { - branchesVal.emplace(other.branchesVal.value()); - } - if (other.cyclesVal.has_value()) { - cyclesVal.emplace(other.cyclesVal.value()); - } - this->elapsed = other.elapsed; - return *this; - } - - BNCH_SWT_ALWAYS_INLINE event_count(const event_count& other) noexcept { - *this = other; - } - - BNCH_SWT_ALWAYS_INLINE event_count operator+(const event_count& other) const noexcept { - event_count countNew{}; - if (instructionsVal.has_value() && other.instructionsVal.has_value()) { - countNew.instructionsVal.emplace(instructionsVal.value() + other.instructionsVal.value()); - } - if (bytesProcessedVal.has_value() && other.bytesProcessedVal.has_value()) { - countNew.bytesProcessedVal.emplace(bytesProcessedVal.value() + other.bytesProcessedVal.value()); - } - if (branchesVal.has_value() && other.branchesVal.has_value()) { - countNew.branchesVal.emplace(branchesVal.value() + other.branchesVal.value()); - } - if (missedBranchesVal.has_value() && other.missedBranchesVal.has_value()) { - countNew.missedBranchesVal.emplace(missedBranchesVal.value() + other.missedBranchesVal.value()); - } - if (cyclesVal.has_value() && other.cyclesVal.has_value()) { - countNew.cyclesVal.emplace(cyclesVal.value() + other.cyclesVal.value()); + BNCH_SWT_INLINE bool cacheReferences(double& cacheReferencesNew) const noexcept { + if (cacheReferencesVal.has_value()) { + cacheReferencesNew = static_cast(cacheReferencesVal.value()); + return true; + } else { + return false; } - countNew.elapsed = elapsed + other.elapsed; - return countNew; - } - - BNCH_SWT_ALWAYS_INLINE event_count& operator+=(const event_count& other) { - *this = *this + other; - return *this; } protected: - std::optional missedBranchesVal{}; + std::optional cacheReferencesVal{}; std::optional bytesProcessedVal{}; + std::optional branchMissesVal{}; std::optional instructionsVal{}; + std::optional cacheMissesVal{}; std::chrono::duration elapsed{}; std::optional branchesVal{}; std::optional cyclesVal{}; }; - using event_collector = event_collector_type; + template using event_collector = event_collector_type; } diff --git a/Include/BnchSwt/FileLoader.hpp b/Include/BnchSwt/FileLoader.hpp new file mode 100644 index 00000000..24cd2945 --- /dev/null +++ b/Include/BnchSwt/FileLoader.hpp @@ -0,0 +1,71 @@ +/* + MIT License + + Copyright (c) 2024 RealTimeChris + + Permission is hereby granted, free of charge, to any person obtaining a copy of this + software and associated documentation files (the "Software"), to deal in the Software + without restriction, including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE + FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ +/// https://github.com/RealTimeChris/benchmarksuite +/// Dec 6, 2024 +#pragma once + +#include +#include +#include +#include + +namespace bnch_swt { + + class file_loader { + public: + constexpr file_loader(){}; + + static std::string loadFile(const std::string& filePath) { + std::string directory{ filePath.substr(0, filePath.find_last_of("/") + 1) }; + if (!std::filesystem::exists(directory)) { + std::filesystem::create_directories(directory); + } + + if (!std::filesystem::exists(static_cast(filePath))) { + std::ofstream createFile{ filePath.data() }; + createFile.close(); + } + std::ifstream theStream{ filePath.data(), std::ios::binary | std::ios::in }; + std::stringstream inputStream{}; + inputStream << theStream.rdbuf(); + theStream.close(); + return inputStream.str(); + } + + static void saveFile(const std::string& fileToSave, const std::string& filePath, bool retry = true) { + std::ofstream theStream{ filePath.data(), std::ios::binary | std::ios::out | std::ios::trunc }; + theStream.write(fileToSave.data(), static_cast(fileToSave.size())); + if (theStream.is_open()) { + std::cout << "File succesfully written to: " << filePath << std::endl; + } else { + std::string directory{ filePath.substr(0, filePath.find_last_of("/") + 1) }; + if (!std::filesystem::exists(directory) && retry) { + std::filesystem::create_directories(directory); + return saveFile(fileToSave, filePath, false); + } + std::cerr << "File failed to be written to: " << filePath << std::endl; + } + theStream.close(); + } + }; + +} diff --git a/Include/BnchSwt/Metrics.hpp b/Include/BnchSwt/Metrics.hpp new file mode 100644 index 00000000..83af3662 --- /dev/null +++ b/Include/BnchSwt/Metrics.hpp @@ -0,0 +1,183 @@ +/* + MIT License + + Copyright (c) 2024 RealTimeChris + + Permission is hereby granted, free of charge, to any person obtaining a copy of this + software and associated documentation files (the "Software"), to deal in the Software + without restriction, including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE + FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ +/// https://github.com/RealTimeChris/BenchmarkSuite +#pragma once + +#include +#include +#include + +namespace bnch_swt { + + struct performance_metrics { + double throughputPercentageDeviation{ std::numeric_limits::max() }; + std::optional cacheReferencesPerExecution{}; + std::optional measuredIterationCount{}; + std::optional instructionsPerExecution{}; + std::optional branchMissesPerExecution{}; + std::optional cacheMissesPerExecution{}; + std::optional totalIterationCount{}; + std::optional instructionsPerCycle{}; + std::optional branchesPerExecution{}; + std::optional instructionsPerByte{}; + std::optional cyclesPerExecution{}; + std::optional cyclesPerByte{}; + std::optional frequencyGHz{}; + double throughputMbPerSec{}; + uint64_t bytesProcessed{}; + std::string name{}; + double timeInNs{}; + + BNCH_SWT_INLINE bool operator>(const performance_metrics& other) const { + return throughputMbPerSec > other.throughputMbPerSec; + } + }; +} + +namespace bnch_swt::internal { + + BNCH_SWT_INLINE double calculateThroughputMBps(double nanoseconds, double bytesProcessed) { + constexpr double bytesToMB = 1.0 / 1048576.0; + constexpr double nsToSeconds = 1.0 / 1000000000.0; + return (bytesProcessed * bytesToMB) / (nanoseconds * nsToSeconds); + } + + template BNCH_SWT_INLINE static performance_metrics collectMetrics(std::span&& eventsNewer, size_t totalIterationCount) { + static constexpr string_literal benchmarkName{ benchmarkNameNew }; + performance_metrics metrics{}; + metrics.name = benchmarkName.operator std::string(); + metrics.measuredIterationCount.emplace(eventsNewer.size()); + metrics.totalIterationCount.emplace(totalIterationCount); + double throughPut{}; + double throughPutTotal{}; + double throughPutAvg{}; + double throughPutMin{ std::numeric_limits::max() }; + uint64_t bytesProcessed{}; + uint64_t bytesProcessedTotal{}; + uint64_t bytesProcessedAvg{}; + double ns{}; + double nsTotal{}; + double nsAvg{}; + double cycles{}; + double cyclesTotal{}; + double cyclesAvg{}; + double instructions{}; + double instructionsTotal{}; + double instructionsAvg{}; + double branches{}; + double branchesTotal{}; + double branchesAvg{}; + double branchMisses{}; + double branchMissesTotal{}; + double branchMissesAvg{}; + double cacheReferences{}; + double cacheReferencesTotal{}; + double cacheReferencesAvg{}; + double cacheMisses{}; + double cacheMissesTotal{}; + double cacheMissesAvg{}; + for (const event_count& e: eventsNewer) { + ns = e.elapsedNs(); + nsTotal += ns; + + if (e.bytesProcessed(bytesProcessed)) { + bytesProcessedTotal += bytesProcessed; + throughPut = calculateThroughputMBps(ns, static_cast(bytesProcessed)); + throughPutTotal += throughPut; + throughPutMin = throughPut < throughPutMin ? throughPut : throughPutMin; + } + + if (e.cycles(cycles)) { + cyclesTotal += cycles; + } + + if (e.instructions(instructions)) { + instructionsTotal += instructions; + } + + if (e.branches(branches)) { + branchesTotal += branches; + } + + if (e.branchMisses(branchMisses)) { + branchMissesTotal += branchMisses; + } + + if (e.cacheReferences(cacheReferences)) { + cacheReferencesTotal += cacheReferences; + } + + if (e.cacheMisses(cacheMisses)) { + cacheMissesTotal += cacheMisses; + } + } + if (eventsNewer.size() > 0) { + bytesProcessedAvg = bytesProcessedTotal / eventsNewer.size(); + nsAvg = nsTotal / static_cast(eventsNewer.size()); + throughPutAvg = throughPutTotal / static_cast(eventsNewer.size()); + cyclesAvg = cyclesTotal / static_cast(eventsNewer.size()); + instructionsAvg = instructionsTotal / static_cast(eventsNewer.size()); + branchesAvg = branchesTotal / static_cast(eventsNewer.size()); + branchMissesAvg = branchMissesTotal / static_cast(eventsNewer.size()); + cacheReferencesAvg = cacheReferencesTotal / static_cast(eventsNewer.size()); + cacheMissesAvg = cacheMissesTotal / static_cast(eventsNewer.size()); + metrics.timeInNs = nsAvg; + } else { + return {}; + } + + constexpr double epsilon = 1e-6; + if (std::abs(nsAvg) > epsilon) { + metrics.bytesProcessed = bytesProcessedAvg; + metrics.throughputMbPerSec = throughPutAvg; + metrics.throughputPercentageDeviation = ((throughPutAvg - throughPutMin) * 100.0) / throughPutAvg; + } + if (std::abs(cyclesAvg) > epsilon) { + if (metrics.bytesProcessed > 0) { + metrics.cyclesPerByte.emplace(cyclesAvg / static_cast(metrics.bytesProcessed)); + } + metrics.cyclesPerExecution.emplace(cyclesTotal / static_cast(eventsNewer.size())); + metrics.frequencyGHz.emplace(cyclesAvg / nsAvg); + } + if (std::abs(instructionsAvg) > epsilon) { + if (metrics.bytesProcessed > 0) { + metrics.instructionsPerByte.emplace(instructionsAvg / static_cast(metrics.bytesProcessed)); + } + if (std::abs(cyclesAvg) > epsilon) { + metrics.instructionsPerCycle.emplace(instructionsAvg / cyclesAvg); + } + metrics.instructionsPerExecution.emplace(instructionsTotal / static_cast(eventsNewer.size())); + } + if (std::abs(branchesAvg) > epsilon) { + metrics.branchMissesPerExecution.emplace(branchMissesAvg / static_cast(eventsNewer.size())); + metrics.branchesPerExecution.emplace(branchesAvg / static_cast(eventsNewer.size())); + } + if (std::abs(cacheMissesAvg) > epsilon) { + metrics.cacheMissesPerExecution.emplace(cacheMissesAvg / static_cast(eventsNewer.size())); + } + if (std::abs(cacheReferencesAvg) > epsilon) { + metrics.cacheReferencesPerExecution.emplace(cacheReferencesAvg / static_cast(eventsNewer.size())); + } + return metrics; + } + +} diff --git a/Include/BnchSwt/Printable.hpp b/Include/BnchSwt/Printable.hpp index ff0f04c9..e38e48ca 100644 --- a/Include/BnchSwt/Printable.hpp +++ b/Include/BnchSwt/Printable.hpp @@ -22,318 +22,327 @@ /// https://github.com/RealTimeChris/BenchmarkSuite #pragma once -#include -#include #include +#include #include namespace bnch_swt { - template - concept has_range = requires(std::remove_cvref_t value) { - { value.begin() }; - { value.end() }; - }; - - template - concept map_subscriptable = requires(std::remove_cvref_t value) { - { value[typename std::remove_cvref_t::key_type{}] } -> std::same_as::mapped_type&>; - } || requires(std::remove_cvref_t value) { - { value[typename std::remove_cvref_t::key_type{}] } -> std::same_as::mapped_type&>; - }; - - template - concept vector_subscriptable = requires(std::remove_cvref_t value) { - { value[typename std::remove_cvref_t::size_type{}] } -> std::same_as::const_reference>; - } || requires(std::remove_cvref_t value) { - { value[typename std::remove_cvref_t::size_type{}] } -> std::same_as::reference>; - }; - - template - concept has_size = requires(std::remove_cvref_t value) { - { value.size() } -> std::same_as::size_type>; - }; - - template - concept has_empty = requires(std::remove_cvref_t value) { - { value.empty() } -> std::same_as; - }; - - template - concept variant_t = requires(std::remove_cvref_t var) { - { var.index() } -> std::same_as; - { var.valueless_by_exception() } -> std::same_as; - { std::holds_alternative(var))>(var) } -> std::same_as; - { std::get<0>(var) } -> std::same_as(var))&>; - { std::get_if<0>(&var) } -> std::same_as(var))>*>; - }; - - template - concept has_resize = requires(std::remove_cvref_t value) { value.resize(typename std::remove_cvref_t::size_type{}); }; - - template - concept has_reserve = requires(std::remove_cvref_t value) { value.reserve(typename std::remove_cvref_t::size_type{}); }; - - template - concept has_data = requires(std::remove_cvref_t value) { - { value.data() } -> std::same_as::const_pointer>; - } || requires(std::remove_cvref_t value) { - { value.data() } -> std::same_as::pointer>; - }; - - template - concept stateless = std::is_empty_v>; - - template - concept bool_t = std::same_as, bool> || std::same_as, std::vector::reference> || - std::same_as, std::vector::const_reference>; - - template - concept always_null_t = std::same_as, std::nullptr_t> || std::same_as, std::monostate> || - std::same_as, std::nullopt_t>; - - template - concept pointer_t = - (std::is_pointer_v> || ( std::is_null_pointer_v> && !std::is_array_v> )) && - !always_null_t; - - template - concept floating_point_t = std::floating_point> && (std::numeric_limits>::radix == 2) && - std::numeric_limits>::is_iec559; - - template - concept char_t = std::same_as, char>; - - template - concept has_substr = requires(std::remove_cvref_t value) { - { - value.substr(typename std::remove_cvref_t::size_type{}, typename std::remove_cvref_t::size_type{}) - } -> std::same_as>; - }; - - template - concept has_find = requires(std::remove_cvref_t value) { - { value.find(typename std::remove_cvref_t::value_type{}) } -> std::same_as::size_type>; - } || requires(std::remove_cvref_t value) { - { value.find(typename std::remove_cvref_t::key_type{}) } -> std::same_as::iterator>; - } || requires(std::remove_cvref_t value) { - { value.find(typename std::remove_cvref_t::key_type{}) } -> std::same_as::const_iterator>; - }; - - template - concept string_t = has_substr && has_data && has_size && vector_subscriptable && has_find; - - template - concept string_view_t = - has_substr && has_data && has_size && vector_subscriptable && has_find && !has_resize; - - template - concept map_t = map_subscriptable && has_range && has_size && has_find && has_empty; - - template - concept pair_t = requires(std::remove_cvref_t value) { - typename std::remove_cvref_t::first_type; - typename std::remove_cvref_t::second_type; - }; - - template - concept has_emplace_back = requires(std::remove_cvref_t value) { - { value.emplace_back(typename std::remove_cvref_t::value_type{}) } -> std::same_as::reference>; - }; - - template - concept has_release = requires(std::remove_cvref_t value) { - { value.release() } -> std::same_as::pointer>; - }; - - template - concept has_reset = requires(std::remove_cvref_t value) { - { value.reset() } -> std::same_as; - }; - - template - concept has_get = requires(std::remove_cvref_t value) { - { value.get() } -> std::same_as::element_type*>; - }; - - template - concept copyable = std::copyable>; - - template - concept unique_ptr_t = requires(std::remove_cvref_t value) { - typename std::remove_cvref_t::element_type; - typename std::remove_cvref_t::deleter_type; - } && has_release && has_get; - - template - concept shared_ptr_t = has_reset && has_get && copyable; - - template - concept nullable_t = !string_t && requires(std::remove_cvref_t value) { - bool(value); - { *value }; - }; - - template - concept null_t = nullable_t || always_null_t; - - template constexpr bool hasSizeEqualToZero{ std::tuple_size_v> == 0 }; - - template - concept has_get_template = requires(std::remove_cvref_t value) { - { std::get<0>(value) } -> std::same_as(value))&>; - }; - - template - concept tuple_t = requires(std::remove_cvref_t t) { std::tuple_size>::value; } && - (hasSizeEqualToZero || has_get_template) && !has_data; - - template - concept optional_t = requires(std::remove_cvref_t opt) { - { opt.has_value() } -> std::same_as; - { opt.value() } -> std::same_as::value_type&>; - { *opt } -> std::same_as::value_type&>; - { opt.reset() } -> std::same_as; - { opt.emplace(typename std::remove_cvref_t::value_type{}) } -> std::same_as::value_type&>; - }; - - template - concept enum_t = std::is_enum_v>; - - template - concept vector_t = vector_subscriptable && has_resize && has_emplace_back; - - template - concept raw_array_t = ( std::is_array_v> && !std::is_pointer_v> ) || - (vector_subscriptable && !vector_t && !has_substr && !tuple_t); - - template - concept integer_t = std::integral> && !bool_t && !std::floating_point>; - - template - concept printable = requires(std::remove_cvref_t value) { std::cout << value << std::endl; }; - - template - concept not_printable = !printable; - - template - constexpr void visit(variant_type&& variant, arg_types&&... args) noexcept { - if constexpr (currentIndex < std::variant_size_v>) { - variant_type&& variantNew = std::forward(variant); - if (variantNew.index() == currentIndex) { - function(std::get(std::forward(variantNew)), std::forward(args)...); - return; + namespace internal { + + template + concept has_range = requires(std::remove_cvref_t value) { + { value.begin() }; + { value.end() }; + }; + + template + concept map_subscriptable = requires(std::remove_cvref_t value) { + { value[typename std::remove_cvref_t::key_type{}] } -> std::same_as::mapped_type&>; + } || requires(std::remove_cvref_t value) { + { value[typename std::remove_cvref_t::key_type{}] } -> std::same_as::mapped_type&>; + }; + + template + concept vector_subscriptable = requires(std::remove_cvref_t value) { + { value[typename std::remove_cvref_t::size_type{}] } -> std::same_as::const_reference>; + } || requires(std::remove_cvref_t value) { + { value[typename std::remove_cvref_t::size_type{}] } -> std::same_as::reference>; + }; + + template + concept has_size = requires(std::remove_cvref_t value) { + { value.size() } -> std::same_as::size_type>; + }; + + template + concept has_empty = requires(std::remove_cvref_t value) { + { value.empty() } -> std::same_as; + }; + + template + concept variant_t = requires(std::remove_cvref_t var) { + { var.index() } -> std::same_as; + { var.valueless_by_exception() } -> std::same_as; + { std::holds_alternative(var))>(var) } -> std::same_as; + { std::get<0>(var) } -> std::same_as(var))&>; + { std::get_if<0>(&var) } -> std::same_as(var))>*>; + }; + + template + concept has_resize = requires(std::remove_cvref_t value) { value.resize(typename std::remove_cvref_t::size_type{}); }; + + template + concept has_reserve = requires(std::remove_cvref_t value) { value.reserve(typename std::remove_cvref_t::size_type{}); }; + + template + concept has_data = requires(std::remove_cvref_t value) { + { value.data() } -> std::same_as::const_pointer>; + } || requires(std::remove_cvref_t value) { + { value.data() } -> std::same_as::pointer>; + }; + + template + concept stateless = std::is_empty_v>; + + template + concept bool_t = std::same_as, bool> || std::same_as, std::vector::reference> || + std::same_as, std::vector::const_reference>; + + template + concept always_null_t = std::same_as, std::nullptr_t> || std::same_as, std::monostate> || + std::same_as, std::nullopt_t>; + + template + concept pointer_t = (std::is_pointer_v> || + ( std::is_null_pointer_v> && !std::is_array_v> )) && + !always_null_t; + + template + concept floating_point_t = std::floating_point> && (std::numeric_limits>::radix == 2) && + std::numeric_limits>::is_iec559; + + template + concept char_t = std::same_as, char>; + + template + concept has_substr = requires(std::remove_cvref_t value) { + { + value.substr(typename std::remove_cvref_t::size_type{}, typename std::remove_cvref_t::size_type{}) + } -> std::same_as>; + }; + + template + concept has_find = requires(std::remove_cvref_t value) { + { value.find(typename std::remove_cvref_t::value_type{}) } -> std::same_as::size_type>; + } || requires(std::remove_cvref_t value) { + { value.find(typename std::remove_cvref_t::key_type{}) } -> std::same_as::iterator>; + } || requires(std::remove_cvref_t value) { + { value.find(typename std::remove_cvref_t::key_type{}) } -> std::same_as::const_iterator>; + }; + + template + concept string_t = has_substr && has_data && has_size && vector_subscriptable && has_find; + + template + concept string_view_t = + has_substr && has_data && has_size && vector_subscriptable && has_find && !has_resize; + + template + concept map_t = map_subscriptable && has_range && has_size && has_find && has_empty; + + template + concept pair_t = requires(std::remove_cvref_t value) { + typename std::remove_cvref_t::first_type; + typename std::remove_cvref_t::second_type; + }; + + template + concept has_fill = requires(std::remove_cvref_t value) { + { value.fill(typename std::remove_cvref_t::value_type{}) } -> std::same_as; + }; + + template + concept has_emplace_back = requires(std::remove_cvref_t value) { + { value.emplace_back(typename std::remove_cvref_t::value_type{}) } -> std::same_as::reference>; + }; + + template + concept has_release = requires(std::remove_cvref_t value) { + { value.release() } -> std::same_as::pointer>; + }; + + template + concept has_reset = requires(std::remove_cvref_t value) { + { value.reset() } -> std::same_as; + }; + + template + concept has_get = requires(std::remove_cvref_t value) { + { value.get() } -> std::same_as::element_type*>; + }; + + template + concept copyable = std::copyable>; + + template + concept unique_ptr_t = requires(std::remove_cvref_t value) { + typename std::remove_cvref_t::element_type; + typename std::remove_cvref_t::deleter_type; + } && has_release && has_get; + + template + concept shared_ptr_t = has_reset && has_get && copyable; + + template + concept nullable_t = !string_t && requires(std::remove_cvref_t value) { + bool(value); + { *value }; + }; + + template + concept null_t = nullable_t || always_null_t; + + template constexpr bool hasSizeEqualToZero{ std::tuple_size_v> == 0 }; + + template + concept has_get_template = requires(std::remove_cvref_t value) { + { std::get<0>(value) } -> std::same_as(value))&>; + }; + + template + concept tuple_t = requires(std::remove_cvref_t t) { std::tuple_size>::value; } && + (hasSizeEqualToZero || has_get_template) && !has_data; + + template + concept optional_t = requires(std::remove_cvref_t opt) { + { opt.has_value() } -> std::same_as; + { opt.value() } -> std::same_as::value_type&>; + { *opt } -> std::same_as::value_type&>; + { opt.reset() } -> std::same_as; + { opt.emplace(typename std::remove_cvref_t::value_type{}) } -> std::same_as::value_type&>; + }; + + template + concept enum_t = std::is_enum_v>; + + template + concept vector_t = vector_subscriptable && has_fill; + + template + concept raw_array_t = ( std::is_array_v> && !std::is_pointer_v> ) || + (vector_subscriptable && !vector_t && !has_substr && !tuple_t); + + template + concept integer_t = std::integral> && !bool_t && !std::floating_point>; + + template + concept printable = requires(std::remove_cvref_t value) { std::cout << value << std::endl; }; + + template + concept not_printable = !printable; + + template + constexpr void visit(variant_type&& variant, arg_types&&... args) noexcept { + if constexpr (currentIndex < std::variant_size_v>) { + variant_type&& variantNew = std::forward(variant); + if (variantNew.index() == currentIndex) { + function(std::get(std::forward(variantNew)), std::forward(args)...); + return; + } + visit(std::forward(variantNew), std::forward(args)...); } - visit(std::forward(variantNew), std::forward(args)...); } - } - template void printValue(std::ostream& os, const value_type& value) { - os << value; - } + template void printValue(std::ostream& os, const value_type& value) { + os << value; + } - template void printValue(std::ostream& os, const value_type& value) { - os << std::boolalpha << value; - } + template void printValue(std::ostream& os, const value_type& value) { + os << std::boolalpha << value; + } - template void printValue(std::ostream& os, const value_type& value) { - os << "\"" << value << "\""; - } + template void printValue(std::ostream& os, const value_type& value) { + os << "\"" << value << "\""; + } - template void printValue(std::ostream& os, const value_type& value) { - os << "\"" << value << "\""; - } + template void printValue(std::ostream& os, const value_type& value) { + os << "\"" << value << "\""; + } - template void printValue(std::ostream& os, const value_type& value) { - os << "["; - for (size_t x = 0; x < value.size(); ++x) { - bnch_swt::printValue(os, value[x]); - if (x < value.size() - 1) { - os << ','; + template void printValue(std::ostream& os, const value_type& value) { + os << "["; + for (size_t x = 0; x < value.size(); ++x) { + printValue(os, value[x]); + if (x < value.size() - 1) { + os << ','; + } } + os << "]"; } - os << "]"; - } - template void printValue(std::ostream& os, const value_type& value) { - os << "{"; - size_t index{}; - for (auto iter = value.begin(); iter != value.end(); ++iter) { - bnch_swt::printValue(os, iter->first); - os << ":"; - bnch_swt::printValue(os, iter->second); - if (index < value.size() - 1) { - os << ","; + template void printValue(std::ostream& os, const value_type& value) { + os << "{"; + size_t index{}; + for (auto iter = value.begin(); iter != value.end(); ++iter) { + printValue(os, iter->first); + os << ":"; + printValue(os, iter->second); + if (index < value.size() - 1) { + os << ","; + } + ++index; } - ++index; + os << "}"; } - os << "}"; - } - template void printValue(std::ostream& os, const value_type& value) { - static constexpr auto lambda = [](auto&& valueNew, auto& os) { - bnch_swt::printValue(os, valueNew); - }; - bnch_swt::visit(value, os); - } + template void printValue(std::ostream& os, const value_type& value) { + static constexpr auto lambda = [](auto&& valueNew, auto& osNew) { + printValue(osNew, valueNew); + }; + visit(value, os); + } - template void printValue(std::ostream& os, const value_type& value) { - if (value.has_value()) { - bnch_swt::printValue(os, value.value()); + template void printValue(std::ostream& os, const value_type& value) { + if (value.has_value()) { + printValue(os, value.value()); + } } - } - template void printValue(std::ostream& os, const value_type& value) { - os << "{"; - bnch_swt::printValue(os, std::get<0>(value)); - os << ","; - bnch_swt::printValue(os, std::get<1>(value)); - os << "}"; - } + template void printValue(std::ostream& os, const value_type& value) { + os << "{"; + printValue(os, std::get<0>(value)); + os << ","; + printValue(os, std::get<1>(value)); + os << "}"; + } - template void printValue(std::ostream& os, const value_type& value) { - if constexpr (index < std::tuple_size_v>) { - printValue(os, std::get(value)); - if constexpr (index < std::tuple_size_v> - 1) { - os << ","; + template void printValue(std::ostream& os, const value_type& value) { + if constexpr (index < std::tuple_size_v>) { + printValue(os, std::get(value)); + if constexpr (index < std::tuple_size_v> - 1) { + os << ","; + } + printValue(os, value); } - printValue(os, value); } - } - template void printValue(std::ostream& os, const value_type& value) { - os << "{"; - printValue(os, value); - os << "}"; + template void printValue(std::ostream& os, const value_type& value) { + os << "{"; + printValue(os, value); + os << "}"; + } + } + } -template std::ostream& operator<<(std::ostream& os, const value_type& value) { - bnch_swt::printValue(os, value); +template std::ostream& operator<<(std::ostream& os, const value_type& value) { + bnch_swt::internal::printValue(os, value); return os; } -template std::ostream& operator<<(std::ostream& os, const value_type& value) { - bnch_swt::printValue(os, value); +template std::ostream& operator<<(std::ostream& os, const value_type& value) { + bnch_swt::internal::printValue(os, value); return os; } -template std::ostream& operator<<(std::ostream& os, const value_type& value) { - bnch_swt::printValue(os, value); +template std::ostream& operator<<(std::ostream& os, const value_type& value) { + bnch_swt::internal::printValue(os, value); return os; } -template std::ostream& operator<<(std::ostream& os, const value_type& value) { - bnch_swt::printValue(os, value); +template std::ostream& operator<<(std::ostream& os, const value_type& value) { + bnch_swt::internal::printValue(os, value); return os; } -template std::ostream& operator<<(std::ostream& os, const value_type& value) { - bnch_swt::printValue(os, value); +template std::ostream& operator<<(std::ostream& os, const value_type& value) { + bnch_swt::internal::printValue(os, value); return os; } -template std::ostream& operator<<(std::ostream& os, const value_type& value) { - bnch_swt::printValue(os, value); +template std::ostream& operator<<(std::ostream& os, const value_type& value) { + bnch_swt::internal::printValue(os, value); return os; } diff --git a/Include/BnchSwt/StringLiteral.hpp b/Include/BnchSwt/StringLiteral.hpp index cf7388b0..9a7d1e1b 100644 --- a/Include/BnchSwt/StringLiteral.hpp +++ b/Include/BnchSwt/StringLiteral.hpp @@ -26,7 +26,6 @@ #include #include #include -#include #include namespace bnch_swt { @@ -102,80 +101,71 @@ namespace bnch_swt { return length; } - BNCH_SWT_INLINE operator std::string() const noexcept { - std::string returnValues{ values, length }; + template constexpr operator string_type() const { + string_type returnValues{ values, length }; return returnValues; } - BNCH_SWT_INLINE constexpr std::string_view view() const noexcept { - return std::string_view{ values, length }; - } - - value_type values[sizeVal]{}; + BNCH_SWT_ALIGN char values[sizeVal]{}; }; - template constexpr auto stringLiteralFromView(std::string_view str) noexcept { - bnch_swt::string_literal sl{}; - std::copy_n(str.data(), str.size(), sl.values); - sl[N] = '\0'; - return sl; - } - - template BNCH_SWT_INLINE std::ostream& operator<<(std::ostream& os, const string_literal& input) noexcept { - os << input.view(); - return os; - } + namespace internal { - constexpr size_t countDigits(int64_t number) noexcept { - size_t count = 0; - if (number < 0) { - number *= -1; - ++count; - } - do { - ++count; - number /= 10; - } while (number != 0); - return count; - } + template constexpr auto stringLiteralFromView(string_type str) noexcept { + string_literal sl{}; + std::copy_n(str.data(), str.size(), sl.values); + sl[N] = '\0'; + return sl; + } - template constexpr string_literal toStringLiteral() noexcept { - char buffer[numDigits + 1]{}; - char* ptr = buffer + numDigits; - *ptr = '\0'; - int64_t temp{}; - if constexpr (number < 0) { - temp = number * -1; - *(ptr - numDigits) = '-'; - } else { - temp = number; - } - do { - *--ptr = '0' + (temp % 10); - temp /= 10; - } while (temp != 0); - return string_literal{ buffer }; - } + template BNCH_SWT_INLINE std::ostream& operator<<(std::ostream& os, const string_literal& input) noexcept { + os << input.operator std::string_view(); + return os; + } - template struct make_static { - static constexpr auto value{ valueNew }; - }; + template constexpr uint64_t countDigits(value_type number) noexcept { + uint64_t count = 0; + if (static_cast(number) < 0) { + number *= -1; + ++count; + } + do { + ++count; + number /= 10; + } while (number != 0); + return count; + } + + template constexpr string_literal toStringLiteral() noexcept { + char buffer[numDigits + 1]{}; + char* ptr = buffer + numDigits; + *ptr = '\0'; + int64_t temp{}; + if constexpr (number < 0) { + temp = number * -1; + *(ptr - numDigits) = '-'; + } else { + temp = number; + } + do { + *--ptr = '0' + (temp % 10); + temp /= 10; + } while (temp != 0); + return string_literal{ buffer }; + } - constexpr char toLower(char input) noexcept { - return (input >= 'A' && input <= 'Z') ? (input + 32) : input; - } + constexpr char toLower(char input) noexcept { + return (input >= 'A' && input <= 'Z') ? (input + 32) : input; + } - template constexpr auto toLower(string_literal input) noexcept { - string_literal output{}; - for (size_t x = 0; x < size; ++x) { - output[x] = toLower(input[x]); + template constexpr auto toLower(string_literal input) noexcept { + string_literal output{}; + for (size_t x = 0; x < size; ++x) { + output[x] = toLower(input[x]); + } + return output; } - return output; - } - template constexpr std::string_view toStringView() noexcept { - constexpr auto& lit = bnch_swt::make_static()>::value; - return std::string_view{ lit.data(), lit.size() }; } } \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md index 6efb0557..54500d37 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,6 +1,6 @@ # Benchmark Suite -Hello and welcome to Bnch_Swt or "Benchmark Suite". This is a collection of classes/functions for the purpose of benchmarking CPU performance. +Hello and welcome to bnch_swt or "Benchmark Suite". This is a collection of classes/functions for the purpose of benchmarking CPU performance. The following operating systems and compilers are officially supported: @@ -15,3 +15,147 @@ The following operating systems and compilers are officially supported: ![Windows](https://img.shields.io/github/actions/workflow/status/RealTimeChris/BenchmarkSuite/MSVC-Windows.yml?style=plastic&logo=microsoft&logoColor=green&label=Windows&labelColor=pewter&color=blue&branch=main) ![Linux](https://img.shields.io/github/actions/workflow/status/RealTimeChris/BenchmarkSuite/GCC-Ubuntu.yml?style=plastic&logo=linux&logoColor=green&label=Linux&labelColor=pewter&color=blue&branch=main) ![Mac](https://img.shields.io/github/actions/workflow/status/RealTimeChris/BenchmarkSuite/CLANG-MacOS.yml?style=plastic&logo=apple&logoColor=green&label=MacOS&labelColor=pewter&color=blue&branch=main) + +# Quickstart Guide for BenchmarkSuite + +This guide will walk you through setting up and running benchmarks using `BenchmarkSuite`. + +## Table of Contents +- [Installation](#installation) +- [Basic Example](#basic-example) +- [Creating Benchmarks](#creating-benchmarks) +- [Running Benchmarks](#running-benchmarks) +- [Output and Results](#output-and-results) + +## Installation +To use `BenchmarkSuite`, include the necessary header files in your project. Ensure you have a C++23 (or later) compliant compiler. + +```cpp +#include +#include +#include +#include +``` + +## Basic Example +The following example demonstrates how to set up and run a benchmark comparing two integer-to-string conversion functions: + +```cpp +template +BNCH_SWT_INLINE void testFunction() { + std::vector testValues{ generateRandomIntegers(count, sizeof(value_type) == 4 ? 10 : 20) }; + std::vector testValues00; + std::vector testValues01(count); + + for (size_t x = 0; x < count; ++x) { + testValues00.emplace_back(std::to_string(testValues[x])); + } + + bnch_swt::benchmark_stage<"old-vs-new-i-to-str" + testName>::template runBenchmark<"glz::to_chars", "CYAN">([&] { + size_t bytesProcessed = 0; + char newerString[30]{}; + for (size_t x = 0; x < count; ++x) { + std::memset(newerString, '\0', sizeof(newerString)); + auto newPtr = to_chars(newerString, testValues[x]); + bytesProcessed += testValues00[x].size(); + testValues01[x] = std::string{newerString, static_cast(newPtr - newerString)}; + } + bnch_swt::doNotOptimizeAway(bytesProcessed); + return bytesProcessed; + }); + + bnch_swt::benchmark_stage<"old-vs-new-i-to-str" + testName>::template runBenchmark<"jsonifier_internal::toChars", "CYAN">([&] { + size_t bytesProcessed = 0; + char newerString[30]{}; + for (size_t x = 0; x < count; ++x) { + std::memset(newerString, '\0', sizeof(newerString)); + auto newPtr = jsonifier_internal::toChars(newerString, testValues[x]); + bytesProcessed += testValues00[x].size(); + testValues01[x] = std::string{newerString, static_cast(newPtr - newerString)}; + } + bnch_swt::doNotOptimizeAway(bytesProcessed); + return bytesProcessed; + }); + + bnch_swt::benchmark_stage<"old-vs-new-i-to-str" + testName>::printResults(true, false); +} + +int main() { + testFunction<512, uint64_t, "-uint64">(); + testFunction<512, int64_t, "-int64">(); + return 0; +} +``` + +## Creating Benchmarks +To create a benchmark: +1. Generate or initialize test data. +2. Use `bnch_swt::benchmark_stage` to define a benchmark. By setting the name of the `bnch_swt::benchmark_stage` using a string literal, you are instantiating a single "stage" within which to execute different benchmarks. +3. Implement test functions with lambdas capturing your benchmark logic. + +### Benchmark Stage +The `benchmark_stage` structure orchestrates each test: + +### Methods +- `runBenchmark()`: Executes a given lambda function, measuring performance. By setting the name of the benchmark 'run' using a string literal, you are instantiating a single benchmark "entity" or "library" to have its data collected and compared, within the given benchmark stage. +- `printResults()`: Displays detailed performance metrics and comparisons. + +### Example Benchmark Definitions +- **`runBenchmark`**: Executes a lambda function and tracks performance. + - `"glz::to_chars"`: A label for the function being benchmarked. + - `"jsonifier_internal::toChars"`: An alternative implementation to compare. + +### Avoiding Compiler Optimizations +Use `bnch_swt::doNotOptimizeAway` to prevent the compiler from optimizing away results. + +## Running Benchmarks +Compile and run your program: + +## Output and Results +```c +Performance Metrics for: int-to-string-comparisons-1 +Metrics for: jsonifier::internal::toChars +Total Iterations to Stabilize : 394 +Measured Iterations : 20 +Bytes Processed : 512.00 +Nanoseconds per Execution : 5785.25 +Frequency (GHz) : 4.83 +Throughput (MB/s) : 84.58 +Throughput Percentage Deviation (+/-%) : 8.36 +Cycles per Execution : 27921.20 +Cycles per Byte : 54.53 +Instructions per Execution : 52026.00 +Instructions per Cycle : 1.86 +Instructions per Byte : 101.61 +Branches per Execution : 361.45 +Branch Misses per Execution : 0.73 +Cache References per Execution : 97.03 +Cache Misses per Execution : 74.68 +---------------------------------------- +Metrics for: glz::to_chars +Total Iterations to Stabilize : 421 +Measured Iterations : 20 +Bytes Processed : 512.00 +Nanoseconds per Execution : 6480.30 +Frequency (GHz) : 4.68 +Throughput (MB/s) : 75.95 +Throughput Percentage Deviation (+/-%) : 17.58 +Cycles per Execution : 30314.40 +Cycles per Byte : 59.21 +Instructions per Execution : 51513.00 +Instructions per Cycle : 1.70 +Instructions per Byte : 100.61 +Branches per Execution : 438.25 +Branch Misses per Execution : 0.73 +Cache References per Execution : 95.93 +Cache Misses per Execution : 73.59 +---------------------------------------- +Library jsonifier::internal::toChars, is faster than library: glz::to_chars, by roughly: 11.36%. +``` + +This structured output helps you quickly identify which implementation is faster or more efficient. + +--- + +Now you’re ready to start benchmarking with **BenchmarkSuite**! +