From ec2c3128bddc1602095d0c809128c06e5ee0e929 Mon Sep 17 00:00:00 2001 From: Partouf Date: Wed, 21 Aug 2019 01:26:16 +0200 Subject: [PATCH] unittests for mapfile reading --- lib/map-file-delphi.js | 145 ++++++++ test/map-file-tests.js | 272 +++++++++++++++ test/maps/minimal-delphi.map | 66 ++++ test/maps/minimal-vs15.map | 371 ++++++++++++++++++++ test/maps/squareprintfstaticlib.asm | Bin 0 -> 621986 bytes test/maps/squareprintfstaticlib.cpp | 16 + test/maps/squareprintfstaticlib.map | 523 ++++++++++++++++++++++++++++ test/pe32-tests.js | 37 ++ 8 files changed, 1430 insertions(+) create mode 100644 lib/map-file-delphi.js create mode 100644 test/map-file-tests.js create mode 100644 test/maps/minimal-delphi.map create mode 100644 test/maps/minimal-vs15.map create mode 100644 test/maps/squareprintfstaticlib.asm create mode 100644 test/maps/squareprintfstaticlib.cpp create mode 100644 test/maps/squareprintfstaticlib.map create mode 100644 test/pe32-tests.js diff --git a/lib/map-file-delphi.js b/lib/map-file-delphi.js new file mode 100644 index 000000000..9d4d82c8a --- /dev/null +++ b/lib/map-file-delphi.js @@ -0,0 +1,145 @@ +// Copyright (c) 2017, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +"use strict"; + +const MapFileReader = require("./map-file").MapFileReader; + +class MapFileReaderDelphi extends MapFileReader { + /** + * constructor + * @param {string} mapFilename + */ + constructor(mapFilename) { + super(mapFilename); + + this.regexDelphiCodeSegmentOffset = /^\s([0-9a-f]*):([0-9a-f]*)\s*([0-9a-f]*)H\s*(\.[a-z$]*)\s*([a-z]*)$/i; + this.regexDelphiCodeSegment = /^\s([0-9a-f]*):([0-9a-f]*)\s*([0-9a-f]*)\s*C=CODE\s*S=.text\s*G=.*M=([\w\d.]*)\s.*/i; + this.regexDelphiICodeSegment = /^\s([0-9a-f]*):([0-9a-f]*)\s*([0-9a-f]*)\s*C=ICODE\s*S=.itext\s*G=.*M=([\w\d.]*)\s.*/i; + this.regexDelphiNames = /^\s([0-9a-f]*):([0-9a-f]*)\s*([a-z0-9_@$.<>{}]*)$/i; + this.regexDelphiLineNumbersStart = /Line numbers for (.*)\(.*\) segment \.text/i; + this.regexDelphiLineNumber = /^([0-9]*)\s([0-9a-f]*):([0-9a-f]*)/i; + this.regexDelphiLineNumbersStartIText = /Line numbers for (.*)\(.*\) segment \.itext/i; + } + + /** + * Tries to match the given line to code segment information + * Matches in order: + * 1. segment offset info + * 2. code segment delphi map + * 3. icode segment delphi map + * 4. code segment vs map + * @param {string} line + */ + tryReadingCodeSegmentInfo(line) { + let codesegmentObject = false; + + let matches = line.match(this.regexDelphiCodeSegmentOffset); + if (matches && !matches[4].includes('$') && (parseInt(matches[2], 16) >= this.preferredLoadAddress)) { + const addressWithOffset = parseInt(matches[2], 16); + this.segmentOffsets.push({ + segment: matches[1], + addressInt: addressWithOffset, + address: addressWithOffset.toString(16), + segmentLength: parseInt(matches[3], 16) + }); + } else { + matches = line.match(this.regexDelphiCodeSegment); + if (matches) { + codesegmentObject = this.addressToObject(matches[1], matches[2]); + codesegmentObject.id = this.segments.length + 1; + codesegmentObject.segmentLength = parseInt(matches[3], 16); + codesegmentObject.unitName = matches[4]; + + this.segments.push(codesegmentObject); + } else { + matches = line.match(this.regexDelphiICodeSegment); + if (matches) { + codesegmentObject = this.addressToObject(matches[1], matches[2]); + codesegmentObject.id = this.isegments.length + 1; + codesegmentObject.segmentLength = parseInt(matches[3], 16); + codesegmentObject.unitName = matches[4]; + + this.isegments.push(codesegmentObject); + } + } + } + } + + /** + * Try to match information about the address where a symbol is + * @param {string} line + */ + tryReadingNamedAddress(line) { + let symbolObject = false; + + const matches = line.match(this.regexDelphiNames); + if (matches) { + if (!this.getSymbolInfoByName(matches[3])) { + symbolObject = this.addressToObject(matches[1], matches[2]); + symbolObject.displayName = matches[3]; + + this.namedAddresses.push(symbolObject); + } + } + } + + /** + * + * @param {string} line + */ + isStartOfLineNumbers(line) { + const matches = line.match(this.regexDelphiLineNumbersStart); + if (matches) { + return true; + } + + return false; + } + + /** + * Retreives line number references from supplied Map line + * @param {string} line + * @returns {boolean} + */ + tryReadingLineNumbers(line) { + let hasLineNumbers = false; + + const references = line.split(" "); // 4 spaces + for (let refIdx = 0; refIdx < references.length; refIdx++) { + const matches = references[refIdx].match(this.regexDelphiLineNumber); + if (matches) { + const lineObject = this.addressToObject(matches[2], matches[3]); + lineObject.lineNumber = parseInt(matches[1], 10); + + this.lineNumbers.push(lineObject); + + hasLineNumbers = true; + } + } + + return hasLineNumbers; + } +} + +exports.MapFileReader = MapFileReaderDelphi; diff --git a/test/map-file-tests.js b/test/map-file-tests.js new file mode 100644 index 000000000..404467490 --- /dev/null +++ b/test/map-file-tests.js @@ -0,0 +1,272 @@ +// Copyright (c) 2017, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +"use strict"; + +const chai = require('chai'), + should = chai.should(), + assert = chai.assert, + VSMapFileReader = require('../lib/map-file-vs').MapFileReader, + DelphiMapFileReader = require('../lib/map-file-delphi').MapFileReader; + +describe('Map setup', function () { + it('VS-map preferred load address', function () { + const reader = new VSMapFileReader(); + reader.preferredLoadAddress.should.equal(0x400000, "default load address"); + + reader.tryReadingPreferredAddress(" Preferred load address is 00400000"); + reader.preferredLoadAddress.should.equal(0x400000); + + reader.tryReadingPreferredAddress(" Preferred load address is 00410000"); + reader.preferredLoadAddress.should.equal(0x410000); + }); +}); + +describe('Code Segments', function () { + it('One normal Delphi-Map segment', function () { + const reader = new DelphiMapFileReader(); + reader.tryReadingCodeSegmentInfo(" 0001:00002838 00000080 C=CODE S=.text G=(none) M=output ACBP=A9"); + reader.segments.length.should.equal(1); + + let info = reader.getSegmentInfoByStartingAddress("0001", 0x2838); + info.unitName.should.equal("output"); + + info = reader.getSegmentInfoByStartingAddress(false, reader.getSegmentOffset("0001") + 0x2838); + info.unitName.should.equal("output"); + + info = reader.getSegmentInfoByStartingAddress("0001", "2838"); + assert(info === false, "Address should not be a Start for any segment"); + + info = reader.getSegmentInfoAddressIsIn("0001", 0x2838 + 0x10); + info.unitName.should.equal("output"); + + info = reader.getSegmentInfoAddressIsIn(false, reader.getSegmentOffset("0001") + 0x2838 + 0x10); + info.unitName.should.equal("output"); + + info = reader.getSegmentInfoAddressIsIn("0001", reader.getSegmentOffset("0001") + 0x2838 + 0x80 + 1); + assert(info === false, "Address should not be in any segment"); + + info = reader.getSegmentInfoByUnitName("output"); + info.unitName.should.equal("output"); + info.addressInt.should.equal(reader.getSegmentOffset("0001") + 0x2838); + }); + + it('Not include this segment', function () { + const reader = new DelphiMapFileReader(); + reader.tryReadingCodeSegmentInfo(" 0002:000000B0 00000023 C=ICODE S=.itext G=(none) M=output ACBP=A9"); + reader.segments.length.should.equal(0); + }); + + it('ICode/IText segments', function () { + const reader = new DelphiMapFileReader(); + reader.tryReadingCodeSegmentInfo(" 0002:000000B0 00000023 C=ICODE S=.itext G=(none) M=output ACBP=A9"); + reader.isegments.length.should.equal(1); + }); + + it('One normal VS-Map segment', function () { + const reader = new VSMapFileReader(); + reader.tryReadingCodeSegmentInfo(" 0001:00002838 00000080H .text$mn CODE"); + reader.segments.length.should.equal(1); + + let info = reader.getSegmentInfoByStartingAddress("0001", 0x2838); + info.addressInt.should.equal(reader.getSegmentOffset("0001") + 0x2838); + + info = reader.getSegmentInfoByStartingAddress(false, 0x403838); + info.addressInt.should.equal(reader.getSegmentOffset("0001") + 0x2838); + + info = reader.getSegmentInfoAddressIsIn(false, reader.getSegmentOffset("0001") + 0x2838 + 0x10); + info.addressInt.should.equal(reader.getSegmentOffset("0001") + 0x2838); + + info = reader.getSegmentInfoAddressIsIn("0001", reader.getSegmentOffset("0001") + 0x2837); + assert(info === false); + }); + + it('Repair VS-Map code segment info', function () { + const reader = new VSMapFileReader(); + reader.tryReadingCodeSegmentInfo(" 0002:00000000 00004c73H .text$mn CODE"); + reader.tryReadingNamedAddress(" 0002:000007f0 _main 004117f0 f ConsoleApplication1.obj"); + + let info = reader.getSegmentInfoByStartingAddress("0002", 0); + info.unitName.should.equal("ConsoleApplication1.obj"); + + reader.getSegmentOffset("0002").should.equal(0x411000); + + info = reader.getSegmentInfoByStartingAddress(false, 0x411000); + info.unitName.should.equal("ConsoleApplication1.obj"); + }); +}); + +describe('Symbol info', function () { + it('Delphi-Map symbol test', function () { + const reader = new DelphiMapFileReader(); + reader.tryReadingNamedAddress(" 0001:00002838 Square"); + reader.namedAddresses.length.should.equal(1); + + let info = reader.getSymbolAt("0001", 0x2838); + assert(info !== false, "Symbol Square should have been returned 1"); + info.displayName.should.equal("Square"); + + info = reader.getSymbolAt(false, reader.getSegmentOffset("0001") + 0x2838); + assert(info !== false, "Symbol Square should have been returned 2"); + info.displayName.should.equal("Square"); + }); + + it('Delphi-Map D2009 symbol test', function () { + const reader = new DelphiMapFileReader(); + reader.tryReadingNamedAddress(" 0001:00002C4C output.MaxArray"); + reader.namedAddresses.length.should.equal(1); + + let info = reader.getSymbolAt("0001", 0x2C4C); + assert(info !== false, "Symbol MaxArray should have been returned"); + info.displayName.should.equal("output.MaxArray"); + + info = reader.getSymbolAt(false, reader.getSegmentOffset("0001") + 0x2C4C); + assert(info !== false, "Symbol MaxArray should have been returned"); + info.displayName.should.equal("output.MaxArray"); + }); + + it('VS-Map symbol test', function () { + const reader = new VSMapFileReader(); + reader.tryReadingNamedAddress(" 0002:000006b0 ??$__vcrt_va_start_verify_argument_type@QBD@@YAXXZ 004116b0 f i ConsoleApplication1.obj"); + reader.namedAddresses.length.should.equal(1); + + let info = reader.getSymbolAt("0002", 0x6b0); + assert(info !== false, "Symbol start_verify_argument should have been returned 1"); + info.displayName.should.equal("??$__vcrt_va_start_verify_argument_type@QBD@@YAXXZ"); + + info = reader.getSymbolAt(false, 0x4116b0); + assert(info !== false, "Symbol start_verify_argument should have been returned 2"); + info.displayName.should.equal("??$__vcrt_va_start_verify_argument_type@QBD@@YAXXZ"); + }); + + it('Delphi-Map Duplication prevention', function () { + const reader = new DelphiMapFileReader(); + reader.tryReadingNamedAddress(" 0001:00002838 Square"); + reader.namedAddresses.length.should.equal(1); + + reader.tryReadingNamedAddress(" 0001:00002838 Square"); + reader.namedAddresses.length.should.equal(1); + }); +}); + +describe('Delphi-Map Line number info', function () { + it('No line', function () { + const reader = new DelphiMapFileReader(); + assert(reader.tryReadingLineNumbers("") === false); + }); + + it('One line', function () { + const reader = new DelphiMapFileReader(); + assert(reader.tryReadingLineNumbers(" 17 0001:000028A4") === true); + + let lineInfo = reader.getLineInfoByAddress("0001", 0x28A4); + lineInfo.lineNumber.should.equal(17); + + lineInfo = reader.getLineInfoByAddress(false, reader.getSegmentOffset("0001") + 0x28A4); + lineInfo.lineNumber.should.equal(17); + }); + + it('Multiple lines', function () { + const reader = new DelphiMapFileReader(); + assert(reader.tryReadingLineNumbers(" 12 0001:00002838 13 0001:0000283B 14 0001:00002854 15 0001:00002858") === true); + + let lineInfo = reader.getLineInfoByAddress("0001", 0x2838); + lineInfo.lineNumber.should.equal(12); + + lineInfo = reader.getLineInfoByAddress("0001", 0x2858); + lineInfo.lineNumber.should.equal(15); + + lineInfo = reader.getLineInfoByAddress("0001", 0x2854); + lineInfo.lineNumber.should.equal(14); + + lineInfo = reader.getLineInfoByAddress("0001", 0x283B); + lineInfo.lineNumber.should.equal(13); + }); +}); + +describe('Delphi-Map load test', function () { + it('Minimal map', function () { + const reader = new DelphiMapFileReader("test/maps/minimal-delphi.map"); + reader.run(); + + reader.segments.length.should.equal(4); + reader.lineNumbers.length.should.equal(7); + reader.namedAddresses.length.should.equal(11); + + let info = reader.getSegmentInfoByUnitName("output"); + info.addressInt.should.equal(reader.getSegmentOffset("0001") + 0x2C4C); + + info = reader.getICodeSegmentInfoByUnitName("output"); + info.segment.should.equal("0002"); + info.addressWithoutOffset.should.equal(0xB0); + info.addressInt.should.equal(0x4040B0); + }); +}); + +describe('VS-Map load test', function () { + it('Minimal map', function () { + const reader = new VSMapFileReader("test/maps/minimal-vs15.map"); + reader.run(); + + reader.segments.length.should.equal(1); + reader.getSegmentInfoByUnitName("ConsoleApplication1.obj").addressInt.should.equal(0x411000); + + reader.getSegmentOffset("0001").should.equal(0x401000, "offset 1"); + reader.getSegmentOffset("0002").should.equal(0x411000, "offset 2"); + reader.getSegmentOffset("0003").should.equal(0x416000, "offset 3"); + reader.getSegmentOffset("0004").should.equal(0x419000, "offset 4"); + reader.getSegmentOffset("0005").should.equal(0x41a000, "offset 5"); + reader.getSegmentOffset("0007").should.equal(0x41c000, "offset 7"); + }); +}); + +describe('VS-Map address checking', function () { + it('Normal defined spaces', function () { + const reader = new VSMapFileReader(); + + const mainAddresses = [ + {startAddress: 1, startAddressHex: '00000001', endAddress: 10, endAddressHex: '0000000A'}, + {startAddress: 16, startAddressHex: '00000010', endAddress: 255, endAddressHex: '000000FF'}, + ]; + + reader.isWithinAddressSpace(mainAddresses, 3, 5).should.equal(true); + reader.isWithinAddressSpace(mainAddresses, 10, 5).should.equal(false); + reader.isWithinAddressSpace(mainAddresses, 11, 4).should.equal(false); + reader.isWithinAddressSpace(mainAddresses, 16, 10).should.equal(true); + reader.isWithinAddressSpace(mainAddresses, 32, 10).should.equal(true); + }); + + it('Overlapping regions', function () { + const reader = new VSMapFileReader(); + + const mainAddresses = [ + {startAddress: 1, startAddressHex: '00000001', endAddress: 10, endAddressHex: '0000000A'}, + {startAddress: 16, startAddressHex: '00000010', endAddress: 255, endAddressHex: '000000FF'}, + ]; + + reader.isWithinAddressSpace(mainAddresses, 0, 5).should.equal(true); + reader.isWithinAddressSpace(mainAddresses, 11, 5).should.equal(true); + reader.isWithinAddressSpace(mainAddresses, 11, 6).should.equal(true); + reader.isWithinAddressSpace(mainAddresses, 11, 258).should.equal(true); + }); +}); diff --git a/test/maps/minimal-delphi.map b/test/maps/minimal-delphi.map new file mode 100644 index 000000000..93766f8f0 --- /dev/null +++ b/test/maps/minimal-delphi.map @@ -0,0 +1,66 @@ + + Start Length Name Class + 0001:00401000 00002D08H .text CODE + 0002:00404000 000000F0H .itext ICODE + 0003:00405000 000007ACH .data DATA + 0004:00406000 0000318CH .bss BSS + 0005:00000000 00000008H .tls TLS + + +Detailed map of segments + + 0001:00000000 00002B43 C=CODE S=.text G=(none) M=System ACBP=A9 + 0001:00002B44 00000105 C=CODE S=.text G=(none) M=SysInit ACBP=A9 + 0001:00002C4C 0000006A C=CODE S=.text G=(none) M=output ACBP=A9 + 0001:00002CB8 00000050 C=CODE S=.text G=(none) M=prog ACBP=A9 + 0002:00000000 000000AE C=ICODE S=.itext G=(none) M=System ACBP=A9 + 0002:000000B0 00000020 C=ICODE S=.itext G=(none) M=output ACBP=A9 + 0002:000000D0 0000001D C=ICODE S=.itext G=(none) M=prog ACBP=A9 + + + Address Publics by Name + + 0004:00002B38 output..1 + 0004:00002B3C output.A + 0004:00002E64 output.B + 0001:00002C88 output.Finalization + 0001:00002C4C output.MaxArray + 0002:000000B0 output.output + 0001:00002CB8 prog.Finalization + 0002:000000D0 prog.prog + 0001:00002BBC SysInit.@GetTls + 0001:00002ADC System.Finalization + + + Address Publics by Value + + 0001:000025B4 System.FinalizeUnits + 0001:00002C4C output.MaxArray + 0001:00002C88 output.Finalization + 0001:00002CB8 prog.Finalization + 0002:000000B0 output.output + 0002:000000D0 prog.prog + 0004:00002B38 output..1 + 0004:00002B3C output.A + 0004:00002E64 output.B + + +Line numbers for output(Z:\tmp\compiler-explorer-compiler1171110-10390-19q384o\output.pas) segment .text + + 12 0001:00002C4C 13 0001:00002C57 15 0001:00002C61 16 0001:00002C6B + 17 0001:00002C75 13 0001:00002C7B 18 0001:00002C7E + +Line numbers for output(Z:\tmp\compiler-explorer-compiler1171110-10390-19q384o\output.pas) segment .itext + + 23 0002:000000B0 24 0002:000000B9 25 0002:000000CF + +Line numbers for prog(Z:\tmp\compiler-explorer-compiler1171110-10390-19q384o\prog.dpr) segment .itext + + 1 0002:000000D0 1 0002:000000E8 + +Bound resource files + +C:\users\partouf\Temp\dtfaa23.tmp + + +Program entry point at 0002:000000D0 \ No newline at end of file diff --git a/test/maps/minimal-vs15.map b/test/maps/minimal-vs15.map new file mode 100644 index 000000000..801daf87b --- /dev/null +++ b/test/maps/minimal-vs15.map @@ -0,0 +1,371 @@ + ConsoleApplication1 + + Timestamp is 5a2b9e20 (Sat Dec 9 09:26:08 2017) + + Preferred load address is 00400000 + + Start Length Name Class + 0001:00000000 00010000H .textbss DATA + 0002:00000000 00004c73H .text$mn CODE + 0003:00000000 00000104H .CRT$XCA DATA + 0003:00000104 00000104H .CRT$XCAA DATA + 0003:00000208 00000104H .CRT$XCZ DATA + 0003:0000030c 00000104H .CRT$XIA DATA + 0003:00000410 00000104H .CRT$XIAA DATA + 0003:00000514 00000104H .CRT$XIAC DATA + 0003:00000618 00000104H .CRT$XIZ DATA + 0003:0000071c 00000104H .CRT$XPA DATA + 0003:00000820 00000104H .CRT$XPZ DATA + 0003:00000924 00000104H .CRT$XTA DATA + 0003:00000a28 00000108H .CRT$XTZ DATA + 0003:00000b30 00000b9cH .rdata DATA + 0003:000016cc 0000019cH .rdata$zzzdbg DATA + 0003:00001868 00000104H .rtc$IAA DATA + 0003:0000196c 00000104H .rtc$IMZ DATA + 0003:00001a70 00000104H .rtc$IZZ DATA + 0003:00001b74 00000104H .rtc$TAA DATA + 0003:00001c78 00000104H .rtc$TMZ DATA + 0003:00001d7c 00000104H .rtc$TZZ DATA + 0003:00001e80 0000018dH .xdata$x DATA + 0003:0000200d 00000000H .edata DATA + 0004:00000000 00000138H .data DATA + 0004:00000138 00000454H .bss DATA + 0005:00000000 000001b4H .idata$5 DATA + 0005:000001b4 0000003cH .idata$2 DATA + 0005:000001f0 00000014H .idata$3 DATA + 0005:00000204 000001b4H .idata$4 DATA + 0005:000003b8 000006b2H .idata$6 DATA + 0006:00000000 0000013aH .gfids$y DATA + 0007:00000000 00000104H .00cfg DATA + 0008:00000000 00000170H .rsrc$01 DATA + 0008:00000170 000002ccH .rsrc$02 DATA + + Address Publics by Value Rva+Base Lib:Object + + 0000:00000000 ___guard_longjmp_count 00000000 + 0000:00000000 ___guard_longjmp_table 00000000 + 0000:00000000 ___safe_se_handler_count 00000000 + 0000:00000000 ___guard_fids_count 00000000 + 0000:00000000 ___guard_iat_table 00000000 + 0000:00000000 ___dynamic_value_reloc_table 00000000 + 0000:00000000 ___guard_iat_count 00000000 + 0000:00000000 ___safe_se_handler_table 00000000 + 0000:00000000 ___guard_fids_table 00000000 + 0000:00000100 ___guard_flags 00000100 + 0000:00000000 ___ImageBase 00400000 + 0001:00000000 __enc$textbss$begin 00401000 + 0001:00010000 __enc$textbss$end 00411000 + 0002:000006b0 ??$__vcrt_va_start_verify_argument_type@QBD@@YAXXZ 004116b0 f i ConsoleApplication1.obj + 0002:000006e0 ?Hello@@YAXXZ 004116e0 f ConsoleApplication1.obj + 0002:00000730 ___local_stdio_printf_options 00411730 f i ConsoleApplication1.obj + 0002:00000770 __vfprintf_l 00411770 f i ConsoleApplication1.obj + 0002:000007f0 _main 004117f0 f ConsoleApplication1.obj + 0002:00000840 _printf 00411840 f i ConsoleApplication1.obj + 0002:000008d0 @_RTC_AllocaHelper@12 004118d0 f MSVCRTD:_stack_.obj + 0002:00000910 @_RTC_CheckStackVars2@12 00411910 f MSVCRTD:_stack_.obj + 0002:00000a20 @_RTC_CheckStackVars@8 00411a20 f MSVCRTD:_stack_.obj + 0002:00000a90 __RTC_CheckEsp 00411a90 f MSVCRTD:_stack_.obj + 0002:00000ad0 __CRT_RTC_INIT 00411ad0 f MSVCRTD:_init_.obj + 0002:00000ae0 __CRT_RTC_INITW 00411ae0 f MSVCRTD:_init_.obj + 0002:00000af0 __RTC_InitBase 00411af0 f MSVCRTD:_init_.obj + 0002:00000b30 __RTC_Shutdown 00411b30 f MSVCRTD:_init_.obj + 0002:00000f20 ?configure_argv@__scrt_narrow_argv_policy@@SAHXZ 00411f20 f i MSVCRTD:exe_main.obj + 0002:00000f40 ?get_app_type@__scrt_main_policy@@SA?AW4_crt_app_type@@XZ 00411f40 f i MSVCRTD:exe_main.obj + 0002:00000f90 _mainCRTStartup 00411f90 f MSVCRTD:exe_main.obj + 0002:00001140 ?_RTC_AllocaFailure@@YAXPAXPAU_RTC_ALLOCA_NODE@@H@Z 00412140 f MSVCRTD:_error_.obj + 0002:000012b0 ?_RTC_Failure@@YAXPAXH@Z 004122b0 f MSVCRTD:_error_.obj + 0002:00001320 ?_RTC_StackFailure@@YAXPAXPBD@Z 00412320 f MSVCRTD:_error_.obj + 0002:000017a0 __RTC_UninitUse 004127a0 f MSVCRTD:_error_.obj + 0002:000018d0 __vsprintf_s_l 004128d0 f i MSVCRTD:_error_.obj + 0002:00001910 _sprintf_s 00412910 f i MSVCRTD:_error_.obj + 0002:00001940 ?_RTC_GetErrorFunc@@YAP6AHHPBDH00ZZPBX@Z 00412940 f MSVCRTD:_userapi_.obj + 0002:00001950 ?_RTC_GetErrorFuncW@@YAP6AHHPB_WH00ZZPBX@Z 00412950 f MSVCRTD:_userapi_.obj + 0002:00001960 __RTC_GetErrDesc 00412960 f MSVCRTD:_userapi_.obj + 0002:00001980 __RTC_NumErrors 00412980 f MSVCRTD:_userapi_.obj + 0002:00001990 __RTC_SetErrorFunc 00412990 f MSVCRTD:_userapi_.obj + 0002:000019c0 __RTC_SetErrorFuncW 004129c0 f MSVCRTD:_userapi_.obj + 0002:000019f0 __RTC_SetErrorType 004129f0 f MSVCRTD:_userapi_.obj + 0002:00001a20 ??$__crt_fast_decode_pointer@PAP6AXXZ@@YAPAP6AXXZQAP6AXXZ@Z 00412a20 f i MSVCRTD:utility.obj + 0002:00001a50 ??$__crt_fast_encode_pointer@PAP6AXXZ@@YAPAP6AXXZQAP6AXXZ@Z 00412a50 f i MSVCRTD:utility.obj + 0002:00001a90 ?__crt_rotate_pointer_value@@YAIIH@Z 00412a90 f i MSVCRTD:utility.obj + 0002:00001be0 _NtCurrentTeb 00412be0 f i MSVCRTD:utility.obj + 0002:00001bf0 ___scrt_acquire_startup_lock 00412bf0 f MSVCRTD:utility.obj + 0002:00001c50 ___scrt_dllmain_after_initialize_c 00412c50 f MSVCRTD:utility.obj + 0002:00001c90 ___scrt_dllmain_before_initialize_c 00412c90 f MSVCRTD:utility.obj + 0002:00001cc0 ___scrt_dllmain_crt_thread_attach 00412cc0 f MSVCRTD:utility.obj + 0002:00001d00 ___scrt_dllmain_crt_thread_detach 00412d00 f MSVCRTD:utility.obj + 0002:00001d20 ___scrt_dllmain_exception_filter 00412d20 f MSVCRTD:utility.obj + 0002:00001d80 ___scrt_dllmain_uninitialize_c 00412d80 f MSVCRTD:utility.obj + 0002:00001dc0 ___scrt_dllmain_uninitialize_critical 00412dc0 f MSVCRTD:utility.obj + 0002:00001de0 ___scrt_initialize_crt 00412de0 f MSVCRTD:utility.obj + 0002:00001e40 ___scrt_initialize_onexit_tables 00412e40 f MSVCRTD:utility.obj + 0002:00001f40 ___scrt_is_nonwritable_in_current_image 00412f40 f MSVCRTD:utility.obj + 0002:000020c0 ___scrt_release_startup_lock 004130c0 f MSVCRTD:utility.obj + 0002:000020f0 ___scrt_uninitialize_crt 004130f0 f MSVCRTD:utility.obj + 0002:00002140 __onexit 00413140 f MSVCRTD:utility.obj + 0002:000021d0 _at_quick_exit 004131d0 f MSVCRTD:utility.obj + 0002:00002230 _atexit 00413230 f MSVCRTD:utility.obj + 0002:00002270 ___security_init_cookie 00413270 f MSVCRTD:gs_support.obj + 0002:00002390 __matherr 00413390 f MSVCRTD:matherr.obj + 0002:000023a0 __get_startup_argv_mode 004133a0 f MSVCRTD:argv_mode.obj + 0002:000023b0 __get_startup_commit_mode 004133b0 f MSVCRTD:commit_mode.obj + 0002:000023c0 __get_startup_file_mode 004133c0 f MSVCRTD:file_mode.obj + 0002:000023d0 __get_startup_new_mode 004133d0 f MSVCRTD:new_mode.obj + 0002:000023e0 __get_startup_thread_locale_mode 004133e0 f MSVCRTD:thread_locale.obj + 0002:000023f0 ?__scrt_initialize_type_info@@YAXXZ 004133f0 f MSVCRTD:tncleanup.obj + 0002:00002410 ?__scrt_uninitialize_type_info@@YAXXZ 00413410 f MSVCRTD:tncleanup.obj + 0002:00002430 __should_initialize_environment 00413430 f MSVCRTD:env_mode.obj + 0002:00002440 __initialize_default_precision 00413440 f MSVCRTD:default_precision.obj + 0002:00002470 __initialize_invalid_parameter_handler 00413470 f MSVCRTD:invalid_parameter_handler.obj + 0002:00002480 __initialize_denormal_control 00413480 f MSVCRTD:denormal_control.obj + 0002:00002490 ___local_stdio_scanf_options 00413490 f i MSVCRTD:default_local_stdio_options.obj + 0002:000024a0 ___scrt_initialize_default_local_stdio_options 004134a0 f MSVCRTD:default_local_stdio_options.obj + 0002:000024f0 ___scrt_is_user_matherr_present 004134f0 f MSVCRTD:matherr_detection.obj + 0002:00002520 ___scrt_get_dyn_tls_init_callback 00413520 f MSVCRTD:dyn_tls_init.obj + 0002:00002530 ___scrt_get_dyn_tls_dtor_callback 00413530 f MSVCRTD:dyn_tls_dtor.obj + 0002:00002540 ___scrt_fastfail 00413540 f MSVCRTD:utility_desktop.obj + 0002:000026d0 ___scrt_get_show_window_mode 004136d0 f MSVCRTD:utility_desktop.obj + 0002:00002720 ___scrt_initialize_winrt 00413720 f MSVCRTD:utility_desktop.obj + 0002:00002730 ___scrt_is_managed_app 00413730 f MSVCRTD:utility_desktop.obj + 0002:000027e0 ___scrt_set_unhandled_exception_filter 004137e0 f MSVCRTD:utility_desktop.obj + 0002:00002800 ___scrt_unhandled_exception_filter@4 00413800 f MSVCRTD:utility_desktop.obj + 0002:00002880 __crt_debugger_hook 00413880 f MSVCRTD:utility_desktop.obj + 0002:000028a0 __RTC_Initialize 004138a0 f MSVCRTD:_initsect_.obj + 0002:000028e0 __RTC_Terminate 004138e0 f MSVCRTD:_initsect_.obj + 0002:00002920 @_guard_check_icall@4 00413920 f i MSVCRTD:checkcfg.obj + 0002:00002940 __except_handler4 00413940 f MSVCRTD:_chandler4gs_.obj + 0002:00002f30 ?_RTC_GetSrcLine@@YAHPAEPA_WKPAH1K@Z 00413f30 f MSVCRTD:_pdblkup_.obj + 0002:00003360 @__security_check_cookie@4 00414360 f MSVCRTD:_secchk_.obj + 0002:00003380 ___isa_available_init 00414380 f MSVCRTD:_cpu_disp_.obj + 0002:00003710 ___scrt_is_ucrt_dll_in_use 00414710 f MSVCRTD:ucrt_detection.obj + 0002:00003740 @_guard_check_icall_nop@4 00414740 f i MSVCRTD:guard_support.obj + 0002:00003750 __guard_icall_checks_enforced 00414750 f i MSVCRTD:guard_support.obj + 0002:00003780 ___raise_securityfailure 00414780 f MSVCRTD:gs_report.obj + 0002:000037c0 ___report_gsfailure 004147c0 f MSVCRTD:gs_report.obj + 0002:00003910 ___report_rangecheckfailure 00414910 f MSVCRTD:gs_report.obj + 0002:00003920 ___report_securityfailure 00414920 f MSVCRTD:gs_report.obj + 0002:00003a30 ___report_securityfailureEx 00414a30 f MSVCRTD:gs_report.obj + 0002:00003b9e ___std_type_info_destroy_list 00414b9e f vcruntimed:VCRUNTIME140D.dll + 0002:00003ba4 _memset 00414ba4 f vcruntimed:VCRUNTIME140D.dll + 0002:00003baa __except_handler4_common 00414baa f vcruntimed:VCRUNTIME140D.dll + 0002:00003bb0 ___vcrt_GetModuleFileNameW 00414bb0 f vcruntimed:VCRUNTIME140D.dll + 0002:00003bb6 ___vcrt_GetModuleHandleW 00414bb6 f vcruntimed:VCRUNTIME140D.dll + 0002:00003bbc ___vcrt_LoadLibraryExW 00414bbc f vcruntimed:VCRUNTIME140D.dll + 0002:00003bc2 ___acrt_iob_func 00414bc2 f ucrtd:ucrtbased.dll + 0002:00003bc8 ___stdio_common_vfprintf 00414bc8 f ucrtd:ucrtbased.dll + 0002:00003bce __CrtDbgReport 00414bce f ucrtd:ucrtbased.dll + 0002:00003bd4 __CrtDbgReportW 00414bd4 f ucrtd:ucrtbased.dll + 0002:00003bda __seh_filter_exe 00414bda f ucrtd:ucrtbased.dll + 0002:00003be0 __set_app_type 00414be0 f ucrtd:ucrtbased.dll + 0002:00003be6 ___setusermatherr 00414be6 f ucrtd:ucrtbased.dll + 0002:00003bec __configure_narrow_argv 00414bec f ucrtd:ucrtbased.dll + 0002:00003bf2 __initialize_narrow_environment 00414bf2 f ucrtd:ucrtbased.dll + 0002:00003bf8 __get_initial_narrow_environment 00414bf8 f ucrtd:ucrtbased.dll + 0002:00003bfe __initterm 00414bfe f ucrtd:ucrtbased.dll + 0002:00003c04 __initterm_e 00414c04 f ucrtd:ucrtbased.dll + 0002:00003c0a _exit 00414c0a f ucrtd:ucrtbased.dll + 0002:00003c10 __exit 00414c10 f ucrtd:ucrtbased.dll + 0002:00003c16 __set_fmode 00414c16 f ucrtd:ucrtbased.dll + 0002:00003c1c ___p___argc 00414c1c f ucrtd:ucrtbased.dll + 0002:00003c22 ___p___argv 00414c22 f ucrtd:ucrtbased.dll + 0002:00003c28 __cexit 00414c28 f ucrtd:ucrtbased.dll + 0002:00003c2e __c_exit 00414c2e f ucrtd:ucrtbased.dll + 0002:00003c34 __register_thread_local_exe_atexit_callback 00414c34 f ucrtd:ucrtbased.dll + 0002:00003c3a __configthreadlocale 00414c3a f ucrtd:ucrtbased.dll + 0002:00003c40 __set_new_mode 00414c40 f ucrtd:ucrtbased.dll + 0002:00003c46 ___p__commode 00414c46 f ucrtd:ucrtbased.dll + 0002:00003c4c ___stdio_common_vsprintf_s 00414c4c f ucrtd:ucrtbased.dll + 0002:00003c52 __seh_filter_dll 00414c52 f ucrtd:ucrtbased.dll + 0002:00003c58 __initialize_onexit_table 00414c58 f ucrtd:ucrtbased.dll + 0002:00003c5e __register_onexit_function 00414c5e f ucrtd:ucrtbased.dll + 0002:00003c64 __execute_onexit_table 00414c64 f ucrtd:ucrtbased.dll + 0002:00003c6a __crt_atexit 00414c6a f ucrtd:ucrtbased.dll + 0002:00003c70 __crt_at_quick_exit 00414c70 f ucrtd:ucrtbased.dll + 0002:00003c76 __controlfp_s 00414c76 f ucrtd:ucrtbased.dll + 0002:00003c7c _terminate 00414c7c f ucrtd:ucrtbased.dll + 0002:00003c82 __wmakepath_s 00414c82 f ucrtd:ucrtbased.dll + 0002:00003c88 __wsplitpath_s 00414c88 f ucrtd:ucrtbased.dll + 0002:00003c8e _wcscpy_s 00414c8e f ucrtd:ucrtbased.dll + 0002:00003c94 _IsDebuggerPresent@0 00414c94 f kernel32:KERNEL32.dll + 0002:00003c9a _RaiseException@16 00414c9a f kernel32:KERNEL32.dll + 0002:00003ca0 _MultiByteToWideChar@24 00414ca0 f kernel32:KERNEL32.dll + 0002:00003ca6 _WideCharToMultiByte@32 00414ca6 f kernel32:KERNEL32.dll + 0002:00003cac _QueryPerformanceCounter@4 00414cac f kernel32:KERNEL32.dll + 0002:00003cb2 _GetCurrentProcessId@0 00414cb2 f kernel32:KERNEL32.dll + 0002:00003cb8 _GetCurrentThreadId@0 00414cb8 f kernel32:KERNEL32.dll + 0002:00003cbe _GetSystemTimeAsFileTime@4 00414cbe f kernel32:KERNEL32.dll + 0002:00003cc4 _InitializeSListHead@4 00414cc4 f kernel32:KERNEL32.dll + 0002:00003cca _UnhandledExceptionFilter@4 00414cca f kernel32:KERNEL32.dll + 0002:00003cd0 _SetUnhandledExceptionFilter@4 00414cd0 f kernel32:KERNEL32.dll + 0002:00003cd6 _GetStartupInfoW@4 00414cd6 f kernel32:KERNEL32.dll + 0002:00003cdc _IsProcessorFeaturePresent@4 00414cdc f kernel32:KERNEL32.dll + 0002:00003ce2 _GetModuleHandleW@4 00414ce2 f kernel32:KERNEL32.dll + 0002:00003ce8 _GetLastError@0 00414ce8 f kernel32:KERNEL32.dll + 0002:00003cee _HeapAlloc@12 00414cee f kernel32:KERNEL32.dll + 0002:00003cf4 _HeapFree@12 00414cf4 f kernel32:KERNEL32.dll + 0002:00003cfa _GetProcessHeap@0 00414cfa f kernel32:KERNEL32.dll + 0002:00003d00 _VirtualQuery@12 00414d00 f kernel32:KERNEL32.dll + 0002:00003d06 _FreeLibrary@4 00414d06 f kernel32:KERNEL32.dll + 0002:00003d0c _GetProcAddress@8 00414d0c f kernel32:KERNEL32.dll + 0002:00003d12 _GetCurrentProcess@0 00414d12 f kernel32:KERNEL32.dll + 0002:00003d18 _TerminateProcess@8 00414d18 f kernel32:KERNEL32.dll + 0002:00003d20 ___vcrt_initialize 00414d20 f MSVCRTD:ucrt_stubs.obj + 0002:00003d20 ___acrt_initialize 00414d20 f MSVCRTD:ucrt_stubs.obj + 0002:00003d20 ___scrt_stub_for_acrt_initialize 00414d20 f MSVCRTD:ucrt_stubs.obj + 0002:00003d30 ___scrt_stub_for_acrt_thread_attach 00414d30 f MSVCRTD:ucrt_stubs.obj + 0002:00003d30 ___vcrt_thread_attach 00414d30 f MSVCRTD:ucrt_stubs.obj + 0002:00003d30 ___acrt_thread_attach 00414d30 f MSVCRTD:ucrt_stubs.obj + 0002:00003d40 ___vcrt_thread_detach 00414d40 f MSVCRTD:ucrt_stubs.obj + 0002:00003d40 ___acrt_thread_detach 00414d40 f MSVCRTD:ucrt_stubs.obj + 0002:00003d40 ___scrt_stub_for_acrt_thread_detach 00414d40 f MSVCRTD:ucrt_stubs.obj + 0002:00003d50 ___vcrt_uninitialize 00414d50 f MSVCRTD:ucrt_stubs.obj + 0002:00003d50 ___acrt_uninitialize 00414d50 f MSVCRTD:ucrt_stubs.obj + 0002:00003d50 ___scrt_stub_for_acrt_uninitialize 00414d50 f MSVCRTD:ucrt_stubs.obj + 0002:00003d60 ___vcrt_uninitialize_critical 00414d60 f MSVCRTD:ucrt_stubs.obj + 0002:00003d60 ___scrt_stub_for_acrt_uninitialize_critical 00414d60 f MSVCRTD:ucrt_stubs.obj + 0002:00003d60 ___acrt_uninitialize_critical 00414d60 f MSVCRTD:ucrt_stubs.obj + 0002:00003d70 ___scrt_stub_for_is_c_termination_complete 00414d70 f MSVCRTD:ucrt_stubs.obj + 0002:00003d70 __is_c_termination_complete 00414d70 f MSVCRTD:ucrt_stubs.obj + 0003:00000000 ___xc_a 00416000 MSVCRTD:initializers.obj + 0003:00000208 ___xc_z 00416208 MSVCRTD:initializers.obj + 0003:0000030c ___xi_a 0041630c MSVCRTD:initializers.obj + 0003:00000618 ___xi_z 00416618 MSVCRTD:initializers.obj + 0003:0000071c ___xp_a 0041671c MSVCRTD:initializers.obj + 0003:00000820 ___xp_z 00416820 MSVCRTD:initializers.obj + 0003:00000924 ___xt_a 00416924 MSVCRTD:initializers.obj + 0003:00000a28 ___xt_z 00416a28 MSVCRTD:initializers.obj + 0003:00000b30 ??_C@_04OFFCAMCD@Test?$AA@ 00416b30 ConsoleApplication1.obj + 0003:00000bf8 ??_C@_0NN@NGPKDKPD@The?5value?5of?5ESP?5was?5not?5properl@ 00416bf8 MSVCRTD:_error_.obj + 0003:00000d08 ??_C@_0BBN@GPMLNJCF@A?5cast?5to?5a?5smaller?5data?5type?5ha@ 00416d08 MSVCRTD:_error_.obj + 0003:00000e60 ??_C@_0BN@FFOINMNJ@Stack?5memory?5was?5corrupted?6?$AN?$AA@ 00416e60 MSVCRTD:_error_.obj + 0003:00000e84 ??_C@_0DG@HKJMLLLP@A?5local?5variable?5was?5used?5before@ 00416e84 MSVCRTD:_error_.obj + 0003:00000ec4 ??_C@_0CM@NGINOKPC@Stack?5memory?5around?5_alloca?5was?5@ 00416ec4 MSVCRTD:_error_.obj + 0003:00000ef8 ??_C@_0BO@GNIAFIKK@Unknown?5Runtime?5Check?5Error?6?$AN?$AA@ 00416ef8 MSVCRTD:_error_.obj + 0003:00000f20 ??_C@_1GM@OLMCBDMB@?$AAR?$AAu?$AAn?$AAt?$AAi?$AAm?$AAe?$AA?5?$AAC?$AAh?$AAe?$AAc?$AAk?$AA?5?$AAE?$AAr?$AAr?$AAo?$AAr?$AA?4?$AA?6?$AA?$AN?$AA?5?$AAU?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AAt?$AAo@ 00416f20 MSVCRTD:_error_.obj + 0003:00000fa8 ??_C@_1EA@NFKNIFJP@?$AAR?$AAu?$AAn?$AA?9?$AAT?$AAi?$AAm?$AAe?$AA?5?$AAC?$AAh?$AAe?$AAc?$AAk?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAu?$AAr?$AAe?$AA?5?$AA?$CD?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AA?$CF?$AAs?$AA?$AA@ 00416fa8 MSVCRTD:_error_.obj + 0003:00000ff4 ??_C@_0BB@PFFGGCJP@Unknown?5Filename?$AA@ 00416ff4 MSVCRTD:_error_.obj + 0003:00001008 ??_C@_0BE@GNBOBNCK@Unknown?5Module?5Name?$AA@ 00417008 MSVCRTD:_error_.obj + 0003:00001020 ??_C@_0CA@IODNCDPG@Run?9Time?5Check?5Failure?5?$CD?$CFd?5?9?5?$CFs?$AA@ 00417020 MSVCRTD:_error_.obj + 0003:00001048 ??_C@_0CG@IAFNJNEE@Stack?5corrupted?5near?5unknown?5var@ 00417048 MSVCRTD:_error_.obj + 0003:00001078 ??_C@_05MKKEDADM@?$CF?42X?5?$AA@ 00417078 MSVCRTD:_error_.obj + 0003:00001080 ??_C@_0EJ@LJKNEOLN@Stack?5area?5around?5_alloca?5memory@ 00417080 MSVCRTD:_error_.obj + 0003:000010d8 ??_C@_08OMAHNMHJ@?6Data?3?5?$DM?$AA@ 004170d8 MSVCRTD:_error_.obj + 0003:000010e4 ??_C@_0CK@DKGBICFE@?6Allocation?5number?5within?5this?5f@ 004170e4 MSVCRTD:_error_.obj + 0003:00001118 ??_C@_07DFDJCKFN@?6Size?3?5?$AA@ 00417118 MSVCRTD:_error_.obj + 0003:00001124 ??_C@_0N@MHFFIMFG@?6Address?3?50x?$AA@ 00417124 MSVCRTD:_error_.obj + 0003:00001138 ??_C@_0EI@CLEPFNGI@Stack?5area?5around?5_alloca?5memory@ 00417138 MSVCRTD:_error_.obj + 0003:00001190 ??_C@_0BC@HHMKLAND@?$CFs?$CFs?$CFp?$CFs?$CFzd?$CFs?$CFd?$CFs?$AA@ 00417190 MSVCRTD:_error_.obj + 0003:000011a8 ??_C@_01EEMJAFIK@?6?$AA@ 004171a8 MSVCRTD:_error_.obj + 0003:000011ac ??_C@_02LLMPMKNF@?$DO?5?$AA@ 004171ac MSVCRTD:_error_.obj + 0003:000011b0 ??_C@_08KJEDNCKC@?$CFs?$CFs?$CFs?$CFs?$AA@ 004171b0 MSVCRTD:_error_.obj + 0003:000011bc ??_C@_0DE@OHJBPMBP@A?5variable?5is?5being?5used?5without@ 004171bc MSVCRTD:_error_.obj + 0003:00001214 ??_C@_0BJ@HEGAHDFO@Stack?5pointer?5corruption?$AA@ 00417214 MSVCRTD:_userapi_.obj + 0003:00001234 ??_C@_0CK@FEGOIOPB@Cast?5to?5smaller?5type?5causing?5los@ 00417234 MSVCRTD:_userapi_.obj + 0003:00001268 ??_C@_0BI@CIGMDCBH@Stack?5memory?5corruption?$AA@ 00417268 MSVCRTD:_userapi_.obj + 0003:00001284 ??_C@_0CK@CNLNOEPB@Local?5variable?5used?5before?5initi@ 00417284 MSVCRTD:_userapi_.obj + 0003:000012b8 ??_C@_0BP@OGBCLIBO@Stack?5around?5_alloca?5corrupted?$AA@ 004172b8 MSVCRTD:_userapi_.obj + 0003:00001338 ??_C@_1EI@MLPKHBGE@?$AAa?$AAp?$AAi?$AA?9?$AAm?$AAs?$AA?9?$AAw?$AAi?$AAn?$AA?9?$AAc?$AAo?$AAr?$AAe?$AA?9?$AAr?$AAe?$AAg?$AAi?$AAs?$AAt?$AAr?$AAy?$AA?9?$AAl?$AA1?$AA?9?$AA1?$AA?9?$AA0?$AA?4@ 00417338 MSVCRTD:_pdblkup_.obj + 0003:00001390 ??_C@_1BK@JHLNAEJL@?$AAa?$AAd?$AAv?$AAa?$AAp?$AAi?$AA3?$AA2?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@ 00417390 MSVCRTD:_pdblkup_.obj + 0003:000013b0 ??_C@_0O@COHOBMLB@RegOpenKeyExW?$AA@ 004173b0 MSVCRTD:_pdblkup_.obj + 0003:000013c0 ??_C@_0BB@GLNAEDBD@RegQueryValueExW?$AA@ 004173c0 MSVCRTD:_pdblkup_.obj + 0003:000013d4 ??_C@_0M@HLOHPNFA@RegCloseKey?$AA@ 004173d4 MSVCRTD:_pdblkup_.obj + 0003:000013e8 ??_C@_1HE@EBEAGLFB@?$AAS?$AAO?$AAF?$AAT?$AAW?$AAA?$AAR?$AAE?$AA?2?$AAW?$AAo?$AAw?$AA6?$AA4?$AA3?$AA2?$AAN?$AAo?$AAd?$AAe?$AA?2?$AAM?$AAi?$AAc?$AAr?$AAo?$AAs?$AAo?$AAf?$AAt?$AA?2?$AAV@ 004173e8 MSVCRTD:_pdblkup_.obj + 0003:00001474 ??_C@_1BG@EABPBLLF@?$AAP?$AAr?$AAo?$AAd?$AAu?$AAc?$AAt?$AAD?$AAi?$AAr?$AA?$AA@ 00417474 MSVCRTD:_pdblkup_.obj + 0003:000014b4 ??_C@_1BC@JINFINNJ@?$AAM?$AAS?$AAP?$AAD?$AAB?$AA1?$AA4?$AA0?$AA?$AA@ 004174b4 MSVCRTD:_pdblkup_.obj + 0003:000014cc ??_C@_0BB@KCIACLNC@PDBOpenValidate5?$AA@ 004174cc MSVCRTD:_pdblkup_.obj + 0003:000014e0 ??_C@_01KDCPPGHE@r?$AA@ 004174e0 MSVCRTD:_pdblkup_.obj + 0003:00001528 __load_config_used 00417528 MSVCRTD:loadcfg.obj + 0003:00001868 ___rtc_iaa 00417868 MSVCRTD:_initsect_.obj + 0003:00001a70 ___rtc_izz 00417a70 MSVCRTD:_initsect_.obj + 0003:00001b74 ___rtc_taa 00417b74 MSVCRTD:_initsect_.obj + 0003:00001d7c ___rtc_tzz 00417d7c MSVCRTD:_initsect_.obj + 0004:00000000 ?_RTC_ErrorLevels@@3PAHA 00419000 MSVCRTD:_error_.obj + 0004:00000018 ___scrt_native_dllmain_reason 00419018 MSVCRTD:utility.obj + 0004:0000001c ___scrt_default_matherr 0041901c MSVCRTD:matherr.obj + 0004:00000020 ___security_cookie_complement 00419020 MSVCRTD:gs_cookie.obj + 0004:00000024 ___security_cookie 00419024 MSVCRTD:gs_cookie.obj + 0004:0000002c ___isa_enabled 0041902c MSVCRTD:_cpu_disp_.obj + 0004:00000030 ___scrt_ucrt_dll_is_in_use 00419030 MSVCRTD:ucrt_stubs.obj + 0004:00000138 ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA 00419138 ConsoleApplication1.obj + 0004:00000144 ___@@_PchSym_@00@UfhvihUkzgirxpUwlxfnvmghUtrgsfyUxlmhlovzkkorxzgrlmBUxlmhlovzkkorxzgrlmBUwvyftUhgwzucOlyq@58EB7FF75EFF052 00419144 stdafx.obj + 0004:00000158 ___scrt_current_native_startup_state 00419158 MSVCRTD:utility.obj + 0004:0000015c ___scrt_native_startup_lock 0041915c MSVCRTD:utility.obj + 0004:00000180 ?__type_info_root_node@@3U__type_info_node@@A 00419180 MSVCRTD:tncleanup.obj + 0004:00000190 ?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA 00419190 MSVCRTD:default_local_stdio_options.obj + 0004:0000019c ___scrt_debugger_hook_flag 0041919c MSVCRTD:utility_desktop.obj + 0004:000001a8 ___isa_available 004191a8 MSVCRTD:_cpu_disp_.obj + 0004:000001ac ___favor 004191ac MSVCRTD:_cpu_disp_.obj + 0004:00000574 ___dyn_tls_dtor_callback 00419574 + 0004:00000580 ___dyn_tls_init_callback 00419580 + 0005:00000000 __imp__RaiseException@16 0041a000 kernel32:KERNEL32.dll + 0005:00000004 __imp__MultiByteToWideChar@24 0041a004 kernel32:KERNEL32.dll + 0005:00000008 __imp__WideCharToMultiByte@32 0041a008 kernel32:KERNEL32.dll + 0005:0000000c __imp__QueryPerformanceCounter@4 0041a00c kernel32:KERNEL32.dll + 0005:00000010 __imp__GetCurrentProcessId@0 0041a010 kernel32:KERNEL32.dll + 0005:00000014 __imp__GetCurrentThreadId@0 0041a014 kernel32:KERNEL32.dll + 0005:00000018 __imp__TerminateProcess@8 0041a018 kernel32:KERNEL32.dll + 0005:0000001c __imp__GetCurrentProcess@0 0041a01c kernel32:KERNEL32.dll + 0005:00000020 __imp__GetProcAddress@8 0041a020 kernel32:KERNEL32.dll + 0005:00000024 __imp__FreeLibrary@4 0041a024 kernel32:KERNEL32.dll + 0005:00000028 __imp__VirtualQuery@12 0041a028 kernel32:KERNEL32.dll + 0005:0000002c __imp__GetProcessHeap@0 0041a02c kernel32:KERNEL32.dll + 0005:00000030 __imp__HeapFree@12 0041a030 kernel32:KERNEL32.dll + 0005:00000034 __imp__HeapAlloc@12 0041a034 kernel32:KERNEL32.dll + 0005:00000038 __imp__GetLastError@0 0041a038 kernel32:KERNEL32.dll + 0005:0000003c __imp__GetModuleHandleW@4 0041a03c kernel32:KERNEL32.dll + 0005:00000040 __imp__IsProcessorFeaturePresent@4 0041a040 kernel32:KERNEL32.dll + 0005:00000044 __imp__GetStartupInfoW@4 0041a044 kernel32:KERNEL32.dll + 0005:00000048 __imp__SetUnhandledExceptionFilter@4 0041a048 kernel32:KERNEL32.dll + 0005:0000004c __imp__UnhandledExceptionFilter@4 0041a04c kernel32:KERNEL32.dll + 0005:00000050 __imp__InitializeSListHead@4 0041a050 kernel32:KERNEL32.dll + 0005:00000054 __imp__GetSystemTimeAsFileTime@4 0041a054 kernel32:KERNEL32.dll + 0005:00000058 __imp__IsDebuggerPresent@0 0041a058 kernel32:KERNEL32.dll + 0005:0000005c \177KERNEL32_NULL_THUNK_DATA 0041a05c kernel32:KERNEL32.dll + 0005:00000098 __imp____vcrt_GetModuleHandleW 0041a098 vcruntimed:VCRUNTIME140D.dll + 0005:0000009c __imp____vcrt_GetModuleFileNameW 0041a09c vcruntimed:VCRUNTIME140D.dll + 0005:000000a0 __imp___except_handler4_common 0041a0a0 vcruntimed:VCRUNTIME140D.dll + 0005:000000a4 __imp__memset 0041a0a4 vcruntimed:VCRUNTIME140D.dll + 0005:000000a8 __imp____vcrt_LoadLibraryExW 0041a0a8 vcruntimed:VCRUNTIME140D.dll + 0005:000000ac __imp____std_type_info_destroy_list 0041a0ac vcruntimed:VCRUNTIME140D.dll + 0005:000000b0 \177VCRUNTIME140D_NULL_THUNK_DATA 0041a0b0 vcruntimed:VCRUNTIME140D.dll + 0005:000000e0 __imp___seh_filter_dll 0041a0e0 ucrtd:ucrtbased.dll + 0005:000000e4 __imp___initialize_onexit_table 0041a0e4 ucrtd:ucrtbased.dll + 0005:000000e8 __imp____stdio_common_vsprintf_s 0041a0e8 ucrtd:ucrtbased.dll + 0005:000000ec __imp___execute_onexit_table 0041a0ec ucrtd:ucrtbased.dll + 0005:000000f0 __imp___crt_atexit 0041a0f0 ucrtd:ucrtbased.dll + 0005:000000f4 __imp___crt_at_quick_exit 0041a0f4 ucrtd:ucrtbased.dll + 0005:000000f8 __imp___controlfp_s 0041a0f8 ucrtd:ucrtbased.dll + 0005:000000fc __imp__terminate 0041a0fc ucrtd:ucrtbased.dll + 0005:00000100 __imp___wmakepath_s 0041a100 ucrtd:ucrtbased.dll + 0005:00000104 __imp___wsplitpath_s 0041a104 ucrtd:ucrtbased.dll + 0005:00000108 __imp__wcscpy_s 0041a108 ucrtd:ucrtbased.dll + 0005:0000010c __imp____p__commode 0041a10c ucrtd:ucrtbased.dll + 0005:00000110 __imp___set_new_mode 0041a110 ucrtd:ucrtbased.dll + 0005:00000114 __imp___configthreadlocale 0041a114 ucrtd:ucrtbased.dll + 0005:00000118 __imp___register_thread_local_exe_atexit_callback 0041a118 ucrtd:ucrtbased.dll + 0005:0000011c __imp___c_exit 0041a11c ucrtd:ucrtbased.dll + 0005:00000120 __imp___cexit 0041a120 ucrtd:ucrtbased.dll + 0005:00000124 __imp____p___argv 0041a124 ucrtd:ucrtbased.dll + 0005:00000128 __imp____p___argc 0041a128 ucrtd:ucrtbased.dll + 0005:0000012c __imp___set_fmode 0041a12c ucrtd:ucrtbased.dll + 0005:00000130 __imp___exit 0041a130 ucrtd:ucrtbased.dll + 0005:00000134 __imp__exit 0041a134 ucrtd:ucrtbased.dll + 0005:00000138 __imp___initterm_e 0041a138 ucrtd:ucrtbased.dll + 0005:0000013c __imp___initterm 0041a13c ucrtd:ucrtbased.dll + 0005:00000140 __imp___get_initial_narrow_environment 0041a140 ucrtd:ucrtbased.dll + 0005:00000144 __imp___initialize_narrow_environment 0041a144 ucrtd:ucrtbased.dll + 0005:00000148 __imp___configure_narrow_argv 0041a148 ucrtd:ucrtbased.dll + 0005:0000014c __imp____setusermatherr 0041a14c ucrtd:ucrtbased.dll + 0005:00000150 __imp___set_app_type 0041a150 ucrtd:ucrtbased.dll + 0005:00000154 __imp___seh_filter_exe 0041a154 ucrtd:ucrtbased.dll + 0005:00000158 __imp___CrtDbgReportW 0041a158 ucrtd:ucrtbased.dll + 0005:0000015c __imp___CrtDbgReport 0041a15c ucrtd:ucrtbased.dll + 0005:00000160 __imp____stdio_common_vfprintf 0041a160 ucrtd:ucrtbased.dll + 0005:00000164 __imp____acrt_iob_func 0041a164 ucrtd:ucrtbased.dll + 0005:00000168 __imp___register_onexit_function 0041a168 ucrtd:ucrtbased.dll + 0005:0000016c \177ucrtbased_NULL_THUNK_DATA 0041a16c ucrtd:ucrtbased.dll + 0005:000001b4 __IMPORT_DESCRIPTOR_VCRUNTIME140D 0041a1b4 vcruntimed:VCRUNTIME140D.dll + 0005:000001c8 __IMPORT_DESCRIPTOR_ucrtbased 0041a1c8 ucrtd:ucrtbased.dll + 0005:000001dc __IMPORT_DESCRIPTOR_KERNEL32 0041a1dc kernel32:KERNEL32.dll + 0005:000001f0 __NULL_IMPORT_DESCRIPTOR 0041a1f0 vcruntimed:VCRUNTIME140D.dll + 0007:00000000 ___guard_check_icall_fptr 0041c000 MSVCRTD:guard_support.obj diff --git a/test/maps/squareprintfstaticlib.asm b/test/maps/squareprintfstaticlib.asm new file mode 100644 index 0000000000000000000000000000000000000000..77796f4b982be6b8c0d56ec0c101d006da25639c GIT binary patch literal 621986 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 literal 0 HcmV?d00001 diff --git a/test/maps/squareprintfstaticlib.cpp b/test/maps/squareprintfstaticlib.cpp new file mode 100644 index 000000000..74b837113 --- /dev/null +++ b/test/maps/squareprintfstaticlib.cpp @@ -0,0 +1,16 @@ +#include + +int square(int num) { + Groundfloor::String s("Hello, world!"); + s.append_ansi("\n"); + + printf(s.getValue()); + + return num * num; +} + +int main(int argc) { + return square(argc); +} + + diff --git a/test/maps/squareprintfstaticlib.map b/test/maps/squareprintfstaticlib.map new file mode 100644 index 000000000..dfd95ec6f --- /dev/null +++ b/test/maps/squareprintfstaticlib.map @@ -0,0 +1,523 @@ + output.s + + Timestamp is 5b5a5760 (Fri Jul 27 01:21:04 2018) + + Preferred load address is 0000000140000000 + + Start Length Name Class + 0001:00000000 00001740H .text$mn CODE + 0001:00001740 00000020H .text$mn$00 CODE + 0001:00001760 00000036H .text$x CODE + 0002:00000000 000001b8H .idata$5 DATA + 0002:000001b8 00000010H .00cfg DATA + 0002:000001c8 00000008H .CRT$XCA DATA + 0002:000001d0 00000008H .CRT$XCAA DATA + 0002:000001d8 00000008H .CRT$XCZ DATA + 0002:000001e0 00000008H .CRT$XIA DATA + 0002:000001e8 00000008H .CRT$XIAA DATA + 0002:000001f0 00000008H .CRT$XIAC DATA + 0002:000001f8 00000008H .CRT$XIC DATA + 0002:00000200 00000008H .CRT$XIZ DATA + 0002:00000208 00000008H .CRT$XPA DATA + 0002:00000210 00000008H .CRT$XPZ DATA + 0002:00000218 00000008H .CRT$XTA DATA + 0002:00000220 00000010H .CRT$XTZ DATA + 0002:00000228 00000000H .gfids$y DATA + 0002:00000230 00001420H .rdata DATA + 0002:00001650 0000016cH .rdata$r DATA + 0002:000017bc 0000027cH .rdata$zzzdbg DATA + 0002:00001a38 00000008H .rtc$IAA DATA + 0002:00001a40 00000008H .rtc$IZZ DATA + 0002:00001a48 00000008H .rtc$TAA DATA + 0002:00001a50 00000008H .rtc$TZZ DATA + 0002:00001a58 00000158H .xdata DATA + 0002:00001bb0 00000000H .xdata$x DATA + 0002:00001bb0 00000000H .edata DATA + 0002:00001bb0 0000008cH .idata$2 DATA + 0002:00001c3c 00000014H .idata$3 DATA + 0002:00001c50 000001b8H .idata$4 DATA + 0002:00001e08 00000474H .idata$6 DATA + 0003:00000000 00000038H .data DATA + 0003:00000038 00000088H .data$r DATA + 0003:000000c0 00000738H .bss DATA + 0004:00000000 0000021cH .pdata DATA + + Address Publics by Value Rva+Base Lib:Object + + 0000:00000000 __guard_iat_table 0000000000000000 + 0000:00000000 __dynamic_value_reloc_table 0000000000000000 + 0000:00000000 __hybrid_code_map 0000000000000000 + 0000:00000000 __hybrid_code_map_count 0000000000000000 + 0000:00000000 __guard_iat_count 0000000000000000 + 0000:00000000 __hybrid_auxiliary_iat 0000000000000000 + 0000:00000000 __guard_longjmp_table 0000000000000000 + 0000:00000000 __guard_longjmp_count 0000000000000000 + 0000:00000000 __guard_fids_count 0000000000000000 + 0000:00000000 __enclave_config 0000000000000000 + 0000:00000000 ___safe_se_handler_table 0000000000000000 + 0000:00000000 ___safe_se_handler_count 0000000000000000 + 0000:00000000 __guard_fids_table 0000000000000000 + 0000:00000100 __guard_flags 0000000000000100 + 0000:00000000 __ImageBase 0000000140000000 + 0001:00000000 __local_stdio_printf_options 0000000140001000 f i output.s.obj + 0001:00000010 _vfprintf_l 0000000140001010 f i output.s.obj + 0001:00000060 printf 0000000140001060 f i output.s.obj + 0001:000000c0 ?classname@Freeable@Groundfloor@@MEAAPEBDXZ 00000001400010c0 f i libGroundfloor:String.obj + 0001:000000d0 ??_GFreeable@Groundfloor@@UEAAPEAXI@Z 00000001400010d0 f i libGroundfloor:String.obj + 0001:000000d0 ??_EFreeable@Groundfloor@@UEAAPEAXI@Z 00000001400010d0 f i * CIL library *:* CIL module * + 0001:00000100 ?classname@String@Groundfloor@@MEAAPEBDXZ 0000000140001100 f i libGroundfloor:String.obj + 0001:00000110 ??_GString@Groundfloor@@UEAAPEAXI@Z 0000000140001110 f i libGroundfloor:String.obj + 0001:00000110 ??_EString@Groundfloor@@UEAAPEAXI@Z 0000000140001110 f i * CIL library *:* CIL module * + 0001:00000170 ??0String@Groundfloor@@QEAA@PEBD@Z 0000000140001170 f libGroundfloor:String.obj + 0001:000001b0 ??1String@Groundfloor@@UEAA@XZ 00000001400011b0 f libGroundfloor:String.obj + 0001:000001f0 ?getValue@String@Groundfloor@@QEBAPEADXZ 00000001400011f0 f libGroundfloor:String.obj + 0001:00000200 ?setValue@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140001200 f libGroundfloor:String.obj + 0001:000002a0 ?append@String@Groundfloor@@QEAA_NPEBDI@Z 00000001400012a0 f libGroundfloor:String.obj + 0001:00000340 ?append_ansi@String@Groundfloor@@QEAA_NPEBD@Z 0000000140001340 f libGroundfloor:String.obj + 0001:00000360 ?setSize@String@Groundfloor@@QEAA_NI@Z 0000000140001360 f libGroundfloor:String.obj + 0001:00000400 sprintf 0000000140001400 f i libGroundfloor:Freeable.obj + 0001:00000460 ?DebugString@Freeable@Groundfloor@@UEAAHPEADJ@Z 0000000140001460 f libGroundfloor:Freeable.obj + 0001:000004f0 __security_check_cookie 00000001400014f0 f msvcrt:_amdsecgs_.obj + 0001:0000076c mainCRTStartup 000000014000176c f msvcrt:exe_main.obj + 0001:00000780 ??3@YAXPEAX_K@Z 0000000140001780 f msvcrt:delete_scalar_size.obj + 0001:00000788 ??_Gtype_info@@UEAAPEAXI@Z 0000000140001788 f i msvcrt:std_type_info_static.obj + 0001:00000788 ??_Etype_info@@UEAAPEAXI@Z 0000000140001788 f i msvcrt:std_type_info_static.obj + 0001:000007b4 __raise_securityfailure 00000001400017b4 f msvcrt:gs_report.obj + 0001:000007e8 __report_gsfailure 00000001400017e8 f msvcrt:gs_report.obj + 0001:00000930 __scrt_acquire_startup_lock 0000000140001930 f msvcrt:utility.obj + 0001:0000096c __scrt_initialize_crt 000000014000196c f msvcrt:utility.obj + 0001:000009b8 __scrt_initialize_onexit_tables 00000001400019b8 f msvcrt:utility.obj + 0001:00000a94 __scrt_is_nonwritable_in_current_image 0000000140001a94 f msvcrt:utility.obj + 0001:00000b30 __scrt_release_startup_lock 0000000140001b30 f msvcrt:utility.obj + 0001:00000b54 __scrt_uninitialize_crt 0000000140001b54 f msvcrt:utility.obj + 0001:00000b80 _onexit 0000000140001b80 f msvcrt:utility.obj + 0001:00000bd0 atexit 0000000140001bd0 f msvcrt:utility.obj + 0001:00000be8 __security_init_cookie 0000000140001be8 f msvcrt:gs_support.obj + 0001:00000c98 _get_startup_thread_locale_mode 0000000140001c98 f msvcrt:thread_locale.obj + 0001:00000c98 _get_startup_commit_mode 0000000140001c98 f msvcrt:commit_mode.obj + 0001:00000c98 __scrt_initialize_winrt 0000000140001c98 f msvcrt:utility_desktop.obj + 0001:00000c98 _get_startup_new_mode 0000000140001c98 f msvcrt:new_mode.obj + 0001:00000c98 _matherr 0000000140001c98 f msvcrt:matherr.obj + 0001:00000c9c _get_startup_argv_mode 0000000140001c9c f msvcrt:argv_mode.obj + 0001:00000ca4 _get_startup_file_mode 0000000140001ca4 f msvcrt:file_mode.obj + 0001:00000cac ?__scrt_initialize_type_info@@YAXXZ 0000000140001cac f msvcrt:tncleanup.obj + 0001:00000cbc __scrt_stub_for_acrt_initialize 0000000140001cbc f msvcrt:ucrt_stubs.obj + 0001:00000cbc __acrt_initialize 0000000140001cbc f msvcrt:ucrt_stubs.obj + 0001:00000cbc __acrt_uninitialize 0000000140001cbc f msvcrt:ucrt_stubs.obj + 0001:00000cbc __vcrt_uninitialize 0000000140001cbc f msvcrt:ucrt_stubs.obj + 0001:00000cbc _should_initialize_environment 0000000140001cbc f msvcrt:env_mode.obj + 0001:00000cbc __vcrt_initialize 0000000140001cbc f msvcrt:ucrt_stubs.obj + 0001:00000cbc __scrt_stub_for_acrt_uninitialize 0000000140001cbc f msvcrt:ucrt_stubs.obj + 0001:00000cc0 _initialize_denormal_control 0000000140001cc0 f msvcrt:denormal_control.obj + 0001:00000cc0 _initialize_invalid_parameter_handler 0000000140001cc0 f msvcrt:invalid_parameter_handler.obj + 0001:00000cc0 _guard_check_icall_nop 0000000140001cc0 f msvcrt:guard_support.obj + 0001:00000cc4 __local_stdio_scanf_options 0000000140001cc4 f i msvcrt:default_local_stdio_options.obj + 0001:00000ccc __scrt_initialize_default_local_stdio_options 0000000140001ccc f msvcrt:default_local_stdio_options.obj + 0001:00000ce8 __scrt_is_user_matherr_present 0000000140001ce8 f msvcrt:matherr_detection.obj + 0001:00000cf4 __scrt_get_dyn_tls_init_callback 0000000140001cf4 f msvcrt:dyn_tls_init.obj + 0001:00000cfc __scrt_get_dyn_tls_dtor_callback 0000000140001cfc f msvcrt:dyn_tls_dtor.obj + 0001:00000d04 __crt_debugger_hook 0000000140001d04 f msvcrt:utility_desktop.obj + 0001:00000d0c __scrt_fastfail 0000000140001d0c f msvcrt:utility_desktop.obj + 0001:00000e58 __scrt_is_managed_app 0000000140001e58 f msvcrt:utility_desktop.obj + 0001:00000eac __scrt_set_unhandled_exception_filter 0000000140001eac f msvcrt:utility_desktop.obj + 0001:00000ebc __scrt_unhandled_exception_filter 0000000140001ebc f msvcrt:utility_desktop.obj + 0001:00000ef4 _RTC_Initialize 0000000140001ef4 f msvcrt:_initsect_.obj + 0001:00000f30 _RTC_Terminate 0000000140001f30 f msvcrt:_initsect_.obj + 0001:00000f6c ??3@YAXPEAX@Z 0000000140001f6c f msvcrt:delete_scalar.obj + 0001:00000f74 __isa_available_init 0000000140001f74 f msvcrt:_cpu_disp_.obj + 0001:00001130 __scrt_is_ucrt_dll_in_use 0000000140002130 f msvcrt:ucrt_detection.obj + 0001:0000160e IsProcessorFeaturePresent 000000014000260e f kernel32:KERNEL32.dll + 0001:00001614 __C_specific_handler 0000000140002614 f vcruntime:VCRUNTIME140.dll + 0001:0000161a memset 000000014000261a f vcruntime:VCRUNTIME140.dll + 0001:00001620 memcpy 0000000140002620 f vcruntime:VCRUNTIME140.dll + 0001:00001626 terminate 0000000140002626 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:0000162c free 000000014000262c f ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0001:00001632 _seh_filter_exe 0000000140002632 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001638 _set_app_type 0000000140002638 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:0000163e __setusermatherr 000000014000263e f ucrt:api-ms-win-crt-math-l1-1-0.dll + 0001:00001644 _configure_narrow_argv 0000000140002644 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:0000164a _initialize_narrow_environment 000000014000264a f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001650 _get_initial_narrow_environment 0000000140002650 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001656 _initterm 0000000140002656 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:0000165c _initterm_e 000000014000265c f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001662 exit 0000000140002662 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001668 _exit 0000000140002668 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:0000166e _set_fmode 000000014000266e f ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0001:00001674 __p___argc 0000000140002674 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:0000167a __p___argv 000000014000267a f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001680 _cexit 0000000140002680 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001686 _c_exit 0000000140002686 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:0000168c _register_thread_local_exe_atexit_callback 000000014000268c f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:00001692 _configthreadlocale 0000000140002692 f ucrt:api-ms-win-crt-locale-l1-1-0.dll + 0001:00001698 _set_new_mode 0000000140002698 f ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0001:0000169e __p__commode 000000014000269e f ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0001:000016a4 _initialize_onexit_table 00000001400026a4 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:000016aa _register_onexit_function 00000001400026aa f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:000016b0 _crt_atexit 00000001400026b0 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0001:000016c0 main 00000001400026c0 f output.s.obj + 0001:000016e0 ?square@@YAHH@Z 00000001400026e0 f output.s.obj + 0001:00001750 _guard_dispatch_icall_nop 0000000140002750 f msvcrt:_guard_dispatch_.obj + 0002:00000000 __imp_RtlCaptureContext 0000000140003000 kernel32:KERNEL32.dll + 0002:00000008 __imp_RtlLookupFunctionEntry 0000000140003008 kernel32:KERNEL32.dll + 0002:00000010 __imp_RtlVirtualUnwind 0000000140003010 kernel32:KERNEL32.dll + 0002:00000018 __imp_UnhandledExceptionFilter 0000000140003018 kernel32:KERNEL32.dll + 0002:00000020 __imp_SetUnhandledExceptionFilter 0000000140003020 kernel32:KERNEL32.dll + 0002:00000028 __imp_GetCurrentProcess 0000000140003028 kernel32:KERNEL32.dll + 0002:00000030 __imp_TerminateProcess 0000000140003030 kernel32:KERNEL32.dll + 0002:00000038 __imp_IsProcessorFeaturePresent 0000000140003038 kernel32:KERNEL32.dll + 0002:00000040 __imp_QueryPerformanceCounter 0000000140003040 kernel32:KERNEL32.dll + 0002:00000048 __imp_GetCurrentProcessId 0000000140003048 kernel32:KERNEL32.dll + 0002:00000050 __imp_GetCurrentThreadId 0000000140003050 kernel32:KERNEL32.dll + 0002:00000058 __imp_GetSystemTimeAsFileTime 0000000140003058 kernel32:KERNEL32.dll + 0002:00000060 __imp_InitializeSListHead 0000000140003060 kernel32:KERNEL32.dll + 0002:00000068 __imp_IsDebuggerPresent 0000000140003068 kernel32:KERNEL32.dll + 0002:00000070 __imp_GetModuleHandleW 0000000140003070 kernel32:KERNEL32.dll + 0002:00000078 __imp_GetProcAddress 0000000140003078 kernel32:KERNEL32.dll + 0002:00000080 \177KERNEL32_NULL_THUNK_DATA 0000000140003080 kernel32:KERNEL32.dll + 0002:00000088 __imp___C_specific_handler 0000000140003088 vcruntime:VCRUNTIME140.dll + 0002:00000090 __imp_memset 0000000140003090 vcruntime:VCRUNTIME140.dll + 0002:00000098 __imp_memcpy 0000000140003098 vcruntime:VCRUNTIME140.dll + 0002:000000a0 \177VCRUNTIME140_NULL_THUNK_DATA 00000001400030a0 vcruntime:VCRUNTIME140.dll + 0002:000000a8 __imp_malloc 00000001400030a8 ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0002:000000b0 __imp__set_new_mode 00000001400030b0 ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0002:000000b8 __imp_free 00000001400030b8 ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0002:000000c0 __imp_realloc 00000001400030c0 ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0002:000000c8 \177api-ms-win-crt-heap-l1-1-0_NULL_THUNK_DATA 00000001400030c8 ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0002:000000d0 __imp__configthreadlocale 00000001400030d0 ucrt:api-ms-win-crt-locale-l1-1-0.dll + 0002:000000d8 \177api-ms-win-crt-locale-l1-1-0_NULL_THUNK_DATA 00000001400030d8 ucrt:api-ms-win-crt-locale-l1-1-0.dll + 0002:000000e0 __imp___setusermatherr 00000001400030e0 ucrt:api-ms-win-crt-math-l1-1-0.dll + 0002:000000e8 \177api-ms-win-crt-math-l1-1-0_NULL_THUNK_DATA 00000001400030e8 ucrt:api-ms-win-crt-math-l1-1-0.dll + 0002:000000f0 __imp__set_app_type 00000001400030f0 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:000000f8 __imp__seh_filter_exe 00000001400030f8 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000100 __imp__configure_narrow_argv 0000000140003100 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000108 __imp__initialize_narrow_environment 0000000140003108 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000110 __imp__get_initial_narrow_environment 0000000140003110 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000118 __imp__initterm 0000000140003118 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000120 __imp__initterm_e 0000000140003120 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000128 __imp_exit 0000000140003128 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000130 __imp__exit 0000000140003130 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000138 __imp___p___argc 0000000140003138 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000140 __imp___p___argv 0000000140003140 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000148 __imp__cexit 0000000140003148 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000150 __imp__c_exit 0000000140003150 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000158 __imp__register_thread_local_exe_atexit_callback 0000000140003158 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000160 __imp_terminate 0000000140003160 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000168 __imp__crt_atexit 0000000140003168 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000170 __imp__register_onexit_function 0000000140003170 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000178 __imp__initialize_onexit_table 0000000140003178 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000180 \177api-ms-win-crt-runtime-l1-1-0_NULL_THUNK_DATA 0000000140003180 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00000188 __imp___p__commode 0000000140003188 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:00000190 __imp___stdio_common_vfprintf 0000000140003190 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:00000198 __imp__set_fmode 0000000140003198 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:000001a0 __imp___acrt_iob_func 00000001400031a0 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:000001a8 __imp___stdio_common_vsprintf 00000001400031a8 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:000001b0 \177api-ms-win-crt-stdio-l1-1-0_NULL_THUNK_DATA 00000001400031b0 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:000001b8 __guard_check_icall_fptr 00000001400031b8 msvcrt:guard_support.obj + 0002:000001c0 __guard_dispatch_icall_fptr 00000001400031c0 msvcrt:guard_support.obj + 0002:000001c8 __xc_a 00000001400031c8 msvcrt:initializers.obj + 0002:000001d8 __xc_z 00000001400031d8 msvcrt:initializers.obj + 0002:000001e0 __xi_a 00000001400031e0 msvcrt:initializers.obj + 0002:00000200 __xi_z 0000000140003200 msvcrt:initializers.obj + 0002:00000208 __xp_a 0000000140003208 msvcrt:initializers.obj + 0002:00000210 __xp_z 0000000140003210 msvcrt:initializers.obj + 0002:00000218 __xt_a 0000000140003218 msvcrt:initializers.obj + 0002:00000220 __xt_z 0000000140003220 msvcrt:initializers.obj + 0002:00000238 ??_7type_info@@6B@ 0000000140003238 msvcrt:std_type_info_static.obj + 0002:00000998 ??_C@_0BN@LKKBCCDB@address?5family?5not?5supported?$AA@ 0000000140003998 libcpmt:syserror.obj + 0002:000009b8 ??_C@_0P@LDMLAFHI@address?5in?5use?$AA@ 00000001400039b8 libcpmt:syserror.obj + 0002:000009c8 ??_C@_0BG@DHPCNBJB@address?5not?5available?$AA@ 00000001400039c8 libcpmt:syserror.obj + 0002:000009e0 ??_C@_0BC@DFIBIBIL@already?5connected?$AA@ 00000001400039e0 libcpmt:syserror.obj + 0002:000009f8 ??_C@_0BH@CAKOHOMI@argument?5list?5too?5long?$AA@ 00000001400039f8 libcpmt:syserror.obj + 0002:00000a10 ??_C@_0BH@CGIMPKIM@argument?5out?5of?5domain?$AA@ 0000000140003a10 libcpmt:syserror.obj + 0002:00000a28 ??_C@_0M@KGHGGJGL@bad?5address?$AA@ 0000000140003a28 libcpmt:syserror.obj + 0002:00000a38 ??_C@_0BE@MPJPGCEO@bad?5file?5descriptor?$AA@ 0000000140003a38 libcpmt:syserror.obj + 0002:00000a50 ??_C@_0M@PMMIEFCP@bad?5message?$AA@ 0000000140003a50 libcpmt:syserror.obj + 0002:00000a60 ??_C@_0M@KPHOFDBE@broken?5pipe?$AA@ 0000000140003a60 libcpmt:syserror.obj + 0002:00000a70 ??_C@_0BD@MGNDDEGM@connection?5aborted?$AA@ 0000000140003a70 libcpmt:syserror.obj + 0002:00000a88 ??_C@_0BP@KAIHPOGN@connection?5already?5in?5progress?$AA@ 0000000140003a88 libcpmt:syserror.obj + 0002:00000aa8 ??_C@_0BD@PJLIIJEL@connection?5refused?$AA@ 0000000140003aa8 libcpmt:syserror.obj + 0002:00000ac0 ??_C@_0BB@IECNJNOI@connection?5reset?$AA@ 0000000140003ac0 libcpmt:syserror.obj + 0002:00000ad8 ??_C@_0BC@PPHBOELF@cross?5device?5link?$AA@ 0000000140003ad8 libcpmt:syserror.obj + 0002:00000af0 ??_C@_0BN@KDMIFEIP@destination?5address?5required?$AA@ 0000000140003af0 libcpmt:syserror.obj + 0002:00000b10 ??_C@_0BI@NGCEHDD@device?5or?5resource?5busy?$AA@ 0000000140003b10 libcpmt:syserror.obj + 0002:00000b28 ??_C@_0BE@JIDOCPHM@directory?5not?5empty?$AA@ 0000000140003b28 libcpmt:syserror.obj + 0002:00000b40 ??_C@_0BI@BNCLIGPB@executable?5format?5error?$AA@ 0000000140003b40 libcpmt:syserror.obj + 0002:00000b58 ??_C@_0M@MIDIAGJP@file?5exists?$AA@ 0000000140003b58 libcpmt:syserror.obj + 0002:00000b68 ??_C@_0P@DNAJLBJK@file?5too?5large?$AA@ 0000000140003b68 libcpmt:syserror.obj + 0002:00000b78 ??_C@_0BC@EJHOMAAK@filename?5too?5long?$AA@ 0000000140003b78 libcpmt:syserror.obj + 0002:00000b90 ??_C@_0BH@KEFGLDAF@function?5not?5supported?$AA@ 0000000140003b90 libcpmt:syserror.obj + 0002:00000ba8 ??_C@_0BB@DHFDFGDM@host?5unreachable?$AA@ 0000000140003ba8 libcpmt:syserror.obj + 0002:00000bc0 ??_C@_0BD@JPHBMONG@identifier?5removed?$AA@ 0000000140003bc0 libcpmt:syserror.obj + 0002:00000bd8 ??_C@_0BG@CDNPAGJK@illegal?5byte?5sequence?$AA@ 0000000140003bd8 libcpmt:syserror.obj + 0002:00000bf0 ??_C@_0CD@BNPLBMNA@inappropriate?5io?5control?5operati@ 0000000140003bf0 libcpmt:syserror.obj + 0002:00000c18 ??_C@_0M@EGEKIIMP@interrupted?$AA@ 0000000140003c18 libcpmt:syserror.obj + 0002:00000c28 ??_C@_0BB@FCMFBGOM@invalid?5argument?$AA@ 0000000140003c28 libcpmt:syserror.obj + 0002:00000c40 ??_C@_0N@OHAFKDEK@invalid?5seek?$AA@ 0000000140003c40 libcpmt:syserror.obj + 0002:00000c50 ??_C@_08GLNPIFBN@io?5error?$AA@ 0000000140003c50 libcpmt:syserror.obj + 0002:00000c60 ??_C@_0P@FLLDBIDK@is?5a?5directory?$AA@ 0000000140003c60 libcpmt:syserror.obj + 0002:00000c70 ??_C@_0N@IFLPBIOP@message?5size?$AA@ 0000000140003c70 libcpmt:syserror.obj + 0002:00000c80 ??_C@_0N@KIIEAAIO@network?5down?$AA@ 0000000140003c80 libcpmt:syserror.obj + 0002:00000c90 ??_C@_0O@FNPDBHEE@network?5reset?$AA@ 0000000140003c90 libcpmt:syserror.obj + 0002:00000ca0 ??_C@_0BE@IFNCKGE@network?5unreachable?$AA@ 0000000140003ca0 libcpmt:syserror.obj + 0002:00000cb8 ??_C@_0BA@PFFCAOFK@no?5buffer?5space?$AA@ 0000000140003cb8 libcpmt:syserror.obj + 0002:00000cc8 ??_C@_0BB@IEPBLJHK@no?5child?5process?$AA@ 0000000140003cc8 libcpmt:syserror.obj + 0002:00000ce0 ??_C@_07PLECNNKG@no?5link?$AA@ 0000000140003ce0 libcpmt:syserror.obj + 0002:00000ce8 ??_C@_0BC@NJECKMKE@no?5lock?5available?$AA@ 0000000140003ce8 libcpmt:syserror.obj + 0002:00000d00 ??_C@_0BF@PBGGPKKE@no?5message?5available?$AA@ 0000000140003d00 libcpmt:syserror.obj + 0002:00000d18 ??_C@_0L@EDOLMPAK@no?5message?$AA@ 0000000140003d18 libcpmt:syserror.obj + 0002:00000d28 ??_C@_0BD@EAMBFIDF@no?5protocol?5option?$AA@ 0000000140003d28 libcpmt:syserror.obj + 0002:00000d40 ??_C@_0BD@IJDJKDEA@no?5space?5on?5device?$AA@ 0000000140003d40 libcpmt:syserror.obj + 0002:00000d58 ??_C@_0BE@MKFDAFMP@no?5stream?5resources?$AA@ 0000000140003d58 libcpmt:syserror.obj + 0002:00000d70 ??_C@_0BK@IMCPHCBI@no?5such?5device?5or?5address?$AA@ 0000000140003d70 libcpmt:syserror.obj + 0002:00000d90 ??_C@_0P@FDINDDOK@no?5such?5device?$AA@ 0000000140003d90 libcpmt:syserror.obj + 0002:00000da0 ??_C@_0BK@NDOCBPGE@no?5such?5file?5or?5directory?$AA@ 0000000140003da0 libcpmt:syserror.obj + 0002:00000dc0 ??_C@_0BA@ENLPPKBN@no?5such?5process?$AA@ 0000000140003dc0 libcpmt:syserror.obj + 0002:00000dd0 ??_C@_0BA@DOCPFFJG@not?5a?5directory?$AA@ 0000000140003dd0 libcpmt:syserror.obj + 0002:00000de0 ??_C@_0N@POEIPGGF@not?5a?5socket?$AA@ 0000000140003de0 libcpmt:syserror.obj + 0002:00000df0 ??_C@_0N@LGAPMMPI@not?5a?5stream?$AA@ 0000000140003df0 libcpmt:syserror.obj + 0002:00000e00 ??_C@_0O@GLMIBBEG@not?5connected?$AA@ 0000000140003e00 libcpmt:syserror.obj + 0002:00000e10 ??_C@_0BC@ENOOLCNF@not?5enough?5memory?$AA@ 0000000140003e10 libcpmt:syserror.obj + 0002:00000e28 ??_C@_0O@NHEDABJP@not?5supported?$AA@ 0000000140003e28 libcpmt:syserror.obj + 0002:00000e38 ??_C@_0BD@MOLBPMEA@operation?5canceled?$AA@ 0000000140003e38 libcpmt:syserror.obj + 0002:00000e50 ??_C@_0BG@KDKHOPCO@operation?5in?5progress?$AA@ 0000000140003e50 libcpmt:syserror.obj + 0002:00000e68 ??_C@_0BI@OHIEJAAB@operation?5not?5permitted?$AA@ 0000000140003e68 libcpmt:syserror.obj + 0002:00000e80 ??_C@_0BI@LNEGIFLN@operation?5not?5supported?$AA@ 0000000140003e80 libcpmt:syserror.obj + 0002:00000e98 ??_C@_0BG@OEMDKMEE@operation?5would?5block?$AA@ 0000000140003e98 libcpmt:syserror.obj + 0002:00000eb0 ??_C@_0L@BLPOFLNJ@owner?5dead?$AA@ 0000000140003eb0 libcpmt:syserror.obj + 0002:00000ec0 ??_C@_0BC@CIJDGCDI@permission?5denied?$AA@ 0000000140003ec0 libcpmt:syserror.obj + 0002:00000ed8 ??_C@_0P@FNPOCJBE@protocol?5error?$AA@ 0000000140003ed8 libcpmt:syserror.obj + 0002:00000ee8 ??_C@_0BH@JPPPLHJB@protocol?5not?5supported?$AA@ 0000000140003ee8 libcpmt:syserror.obj + 0002:00000f00 ??_C@_0BG@EICBIHDP@read?5only?5file?5system?$AA@ 0000000140003f00 libcpmt:syserror.obj + 0002:00000f18 ??_C@_0BO@BJBOMOEJ@resource?5deadlock?5would?5occur?$AA@ 0000000140003f18 libcpmt:syserror.obj + 0002:00000f38 ??_C@_0BP@LKNGHENJ@resource?5unavailable?5try?5again?$AA@ 0000000140003f38 libcpmt:syserror.obj + 0002:00000f58 ??_C@_0BE@GOIPJJHG@result?5out?5of?5range?$AA@ 0000000140003f58 libcpmt:syserror.obj + 0002:00000f70 ??_C@_0BG@MPLKFPAE@state?5not?5recoverable?$AA@ 0000000140003f70 libcpmt:syserror.obj + 0002:00000f88 ??_C@_0P@DIIFGFCG@stream?5timeout?$AA@ 0000000140003f88 libcpmt:syserror.obj + 0002:00000f98 ??_C@_0P@IPFDMIFL@text?5file?5busy?$AA@ 0000000140003f98 libcpmt:syserror.obj + 0002:00000fa8 ??_C@_09KJPPMAOI@timed?5out?$AA@ 0000000140003fa8 libcpmt:syserror.obj + 0002:00000fb8 ??_C@_0BO@HACHBEKI@too?5many?5files?5open?5in?5system?$AA@ 0000000140003fb8 libcpmt:syserror.obj + 0002:00000fd8 ??_C@_0BE@GHAFMPAH@too?5many?5files?5open?$AA@ 0000000140003fd8 libcpmt:syserror.obj + 0002:00000ff0 ??_C@_0P@HCOMKFCC@too?5many?5links?$AA@ 0000000140003ff0 libcpmt:syserror.obj + 0002:00001000 ??_C@_0BO@EFGOJEF@too?5many?5symbolic?5link?5levels?$AA@ 0000000140004000 libcpmt:syserror.obj + 0002:00001020 ??_C@_0BA@KGKGOOJA@value?5too?5large?$AA@ 0000000140004020 libcpmt:syserror.obj + 0002:00001030 ??_C@_0BE@MIEJDDNH@wrong?5protocol?5type?$AA@ 0000000140004030 libcpmt:syserror.obj + 0002:00001048 ??_C@_1BK@MGMFAEKH@?$AAk?$AAe?$AAr?$AAn?$AAe?$AAl?$AA3?$AA2?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@ 0000000140004048 libcpmt:winapisupp.obj + 0002:00001068 ??_C@_08KNHFBNJ@FlsAlloc?$AA@ 0000000140004068 libcpmt:winapisupp.obj + 0002:00001078 ??_C@_07PEJMOBNF@FlsFree?$AA@ 0000000140004078 libcpmt:winapisupp.obj + 0002:00001080 ??_C@_0M@GDNOONDI@FlsGetValue?$AA@ 0000000140004080 libcpmt:winapisupp.obj + 0002:00001090 ??_C@_0M@JCPCPOEF@FlsSetValue?$AA@ 0000000140004090 libcpmt:winapisupp.obj + 0002:000010a0 ??_C@_0BM@HCFOFFN@InitializeCriticalSectionEx?$AA@ 00000001400040a0 libcpmt:winapisupp.obj + 0002:000010c0 ??_C@_0BE@GPLMMCMH@InitOnceExecuteOnce?$AA@ 00000001400040c0 libcpmt:winapisupp.obj + 0002:000010d8 ??_C@_0P@DLHPPCNH@CreateEventExW?$AA@ 00000001400040d8 libcpmt:winapisupp.obj + 0002:000010e8 ??_C@_0BB@MEFPJLHN@CreateSemaphoreW?$AA@ 00000001400040e8 libcpmt:winapisupp.obj + 0002:00001100 ??_C@_0BD@KIEEOEEH@CreateSemaphoreExW?$AA@ 0000000140004100 libcpmt:winapisupp.obj + 0002:00001118 ??_C@_0BG@OGFAJCKC@CreateThreadpoolTimer?$AA@ 0000000140004118 libcpmt:winapisupp.obj + 0002:00001130 ??_C@_0BD@LPLEMMDI@SetThreadpoolTimer?$AA@ 0000000140004130 libcpmt:winapisupp.obj + 0002:00001148 ??_C@_0CA@FMNJENH@WaitForThreadpoolTimerCallbacks?$AA@ 0000000140004148 libcpmt:winapisupp.obj + 0002:00001168 ??_C@_0BF@DCFCCNOC@CloseThreadpoolTimer?$AA@ 0000000140004168 libcpmt:winapisupp.obj + 0002:00001180 ??_C@_0BF@FLABGKKM@CreateThreadpoolWait?$AA@ 0000000140004180 libcpmt:winapisupp.obj + 0002:00001198 ??_C@_0BC@MGCOHNA@SetThreadpoolWait?$AA@ 0000000140004198 libcpmt:winapisupp.obj + 0002:000011b0 ??_C@_0BE@OCIOMIMP@CloseThreadpoolWait?$AA@ 00000001400041b0 libcpmt:winapisupp.obj + 0002:000011c8 ??_C@_0BJ@LKGHFHBO@FlushProcessWriteBuffers?$AA@ 00000001400041c8 libcpmt:winapisupp.obj + 0002:000011e8 ??_C@_0BP@KALKKPMO@FreeLibraryWhenCallbackReturns?$AA@ 00000001400041e8 libcpmt:winapisupp.obj + 0002:00001208 ??_C@_0BK@DFNBACLA@GetCurrentProcessorNumber?$AA@ 0000000140004208 libcpmt:winapisupp.obj + 0002:00001228 ??_C@_0BE@FKKLLFLM@CreateSymbolicLinkW?$AA@ 0000000140004228 libcpmt:winapisupp.obj + 0002:00001240 ??_C@_0BE@JOGNEJCI@GetCurrentPackageId?$AA@ 0000000140004240 libcpmt:winapisupp.obj + 0002:00001258 ??_C@_0P@CDHHOHKP@GetTickCount64?$AA@ 0000000140004258 libcpmt:winapisupp.obj + 0002:00001268 ??_C@_0BN@NEEHBBPO@GetFileInformationByHandleEx?$AA@ 0000000140004268 libcpmt:winapisupp.obj + 0002:00001288 ??_C@_0BL@KBBHGKCM@SetFileInformationByHandle?$AA@ 0000000140004288 libcpmt:winapisupp.obj + 0002:000012a8 ??_C@_0BP@FPNJPEJC@GetSystemTimePreciseAsFileTime?$AA@ 00000001400042a8 libcpmt:winapisupp.obj + 0002:000012c8 ??_C@_0BM@HLJJNPAH@InitializeConditionVariable?$AA@ 00000001400042c8 libcpmt:winapisupp.obj + 0002:000012e8 ??_C@_0BG@BFNILBLN@WakeConditionVariable?$AA@ 00000001400042e8 libcpmt:winapisupp.obj + 0002:00001300 ??_C@_0BJ@PGPPEPCC@WakeAllConditionVariable?$AA@ 0000000140004300 libcpmt:winapisupp.obj + 0002:00001320 ??_C@_0BJ@JEBJOJFJ@SleepConditionVariableCS?$AA@ 0000000140004320 libcpmt:winapisupp.obj + 0002:00001340 ??_C@_0BC@MMLHEBPB@InitializeSRWLock?$AA@ 0000000140004340 libcpmt:winapisupp.obj + 0002:00001358 ??_C@_0BI@OMNLIJDB@AcquireSRWLockExclusive?$AA@ 0000000140004358 libcpmt:winapisupp.obj + 0002:00001370 ??_C@_0BL@OGHFEMNA@TryAcquireSRWLockExclusive?$AA@ 0000000140004370 libcpmt:winapisupp.obj + 0002:00001390 ??_C@_0BI@HMIEPCNJ@ReleaseSRWLockExclusive?$AA@ 0000000140004390 libcpmt:winapisupp.obj + 0002:000013a8 ??_C@_0BK@LGACAGIC@SleepConditionVariableSRW?$AA@ 00000001400043a8 libcpmt:winapisupp.obj + 0002:000013c8 ??_C@_0BF@GGPHFPJA@CreateThreadpoolWork?$AA@ 00000001400043c8 libcpmt:winapisupp.obj + 0002:000013e0 ??_C@_0BF@NHDAIMMO@SubmitThreadpoolWork?$AA@ 00000001400043e0 libcpmt:winapisupp.obj + 0002:000013f8 ??_C@_0BE@NPHIPNPD@CloseThreadpoolWork?$AA@ 00000001400043f8 libcpmt:winapisupp.obj + 0002:00001410 ??_C@_0BA@IHGNDAEB@CompareStringEx?$AA@ 0000000140004410 libcpmt:winapisupp.obj + 0002:00001420 ??_C@_0BA@ONOKGCMP@GetLocaleInfoEx?$AA@ 0000000140004420 libcpmt:winapisupp.obj + 0002:00001430 ??_C@_0O@KKBNKAPF@LCMapStringEx?$AA@ 0000000140004430 libcpmt:winapisupp.obj + 0002:00001458 ??_C@_08LHIGDGEJ@Freeable?$AA@ 0000000140004458 libGroundfloor:String.obj + 0002:00001464 ??_C@_06ENNEIMBA@String?$AA@ 0000000140004464 libGroundfloor:String.obj + 0002:00001470 ??_C@_0GJ@MODPPMLB@Groundfloor?3?3String?5Warning?3?5Mem@ 0000000140004470 libGroundfloor:String.obj + 0002:000014e8 ??_7Freeable@Groundfloor@@6B@ 00000001400044e8 libGroundfloor:String.obj + 0002:00001508 ??_7String@Groundfloor@@6B@ 0000000140004508 libGroundfloor:String.obj + 0002:00001520 ??_C@_09NPKOHMNF@?$CFs?$EA?$CF016x?$AA?$AA@ 0000000140004520 libGroundfloor:Freeable.obj + 0002:00001550 _load_config_used 0000000140004550 msvcrt:loadcfg.obj + 0002:00001650 ??_R4type_info@@6B@ 0000000140004650 msvcrt:std_type_info_static.obj + 0002:00001678 ??_R3type_info@@8 0000000140004678 msvcrt:std_type_info_static.obj + 0002:00001690 ??_R2type_info@@8 0000000140004690 msvcrt:std_type_info_static.obj + 0002:000016a0 ??_R1A@?0A@EA@type_info@@8 00000001400046a0 msvcrt:std_type_info_static.obj + 0002:000016c8 ??_R2String@Groundfloor@@8 00000001400046c8 libGroundfloor:String.obj + 0002:000016e0 ??_R3Freeable@Groundfloor@@8 00000001400046e0 libGroundfloor:String.obj + 0002:000016f8 ??_R4Freeable@Groundfloor@@6B@ 00000001400046f8 libGroundfloor:String.obj + 0002:00001720 ??_R2Freeable@Groundfloor@@8 0000000140004720 libGroundfloor:String.obj + 0002:00001730 ??_R3String@Groundfloor@@8 0000000140004730 libGroundfloor:String.obj + 0002:00001748 ??_R1A@?0A@EA@Freeable@Groundfloor@@8 0000000140004748 libGroundfloor:String.obj + 0002:00001770 ??_R4String@Groundfloor@@6B@ 0000000140004770 libGroundfloor:String.obj + 0002:00001798 ??_R1A@?0A@EA@String@Groundfloor@@8 0000000140004798 libGroundfloor:String.obj + 0002:00001a38 __rtc_iaa 0000000140004a38 msvcrt:_initsect_.obj + 0002:00001a40 __rtc_izz 0000000140004a40 msvcrt:_initsect_.obj + 0002:00001a48 __rtc_taa 0000000140004a48 msvcrt:_initsect_.obj + 0002:00001a50 __rtc_tzz 0000000140004a50 msvcrt:_initsect_.obj + 0002:00001bb0 __IMPORT_DESCRIPTOR_KERNEL32 0000000140004bb0 kernel32:KERNEL32.dll + 0002:00001bc4 __IMPORT_DESCRIPTOR_VCRUNTIME140 0000000140004bc4 vcruntime:VCRUNTIME140.dll + 0002:00001bd8 __IMPORT_DESCRIPTOR_api-ms-win-crt-stdio-l1-1-0 0000000140004bd8 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:00001bec __IMPORT_DESCRIPTOR_api-ms-win-crt-heap-l1-1-0 0000000140004bec ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0002:00001c00 __IMPORT_DESCRIPTOR_api-ms-win-crt-runtime-l1-1-0 0000000140004c00 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:00001c14 __IMPORT_DESCRIPTOR_api-ms-win-crt-math-l1-1-0 0000000140004c14 ucrt:api-ms-win-crt-math-l1-1-0.dll + 0002:00001c28 __IMPORT_DESCRIPTOR_api-ms-win-crt-locale-l1-1-0 0000000140004c28 ucrt:api-ms-win-crt-locale-l1-1-0.dll + 0002:00001c3c __NULL_IMPORT_DESCRIPTOR 0000000140004c3c kernel32:KERNEL32.dll + 0003:00000000 __security_cookie 0000000140006000 msvcrt:gs_cookie.obj + 0003:00000008 __security_cookie_complement 0000000140006008 msvcrt:gs_cookie.obj + 0003:00000010 __scrt_native_dllmain_reason 0000000140006010 msvcrt:utility.obj + 0003:00000014 __scrt_default_matherr 0000000140006014 msvcrt:matherr.obj + 0003:00000018 __isa_available 0000000140006018 msvcrt:_cpu_disp_.obj + 0003:0000001c __isa_enabled 000000014000601c msvcrt:_cpu_disp_.obj + 0003:00000020 __memcpy_nt_iters 0000000140006020 msvcrt:_cpu_disp_.obj + 0003:00000030 __scrt_ucrt_dll_is_in_use 0000000140006030 msvcrt:ucrt_stubs.obj + 0003:00000038 ??_R0?AVtype_info@@@8 0000000140006038 msvcrt:std_type_info_static.obj + 0003:00000058 ??_R0?AVFreeable@Groundfloor@@@8 0000000140006058 libGroundfloor:String.obj + 0003:00000088 ??_R0?AVString@Groundfloor@@@8 0000000140006088 libGroundfloor:String.obj + 0003:00000630 __scrt_current_native_startup_state 0000000140006630 msvcrt:utility.obj + 0003:00000638 __scrt_native_startup_lock 0000000140006638 msvcrt:utility.obj + 0003:00000680 ?__type_info_root_node@@3U__type_info_node@@A 0000000140006680 msvcrt:tncleanup.obj + 0003:00000690 ?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA 0000000140006690 msvcrt:default_local_stdio_options.obj + 0003:00000698 __scrt_debugger_hook_flag 0000000140006698 msvcrt:utility_desktop.obj + 0003:0000069c __favor 000000014000669c msvcrt:_cpu_disp_.obj + 0003:000006a0 __encodedKERNEL32Functions 00000001400066a0 libcpmt:winapisupp.obj + 0003:000007e0 ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA 00000001400067e0 output.s.obj + 0003:000007e8 __dyn_tls_dtor_callback 00000001400067e8 + 0003:000007f0 __dyn_tls_init_callback 00000001400067f0 + + entry point at 0001:0000076c + + Static symbols + + 0002:ffffd000 .idata$6 0000000140000000 ucrt:api-ms-win-crt-string-l1-1-0.dll + 0002:ffffd000 .idata$6 0000000140000000 ucrt:api-ms-win-crt-convert-l1-1-0.dll + 0001:000004e0 $$000000 00000001400014e0 msvcrt:_amdsecgs_.obj + 0001:00000514 ?pre_c_initialization@@YAHXZ 0000000140001514 f msvcrt:exe_main.obj + 0001:000005c4 ?post_pgo_initialization@@YAHXZ 00000001400015c4 f msvcrt:exe_main.obj + 0001:000005d4 ?pre_cpp_initialization@@YAXXZ 00000001400015d4 f msvcrt:exe_main.obj + 0001:000005f0 ?__scrt_common_main_seh@@YAHXZ 00000001400015f0 f msvcrt:exe_main.obj + 0001:000008bc capture_previous_context 00000001400018bc f msvcrt:gs_report.obj + 0001:00001140 ?initialize_pointers@@YAHXZ 0000000140002140 f libcpmt:winapisupp.obj + 0001:00001740 $$000000 0000000140002740 msvcrt:_guard_dispatch_.obj + 0001:00001760 ?filt$0@?0??__scrt_common_main_seh@@YAHXZ@4HA 0000000140002760 f msvcrt:exe_main.obj + 0001:0000177e __scrt_is_nonwritable_in_current_image$filt$0 000000014000277e f msvcrt:utility.obj + 0002:000001d0 ?pre_cpp_initializer@@3P6AXXZEA 00000001400031d0 msvcrt:exe_main.obj + 0002:000001e8 ?pre_c_initializer@@3P6AHXZEA 00000001400031e8 msvcrt:exe_main.obj + 0002:000001f0 ?post_pgo_initializer@@3P6AHXZEA 00000001400031f0 msvcrt:exe_main.obj + 0002:000001f8 ?pinit@@3P6AHXZEA 00000001400031f8 libcpmt:winapisupp.obj + 0002:00000240 GS_ExceptionPointers 0000000140003240 msvcrt:gs_report.obj + 0002:00000250 ?_Sys_errtab@std@@3QBU_Sys_errtab_t@1@B 0000000140003250 libcpmt:syserror.obj + 0002:00000730 ?_Win_errtab@std@@3QBU_Win_errtab_t@1@B 0000000140003730 libcpmt:syserror.obj + 0002:00001440 $SG4294967234 0000000140004440 output.s.obj + 0002:00001450 $SG4294967233 0000000140004450 output.s.obj + 0002:00001a58 $unwind$_vfprintf_l 0000000140004a58 output.s.obj + 0002:00001a58 $unwind$printf 0000000140004a58 output.s.obj + 0002:00001a60 $unwind$??0String@Groundfloor@@QEAA@PEBD@Z 0000000140004a60 libGroundfloor:String.obj + 0002:00001a60 $unwind$??_GFreeable@Groundfloor@@UEAAPEAXI@Z 0000000140004a60 libGroundfloor:String.obj + 0002:00001a60 $unwind$?pre_c_initialization@@YAHXZ 0000000140004a60 msvcrt:exe_main.obj + 0002:00001a60 $unwind$__scrt_initialize_crt 0000000140004a60 msvcrt:utility.obj + 0002:00001a60 $unwind$?initialize_pointers@@YAHXZ 0000000140004a60 libcpmt:winapisupp.obj + 0002:00001a60 $unwind$??1String@Groundfloor@@UEAA@XZ 0000000140004a60 libGroundfloor:String.obj + 0002:00001a60 $unwind$__scrt_release_startup_lock 0000000140004a60 msvcrt:utility.obj + 0002:00001a60 $unwind$__raise_securityfailure 0000000140004a60 msvcrt:gs_report.obj + 0002:00001a60 $unwind$__scrt_uninitialize_crt 0000000140004a60 msvcrt:utility.obj + 0002:00001a60 $unwind$??_Gtype_info@@UEAAPEAXI@Z 0000000140004a60 msvcrt:std_type_info_static.obj + 0002:00001a60 $unwind$_onexit 0000000140004a60 msvcrt:utility.obj + 0002:00001a68 $unwind$_RTC_Terminate 0000000140004a68 msvcrt:_initsect_.obj + 0002:00001a68 $unwind$_RTC_Initialize 0000000140004a68 msvcrt:_initsect_.obj + 0002:00001a68 $unwind$?setSize@String@Groundfloor@@QEAA_NI@Z 0000000140004a68 libGroundfloor:String.obj + 0002:00001a68 $unwind$?DebugString@Freeable@Groundfloor@@UEAAHPEADJ@Z 0000000140004a68 libGroundfloor:Freeable.obj + 0002:00001a68 $unwind$??_GString@Groundfloor@@UEAAPEAXI@Z 0000000140004a68 libGroundfloor:String.obj + 0002:00001a74 $unwind$?setValue@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140004a74 libGroundfloor:String.obj + 0002:00001a88 $chain$0$?setValue@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140004a88 libGroundfloor:String.obj + 0002:00001a9c $chain$1$?setValue@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140004a9c libGroundfloor:String.obj + 0002:00001aac $unwind$?append@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140004aac libGroundfloor:String.obj + 0002:00001ac0 $unwind$sprintf 0000000140004ac0 libGroundfloor:Freeable.obj + 0002:00001ad0 $xdatasym 0000000140004ad0 msvcrt:_amdsecgs_.obj + 0002:00001ad4 $unwind$?pre_cpp_initialization@@YAXXZ 0000000140004ad4 msvcrt:exe_main.obj + 0002:00001ad4 $unwind$__scrt_is_managed_app 0000000140004ad4 msvcrt:utility_desktop.obj + 0002:00001ad4 $unwind$atexit 0000000140004ad4 msvcrt:utility.obj + 0002:00001ad4 $unwind$__scrt_acquire_startup_lock 0000000140004ad4 msvcrt:utility.obj + 0002:00001ad4 $unwind$mainCRTStartup 0000000140004ad4 msvcrt:exe_main.obj + 0002:00001ad4 $unwind$__scrt_initialize_default_local_stdio_options 0000000140004ad4 msvcrt:default_local_stdio_options.obj + 0002:00001ad4 $unwind$__scrt_unhandled_exception_filter 0000000140004ad4 msvcrt:utility_desktop.obj + 0002:00001ad4 $unwind$?post_pgo_initialization@@YAHXZ 0000000140004ad4 msvcrt:exe_main.obj + 0002:00001adc $unwind$?__scrt_common_main_seh@@YAHXZ 0000000140004adc msvcrt:exe_main.obj + 0002:00001b14 $unwind$?filt$0@?0??__scrt_common_main_seh@@YAHXZ@4HA 0000000140004b14 msvcrt:exe_main.obj + 0002:00001b1c $unwind$__report_gsfailure 0000000140004b1c msvcrt:gs_report.obj + 0002:00001b24 $unwind$capture_previous_context 0000000140004b24 msvcrt:gs_report.obj + 0002:00001b30 $unwind$__scrt_is_nonwritable_in_current_image 0000000140004b30 msvcrt:utility.obj + 0002:00001b50 $unwind$__scrt_is_nonwritable_in_current_image$filt$0 0000000140004b50 msvcrt:utility.obj + 0002:00001b58 $unwind$__scrt_initialize_onexit_tables 0000000140004b58 msvcrt:utility.obj + 0002:00001b64 $unwind$__security_init_cookie 0000000140004b64 msvcrt:gs_support.obj + 0002:00001b70 $unwind$__scrt_fastfail 0000000140004b70 msvcrt:utility_desktop.obj + 0002:00001b80 $unwind$__isa_available_init 0000000140004b80 msvcrt:_cpu_disp_.obj + 0002:00001b98 $xdatasym 0000000140004b98 msvcrt:_guard_dispatch_.obj + 0002:00001b9c $unwind$main 0000000140004b9c output.s.obj + 0002:00001ba4 $unwind$?square@@YAHH@Z 0000000140004ba4 output.s.obj + 0002:00001f78 .idata$6 0000000140004f78 kernel32:KERNEL32.dll + 0002:00001fb2 .idata$6 0000000140004fb2 vcruntime:VCRUNTIME140.dll + 0002:000021d8 .idata$6 00000001400051d8 ucrt:api-ms-win-crt-stdio-l1-1-0.dll + 0002:000021f8 .idata$6 00000001400051f8 ucrt:api-ms-win-crt-heap-l1-1-0.dll + 0002:00002218 .idata$6 0000000140005218 ucrt:api-ms-win-crt-runtime-l1-1-0.dll + 0002:0000223a .idata$6 000000014000523a ucrt:api-ms-win-crt-math-l1-1-0.dll + 0002:0000225a .idata$6 000000014000525a ucrt:api-ms-win-crt-locale-l1-1-0.dll + 0003:000000c0 GS_ExceptionRecord 00000001400060c0 msvcrt:gs_report.obj + 0003:00000160 GS_ContextRecord 0000000140006160 msvcrt:gs_report.obj + 0003:00000634 ?module_local_atexit_table_initialized@@3_NA 0000000140006634 msvcrt:utility.obj + 0003:00000640 ?module_local_atexit_table@@3U_onexit_table_t@@A 0000000140006640 msvcrt:utility.obj + 0003:00000658 ?module_local_at_quick_exit_table@@3U_onexit_table_t@@A 0000000140006658 msvcrt:utility.obj + 0003:00000670 ?is_initialized_as_dll@@3_NA 0000000140006670 msvcrt:utility.obj + 0004:00000000 $pdata$_vfprintf_l 0000000140007000 output.s.obj + 0004:0000000c $pdata$printf 000000014000700c output.s.obj + 0004:00000018 $pdata$??_GFreeable@Groundfloor@@UEAAPEAXI@Z 0000000140007018 libGroundfloor:String.obj + 0004:00000024 $pdata$??_GString@Groundfloor@@UEAAPEAXI@Z 0000000140007024 libGroundfloor:String.obj + 0004:00000030 $pdata$??0String@Groundfloor@@QEAA@PEBD@Z 0000000140007030 libGroundfloor:String.obj + 0004:0000003c $pdata$??1String@Groundfloor@@UEAA@XZ 000000014000703c libGroundfloor:String.obj + 0004:00000048 $pdata$?setValue@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140007048 libGroundfloor:String.obj + 0004:00000054 $pdata$0$?setValue@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140007054 libGroundfloor:String.obj + 0004:00000060 $pdata$1$?setValue@String@Groundfloor@@QEAA_NPEBDI@Z 0000000140007060 libGroundfloor:String.obj + 0004:0000006c $pdata$?append@String@Groundfloor@@QEAA_NPEBDI@Z 000000014000706c libGroundfloor:String.obj + 0004:00000078 $pdata$?setSize@String@Groundfloor@@QEAA_NI@Z 0000000140007078 libGroundfloor:String.obj + 0004:00000084 $pdata$sprintf 0000000140007084 libGroundfloor:Freeable.obj + 0004:00000090 $pdata$?DebugString@Freeable@Groundfloor@@UEAAHPEADJ@Z 0000000140007090 libGroundfloor:Freeable.obj + 0004:000000a8 $pdata$?pre_c_initialization@@YAHXZ 00000001400070a8 msvcrt:exe_main.obj + 0004:000000b4 $pdata$?post_pgo_initialization@@YAHXZ 00000001400070b4 msvcrt:exe_main.obj + 0004:000000c0 $pdata$?pre_cpp_initialization@@YAXXZ 00000001400070c0 msvcrt:exe_main.obj + 0004:000000cc $pdata$?__scrt_common_main_seh@@YAHXZ 00000001400070cc msvcrt:exe_main.obj + 0004:000000d8 $pdata$mainCRTStartup 00000001400070d8 msvcrt:exe_main.obj + 0004:000000e4 $pdata$??_Gtype_info@@UEAAPEAXI@Z 00000001400070e4 msvcrt:std_type_info_static.obj + 0004:000000f0 $pdata$__raise_securityfailure 00000001400070f0 msvcrt:gs_report.obj + 0004:000000fc $pdata$__report_gsfailure 00000001400070fc msvcrt:gs_report.obj + 0004:00000108 $pdata$capture_previous_context 0000000140007108 msvcrt:gs_report.obj + 0004:00000114 $pdata$__scrt_acquire_startup_lock 0000000140007114 msvcrt:utility.obj + 0004:00000120 $pdata$__scrt_initialize_crt 0000000140007120 msvcrt:utility.obj + 0004:0000012c $pdata$__scrt_initialize_onexit_tables 000000014000712c msvcrt:utility.obj + 0004:00000138 $pdata$__scrt_is_nonwritable_in_current_image 0000000140007138 msvcrt:utility.obj + 0004:00000144 $pdata$__scrt_release_startup_lock 0000000140007144 msvcrt:utility.obj + 0004:00000150 $pdata$__scrt_uninitialize_crt 0000000140007150 msvcrt:utility.obj + 0004:0000015c $pdata$_onexit 000000014000715c msvcrt:utility.obj + 0004:00000168 $pdata$atexit 0000000140007168 msvcrt:utility.obj + 0004:00000174 $pdata$__security_init_cookie 0000000140007174 msvcrt:gs_support.obj + 0004:00000180 $pdata$__scrt_initialize_default_local_stdio_options 0000000140007180 msvcrt:default_local_stdio_options.obj + 0004:0000018c $pdata$__scrt_fastfail 000000014000718c msvcrt:utility_desktop.obj + 0004:00000198 $pdata$__scrt_is_managed_app 0000000140007198 msvcrt:utility_desktop.obj + 0004:000001a4 $pdata$__scrt_unhandled_exception_filter 00000001400071a4 msvcrt:utility_desktop.obj + 0004:000001b0 $pdata$_RTC_Initialize 00000001400071b0 msvcrt:_initsect_.obj + 0004:000001bc $pdata$_RTC_Terminate 00000001400071bc msvcrt:_initsect_.obj + 0004:000001c8 $pdata$__isa_available_init 00000001400071c8 msvcrt:_cpu_disp_.obj + 0004:000001d4 $pdata$?initialize_pointers@@YAHXZ 00000001400071d4 libcpmt:winapisupp.obj + 0004:000001e0 $pdata$main 00000001400071e0 output.s.obj + 0004:000001ec $pdata$?square@@YAHH@Z 00000001400071ec output.s.obj + 0004:00000204 $pdata$?filt$0@?0??__scrt_common_main_seh@@YAHXZ@4HA 0000000140007204 msvcrt:exe_main.obj + 0004:00000210 $pdata$__scrt_is_nonwritable_in_current_image$filt$0 0000000140007210 msvcrt:utility.obj diff --git a/test/pe32-tests.js b/test/pe32-tests.js new file mode 100644 index 000000000..1f0713c0a --- /dev/null +++ b/test/pe32-tests.js @@ -0,0 +1,37 @@ +// Copyright (c) 2017, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +const chai = require('chai'); + should = chai.should(), + assert = chai.assert, + LabelReconstructor = require('../lib/pe32-support').labelReconstructor, + logger = require('../lib/logger').logger; + +describe('Basic reconstructions', function () { + it('No lines', function () { + const lines = []; + const reconstructor = new LabelReconstructor(lines, false, false); + reconstructor.asmLines.length.should.equal(0); + }); +});