www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ldc - Performance dmd vs ldc2

reply "Chris" <wendlec tcd.ie> writes:
I recompiled a medium sized project with ldc2 (for the first time 
ever). I was surprised at how fast the program started 
afterwards. My program reads in a few rule files it needs to 
operate (including XML parsing). With dmd 2.063 the program takes 
4 seconds to load, with ldc2 it is there immediately.

Although I have not done any serious (i.e. exact) benchmarking 
here are the first obvious results:

Build time
dmd 2.063 : ~ 1 sec (probably less)
ldc2 : 14 secs

File size of executable
dmd 2.063 : 2.8 MB
ldc2 : 3.2 MB

Startup time
dmd 2.063 : 4 secs
ldc2 : next to zero secs (true!)

The program uses external C libraries (portaudio and libsndfile 
among others). However, the performance gain when using ldc2 is 
in the reading and parsing part of the program, which is pure D 
code.

By the way, the program compiled with ldc2 without error at the 
first attempt. No complaints, no questions asked :-)

PS Naive question: What's the difference between ldc2 and ldmd2?
Jul 24 2013
next sibling parent reply "bearophile" <bearophileHUGS lycos.com> writes:
Chris:

 Although I have not done any serious (i.e. exact) benchmarking 
 here are the first obvious results:
In the last weeks Walter has written several patches for the back-end of DMD, to better optimize programs, but I didn't see benchmarks to justify those changes.
 PS Naive question: What's the difference between ldc2 and ldmd2?
ldmd2 is just a wrapper that calls ldc2. It gives a similar interface to dmd. But it lacks profiler, linker options like -L/STACK:1000000 and more. (How do you increase stack space on Windows with ldc2?) Bye, bearophile
Jul 24 2013
parent reply "Chris" <wendlec tcd.ie> writes:
On Wednesday, 24 July 2013 at 11:42:59 UTC, bearophile wrote:
 Chris:

 Although I have not done any serious (i.e. exact) benchmarking 
 here are the first obvious results:
In the last weeks Walter has written several patches for the back-end of DMD, to better optimize programs, but I didn't see benchmarks to justify those changes.
 PS Naive question: What's the difference between ldc2 and 
 ldmd2?
ldmd2 is just a wrapper that calls ldc2. It gives a similar interface to dmd. But it lacks profiler, linker options like -L/STACK:1000000 and more. (How do you increase stack space on Windows with ldc2?) Bye, bearophile
ldmd2 compiles the code much faster than ldc2 (~4 secs vs 14 secs). The program runs just as fast (as far as I can see at the moment).
Jul 24 2013
parent reply "bearophile" <bearophileHUGS lycos.com> writes:
Chris:

 ldmd2 compiles the code much faster than ldc2 (~4 secs vs 14 
 secs). The program runs just as fast (as far as I can see at 
 the moment).
The ldmd2 binary is tiny, it's not a compiler, it's just a wrapper. If the compilation time is different then they are can calling the compiler with different compilation switches. Bye, bearophile
Jul 24 2013
next sibling parent reply "Chris" <wendlec tcd.ie> writes:
On Wednesday, 24 July 2013 at 12:11:50 UTC, bearophile wrote:
 Chris:

 ldmd2 compiles the code much faster than ldc2 (~4 secs vs 14 
 secs). The program runs just as fast (as far as I can see at 
 the moment).
The ldmd2 binary is tiny, it's not a compiler, it's just a wrapper. If the compilation time is different then they are can calling the compiler with different compilation switches. Bye, bearophile
Thanks for clarifying that. I am still impressed with the performance. Although I'm sure I could squeeze a bit more out of dmd. As of now I'm only using the garden-variety (i.e. dmd -release [files]). I didn't use any switches with ldc2, though.
Jul 24 2013
next sibling parent reply "John Colvin" <john.loughran.colvin gmail.com> writes:
On Wednesday, 24 July 2013 at 12:49:50 UTC, Chris wrote:
 On Wednesday, 24 July 2013 at 12:11:50 UTC, bearophile wrote:
 Chris:

 ldmd2 compiles the code much faster than ldc2 (~4 secs vs 14 
 secs). The program runs just as fast (as far as I can see at 
 the moment).
The ldmd2 binary is tiny, it's not a compiler, it's just a wrapper. If the compilation time is different then they are can calling the compiler with different compilation switches. Bye, bearophile
Thanks for clarifying that. I am still impressed with the performance. Although I'm sure I could squeeze a bit more out of dmd. As of now I'm only using the garden-variety (i.e. dmd -release [files]). I didn't use any switches with ldc2, though.
try dmd -release -noboundscheck -O -inline [files] and the same for ldmd
Jul 24 2013
parent reply "Chris" <wendlec tcd.ie> writes:
On Wednesday, 24 July 2013 at 13:12:46 UTC, John Colvin wrote:
 On Wednesday, 24 July 2013 at 12:49:50 UTC, Chris wrote:
 On Wednesday, 24 July 2013 at 12:11:50 UTC, bearophile wrote:
 Chris:

 ldmd2 compiles the code much faster than ldc2 (~4 secs vs 14 
 secs). The program runs just as fast (as far as I can see at 
 the moment).
The ldmd2 binary is tiny, it's not a compiler, it's just a wrapper. If the compilation time is different then they are can calling the compiler with different compilation switches. Bye, bearophile
Thanks for clarifying that. I am still impressed with the performance. Although I'm sure I could squeeze a bit more out of dmd. As of now I'm only using the garden-variety (i.e. dmd -release [files]). I didn't use any switches with ldc2, though.
try dmd -release -noboundscheck -O -inline [files] and the same for ldmd
Just tried it. dmd takes a bit longer to compile. Little or no performance gain in executable. Executable with ldmd2 still lightning fast in comparison. I expected a slight gain in performance with ldc2, but nowhere near as big a gain as I actually got. Here's a new fan! However, the rest of the code (except for the loading bit) seems to work as fast with dmd as with ldc2. What's the story with LDC for Windows?
Jul 24 2013
parent "Kai Nacke" <kai redstar.de> writes:
On Wednesday, 24 July 2013 at 13:29:03 UTC, Chris wrote:
 What's the story with LDC for Windows?
There is a MingW32 version of LDC for 32-bit Windows which works pretty well. I am working on a 64-bit version using MSVC and the MC C Runtime. Because LLVM still lacks support for Structured Exception Handling this is still alpha quality. Both Windows version appeared with 0.11 and are pretty new. Kai
Jul 24 2013
prev sibling next sibling parent "David Nadlinger" <code klickverbot.at> writes:
On 24 Jul 2013, at 14:49, Chris wrote:
 Thanks for clarifying that. I am still impressed with the performance. 
 Although I'm sure I could squeeze a bit
 more out of dmd. As of now I'm only using the garden-variety (i.e. dmd 
 -release [files]). I didn't use any
 switches with ldc2, though.
That's surprising. In quite a few instances, LDC's codegen is even worse than DMD's without any optimization flags (removing silly redundancies from the emitted IR is a thing that should be tackled in the future). David
Jul 24 2013
prev sibling parent reply "David Nadlinger" <code klickverbot.at> writes:
On 24 Jul 2013, at 14:49, Chris wrote:
 Thanks for clarifying that. I am still impressed with the performance. 
 Although I'm sure I could squeeze a bit
 more out of dmd. As of now I'm only using the garden-variety (i.e. dmd 
 -release [files]). I didn't use any
 switches with ldc2, though.
Never benchmark programs without at least some optimization flags (e.g. -O for DMD). It does not allow you to draw any conclusions, unless you really want to compare the performance of the compilers for debug builds of your application (where performance usually doesn't matter, except for in realtime-ish applications). David
Jul 24 2013
parent reply "Chris" <wendlec tcd.ie> writes:
On Wednesday, 24 July 2013 at 16:56:40 UTC, David Nadlinger wrote:
 On 24 Jul 2013, at 14:49, Chris wrote:
 Thanks for clarifying that. I am still impressed with the 
 performance. Although I'm sure I could squeeze a bit
 more out of dmd. As of now I'm only using the garden-variety 
 (i.e. dmd -release [files]). I didn't use any
 switches with ldc2, though.
Never benchmark programs without at least some optimization flags (e.g. -O for DMD). It does not allow you to draw any conclusions, unless you really want to compare the performance of the compilers for debug builds of your application (where performance usually doesn't matter, except for in realtime-ish applications). David
I did not do any benchmarking, to be honest. I just found it amazing that the ldc2 compiled program was up immediately (less than a second) and performed, whereas the read-and-parse operation at start-up takes 4 seconds in the dmd compiled version. One of the 4 files is an XML file that I parse with the bad old std.xml module. The remaining 3 are simple text files (no mark up) with simple regex parsing. Using the optimization switches (see earlier comment) with dmd did not help. I wonder why that is. Is it my code or dmd?
Jul 25 2013
parent reply "Kagamin" <spam here.lot> writes:
You can write a simple application, which will only parse that 
xml file and see, how it performs.
Jul 25 2013
parent reply "Chris" <wendlec tcd.ie> writes:
On Friday, 26 July 2013 at 05:05:54 UTC, Kagamin wrote:
 You can write a simple application, which will only parse that 
 xml file and see, how it performs.
I isolated the xml parsing and wrote a test program. It turned out that the xml parsing is the culprit. The average after running it 0..10 times in a loop (if I ran it 100 times, it wouldn't look much different): dmd 2.063 Average time: 2233 msecs ldc2 Average time: 10.2 msecs I used StopWatch based on this example (http://dlang.org/phobos/std_datetime.html#StopWatch). Running on Ubuntu 12.04 LTS, Intel Core i7-2760QM CPU 2.40GHz × 8, 32-bit
Jul 29 2013
parent reply "Temtaime" <temtaime gmail.com> writes:
I have a little question..
Why Digital Mars doesn't uses LLVM for backend and develops their 
own performance killer ?
Is someone contact with them to drop out their backend ?
Jul 30 2013
next sibling parent reply "Chris" <wendlec tcd.ie> writes:
On Tuesday, 30 July 2013 at 09:10:24 UTC, Temtaime wrote:
 I have a little question..
 Why Digital Mars doesn't uses LLVM for backend and develops 
 their own performance killer ?
 Is someone contact with them to drop out their backend ?
I checked it once more to make sure my code is not the problem. I used the xml parsing example on this page http://dlang.org/phobos/std_xml.html (the second example). I created a dummy "books.xml" file with one entry (see below for source). The result: Loop: 0..100 DMD 2.063 dmd -release -noboundscheck -O -inline Average time: 41.88 msecs LDC2 (latest version, no flags) ldc2 [files] Average time: 0.01 msecs ------ D Code ------- import std.xml; import std.stdio; import std.string; import std.datetime; void main() { StopWatch sw; enum n = 100; TickDuration[n] times; TickDuration last = TickDuration.from!"seconds"(0); foreach (i; 0..n) { sw.start(); parse(); //writeln("Time ", sw.peek().msecs, " [ms]"); sw.stop(); times[i] = sw.peek() - last; last = sw.peek(); } real sum = 0; // To know the number of seconds, // use properties of TickDuration. // (seconds, msecs, usecs, hnsecs) foreach(t; times) { sum += t.msecs; } writeln("Average time: ", sum/n, " msecs"); } struct Book { string id; string author; string title; string genre; string price; string pubDate; string description; } void parse() { string s = cast(string)std.file.read("books.xml"); // Check for well-formedness check(s); // Take it apart Book[] books; auto xml = new DocumentParser(s); xml.onStartTag["book"] = (ElementParser xml) { Book book; book.id = xml.tag.attr["id"]; xml.onEndTag["author"] = (in Element e) { book.author = e.text(); }; xml.onEndTag["title"] = (in Element e) { book.title = e.text(); }; xml.onEndTag["genre"] = (in Element e) { book.genre = e.text(); }; xml.onEndTag["price"] = (in Element e) { book.price = e.text(); }; xml.onEndTag["publish-date"] = (in Element e) { book.pubDate = e.text(); }; xml.onEndTag["description"] = (in Element e) { book.description = e.text(); }; xml.parse(); books ~= book; }; xml.parse(); // Put it back together again; auto doc = new Document(new Tag("catalog")); foreach(book;books) { auto element = new Element("book"); element.tag.attr["id"] = book.id; element ~= new Element("author", book.author); element ~= new Element("title", book.title); element ~= new Element("genre", book.genre); element ~= new Element("price", book.price); element ~= new Element("publish-date",book.pubDate); element ~= new Element("description", book.description); doc ~= element; } // Pretty-print it //writefln(join(doc.pretty(3),"\n")); } ------ XML FILE ------ <?xml version="1.0" encoding="UTF-8"?> <books> <book id="1-23456789"> <author>Count Dracula</author> <title>D for Vampires</title> <genre>Programming</genre> <price>66.6</price> <publish-date>1897</publish-date> <description>Tomb programming with D</description> </book> </books>
Jul 30 2013
next sibling parent "Kagamin" <spam here.lot> writes:
try
---
import core.memory;
GC.disable();
---

Maybe GC lags?
Jul 30 2013
prev sibling parent reply "John Colvin" <john.loughran.colvin gmail.com> writes:
On Tuesday, 30 July 2013 at 09:21:38 UTC, Chris wrote:
 On Tuesday, 30 July 2013 at 09:10:24 UTC, Temtaime wrote:
 I have a little question..
 Why Digital Mars doesn't uses LLVM for backend and develops 
 their own performance killer ?
 Is someone contact with them to drop out their backend ?
I checked it once more to make sure my code is not the problem. I used the xml parsing example on this page http://dlang.org/phobos/std_xml.html (the second example). I created a dummy "books.xml" file with one entry (see below for source). The result: Loop: 0..100 DMD 2.063 dmd -release -noboundscheck -O -inline Average time: 41.88 msecs LDC2 (latest version, no flags) ldc2 [files] Average time: 0.01 msecs ------ D Code ------- import std.xml; import std.stdio; import std.string; import std.datetime; void main() { StopWatch sw; enum n = 100; TickDuration[n] times; TickDuration last = TickDuration.from!"seconds"(0); foreach (i; 0..n) { sw.start(); parse(); //writeln("Time ", sw.peek().msecs, " [ms]"); sw.stop(); times[i] = sw.peek() - last; last = sw.peek(); } real sum = 0; // To know the number of seconds, // use properties of TickDuration. // (seconds, msecs, usecs, hnsecs) foreach(t; times) { sum += t.msecs; } writeln("Average time: ", sum/n, " msecs"); } struct Book { string id; string author; string title; string genre; string price; string pubDate; string description; } void parse() { string s = cast(string)std.file.read("books.xml"); // Check for well-formedness check(s); // Take it apart Book[] books; auto xml = new DocumentParser(s); xml.onStartTag["book"] = (ElementParser xml) { Book book; book.id = xml.tag.attr["id"]; xml.onEndTag["author"] = (in Element e) { book.author = e.text(); }; xml.onEndTag["title"] = (in Element e) { book.title = e.text(); }; xml.onEndTag["genre"] = (in Element e) { book.genre = e.text(); }; xml.onEndTag["price"] = (in Element e) { book.price = e.text(); }; xml.onEndTag["publish-date"] = (in Element e) { book.pubDate = e.text(); }; xml.onEndTag["description"] = (in Element e) { book.description = e.text(); }; xml.parse(); books ~= book; }; xml.parse(); // Put it back together again; auto doc = new Document(new Tag("catalog")); foreach(book;books) { auto element = new Element("book"); element.tag.attr["id"] = book.id; element ~= new Element("author", book.author); element ~= new Element("title", book.title); element ~= new Element("genre", book.genre); element ~= new Element("price", book.price); element ~= new Element("publish-date",book.pubDate); element ~= new Element("description", book.description); doc ~= element; } // Pretty-print it //writefln(join(doc.pretty(3),"\n")); } ------ XML FILE ------ <?xml version="1.0" encoding="UTF-8"?> <books> <book id="1-23456789"> <author>Count Dracula</author> <title>D for Vampires</title> <genre>Programming</genre> <price>66.6</price> <publish-date>1897</publish-date> <description>Tomb programming with D</description> </book> </books>
Are you sure that ldc hasn't actually just optimised away the whole of parse()? Check to asm to be sure.
Jul 30 2013
parent reply "Chris" <wendlec tcd.ie> writes:
On Tuesday, 30 July 2013 at 16:43:52 UTC, John Colvin wrote:
 Are you sure that ldc hasn't actually just optimised away the 
 whole of parse()?
 Check to asm to be sure.
I've checked the asm output, as you suggested. Turns out that the DMD version has 94,220 lines and calls parse() for the first time on line 3278 like so: call _D10xmlparser25parseFZv PC32 The LDC version has 14,347 line and calls parse() for the first time on line 155 like so: call _D10xmlparser25parseFZv However, I'm no expert on asm so it's anyone's guess but mine. But I'm willing to learn.
Jul 31 2013
parent reply "John Colvin" <john.loughran.colvin gmail.com> writes:
On Wednesday, 31 July 2013 at 08:44:30 UTC, Chris wrote:
 On Tuesday, 30 July 2013 at 16:43:52 UTC, John Colvin wrote:
 Are you sure that ldc hasn't actually just optimised away the 
 whole of parse()?
 Check to asm to be sure.
I've checked the asm output, as you suggested. Turns out that the DMD version has 94,220 lines and calls parse() for the first time on line 3278 like so: call _D10xmlparser25parseFZv PC32 The LDC version has 14,347 line and calls parse() for the first time on line 155 like so: call _D10xmlparser25parseFZv However, I'm no expert on asm so it's anyone's guess but mine. But I'm willing to learn.
I would suggest doing the following: dmd -c file.d -offiledmd.o ldc2 -c file.d -of=fileldc.o objdump -M intel -dr filedmd.o > filedmd.s objdump -M intel -dr fileldc.o > fileldc.s Then you'll have all the info you need and hopefully a lot less of what you don't need What you're looking for is the definition of parse, like 0000000000000050 <_D10xmlparser25parseFZv>: or similar and then seeing if there's anything much in the function body below.
Jul 31 2013
parent reply "Chris" <wendlec tcd.ie> writes:
On Wednesday, 31 July 2013 at 11:13:13 UTC, John Colvin wrote:
 On Wednesday, 31 July 2013 at 08:44:30 UTC, Chris wrote:
 On Tuesday, 30 July 2013 at 16:43:52 UTC, John Colvin wrote:
 Are you sure that ldc hasn't actually just optimised away the 
 whole of parse()?
 Check to asm to be sure.
I've checked the asm output, as you suggested. Turns out that the DMD version has 94,220 lines and calls parse() for the first time on line 3278 like so: call _D10xmlparser25parseFZv PC32 The LDC version has 14,347 line and calls parse() for the first time on line 155 like so: call _D10xmlparser25parseFZv However, I'm no expert on asm so it's anyone's guess but mine. But I'm willing to learn.
I would suggest doing the following: dmd -c file.d -offiledmd.o ldc2 -c file.d -of=fileldc.o objdump -M intel -dr filedmd.o > filedmd.s objdump -M intel -dr fileldc.o > fileldc.s Then you'll have all the info you need and hopefully a lot less of what you don't need What you're looking for is the definition of parse, like 0000000000000050 <_D10xmlparser25parseFZv>: or similar and then seeing if there's anything much in the function body below.
Thanks. I've just tried it. In dmd it's there as: 00000000 <_D10xmlparser25parseFZv>: [...] In ldc too, looks only a bit different. There are: 000002b0 <_D10xmlparser25parseFZv>: [...] 00000b60 <_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv>: [...]
Jul 31 2013
parent reply "John Colvin" <john.loughran.colvin gmail.com> writes:
On Wednesday, 31 July 2013 at 11:33:01 UTC, Chris wrote:
 On Wednesday, 31 July 2013 at 11:13:13 UTC, John Colvin wrote:
 On Wednesday, 31 July 2013 at 08:44:30 UTC, Chris wrote:
 On Tuesday, 30 July 2013 at 16:43:52 UTC, John Colvin wrote:
 Are you sure that ldc hasn't actually just optimised away 
 the whole of parse()?
 Check to asm to be sure.
I've checked the asm output, as you suggested. Turns out that the DMD version has 94,220 lines and calls parse() for the first time on line 3278 like so: call _D10xmlparser25parseFZv PC32 The LDC version has 14,347 line and calls parse() for the first time on line 155 like so: call _D10xmlparser25parseFZv However, I'm no expert on asm so it's anyone's guess but mine. But I'm willing to learn.
I would suggest doing the following: dmd -c file.d -offiledmd.o ldc2 -c file.d -of=fileldc.o objdump -M intel -dr filedmd.o > filedmd.s objdump -M intel -dr fileldc.o > fileldc.s Then you'll have all the info you need and hopefully a lot less of what you don't need What you're looking for is the definition of parse, like 0000000000000050 <_D10xmlparser25parseFZv>: or similar and then seeing if there's anything much in the function body below.
Thanks. I've just tried it. In dmd it's there as: 00000000 <_D10xmlparser25parseFZv>: [...] In ldc too, looks only a bit different. There are: 000002b0 <_D10xmlparser25parseFZv>: [...] 00000b60 <_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv>: [...]
Could you post the full asm for those functions?
Jul 31 2013
parent reply "Chris" <wendlec tcd.ie> writes:
The dmd version

------- DMD --------------

Disassembly of section .text._D10xmlparser25parseFZv:

00000000 <_D10xmlparser25parseFZv>:
    0:	55                   	push   ebp
    1:	8b ec                	mov    ebp,esp
    3:	81 ec 94 00 00 00    	sub    esp,0x94
    9:	53                   	push   ebx
    a:	56                   	push   esi
    b:	57                   	push   edi
    c:	6a 0c                	push   0xc
    e:	e8 fc ff ff ff       	call   f <_D10xmlparser25parseFZv+0xf>
			f: R_386_PC32	_d_allocmemory
   13:	89 85 70 ff ff ff    	mov    DWORD PTR [ebp-0x90],eax
   19:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
   1f:	ff 35 54 00 00 00    	push   DWORD PTR ds:0x54
			21: R_386_32	.rodata
   25:	ff 35 50 00 00 00    	push   DWORD PTR ds:0x50
			27: R_386_32	.rodata
   2b:	b8 ff ff ff ff       	mov    eax,0xffffffff
   30:	e8 fc ff ff ff       	call   31 
<_D10xmlparser25parseFZv+0x31>
			31: R_386_PC32	_D3std4file4readFxAakZAv
   35:	89 85 78 ff ff ff    	mov    DWORD PTR [ebp-0x88],eax
   3b:	89 95 7c ff ff ff    	mov    DWORD PTR [ebp-0x84],edx
   41:	52                   	push   edx
   42:	50                   	push   eax
   43:	e8 fc ff ff ff       	call   44 
<_D10xmlparser25parseFZv+0x44>
			44: R_386_PC32	_D3std3xml5checkFAyaZv
   48:	8b 8d 70 ff ff ff    	mov    ecx,DWORD PTR [ebp-0x90]
   4e:	8d 51 04             	lea    edx,[ecx+0x4]
   51:	c7 02 00 00 00 00    	mov    DWORD PTR [edx],0x0
   57:	c7 42 04 00 00 00 00 	mov    DWORD PTR [edx+0x4],0x0
   5e:	bb 00 00 00 00       	mov    ebx,0x0
			5f: R_386_32	_D3std3xml14DocumentParser7__ClassZ
   63:	53                   	push   ebx
   64:	89 95 6c ff ff ff    	mov    DWORD PTR [ebp-0x94],edx
   6a:	e8 fc ff ff ff       	call   6b 
<_D10xmlparser25parseFZv+0x6b>
			6b: R_386_PC32	_d_newclass
   6f:	ff b5 7c ff ff ff    	push   DWORD PTR [ebp-0x84]
   75:	ff b5 78 ff ff ff    	push   DWORD PTR [ebp-0x88]
   7b:	e8 fc ff ff ff       	call   7c 
<_D10xmlparser25parseFZv+0x7c>
			7c: 
R_386_PC32	_D3std3xml14DocumentParser6__ctorMFAyaZC3std3xml14DocumentParser
   80:	89 45 88             	mov    DWORD PTR [ebp-0x78],eax
   83:	8b b5 70 ff ff ff    	mov    esi,DWORD PTR [ebp-0x90]
   89:	b9 00 00 00 00       	mov    ecx,0x0
			8a: 
R_386_32	_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv
   8e:	89 75 90             	mov    DWORD PTR [ebp-0x70],esi
   91:	89 4d 94             	mov    DWORD PTR [ebp-0x6c],ecx
   94:	8d 7d 90             	lea    edi,[ebp-0x70]
   97:	ba 60 00 00 00       	mov    edx,0x60
			98: R_386_32	.rodata
   9c:	52                   	push   edx
   9d:	6a 08                	push   0x8
   9f:	bb 00 00 00 00       	mov    ebx,0x0
			a0: R_386_32	_D11TypeInfo_Aa6__initZ
   a4:	53                   	push   ebx
   a5:	8d 70 48             	lea    esi,[eax+0x48]
   a8:	56                   	push   esi
   a9:	e8 fc ff ff ff       	call   aa 
<_D10xmlparser25parseFZv+0xaa>
			aa: R_386_PC32	_aaGetX
   ae:	89 45 98             	mov    DWORD PTR [ebp-0x68],eax
   b1:	83 c4 10             	add    esp,0x10
   b4:	85 c0                	test   eax,eax
   b6:	75 0a                	jne    c2 
<_D10xmlparser25parseFZv+0xc2>
   b8:	b8 33 00 00 00       	mov    eax,0x33
   bd:	e8 fc ff ff ff       	call   be 
<_D10xmlparser25parseFZv+0xbe>
			be: R_386_PC32	_D10xmlparser27__arrayZ
   c2:	8b 57 04             	mov    edx,DWORD PTR [edi+0x4]
   c5:	8b 07                	mov    eax,DWORD PTR [edi]
   c7:	8b 4d 98             	mov    ecx,DWORD PTR [ebp-0x68]
   ca:	89 01                	mov    DWORD PTR [ecx],eax
   cc:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
   cf:	8b 45 88             	mov    eax,DWORD PTR [ebp-0x78]
   d2:	8b 18                	mov    ebx,DWORD PTR [eax]
   d4:	ff 53 30             	call   DWORD PTR [ebx+0x30]
   d7:	be 00 00 00 00       	mov    esi,0x0
			d8: R_386_32	_D3std3xml8Document7__ClassZ
   dc:	56                   	push   esi
   dd:	e8 fc ff ff ff       	call   de 
<_D10xmlparser25parseFZv+0xde>
			de: R_386_PC32	_d_newclass
   e2:	89 45 a0             	mov    DWORD PTR [ebp-0x60],eax
   e5:	ba 00 00 00 00       	mov    edx,0x0
			e6: R_386_32	_D3std3xml3Tag7__ClassZ
   ea:	52                   	push   edx
   eb:	e8 fc ff ff ff       	call   ec 
<_D10xmlparser25parseFZv+0xec>
			ec: R_386_PC32	_d_newclass
   f0:	83 c4 04             	add    esp,0x4
   f3:	ff 35 74 00 00 00    	push   DWORD PTR ds:0x74
			f5: R_386_32	.rodata
   f9:	ff 35 70 00 00 00    	push   DWORD PTR ds:0x70
			fb: R_386_32	.rodata
   ff:	6a 00                	push   0x0
  101:	e8 fc ff ff ff       	call   102 
<_D10xmlparser25parseFZv+0x102>
			102: 
R_386_PC32	_D3std3xml3Tag6__ctorMFAyaE3std3xml7TagTypeZC3std3xml3Tag
  106:	50                   	push   eax
  107:	8b 45 a0             	mov    eax,DWORD PTR [ebp-0x60]
  10a:	e8 fc ff ff ff       	call   10b 
<_D10xmlparser25parseFZv+0x10b>
			10b: 
R_386_PC32	_D3std3xml8Document6__ctorMFxC3std3xml3TagZC3std3xml8Document
  10f:	89 45 9c             	mov    DWORD PTR [ebp-0x64],eax
  112:	8b 8d 6c ff ff ff    	mov    ecx,DWORD PTR [ebp-0x94]
  118:	8b 51 04             	mov    edx,DWORD PTR [ecx+0x4]
  11b:	8b 01                	mov    eax,DWORD PTR [ecx]
  11d:	89 45 a8             	mov    DWORD PTR [ebp-0x58],eax
  120:	89 55 ac             	mov    DWORD PTR [ebp-0x54],edx
  123:	c7 45 b0 00 00 00 00 	mov    DWORD PTR [ebp-0x50],0x0
  12a:	83 c4 0c             	add    esp,0xc
  12d:	8b 5d b0             	mov    ebx,DWORD PTR [ebp-0x50]
  130:	3b 5d a8             	cmp    ebx,DWORD PTR [ebp-0x58]
  133:	0f 83 99 01 00 00    	jae    2d2 
<_D10xmlparser25parseFZv+0x2d2>
  139:	8b 75 b0             	mov    esi,DWORD PTR [ebp-0x50]
  13c:	3b 75 a8             	cmp    esi,DWORD PTR [ebp-0x58]
  13f:	72 0a                	jb     14b 
<_D10xmlparser25parseFZv+0x14b>
  141:	b8 47 00 00 00       	mov    eax,0x47
  146:	e8 fc ff ff ff       	call   147 
<_D10xmlparser25parseFZv+0x147>
			147: R_386_PC32	_D10xmlparser27__arrayZ
  14b:	6b f6 38             	imul   esi,esi,0x38
  14e:	8b 55 ac             	mov    edx,DWORD PTR [ebp-0x54]
  151:	8b 45 a8             	mov    eax,DWORD PTR [ebp-0x58]
  154:	03 f2                	add    esi,edx
  156:	8d 7d c0             	lea    edi,[ebp-0x40]
  159:	b9 0e 00 00 00       	mov    ecx,0xe
  15e:	f3 a5                	rep movs DWORD PTR es:[edi],DWORD PTR 
ds:[esi]
  160:	b9 00 00 00 00       	mov    ecx,0x0
			161: R_386_32	_D3std3xml7Element7__ClassZ
  165:	51                   	push   ecx
  166:	e8 fc ff ff ff       	call   167 
<_D10xmlparser25parseFZv+0x167>
			167: R_386_PC32	_d_newclass
  16b:	ff 35 64 00 00 00    	push   DWORD PTR ds:0x64
			16d: R_386_32	.rodata
  171:	ff 35 60 00 00 00    	push   DWORD PTR ds:0x60
			173: R_386_32	.rodata
  177:	6a 00                	push   0x0
  179:	6a 00                	push   0x0
  17b:	e8 fc ff ff ff       	call   17c 
<_D10xmlparser25parseFZv+0x17c>
			17c: 
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
  180:	89 45 f8             	mov    DWORD PTR [ebp-0x8],eax
  183:	8d 5d c0             	lea    ebx,[ebp-0x40]
  186:	be 80 00 00 00       	mov    esi,0x80
			187: R_386_32	.rodata
  18b:	56                   	push   esi
  18c:	6a 08                	push   0x8
  18e:	ba 00 00 00 00       	mov    edx,0x0
			18f: R_386_32	_D11TypeInfo_Aa6__initZ
  193:	52                   	push   edx
  194:	8b 78 08             	mov    edi,DWORD PTR [eax+0x8]
  197:	83 c7 14             	add    edi,0x14
  19a:	57                   	push   edi
  19b:	e8 fc ff ff ff       	call   19c 
<_D10xmlparser25parseFZv+0x19c>
			19c: R_386_PC32	_aaGetX
  1a0:	89 45 fc             	mov    DWORD PTR [ebp-0x4],eax
  1a3:	83 c4 10             	add    esp,0x10
  1a6:	85 c0                	test   eax,eax
  1a8:	75 0a                	jne    1b4 
<_D10xmlparser25parseFZv+0x1b4>
  1aa:	b8 4a 00 00 00       	mov    eax,0x4a
  1af:	e8 fc ff ff ff       	call   1b0 
<_D10xmlparser25parseFZv+0x1b0>
			1b0: R_386_PC32	_D10xmlparser27__arrayZ
  1b4:	8b 53 04             	mov    edx,DWORD PTR [ebx+0x4]
  1b7:	8b 03                	mov    eax,DWORD PTR [ebx]
  1b9:	8b 4d fc             	mov    ecx,DWORD PTR [ebp-0x4]
  1bc:	89 01                	mov    DWORD PTR [ecx],eax
  1be:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
  1c1:	bb 00 00 00 00       	mov    ebx,0x0
			1c2: R_386_32	_D3std3xml7Element7__ClassZ
  1c6:	53                   	push   ebx
  1c7:	e8 fc ff ff ff       	call   1c8 
<_D10xmlparser25parseFZv+0x1c8>
			1c8: R_386_PC32	_d_newclass
  1cc:	83 c4 04             	add    esp,0x4
  1cf:	ff 35 94 00 00 00    	push   DWORD PTR ds:0x94
			1d1: R_386_32	.rodata
  1d5:	ff 35 90 00 00 00    	push   DWORD PTR ds:0x90
			1d7: R_386_32	.rodata
  1db:	ff 75 cc             	push   DWORD PTR [ebp-0x34]
  1de:	ff 75 c8             	push   DWORD PTR [ebp-0x38]
  1e1:	e8 fc ff ff ff       	call   1e2 
<_D10xmlparser25parseFZv+0x1e2>
			1e2: 
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
  1e6:	50                   	push   eax
  1e7:	8b 45 f8             	mov    eax,DWORD PTR [ebp-0x8]
  1ea:	8b 30                	mov    esi,DWORD PTR [eax]
  1ec:	ff 56 2c             	call   DWORD PTR [esi+0x2c]
  1ef:	53                   	push   ebx
  1f0:	e8 fc ff ff ff       	call   1f1 
<_D10xmlparser25parseFZv+0x1f1>
			1f1: R_386_PC32	_d_newclass
  1f5:	83 c4 04             	add    esp,0x4
  1f8:	ff 35 a4 00 00 00    	push   DWORD PTR ds:0xa4
			1fa: R_386_32	.rodata
  1fe:	ff 35 a0 00 00 00    	push   DWORD PTR ds:0xa0
			200: R_386_32	.rodata
  204:	ff 75 d4             	push   DWORD PTR [ebp-0x2c]
  207:	ff 75 d0             	push   DWORD PTR [ebp-0x30]
  20a:	e8 fc ff ff ff       	call   20b 
<_D10xmlparser25parseFZv+0x20b>
			20b: 
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
  20f:	50                   	push   eax
  210:	8b 45 f8             	mov    eax,DWORD PTR [ebp-0x8]
  213:	8b 08                	mov    ecx,DWORD PTR [eax]
  215:	ff 51 2c             	call   DWORD PTR [ecx+0x2c]
  218:	53                   	push   ebx
  219:	e8 fc ff ff ff       	call   21a 
<_D10xmlparser25parseFZv+0x21a>
			21a: R_386_PC32	_d_newclass
  21e:	83 c4 04             	add    esp,0x4
  221:	ff 35 b4 00 00 00    	push   DWORD PTR ds:0xb4
			223: R_386_32	.rodata
  227:	ff 35 b0 00 00 00    	push   DWORD PTR ds:0xb0
			229: R_386_32	.rodata
  22d:	ff 75 dc             	push   DWORD PTR [ebp-0x24]
  230:	ff 75 d8             	push   DWORD PTR [ebp-0x28]
  233:	e8 fc ff ff ff       	call   234 
<_D10xmlparser25parseFZv+0x234>
			234: 
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
  238:	50                   	push   eax
  239:	8b 45 f8             	mov    eax,DWORD PTR [ebp-0x8]
  23c:	8b 10                	mov    edx,DWORD PTR [eax]
  23e:	ff 52 2c             	call   DWORD PTR [edx+0x2c]
  241:	53                   	push   ebx
  242:	e8 fc ff ff ff       	call   243 
<_D10xmlparser25parseFZv+0x243>
			243: R_386_PC32	_d_newclass
  247:	83 c4 04             	add    esp,0x4
  24a:	ff 35 c4 00 00 00    	push   DWORD PTR ds:0xc4
			24c: R_386_32	.rodata
  250:	ff 35 c0 00 00 00    	push   DWORD PTR ds:0xc0
			252: R_386_32	.rodata
  256:	ff 75 e4             	push   DWORD PTR [ebp-0x1c]
  259:	ff 75 e0             	push   DWORD PTR [ebp-0x20]
  25c:	e8 fc ff ff ff       	call   25d 
<_D10xmlparser25parseFZv+0x25d>
			25d: 
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
  261:	50                   	push   eax
  262:	8b 45 f8             	mov    eax,DWORD PTR [ebp-0x8]
  265:	8b 30                	mov    esi,DWORD PTR [eax]
  267:	ff 56 2c             	call   DWORD PTR [esi+0x2c]
  26a:	53                   	push   ebx
  26b:	e8 fc ff ff ff       	call   26c 
<_D10xmlparser25parseFZv+0x26c>
			26c: R_386_PC32	_d_newclass
  270:	83 c4 04             	add    esp,0x4
  273:	ff 35 dc 00 00 00    	push   DWORD PTR ds:0xdc
			275: R_386_32	.rodata
  279:	ff 35 d8 00 00 00    	push   DWORD PTR ds:0xd8
			27b: R_386_32	.rodata
  27f:	ff 75 ec             	push   DWORD PTR [ebp-0x14]
  282:	ff 75 e8             	push   DWORD PTR [ebp-0x18]
  285:	e8 fc ff ff ff       	call   286 
<_D10xmlparser25parseFZv+0x286>
			286: 
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
  28a:	50                   	push   eax
  28b:	8b 45 f8             	mov    eax,DWORD PTR [ebp-0x8]
  28e:	8b 08                	mov    ecx,DWORD PTR [eax]
  290:	ff 51 2c             	call   DWORD PTR [ecx+0x2c]
  293:	53                   	push   ebx
  294:	e8 fc ff ff ff       	call   295 
<_D10xmlparser25parseFZv+0x295>
			295: R_386_PC32	_d_newclass
  299:	83 c4 04             	add    esp,0x4
  29c:	ff 35 f4 00 00 00    	push   DWORD PTR ds:0xf4
			29e: R_386_32	.rodata
  2a2:	ff 35 f0 00 00 00    	push   DWORD PTR ds:0xf0
			2a4: R_386_32	.rodata
  2a8:	ff 75 f4             	push   DWORD PTR [ebp-0xc]
  2ab:	ff 75 f0             	push   DWORD PTR [ebp-0x10]
  2ae:	e8 fc ff ff ff       	call   2af 
<_D10xmlparser25parseFZv+0x2af>
			2af: 
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
  2b3:	50                   	push   eax
  2b4:	8b 45 f8             	mov    eax,DWORD PTR [ebp-0x8]
  2b7:	8b 10                	mov    edx,DWORD PTR [eax]
  2b9:	ff 52 2c             	call   DWORD PTR [edx+0x2c]
  2bc:	ff 75 f8             	push   DWORD PTR [ebp-0x8]
  2bf:	8b 45 9c             	mov    eax,DWORD PTR [ebp-0x64]
  2c2:	8b 18                	mov    ebx,DWORD PTR [eax]
  2c4:	ff 53 2c             	call   DWORD PTR [ebx+0x2c]
  2c7:	83 c4 04             	add    esp,0x4
  2ca:	ff 45 b0             	inc    DWORD PTR [ebp-0x50]
  2cd:	e9 5b fe ff ff       	jmp    12d 
<_D10xmlparser25parseFZv+0x12d>
  2d2:	5f                   	pop    edi
  2d3:	5e                   	pop    esi
  2d4:	5b                   	pop    ebx
  2d5:	c9                   	leave
  2d6:	c3                   	ret
  2d7:	90                   	nop

Disassembly of section 
.text._D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv:

00000000 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv>:
    0:	55                   	push   ebp
    1:	8b ec                	mov    ebp,esp
    3:	81 ec b8 00 00 00    	sub    esp,0xb8
    9:	53                   	push   ebx
    a:	56                   	push   esi
    b:	57                   	push   edi
    c:	89 45 fc             	mov    DWORD PTR [ebp-0x4],eax
    f:	6a 3c                	push   0x3c
   11:	e8 fc ff ff ff       	call   12 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x12>
			12: R_386_PC32	_d_allocmemory
   16:	89 85 50 ff ff ff    	mov    DWORD PTR [ebp-0xb0],eax
   1c:	8b 4d fc             	mov    ecx,DWORD PTR [ebp-0x4]
   1f:	89 08                	mov    DWORD PTR [eax],ecx
   21:	b9 0e 00 00 00       	mov    ecx,0xe
   26:	31 c0                	xor    eax,eax
   28:	8b 95 50 ff ff ff    	mov    edx,DWORD PTR [ebp-0xb0]
   2e:	8d 7a 04             	lea    edi,[edx+0x4]
   31:	89 bd 48 ff ff ff    	mov    DWORD PTR [ebp-0xb8],edi
   37:	f3 ab                	rep stos DWORD PTR es:[edi],eax
   39:	bb 80 00 00 00       	mov    ebx,0x80
			3a: R_386_32	.rodata
   3e:	53                   	push   ebx
   3f:	6a 08                	push   0x8
   41:	b9 00 00 00 00       	mov    ecx,0x0
			42: R_386_32	_D11TypeInfo_Aa6__initZ
   46:	51                   	push   ecx
   47:	8b 45 08             	mov    eax,DWORD PTR [ebp+0x8]
   4a:	8b 30                	mov    esi,DWORD PTR [eax]
   4c:	ff 56 14             	call   DWORD PTR [esi+0x14]
   4f:	ff 70 14             	push   DWORD PTR [eax+0x14]
   52:	e8 fc ff ff ff       	call   53 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x53>
			53: R_386_PC32	_aaGetRvalueX
   57:	89 45 98             	mov    DWORD PTR [ebp-0x68],eax
   5a:	83 c4 10             	add    esp,0x10
   5d:	85 c0                	test   eax,eax
   5f:	75 0a                	jne    6b 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x6b>
   61:	b8 36 00 00 00       	mov    eax,0x36
   66:	e8 fc ff ff ff       	call   67 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x67>
			67: R_386_PC32	_D10xmlparser27__arrayZ
   6b:	8b 55 98             	mov    edx,DWORD PTR [ebp-0x68]
   6e:	8b 02                	mov    eax,DWORD PTR [edx]
   70:	8b 52 04             	mov    edx,DWORD PTR [edx+0x4]
   73:	8b 8d 48 ff ff ff    	mov    ecx,DWORD PTR [ebp-0xb8]
   79:	89 01                	mov    DWORD PTR [ecx],eax
   7b:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
   7e:	8b 9d 50 ff ff ff    	mov    ebx,DWORD PTR [ebp-0xb0]
   84:	ba 00 00 00 00       	mov    edx,0x0
			85: 
R_386_32	_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv9__lambda2MFxC3std3xml7ElementZv
   89:	89 5d a0             	mov    DWORD PTR [ebp-0x60],ebx
   8c:	89 55 a4             	mov    DWORD PTR [ebp-0x5c],edx
   8f:	8d 75 a0             	lea    esi,[ebp-0x60]
   92:	b8 90 00 00 00       	mov    eax,0x90
			93: R_386_32	.rodata
   97:	50                   	push   eax
   98:	6a 08                	push   0x8
   9a:	bf 00 00 00 00       	mov    edi,0x0
			9b: R_386_32	_D11TypeInfo_Aa6__initZ
   9f:	57                   	push   edi
   a0:	8b 5d 08             	mov    ebx,DWORD PTR [ebp+0x8]
   a3:	8d 53 4c             	lea    edx,[ebx+0x4c]
   a6:	52                   	push   edx
   a7:	89 95 4c ff ff ff    	mov    DWORD PTR [ebp-0xb4],edx
   ad:	e8 fc ff ff ff       	call   ae 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0xae>
			ae: R_386_PC32	_aaGetX
   b2:	89 45 a8             	mov    DWORD PTR [ebp-0x58],eax
   b5:	83 c4 10             	add    esp,0x10
   b8:	85 c0                	test   eax,eax
   ba:	75 0a                	jne    c6 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0xc6>
   bc:	b8 38 00 00 00       	mov    eax,0x38
   c1:	e8 fc ff ff ff       	call   c2 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0xc2>
			c2: R_386_PC32	_D10xmlparser27__arrayZ
   c6:	8b 56 04             	mov    edx,DWORD PTR [esi+0x4]
   c9:	8b 06                	mov    eax,DWORD PTR [esi]
   cb:	8b 4d a8             	mov    ecx,DWORD PTR [ebp-0x58]
   ce:	89 01                	mov    DWORD PTR [ecx],eax
   d0:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
   d3:	8b b5 50 ff ff ff    	mov    esi,DWORD PTR [ebp-0xb0]
   d9:	ba 00 00 00 00       	mov    edx,0x0
			da: 
R_386_32	_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv9__lambda3MFxC3std3xml7ElementZv
   de:	89 75 b0             	mov    DWORD PTR [ebp-0x50],esi
   e1:	89 55 b4             	mov    DWORD PTR [ebp-0x4c],edx
   e4:	8d 45 b0             	lea    eax,[ebp-0x50]
   e7:	89 45 ac             	mov    DWORD PTR [ebp-0x54],eax
   ea:	b9 a0 00 00 00       	mov    ecx,0xa0
			eb: R_386_32	.rodata
   ef:	51                   	push   ecx
   f0:	6a 08                	push   0x8
   f2:	57                   	push   edi
   f3:	8b b5 4c ff ff ff    	mov    esi,DWORD PTR [ebp-0xb4]
   f9:	56                   	push   esi
   fa:	e8 fc ff ff ff       	call   fb 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0xfb>
			fb: R_386_PC32	_aaGetX
   ff:	89 45 b8             	mov    DWORD PTR [ebp-0x48],eax
  102:	83 c4 10             	add    esp,0x10
  105:	85 c0                	test   eax,eax
  107:	75 0a                	jne    113 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x113>
  109:	b8 39 00 00 00       	mov    eax,0x39
  10e:	e8 fc ff ff ff       	call   10f 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x10f>
			10f: R_386_PC32	_D10xmlparser27__arrayZ
  113:	8b 55 ac             	mov    edx,DWORD PTR [ebp-0x54]
  116:	8b 02                	mov    eax,DWORD PTR [edx]
  118:	8b 52 04             	mov    edx,DWORD PTR [edx+0x4]
  11b:	8b 4d b8             	mov    ecx,DWORD PTR [ebp-0x48]
  11e:	89 01                	mov    DWORD PTR [ecx],eax
  120:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
  123:	8b 85 50 ff ff ff    	mov    eax,DWORD PTR [ebp-0xb0]
  129:	ba 00 00 00 00       	mov    edx,0x0
			12a: 
R_386_32	_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv9__lambda4MFxC3std3xml7ElementZv
  12e:	89 45 c0             	mov    DWORD PTR [ebp-0x40],eax
  131:	89 55 c4             	mov    DWORD PTR [ebp-0x3c],edx
  134:	8d 4d c0             	lea    ecx,[ebp-0x40]
  137:	89 4d bc             	mov    DWORD PTR [ebp-0x44],ecx
  13a:	b8 b0 00 00 00       	mov    eax,0xb0
			13b: R_386_32	.rodata
  13f:	50                   	push   eax
  140:	6a 08                	push   0x8
  142:	57                   	push   edi
  143:	56                   	push   esi
  144:	e8 fc ff ff ff       	call   145 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x145>
			145: R_386_PC32	_aaGetX
  149:	89 45 c8             	mov    DWORD PTR [ebp-0x38],eax
  14c:	83 c4 10             	add    esp,0x10
  14f:	85 c0                	test   eax,eax
  151:	75 0a                	jne    15d 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x15d>
  153:	b8 3a 00 00 00       	mov    eax,0x3a
  158:	e8 fc ff ff ff       	call   159 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x159>
			159: R_386_PC32	_D10xmlparser27__arrayZ
  15d:	8b 55 bc             	mov    edx,DWORD PTR [ebp-0x44]
  160:	8b 02                	mov    eax,DWORD PTR [edx]
  162:	8b 52 04             	mov    edx,DWORD PTR [edx+0x4]
  165:	8b 4d c8             	mov    ecx,DWORD PTR [ebp-0x38]
  168:	89 01                	mov    DWORD PTR [ecx],eax
  16a:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
  16d:	8b 85 50 ff ff ff    	mov    eax,DWORD PTR [ebp-0xb0]
  173:	ba 00 00 00 00       	mov    edx,0x0
			174: 
R_386_32	_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv9__lambda5MFxC3std3xml7ElementZv
  178:	89 45 d0             	mov    DWORD PTR [ebp-0x30],eax
  17b:	89 55 d4             	mov    DWORD PTR [ebp-0x2c],edx
  17e:	8d 4d d0             	lea    ecx,[ebp-0x30]
  181:	89 4d cc             	mov    DWORD PTR [ebp-0x34],ecx
  184:	b8 c0 00 00 00       	mov    eax,0xc0
			185: R_386_32	.rodata
  189:	50                   	push   eax
  18a:	6a 08                	push   0x8
  18c:	57                   	push   edi
  18d:	56                   	push   esi
  18e:	e8 fc ff ff ff       	call   18f 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x18f>
			18f: R_386_PC32	_aaGetX
  193:	89 45 d8             	mov    DWORD PTR [ebp-0x28],eax
  196:	83 c4 10             	add    esp,0x10
  199:	85 c0                	test   eax,eax
  19b:	75 0a                	jne    1a7 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x1a7>
  19d:	b8 3b 00 00 00       	mov    eax,0x3b
  1a2:	e8 fc ff ff ff       	call   1a3 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x1a3>
			1a3: R_386_PC32	_D10xmlparser27__arrayZ
  1a7:	8b 55 cc             	mov    edx,DWORD PTR [ebp-0x34]
  1aa:	8b 02                	mov    eax,DWORD PTR [edx]
  1ac:	8b 52 04             	mov    edx,DWORD PTR [edx+0x4]
  1af:	8b 4d d8             	mov    ecx,DWORD PTR [ebp-0x28]
  1b2:	89 01                	mov    DWORD PTR [ecx],eax
  1b4:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
  1b7:	8b 85 50 ff ff ff    	mov    eax,DWORD PTR [ebp-0xb0]
  1bd:	ba 00 00 00 00       	mov    edx,0x0
			1be: 
R_386_32	_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv9__lambda6MFxC3std3xml7ElementZv
  1c2:	89 45 e0             	mov    DWORD PTR [ebp-0x20],eax
  1c5:	89 55 e4             	mov    DWORD PTR [ebp-0x1c],edx
  1c8:	8d 4d e0             	lea    ecx,[ebp-0x20]
  1cb:	89 4d dc             	mov    DWORD PTR [ebp-0x24],ecx
  1ce:	b8 d8 00 00 00       	mov    eax,0xd8
			1cf: R_386_32	.rodata
  1d3:	50                   	push   eax
  1d4:	6a 08                	push   0x8
  1d6:	57                   	push   edi
  1d7:	56                   	push   esi
  1d8:	e8 fc ff ff ff       	call   1d9 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x1d9>
			1d9: R_386_PC32	_aaGetX
  1dd:	89 45 e8             	mov    DWORD PTR [ebp-0x18],eax
  1e0:	83 c4 10             	add    esp,0x10
  1e3:	85 c0                	test   eax,eax
  1e5:	75 0a                	jne    1f1 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x1f1>
  1e7:	b8 3c 00 00 00       	mov    eax,0x3c
  1ec:	e8 fc ff ff ff       	call   1ed 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x1ed>
			1ed: R_386_PC32	_D10xmlparser27__arrayZ
  1f1:	8b 55 dc             	mov    edx,DWORD PTR [ebp-0x24]
  1f4:	8b 02                	mov    eax,DWORD PTR [edx]
  1f6:	8b 52 04             	mov    edx,DWORD PTR [edx+0x4]
  1f9:	8b 4d e8             	mov    ecx,DWORD PTR [ebp-0x18]
  1fc:	89 01                	mov    DWORD PTR [ecx],eax
  1fe:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
  201:	8b 85 50 ff ff ff    	mov    eax,DWORD PTR [ebp-0xb0]
  207:	ba 00 00 00 00       	mov    edx,0x0
			208: 
R_386_32	_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv9__lambda7MFxC3std3xml7ElementZv
  20c:	89 45 f0             	mov    DWORD PTR [ebp-0x10],eax
  20f:	89 55 f4             	mov    DWORD PTR [ebp-0xc],edx
  212:	8d 4d f0             	lea    ecx,[ebp-0x10]
  215:	89 4d ec             	mov    DWORD PTR [ebp-0x14],ecx
  218:	b8 f0 00 00 00       	mov    eax,0xf0
			219: R_386_32	.rodata
  21d:	50                   	push   eax
  21e:	6a 08                	push   0x8
  220:	57                   	push   edi
  221:	56                   	push   esi
  222:	e8 fc ff ff ff       	call   223 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x223>
			223: R_386_PC32	_aaGetX
  227:	89 45 f8             	mov    DWORD PTR [ebp-0x8],eax
  22a:	83 c4 10             	add    esp,0x10
  22d:	85 c0                	test   eax,eax
  22f:	75 0a                	jne    23b 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x23b>
  231:	b8 3d 00 00 00       	mov    eax,0x3d
  236:	e8 fc ff ff ff       	call   237 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x237>
			237: R_386_PC32	_D10xmlparser27__arrayZ
  23b:	8b 75 ec             	mov    esi,DWORD PTR [ebp-0x14]
  23e:	8b 56 04             	mov    edx,DWORD PTR [esi+0x4]
  241:	8b 06                	mov    eax,DWORD PTR [esi]
  243:	8b 4d f8             	mov    ecx,DWORD PTR [ebp-0x8]
  246:	89 01                	mov    DWORD PTR [ecx],eax
  248:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
  24b:	89 d8                	mov    eax,ebx
  24d:	8b 18                	mov    ebx,DWORD PTR [eax]
  24f:	ff 53 30             	call   DWORD PTR [ebx+0x30]
  252:	8b b5 48 ff ff ff    	mov    esi,DWORD PTR [ebp-0xb8]
  258:	b9 0e 00 00 00       	mov    ecx,0xe
  25d:	83 c6 34             	add    esi,0x34
  260:	ff 36                	push   DWORD PTR [esi]
  262:	83 ee 04             	sub    esi,0x4
  265:	e2 f9                	loop   260 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x260>
  267:	8b 55 fc             	mov    edx,DWORD PTR [ebp-0x4]
  26a:	8d 4a 04             	lea    ecx,[edx+0x4]
  26d:	51                   	push   ecx
  26e:	b8 00 00 00 00       	mov    eax,0x0
			26f: R_386_32	_D28TypeInfo_AS10xmlparser24Book6__initZ
  273:	50                   	push   eax
  274:	e8 fc ff ff ff       	call   275 
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x275>
			275: R_386_PC32	_d_arrayappendcT
  279:	83 c4 44             	add    esp,0x44
  27c:	5f                   	pop    edi
  27d:	5e                   	pop    esi
  27e:	5b                   	pop    ebx
  27f:	c9                   	leave
  280:	c2 04 00             	ret    0x4
  283:	90                   	nop
  284:	90                   	nop
  285:	90                   	nop
  286:	90                   	nop
  287:	90                   	nop
Jul 31 2013
parent reply "Chris" <wendlec tcd.ie> writes:
The ldc version

------------ LDC -----------------

000002b0 <_D10xmlparser25parseFZv>:
       2b0:	57                   	push   edi
       2b1:	56                   	push   esi
       2b2:	81 ec f4 00 00 00    	sub    esp,0xf4
       2b8:	8d 05 00 00 00 00    	lea    eax,ds:0x0
			2ba: R_386_32	_D3std3xml8Document7__ClassZ
       2be:	89 e1                	mov    ecx,esp
       2c0:	c7 01 08 00 00 00    	mov    DWORD PTR [ecx],0x8
       2c6:	89 44 24 74          	mov    DWORD PTR [esp+0x74],eax
       2ca:	e8 fc ff ff ff       	call   2cb
<_D10xmlparser25parseFZv+0x1b>
			2cb: R_386_PC32	_d_allocmemory
       2cf:	89 e1                	mov    ecx,esp
       2d1:	c7 41 04 4e 00 00 00 	mov    DWORD PTR [ecx+0x4],0x4e
			2d4: R_386_32	.rodata
       2d8:	c7 01 09 00 00 00    	mov    DWORD PTR [ecx],0x9
       2de:	b9 ff ff ff ff       	mov    ecx,0xffffffff
       2e3:	89 44 24 70          	mov    DWORD PTR [esp+0x70],eax
       2e7:	89 c8                	mov    eax,ecx
       2e9:	e8 fc ff ff ff       	call   2ea
<_D10xmlparser25parseFZv+0x3a>
			2ea: R_386_PC32	_D3std4file4readFxAakZAv
       2ee:	83 ec 08             	sub    esp,0x8
       2f1:	89 84 24 e8 00 00 00 	mov    DWORD PTR [esp+0xe8],eax
       2f8:	89 94 24 ec 00 00 00 	mov    DWORD PTR [esp+0xec],edx
       2ff:	8b 84 24 e8 00 00 00 	mov    eax,DWORD PTR [esp+0xe8]
       306:	89 e1                	mov    ecx,esp
       308:	89 51 04             	mov    DWORD PTR [ecx+0x4],edx
       30b:	89 01                	mov    DWORD PTR [ecx],eax
       30d:	e8 fc ff ff ff       	call   30e
<_D10xmlparser25parseFZv+0x5e>
			30e: R_386_PC32	_D3std3xml5checkFAyaZv
       312:	83 ec 08             	sub    esp,0x8
       315:	8b 44 24 70          	mov    eax,DWORD PTR [esp+0x70]
       319:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       320:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
       326:	89 e1                	mov    ecx,esp
       328:	c7 01 00 00 00 00    	mov    DWORD PTR [ecx],0x0
			32a: R_386_32	_D3std3xml14DocumentParser7__ClassZ
       32e:	e8 fc ff ff ff       	call   32f
<_D10xmlparser25parseFZv+0x7f>
			32f: R_386_PC32	_d_newclass
       333:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			335: R_386_32	_D3std3xml14DocumentParser6__vtblZ
       339:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       340:	89 c1                	mov    ecx,eax
       342:	83 c1 08             	add    ecx,0x8
       345:	89 e2                	mov    edx,esp
       347:	89 0a                	mov    DWORD PTR [edx],ecx
       349:	c7 42 08 50 00 00 00 	mov    DWORD PTR [edx+0x8],0x50
       350:	c7 42 04 08 00 00 00 	mov    DWORD PTR [edx+0x4],0x8
			353: R_386_32	_D3std3xml14DocumentParser6__initZ
       357:	89 44 24 6c          	mov    DWORD PTR [esp+0x6c],eax
       35b:	e8 fc ff ff ff       	call   35c
<_D10xmlparser25parseFZv+0xac>
			35c: R_386_PC32	memcpy
       360:	8b 84 24 e8 00 00 00 	mov    eax,DWORD PTR [esp+0xe8]
       367:	8b 8c 24 ec 00 00 00 	mov    ecx,DWORD PTR [esp+0xec]
       36e:	89 e2                	mov    edx,esp
       370:	89 4a 04             	mov    DWORD PTR [edx+0x4],ecx
       373:	89 02                	mov    DWORD PTR [edx],eax
       375:	8b 44 24 6c          	mov    eax,DWORD PTR [esp+0x6c]
       379:	e8 fc ff ff ff       	call   37a
<_D10xmlparser25parseFZv+0xca>
			37a:
R_386_PC32	_D3std3xml14DocumentParser6__ctorMFAyaZC3std3xml14DocumentParser
       37e:	83 ec 08             	sub    esp,0x8
       381:	89 84 24 e4 00 00 00 	mov    DWORD PTR [esp+0xe4],eax
       388:	83 c0 48             	add    eax,0x48
       38b:	c7 84 24 dc 00 00 00 	mov    DWORD PTR [esp+0xdc],0x58
       392:	58 00 00 00
			392: R_386_32	.rodata
       396:	c7 84 24 d8 00 00 00 	mov    DWORD PTR [esp+0xd8],0x4
       39d:	04 00 00 00
       3a1:	8d 8c 24 d8 00 00 00 	lea    ecx,[esp+0xd8]
       3a8:	89 e2                	mov    edx,esp
       3aa:	89 4a 0c             	mov    DWORD PTR [edx+0xc],ecx
       3ad:	89 02                	mov    DWORD PTR [edx],eax
       3af:	c7 42 08 08 00 00 00 	mov    DWORD PTR [edx+0x8],0x8
       3b6:	c7 42 04 00 00 00 00 	mov    DWORD PTR [edx+0x4],0x0
			3b9: R_386_32	_D12TypeInfo_Aya6__initZ
       3bd:	e8 fc ff ff ff       	call   3be
<_D10xmlparser25parseFZv+0x10e>
			3be: R_386_PC32	_aaGetX
       3c2:	8b 4c 24 70          	mov    ecx,DWORD PTR [esp+0x70]
       3c6:	89 08                	mov    DWORD PTR [eax],ecx
       3c8:	c7 40 04 60 0b 00 00 	mov    DWORD PTR [eax+0x4],0xb60
			3cb: R_386_32	.text
       3cf:	8b 84 24 e4 00 00 00 	mov    eax,DWORD PTR [esp+0xe4]
       3d6:	89 c2                	mov    edx,eax
       3d8:	8b 00                	mov    eax,DWORD PTR [eax]
       3da:	8b 40 34             	mov    eax,DWORD PTR [eax+0x34]
       3dd:	89 44 24 68          	mov    DWORD PTR [esp+0x68],eax
       3e1:	89 d0                	mov    eax,edx
       3e3:	8b 54 24 68          	mov    edx,DWORD PTR [esp+0x68]
       3e7:	89 4c 24 64          	mov    DWORD PTR [esp+0x64],ecx
       3eb:	ff d2                	call   edx
       3ed:	8b 44 24 74          	mov    eax,DWORD PTR [esp+0x74]
       3f1:	89 04 24             	mov    DWORD PTR [esp],eax
       3f4:	e8 fc ff ff ff       	call   3f5
<_D10xmlparser25parseFZv+0x145>
			3f5: R_386_PC32	_d_newclass
       3f9:	b9 44 00 00 00       	mov    ecx,0x44
       3fe:	8d 15 00 00 00 00    	lea    edx,ds:0x0
			400: R_386_32	_D3std3xml8Document6__initZ
       404:	8d 35 00 00 00 00    	lea    esi,ds:0x0
			406: R_386_32	_D3std3xml8Document6__vtblZ
       40a:	89 c7                	mov    edi,eax
       40c:	89 30                	mov    DWORD PTR [eax],esi
       40e:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       415:	89 f8                	mov    eax,edi
       417:	05 08 00 00 00       	add    eax,0x8
       41c:	81 c2 08 00 00 00    	add    edx,0x8
       422:	89 04 24             	mov    DWORD PTR [esp],eax
       425:	89 54 24 04          	mov    DWORD PTR [esp+0x4],edx
       429:	c7 44 24 08 44 00 00 	mov    DWORD PTR [esp+0x8],0x44
       430:	00
       431:	89 7c 24 60          	mov    DWORD PTR [esp+0x60],edi
       435:	89 4c 24 5c          	mov    DWORD PTR [esp+0x5c],ecx
       439:	e8 fc ff ff ff       	call   43a
<_D10xmlparser25parseFZv+0x18a>
			43a: R_386_PC32	memcpy
       43e:	8d 05 00 00 00 00    	lea    eax,ds:0x0
			440: R_386_32	_D3std3xml3Tag7__ClassZ
       444:	89 04 24             	mov    DWORD PTR [esp],eax
       447:	e8 fc ff ff ff       	call   448
<_D10xmlparser25parseFZv+0x198>
			448: R_386_PC32	_d_newclass
       44c:	b9 18 00 00 00       	mov    ecx,0x18
       451:	8d 15 00 00 00 00    	lea    edx,ds:0x0
			453: R_386_32	_D3std3xml3Tag6__initZ
       457:	8d 35 00 00 00 00    	lea    esi,ds:0x0
			459: R_386_32	_D3std3xml3Tag6__vtblZ
       45d:	89 c7                	mov    edi,eax
       45f:	89 30                	mov    DWORD PTR [eax],esi
       461:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       468:	89 f8                	mov    eax,edi
       46a:	05 08 00 00 00       	add    eax,0x8
       46f:	81 c2 08 00 00 00    	add    edx,0x8
       475:	89 04 24             	mov    DWORD PTR [esp],eax
       478:	89 54 24 04          	mov    DWORD PTR [esp+0x4],edx
       47c:	c7 44 24 08 18 00 00 	mov    DWORD PTR [esp+0x8],0x18
       483:	00
       484:	89 7c 24 58          	mov    DWORD PTR [esp+0x58],edi
       488:	89 4c 24 54          	mov    DWORD PTR [esp+0x54],ecx
       48c:	e8 fc ff ff ff       	call   48d
<_D10xmlparser25parseFZv+0x1dd>
			48d: R_386_PC32	memcpy
       491:	89 e0                	mov    eax,esp
       493:	c7 40 08 5d 00 00 00 	mov    DWORD PTR [eax+0x8],0x5d
			496: R_386_32	.rodata
       49a:	c7 40 04 07 00 00 00 	mov    DWORD PTR [eax+0x4],0x7
       4a1:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
       4a7:	8b 44 24 58          	mov    eax,DWORD PTR [esp+0x58]
       4ab:	e8 fc ff ff ff       	call   4ac
<_D10xmlparser25parseFZv+0x1fc>
			4ac:
R_386_PC32	_D3std3xml3Tag6__ctorMFAyaE3std3xml7TagTypeZC3std3xml3Tag
       4b0:	83 ec 0c             	sub    esp,0xc
       4b3:	89 e1                	mov    ecx,esp
       4b5:	89 01                	mov    DWORD PTR [ecx],eax
       4b7:	8b 44 24 60          	mov    eax,DWORD PTR [esp+0x60]
       4bb:	e8 fc ff ff ff       	call   4bc
<_D10xmlparser25parseFZv+0x20c>
			4bc:
R_386_PC32	_D3std3xml8Document6__ctorMFxC3std3xml3TagZC3std3xml8Document
       4c0:	83 ec 04             	sub    esp,0x4
       4c3:	89 84 24 d4 00 00 00 	mov    DWORD PTR [esp+0xd4],eax
       4ca:	8b 44 24 64          	mov    eax,DWORD PTR [esp+0x64]
       4ce:	8b 48 04             	mov    ecx,DWORD PTR [eax+0x4]
       4d1:	8b 10                	mov    edx,DWORD PTR [eax]
       4d3:	89 94 24 c8 00 00 00 	mov    DWORD PTR [esp+0xc8],edx
       4da:	89 8c 24 cc 00 00 00 	mov    DWORD PTR [esp+0xcc],ecx
       4e1:	c7 84 24 c4 00 00 00 	mov    DWORD PTR [esp+0xc4],0x0
       4e8:	00 00 00 00
       4ec:	8b 84 24 c8 00 00 00 	mov    eax,DWORD PTR [esp+0xc8]
       4f3:	39 84 24 c4 00 00 00 	cmp    DWORD PTR [esp+0xc4],eax
       4fa:	0f 83 52 06 00 00    	jae    b52
<_D10xmlparser25parseFZv+0x8a2>
       500:	8b 84 24 c8 00 00 00 	mov    eax,DWORD PTR [esp+0xc8]
       507:	39 84 24 c4 00 00 00 	cmp    DWORD PTR [esp+0xc4],eax
       50e:	72 1f                	jb     52f
<_D10xmlparser25parseFZv+0x27f>
       510:	8d 05 00 00 00 00    	lea    eax,ds:0x0
			512: R_386_32	_D10xmlparser28__ModuleZ
       516:	b9 47 00 00 00       	mov    ecx,0x47
       51b:	89 04 24             	mov    DWORD PTR [esp],eax
       51e:	c7 44 24 04 47 00 00 	mov    DWORD PTR [esp+0x4],0x47
       525:	00
       526:	89 4c 24 50          	mov    DWORD PTR [esp+0x50],ecx
       52a:	e8 fc ff ff ff       	call   52b
<_D10xmlparser25parseFZv+0x27b>
			52b: R_386_PC32	_d_array_bounds
       52f:	8b 84 24 cc 00 00 00 	mov    eax,DWORD PTR [esp+0xcc]
       536:	8b 8c 24 c4 00 00 00 	mov    ecx,DWORD PTR [esp+0xc4]
       53d:	6b c9 38             	imul   ecx,ecx,0x38
       540:	f2 0f 10 44 08 30    	movsd  xmm0,QWORD PTR
[eax+ecx*1+0x30]
       546:	f2 0f 11 84 24 b8 00 	movsd  QWORD PTR [esp+0xb8],xmm0
       54d:	00 00
       54f:	f2 0f 10 44 08 28    	movsd  xmm0,QWORD PTR
[eax+ecx*1+0x28]
       555:	f2 0f 11 84 24 b0 00 	movsd  QWORD PTR [esp+0xb0],xmm0
       55c:	00 00
       55e:	f2 0f 10 44 08 20    	movsd  xmm0,QWORD PTR
[eax+ecx*1+0x20]
       564:	f2 0f 11 84 24 a8 00 	movsd  QWORD PTR [esp+0xa8],xmm0
       56b:	00 00
       56d:	f2 0f 10 44 08 18    	movsd  xmm0,QWORD PTR
[eax+ecx*1+0x18]
       573:	f2 0f 11 84 24 a0 00 	movsd  QWORD PTR [esp+0xa0],xmm0
       57a:	00 00
       57c:	f2 0f 10 44 08 10    	movsd  xmm0,QWORD PTR
[eax+ecx*1+0x10]
       582:	f2 0f 11 84 24 98 00 	movsd  QWORD PTR [esp+0x98],xmm0
       589:	00 00
       58b:	f2 0f 10 04 08       	movsd  xmm0,QWORD PTR [eax+ecx*1]
       590:	f2 0f 10 4c 08 08    	movsd  xmm1,QWORD PTR
[eax+ecx*1+0x8]
       596:	f2 0f 11 8c 24 90 00 	movsd  QWORD PTR [esp+0x90],xmm1
       59d:	00 00
       59f:	f2 0f 11 84 24 88 00 	movsd  QWORD PTR [esp+0x88],xmm0
       5a6:	00 00
       5a8:	89 e0                	mov    eax,esp
       5aa:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			5ac: R_386_32	_D3std3xml7Element7__ClassZ
       5b0:	e8 fc ff ff ff       	call   5b1
<_D10xmlparser25parseFZv+0x301>
			5b1: R_386_PC32	_d_newclass
       5b5:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			5b7: R_386_32	_D3std3xml7Element6__vtblZ
       5bb:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       5c2:	8b 0d 38 00 00 00    	mov    ecx,DWORD PTR ds:0x38
			5c4: R_386_32	_D3std3xml7Element6__initZ
       5c8:	89 48 38             	mov    DWORD PTR [eax+0x38],ecx
       5cb:	f2 0f 10 05 30 00 00 	movsd  xmm0,QWORD PTR ds:0x30
       5d2:	00
			5cf: R_386_32	_D3std3xml7Element6__initZ
       5d3:	f2 0f 11 40 30       	movsd  QWORD PTR [eax+0x30],xmm0
       5d8:	f2 0f 10 05 28 00 00 	movsd  xmm0,QWORD PTR ds:0x28
       5df:	00
			5dc: R_386_32	_D3std3xml7Element6__initZ
       5e0:	f2 0f 11 40 28       	movsd  QWORD PTR [eax+0x28],xmm0
       5e5:	f2 0f 10 05 20 00 00 	movsd  xmm0,QWORD PTR ds:0x20
       5ec:	00
			5e9: R_386_32	_D3std3xml7Element6__initZ
       5ed:	f2 0f 11 40 20       	movsd  QWORD PTR [eax+0x20],xmm0
       5f2:	f2 0f 10 05 18 00 00 	movsd  xmm0,QWORD PTR ds:0x18
       5f9:	00
			5f6: R_386_32	_D3std3xml7Element6__initZ
       5fa:	f2 0f 11 40 18       	movsd  QWORD PTR [eax+0x18],xmm0
       5ff:	f2 0f 10 05 10 00 00 	movsd  xmm0,QWORD PTR ds:0x10
       606:	00
			603: R_386_32	_D3std3xml7Element6__initZ
       607:	f2 0f 11 40 10       	movsd  QWORD PTR [eax+0x10],xmm0
       60c:	f2 0f 10 05 08 00 00 	movsd  xmm0,QWORD PTR ds:0x8
       613:	00
			610: R_386_32	_D3std3xml7Element6__initZ
       614:	f2 0f 11 40 08       	movsd  QWORD PTR [eax+0x8],xmm0
       619:	89 e1                	mov    ecx,esp
       61b:	c7 41 0c 65 00 00 00 	mov    DWORD PTR [ecx+0xc],0x65
			61e: R_386_32	.rodata
       622:	c7 41 08 04 00 00 00 	mov    DWORD PTR [ecx+0x8],0x4
       629:	c7 41 04 00 00 00 00 	mov    DWORD PTR [ecx+0x4],0x0
       630:	c7 01 00 00 00 00    	mov    DWORD PTR [ecx],0x0
       636:	e8 fc ff ff ff       	call   637
<_D10xmlparser25parseFZv+0x387>
			637:
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
       63b:	83 ec 10             	sub    esp,0x10
       63e:	89 84 24 84 00 00 00 	mov    DWORD PTR [esp+0x84],eax
       645:	8b 40 08             	mov    eax,DWORD PTR [eax+0x8]
       648:	83 c0 14             	add    eax,0x14
       64b:	c7 44 24 7c 6a 00 00 	mov    DWORD PTR [esp+0x7c],0x6a
       652:	00
			64f: R_386_32	.rodata
       653:	c7 44 24 78 02 00 00 	mov    DWORD PTR [esp+0x78],0x2
       65a:	00
       65b:	8d 4c 24 78          	lea    ecx,[esp+0x78]
       65f:	89 e2                	mov    edx,esp
       661:	89 4a 0c             	mov    DWORD PTR [edx+0xc],ecx
       664:	89 02                	mov    DWORD PTR [edx],eax
       666:	c7 42 08 08 00 00 00 	mov    DWORD PTR [edx+0x8],0x8
       66d:	c7 42 04 00 00 00 00 	mov    DWORD PTR [edx+0x4],0x0
			670: R_386_32	_D12TypeInfo_Aya6__initZ
       674:	e8 fc ff ff ff       	call   675
<_D10xmlparser25parseFZv+0x3c5>
			675: R_386_PC32	_aaGetX
       679:	8b 8c 24 88 00 00 00 	mov    ecx,DWORD PTR [esp+0x88]
       680:	8b 94 24 8c 00 00 00 	mov    edx,DWORD PTR [esp+0x8c]
       687:	89 50 04             	mov    DWORD PTR [eax+0x4],edx
       68a:	89 08                	mov    DWORD PTR [eax],ecx
       68c:	8b 84 24 84 00 00 00 	mov    eax,DWORD PTR [esp+0x84]
       693:	8b 08                	mov    ecx,DWORD PTR [eax]
       695:	8b 49 30             	mov    ecx,DWORD PTR [ecx+0x30]
       698:	89 e2                	mov    edx,esp
       69a:	c7 02 00 00 00 00    	mov    DWORD PTR [edx],0x0
			69c: R_386_32	_D3std3xml7Element7__ClassZ
       6a0:	89 44 24 4c          	mov    DWORD PTR [esp+0x4c],eax
       6a4:	89 4c 24 48          	mov    DWORD PTR [esp+0x48],ecx
       6a8:	e8 fc ff ff ff       	call   6a9
<_D10xmlparser25parseFZv+0x3f9>
			6a9: R_386_PC32	_d_newclass
       6ad:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			6af: R_386_32	_D3std3xml7Element6__vtblZ
       6b3:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       6ba:	8b 0d 38 00 00 00    	mov    ecx,DWORD PTR ds:0x38
			6bc: R_386_32	_D3std3xml7Element6__initZ
       6c0:	89 48 38             	mov    DWORD PTR [eax+0x38],ecx
       6c3:	f2 0f 10 05 30 00 00 	movsd  xmm0,QWORD PTR ds:0x30
       6ca:	00
			6c7: R_386_32	_D3std3xml7Element6__initZ
       6cb:	f2 0f 11 40 30       	movsd  QWORD PTR [eax+0x30],xmm0
       6d0:	f2 0f 10 05 28 00 00 	movsd  xmm0,QWORD PTR ds:0x28
       6d7:	00
			6d4: R_386_32	_D3std3xml7Element6__initZ
       6d8:	f2 0f 11 40 28       	movsd  QWORD PTR [eax+0x28],xmm0
       6dd:	f2 0f 10 05 20 00 00 	movsd  xmm0,QWORD PTR ds:0x20
       6e4:	00
			6e1: R_386_32	_D3std3xml7Element6__initZ
       6e5:	f2 0f 11 40 20       	movsd  QWORD PTR [eax+0x20],xmm0
       6ea:	f2 0f 10 05 18 00 00 	movsd  xmm0,QWORD PTR ds:0x18
       6f1:	00
			6ee: R_386_32	_D3std3xml7Element6__initZ
       6f2:	f2 0f 11 40 18       	movsd  QWORD PTR [eax+0x18],xmm0
       6f7:	f2 0f 10 05 10 00 00 	movsd  xmm0,QWORD PTR ds:0x10
       6fe:	00
			6fb: R_386_32	_D3std3xml7Element6__initZ
       6ff:	f2 0f 11 40 10       	movsd  QWORD PTR [eax+0x10],xmm0
       704:	f2 0f 10 05 08 00 00 	movsd  xmm0,QWORD PTR ds:0x8
       70b:	00
			708: R_386_32	_D3std3xml7Element6__initZ
       70c:	f2 0f 11 40 08       	movsd  QWORD PTR [eax+0x8],xmm0
       711:	8b 8c 24 90 00 00 00 	mov    ecx,DWORD PTR [esp+0x90]
       718:	8b 94 24 94 00 00 00 	mov    edx,DWORD PTR [esp+0x94]
       71f:	89 e6                	mov    esi,esp
       721:	89 56 04             	mov    DWORD PTR [esi+0x4],edx
       724:	89 0e                	mov    DWORD PTR [esi],ecx
       726:	c7 46 0c 6d 00 00 00 	mov    DWORD PTR [esi+0xc],0x6d
			729: R_386_32	.rodata
       72d:	c7 46 08 06 00 00 00 	mov    DWORD PTR [esi+0x8],0x6
       734:	e8 fc ff ff ff       	call   735
<_D10xmlparser25parseFZv+0x485>
			735:
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
       739:	83 ec 10             	sub    esp,0x10
       73c:	89 e1                	mov    ecx,esp
       73e:	89 01                	mov    DWORD PTR [ecx],eax
       740:	8b 44 24 4c          	mov    eax,DWORD PTR [esp+0x4c]
       744:	8b 4c 24 48          	mov    ecx,DWORD PTR [esp+0x48]
       748:	ff d1                	call   ecx
       74a:	83 ec 04             	sub    esp,0x4
       74d:	8b 84 24 84 00 00 00 	mov    eax,DWORD PTR [esp+0x84]
       754:	8b 08                	mov    ecx,DWORD PTR [eax]
       756:	8b 49 30             	mov    ecx,DWORD PTR [ecx+0x30]
       759:	89 e2                	mov    edx,esp
       75b:	c7 02 00 00 00 00    	mov    DWORD PTR [edx],0x0
			75d: R_386_32	_D3std3xml7Element7__ClassZ
       761:	89 44 24 44          	mov    DWORD PTR [esp+0x44],eax
       765:	89 4c 24 40          	mov    DWORD PTR [esp+0x40],ecx
       769:	e8 fc ff ff ff       	call   76a
<_D10xmlparser25parseFZv+0x4ba>
			76a: R_386_PC32	_d_newclass
       76e:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			770: R_386_32	_D3std3xml7Element6__vtblZ
       774:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       77b:	8b 0d 38 00 00 00    	mov    ecx,DWORD PTR ds:0x38
			77d: R_386_32	_D3std3xml7Element6__initZ
       781:	89 48 38             	mov    DWORD PTR [eax+0x38],ecx
       784:	f2 0f 10 05 30 00 00 	movsd  xmm0,QWORD PTR ds:0x30
       78b:	00
			788: R_386_32	_D3std3xml7Element6__initZ
       78c:	f2 0f 11 40 30       	movsd  QWORD PTR [eax+0x30],xmm0
       791:	f2 0f 10 05 28 00 00 	movsd  xmm0,QWORD PTR ds:0x28
       798:	00
			795: R_386_32	_D3std3xml7Element6__initZ
       799:	f2 0f 11 40 28       	movsd  QWORD PTR [eax+0x28],xmm0
       79e:	f2 0f 10 05 20 00 00 	movsd  xmm0,QWORD PTR ds:0x20
       7a5:	00
			7a2: R_386_32	_D3std3xml7Element6__initZ
       7a6:	f2 0f 11 40 20       	movsd  QWORD PTR [eax+0x20],xmm0
       7ab:	f2 0f 10 05 18 00 00 	movsd  xmm0,QWORD PTR ds:0x18
       7b2:	00
			7af: R_386_32	_D3std3xml7Element6__initZ
       7b3:	f2 0f 11 40 18       	movsd  QWORD PTR [eax+0x18],xmm0
       7b8:	f2 0f 10 05 10 00 00 	movsd  xmm0,QWORD PTR ds:0x10
       7bf:	00
			7bc: R_386_32	_D3std3xml7Element6__initZ
       7c0:	f2 0f 11 40 10       	movsd  QWORD PTR [eax+0x10],xmm0
       7c5:	f2 0f 10 05 08 00 00 	movsd  xmm0,QWORD PTR ds:0x8
       7cc:	00
			7c9: R_386_32	_D3std3xml7Element6__initZ
       7cd:	f2 0f 11 40 08       	movsd  QWORD PTR [eax+0x8],xmm0
       7d2:	8b 8c 24 98 00 00 00 	mov    ecx,DWORD PTR [esp+0x98]
       7d9:	8b 94 24 9c 00 00 00 	mov    edx,DWORD PTR [esp+0x9c]
       7e0:	89 e6                	mov    esi,esp
       7e2:	89 56 04             	mov    DWORD PTR [esi+0x4],edx
       7e5:	89 0e                	mov    DWORD PTR [esi],ecx
       7e7:	c7 46 0c 74 00 00 00 	mov    DWORD PTR [esi+0xc],0x74
			7ea: R_386_32	.rodata
       7ee:	c7 46 08 05 00 00 00 	mov    DWORD PTR [esi+0x8],0x5
       7f5:	e8 fc ff ff ff       	call   7f6
<_D10xmlparser25parseFZv+0x546>
			7f6:
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
       7fa:	83 ec 10             	sub    esp,0x10
       7fd:	89 e1                	mov    ecx,esp
       7ff:	89 01                	mov    DWORD PTR [ecx],eax
       801:	8b 44 24 44          	mov    eax,DWORD PTR [esp+0x44]
       805:	8b 4c 24 40          	mov    ecx,DWORD PTR [esp+0x40]
       809:	ff d1                	call   ecx
       80b:	83 ec 04             	sub    esp,0x4
       80e:	8b 84 24 84 00 00 00 	mov    eax,DWORD PTR [esp+0x84]
       815:	8b 08                	mov    ecx,DWORD PTR [eax]
       817:	8b 49 30             	mov    ecx,DWORD PTR [ecx+0x30]
       81a:	89 e2                	mov    edx,esp
       81c:	c7 02 00 00 00 00    	mov    DWORD PTR [edx],0x0
			81e: R_386_32	_D3std3xml7Element7__ClassZ
       822:	89 44 24 3c          	mov    DWORD PTR [esp+0x3c],eax
       826:	89 4c 24 38          	mov    DWORD PTR [esp+0x38],ecx
       82a:	e8 fc ff ff ff       	call   82b
<_D10xmlparser25parseFZv+0x57b>
			82b: R_386_PC32	_d_newclass
       82f:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			831: R_386_32	_D3std3xml7Element6__vtblZ
       835:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       83c:	8b 0d 38 00 00 00    	mov    ecx,DWORD PTR ds:0x38
			83e: R_386_32	_D3std3xml7Element6__initZ
       842:	89 48 38             	mov    DWORD PTR [eax+0x38],ecx
       845:	f2 0f 10 05 30 00 00 	movsd  xmm0,QWORD PTR ds:0x30
       84c:	00
			849: R_386_32	_D3std3xml7Element6__initZ
       84d:	f2 0f 11 40 30       	movsd  QWORD PTR [eax+0x30],xmm0
       852:	f2 0f 10 05 28 00 00 	movsd  xmm0,QWORD PTR ds:0x28
       859:	00
			856: R_386_32	_D3std3xml7Element6__initZ
       85a:	f2 0f 11 40 28       	movsd  QWORD PTR [eax+0x28],xmm0
       85f:	f2 0f 10 05 20 00 00 	movsd  xmm0,QWORD PTR ds:0x20
       866:	00
			863: R_386_32	_D3std3xml7Element6__initZ
       867:	f2 0f 11 40 20       	movsd  QWORD PTR [eax+0x20],xmm0
       86c:	f2 0f 10 05 18 00 00 	movsd  xmm0,QWORD PTR ds:0x18
       873:	00
			870: R_386_32	_D3std3xml7Element6__initZ
       874:	f2 0f 11 40 18       	movsd  QWORD PTR [eax+0x18],xmm0
       879:	f2 0f 10 05 10 00 00 	movsd  xmm0,QWORD PTR ds:0x10
       880:	00
			87d: R_386_32	_D3std3xml7Element6__initZ
       881:	f2 0f 11 40 10       	movsd  QWORD PTR [eax+0x10],xmm0
       886:	f2 0f 10 05 08 00 00 	movsd  xmm0,QWORD PTR ds:0x8
       88d:	00
			88a: R_386_32	_D3std3xml7Element6__initZ
       88e:	f2 0f 11 40 08       	movsd  QWORD PTR [eax+0x8],xmm0
       893:	8b 8c 24 a0 00 00 00 	mov    ecx,DWORD PTR [esp+0xa0]
       89a:	8b 94 24 a4 00 00 00 	mov    edx,DWORD PTR [esp+0xa4]
       8a1:	89 e6                	mov    esi,esp
       8a3:	89 56 04             	mov    DWORD PTR [esi+0x4],edx
       8a6:	89 0e                	mov    DWORD PTR [esi],ecx
       8a8:	c7 46 0c 7a 00 00 00 	mov    DWORD PTR [esi+0xc],0x7a
			8ab: R_386_32	.rodata
       8af:	c7 46 08 05 00 00 00 	mov    DWORD PTR [esi+0x8],0x5
       8b6:	e8 fc ff ff ff       	call   8b7
<_D10xmlparser25parseFZv+0x607>
			8b7:
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
       8bb:	83 ec 10             	sub    esp,0x10
       8be:	89 e1                	mov    ecx,esp
       8c0:	89 01                	mov    DWORD PTR [ecx],eax
       8c2:	8b 44 24 3c          	mov    eax,DWORD PTR [esp+0x3c]
       8c6:	8b 4c 24 38          	mov    ecx,DWORD PTR [esp+0x38]
       8ca:	ff d1                	call   ecx
       8cc:	83 ec 04             	sub    esp,0x4
       8cf:	8b 84 24 84 00 00 00 	mov    eax,DWORD PTR [esp+0x84]
       8d6:	8b 08                	mov    ecx,DWORD PTR [eax]
       8d8:	8b 49 30             	mov    ecx,DWORD PTR [ecx+0x30]
       8db:	89 e2                	mov    edx,esp
       8dd:	c7 02 00 00 00 00    	mov    DWORD PTR [edx],0x0
			8df: R_386_32	_D3std3xml7Element7__ClassZ
       8e3:	89 44 24 34          	mov    DWORD PTR [esp+0x34],eax
       8e7:	89 4c 24 30          	mov    DWORD PTR [esp+0x30],ecx
       8eb:	e8 fc ff ff ff       	call   8ec
<_D10xmlparser25parseFZv+0x63c>
			8ec: R_386_PC32	_d_newclass
       8f0:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			8f2: R_386_32	_D3std3xml7Element6__vtblZ
       8f6:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       8fd:	8b 0d 38 00 00 00    	mov    ecx,DWORD PTR ds:0x38
			8ff: R_386_32	_D3std3xml7Element6__initZ
       903:	89 48 38             	mov    DWORD PTR [eax+0x38],ecx
       906:	f2 0f 10 05 30 00 00 	movsd  xmm0,QWORD PTR ds:0x30
       90d:	00
			90a: R_386_32	_D3std3xml7Element6__initZ
       90e:	f2 0f 11 40 30       	movsd  QWORD PTR [eax+0x30],xmm0
       913:	f2 0f 10 05 28 00 00 	movsd  xmm0,QWORD PTR ds:0x28
       91a:	00
			917: R_386_32	_D3std3xml7Element6__initZ
       91b:	f2 0f 11 40 28       	movsd  QWORD PTR [eax+0x28],xmm0
       920:	f2 0f 10 05 20 00 00 	movsd  xmm0,QWORD PTR ds:0x20
       927:	00
			924: R_386_32	_D3std3xml7Element6__initZ
       928:	f2 0f 11 40 20       	movsd  QWORD PTR [eax+0x20],xmm0
       92d:	f2 0f 10 05 18 00 00 	movsd  xmm0,QWORD PTR ds:0x18
       934:	00
			931: R_386_32	_D3std3xml7Element6__initZ
       935:	f2 0f 11 40 18       	movsd  QWORD PTR [eax+0x18],xmm0
       93a:	f2 0f 10 05 10 00 00 	movsd  xmm0,QWORD PTR ds:0x10
       941:	00
			93e: R_386_32	_D3std3xml7Element6__initZ
       942:	f2 0f 11 40 10       	movsd  QWORD PTR [eax+0x10],xmm0
       947:	f2 0f 10 05 08 00 00 	movsd  xmm0,QWORD PTR ds:0x8
       94e:	00
			94b: R_386_32	_D3std3xml7Element6__initZ
       94f:	f2 0f 11 40 08       	movsd  QWORD PTR [eax+0x8],xmm0
       954:	8b 8c 24 a8 00 00 00 	mov    ecx,DWORD PTR [esp+0xa8]
       95b:	8b 94 24 ac 00 00 00 	mov    edx,DWORD PTR [esp+0xac]
       962:	89 e6                	mov    esi,esp
       964:	89 56 04             	mov    DWORD PTR [esi+0x4],edx
       967:	89 0e                	mov    DWORD PTR [esi],ecx
       969:	c7 46 0c 80 00 00 00 	mov    DWORD PTR [esi+0xc],0x80
			96c: R_386_32	.rodata
       970:	c7 46 08 05 00 00 00 	mov    DWORD PTR [esi+0x8],0x5
       977:	e8 fc ff ff ff       	call   978
<_D10xmlparser25parseFZv+0x6c8>
			978:
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
       97c:	83 ec 10             	sub    esp,0x10
       97f:	89 e1                	mov    ecx,esp
       981:	89 01                	mov    DWORD PTR [ecx],eax
       983:	8b 44 24 34          	mov    eax,DWORD PTR [esp+0x34]
       987:	8b 4c 24 30          	mov    ecx,DWORD PTR [esp+0x30]
       98b:	ff d1                	call   ecx
       98d:	83 ec 04             	sub    esp,0x4
       990:	8b 84 24 84 00 00 00 	mov    eax,DWORD PTR [esp+0x84]
       997:	8b 08                	mov    ecx,DWORD PTR [eax]
       999:	8b 49 30             	mov    ecx,DWORD PTR [ecx+0x30]
       99c:	89 e2                	mov    edx,esp
       99e:	c7 02 00 00 00 00    	mov    DWORD PTR [edx],0x0
			9a0: R_386_32	_D3std3xml7Element7__ClassZ
       9a4:	89 44 24 2c          	mov    DWORD PTR [esp+0x2c],eax
       9a8:	89 4c 24 28          	mov    DWORD PTR [esp+0x28],ecx
       9ac:	e8 fc ff ff ff       	call   9ad
<_D10xmlparser25parseFZv+0x6fd>
			9ad: R_386_PC32	_d_newclass
       9b1:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			9b3: R_386_32	_D3std3xml7Element6__vtblZ
       9b7:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       9be:	8b 0d 38 00 00 00    	mov    ecx,DWORD PTR ds:0x38
			9c0: R_386_32	_D3std3xml7Element6__initZ
       9c4:	89 48 38             	mov    DWORD PTR [eax+0x38],ecx
       9c7:	f2 0f 10 05 30 00 00 	movsd  xmm0,QWORD PTR ds:0x30
       9ce:	00
			9cb: R_386_32	_D3std3xml7Element6__initZ
       9cf:	f2 0f 11 40 30       	movsd  QWORD PTR [eax+0x30],xmm0
       9d4:	f2 0f 10 05 28 00 00 	movsd  xmm0,QWORD PTR ds:0x28
       9db:	00
			9d8: R_386_32	_D3std3xml7Element6__initZ
       9dc:	f2 0f 11 40 28       	movsd  QWORD PTR [eax+0x28],xmm0
       9e1:	f2 0f 10 05 20 00 00 	movsd  xmm0,QWORD PTR ds:0x20
       9e8:	00
			9e5: R_386_32	_D3std3xml7Element6__initZ
       9e9:	f2 0f 11 40 20       	movsd  QWORD PTR [eax+0x20],xmm0
       9ee:	f2 0f 10 05 18 00 00 	movsd  xmm0,QWORD PTR ds:0x18
       9f5:	00
			9f2: R_386_32	_D3std3xml7Element6__initZ
       9f6:	f2 0f 11 40 18       	movsd  QWORD PTR [eax+0x18],xmm0
       9fb:	f2 0f 10 05 10 00 00 	movsd  xmm0,QWORD PTR ds:0x10
       a02:	00
			9ff: R_386_32	_D3std3xml7Element6__initZ
       a03:	f2 0f 11 40 10       	movsd  QWORD PTR [eax+0x10],xmm0
       a08:	f2 0f 10 05 08 00 00 	movsd  xmm0,QWORD PTR ds:0x8
       a0f:	00
			a0c: R_386_32	_D3std3xml7Element6__initZ
       a10:	f2 0f 11 40 08       	movsd  QWORD PTR [eax+0x8],xmm0
       a15:	8b 8c 24 b0 00 00 00 	mov    ecx,DWORD PTR [esp+0xb0]
       a1c:	8b 94 24 b4 00 00 00 	mov    edx,DWORD PTR [esp+0xb4]
       a23:	89 e6                	mov    esi,esp
       a25:	89 56 04             	mov    DWORD PTR [esi+0x4],edx
       a28:	89 0e                	mov    DWORD PTR [esi],ecx
       a2a:	c7 46 0c 86 00 00 00 	mov    DWORD PTR [esi+0xc],0x86
			a2d: R_386_32	.rodata
       a31:	c7 46 08 0c 00 00 00 	mov    DWORD PTR [esi+0x8],0xc
       a38:	e8 fc ff ff ff       	call   a39
<_D10xmlparser25parseFZv+0x789>
			a39:
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
       a3d:	83 ec 10             	sub    esp,0x10
       a40:	89 e1                	mov    ecx,esp
       a42:	89 01                	mov    DWORD PTR [ecx],eax
       a44:	8b 44 24 2c          	mov    eax,DWORD PTR [esp+0x2c]
       a48:	8b 4c 24 28          	mov    ecx,DWORD PTR [esp+0x28]
       a4c:	ff d1                	call   ecx
       a4e:	83 ec 04             	sub    esp,0x4
       a51:	8b 84 24 84 00 00 00 	mov    eax,DWORD PTR [esp+0x84]
       a58:	8b 08                	mov    ecx,DWORD PTR [eax]
       a5a:	8b 49 30             	mov    ecx,DWORD PTR [ecx+0x30]
       a5d:	89 e2                	mov    edx,esp
       a5f:	c7 02 00 00 00 00    	mov    DWORD PTR [edx],0x0
			a61: R_386_32	_D3std3xml7Element7__ClassZ
       a65:	89 44 24 24          	mov    DWORD PTR [esp+0x24],eax
       a69:	89 4c 24 20          	mov    DWORD PTR [esp+0x20],ecx
       a6d:	e8 fc ff ff ff       	call   a6e
<_D10xmlparser25parseFZv+0x7be>
			a6e: R_386_PC32	_d_newclass
       a72:	c7 00 00 00 00 00    	mov    DWORD PTR [eax],0x0
			a74: R_386_32	_D3std3xml7Element6__vtblZ
       a78:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       a7f:	8b 0d 38 00 00 00    	mov    ecx,DWORD PTR ds:0x38
			a81: R_386_32	_D3std3xml7Element6__initZ
       a85:	89 48 38             	mov    DWORD PTR [eax+0x38],ecx
       a88:	f2 0f 10 05 30 00 00 	movsd  xmm0,QWORD PTR ds:0x30
       a8f:	00
			a8c: R_386_32	_D3std3xml7Element6__initZ
       a90:	f2 0f 11 40 30       	movsd  QWORD PTR [eax+0x30],xmm0
       a95:	f2 0f 10 05 28 00 00 	movsd  xmm0,QWORD PTR ds:0x28
       a9c:	00
			a99: R_386_32	_D3std3xml7Element6__initZ
       a9d:	f2 0f 11 40 28       	movsd  QWORD PTR [eax+0x28],xmm0
       aa2:	f2 0f 10 05 20 00 00 	movsd  xmm0,QWORD PTR ds:0x20
       aa9:	00
			aa6: R_386_32	_D3std3xml7Element6__initZ
       aaa:	f2 0f 11 40 20       	movsd  QWORD PTR [eax+0x20],xmm0
       aaf:	f2 0f 10 05 18 00 00 	movsd  xmm0,QWORD PTR ds:0x18
       ab6:	00
			ab3: R_386_32	_D3std3xml7Element6__initZ
       ab7:	f2 0f 11 40 18       	movsd  QWORD PTR [eax+0x18],xmm0
       abc:	f2 0f 10 05 10 00 00 	movsd  xmm0,QWORD PTR ds:0x10
       ac3:	00
			ac0: R_386_32	_D3std3xml7Element6__initZ
       ac4:	f2 0f 11 40 10       	movsd  QWORD PTR [eax+0x10],xmm0
       ac9:	f2 0f 10 05 08 00 00 	movsd  xmm0,QWORD PTR ds:0x8
       ad0:	00
			acd: R_386_32	_D3std3xml7Element6__initZ
       ad1:	f2 0f 11 40 08       	movsd  QWORD PTR [eax+0x8],xmm0
       ad6:	8b 8c 24 b8 00 00 00 	mov    ecx,DWORD PTR [esp+0xb8]
       add:	8b 94 24 bc 00 00 00 	mov    edx,DWORD PTR [esp+0xbc]
       ae4:	89 e6                	mov    esi,esp
       ae6:	89 56 04             	mov    DWORD PTR [esi+0x4],edx
       ae9:	89 0e                	mov    DWORD PTR [esi],ecx
       aeb:	c7 46 0c 93 00 00 00 	mov    DWORD PTR [esi+0xc],0x93
			aee: R_386_32	.rodata
       af2:	c7 46 08 0b 00 00 00 	mov    DWORD PTR [esi+0x8],0xb
       af9:	e8 fc ff ff ff       	call   afa
<_D10xmlparser25parseFZv+0x84a>
			afa:
R_386_PC32	_D3std3xml7Element6__ctorMFAyaAyaZC3std3xml7Element
       afe:	83 ec 10             	sub    esp,0x10
       b01:	89 e1                	mov    ecx,esp
       b03:	89 01                	mov    DWORD PTR [ecx],eax
       b05:	8b 44 24 24          	mov    eax,DWORD PTR [esp+0x24]
       b09:	8b 4c 24 20          	mov    ecx,DWORD PTR [esp+0x20]
       b0d:	ff d1                	call   ecx
       b0f:	83 ec 04             	sub    esp,0x4
       b12:	8b 84 24 d4 00 00 00 	mov    eax,DWORD PTR [esp+0xd4]
       b19:	89 c1                	mov    ecx,eax
       b1b:	8b 00                	mov    eax,DWORD PTR [eax]
       b1d:	8b 40 30             	mov    eax,DWORD PTR [eax+0x30]
       b20:	8b 94 24 84 00 00 00 	mov    edx,DWORD PTR [esp+0x84]
       b27:	89 e6                	mov    esi,esp
       b29:	89 16                	mov    DWORD PTR [esi],edx
       b2b:	89 44 24 1c          	mov    DWORD PTR [esp+0x1c],eax
       b2f:	89 c8                	mov    eax,ecx
       b31:	8b 4c 24 1c          	mov    ecx,DWORD PTR [esp+0x1c]
       b35:	ff d1                	call   ecx
       b37:	83 ec 04             	sub    esp,0x4
       b3a:	8b 84 24 c4 00 00 00 	mov    eax,DWORD PTR [esp+0xc4]
       b41:	05 01 00 00 00       	add    eax,0x1
       b46:	89 84 24 c4 00 00 00 	mov    DWORD PTR [esp+0xc4],eax
       b4d:	e9 9a f9 ff ff       	jmp    4ec
<_D10xmlparser25parseFZv+0x23c>
       b52:	81 c4 f4 00 00 00    	add    esp,0xf4
       b58:	5e                   	pop    esi
       b59:	5f                   	pop    edi
       b5a:	c3                   	ret
       b5b:	0f 1f 44 00 00       	nop    DWORD PTR [eax+eax*1+0x0]

00000b60
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv>:
       b60:	53                   	push   ebx
       b61:	57                   	push   edi
       b62:	56                   	push   esi
       b63:	81 ec 80 00 00 00    	sub    esp,0x80
       b69:	8b 8c 24 90 00 00 00 	mov    ecx,DWORD PTR [esp+0x90]
       b70:	8d 15 00 00 00 00    	lea    edx,ds:0x0
			b72: R_386_32	_D12TypeInfo_Aya6__initZ
       b76:	8d 74 24 70          	lea    esi,[esp+0x70]
       b7a:	89 44 24 7c          	mov    DWORD PTR [esp+0x7c],eax
       b7e:	89 4c 24 78          	mov    DWORD PTR [esp+0x78],ecx
       b82:	89 e0                	mov    eax,esp
       b84:	c7 00 3c 00 00 00    	mov    DWORD PTR [eax],0x3c
       b8a:	89 54 24 3c          	mov    DWORD PTR [esp+0x3c],edx
       b8e:	89 74 24 38          	mov    DWORD PTR [esp+0x38],esi
       b92:	e8 fc ff ff ff       	call   b93
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x33>
			b93: R_386_PC32	_d_allocmemory
       b97:	8b 4c 24 7c          	mov    ecx,DWORD PTR [esp+0x7c]
       b9b:	89 08                	mov    DWORD PTR [eax],ecx
       b9d:	89 c1                	mov    ecx,eax
       b9f:	83 c1 04             	add    ecx,0x4
       ba2:	c7 40 08 00 00 00 00 	mov    DWORD PTR [eax+0x8],0x0
       ba9:	c7 40 04 00 00 00 00 	mov    DWORD PTR [eax+0x4],0x0
       bb0:	c7 40 10 00 00 00 00 	mov    DWORD PTR [eax+0x10],0x0
       bb7:	c7 40 0c 00 00 00 00 	mov    DWORD PTR [eax+0xc],0x0
       bbe:	c7 40 18 00 00 00 00 	mov    DWORD PTR [eax+0x18],0x0
       bc5:	c7 40 14 00 00 00 00 	mov    DWORD PTR [eax+0x14],0x0
       bcc:	c7 40 20 00 00 00 00 	mov    DWORD PTR [eax+0x20],0x0
       bd3:	c7 40 1c 00 00 00 00 	mov    DWORD PTR [eax+0x1c],0x0
       bda:	c7 40 28 00 00 00 00 	mov    DWORD PTR [eax+0x28],0x0
       be1:	c7 40 24 00 00 00 00 	mov    DWORD PTR [eax+0x24],0x0
       be8:	c7 40 30 00 00 00 00 	mov    DWORD PTR [eax+0x30],0x0
       bef:	c7 40 2c 00 00 00 00 	mov    DWORD PTR [eax+0x2c],0x0
       bf6:	c7 40 38 00 00 00 00 	mov    DWORD PTR [eax+0x38],0x0
       bfd:	c7 40 34 00 00 00 00 	mov    DWORD PTR [eax+0x34],0x0
       c04:	8b 54 24 78          	mov    edx,DWORD PTR [esp+0x78]
       c08:	8b 32                	mov    esi,DWORD PTR [edx]
       c0a:	8b 76 18             	mov    esi,DWORD PTR [esi+0x18]
       c0d:	89 44 24 34          	mov    DWORD PTR [esp+0x34],eax
       c11:	89 d0                	mov    eax,edx
       c13:	89 4c 24 30          	mov    DWORD PTR [esp+0x30],ecx
       c17:	ff d6                	call   esi
       c19:	8b 40 14             	mov    eax,DWORD PTR [eax+0x14]
       c1c:	c7 44 24 74 4c 09 00 	mov    DWORD PTR [esp+0x74],0x94c
       c23:	00
			c20: R_386_32	.rodata
       c24:	c7 44 24 70 02 00 00 	mov    DWORD PTR [esp+0x70],0x2
       c2b:	00
       c2c:	8b 4c 24 34          	mov    ecx,DWORD PTR [esp+0x34]
       c30:	8b 54 24 30          	mov    edx,DWORD PTR [esp+0x30]
       c34:	8b 74 24 38          	mov    esi,DWORD PTR [esp+0x38]
       c38:	89 04 24             	mov    DWORD PTR [esp],eax
       c3b:	8b 44 24 3c          	mov    eax,DWORD PTR [esp+0x3c]
       c3f:	89 44 24 04          	mov    DWORD PTR [esp+0x4],eax
       c43:	89 74 24 08          	mov    DWORD PTR [esp+0x8],esi
       c47:	89 4c 24 2c          	mov    DWORD PTR [esp+0x2c],ecx
       c4b:	89 54 24 28          	mov    DWORD PTR [esp+0x28],edx
       c4f:	e8 fc ff ff ff       	call   c50
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0xf0>
			c50: R_386_PC32	_aaInX
       c54:	b9 00 00 00 00       	mov    ecx,0x0
       c59:	39 c1                	cmp    ecx,eax
       c5b:	89 44 24 24          	mov    DWORD PTR [esp+0x24],eax
       c5f:	75 1f                	jne    c80
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x120>
       c61:	8d 05 00 00 00 00    	lea    eax,ds:0x0
			c63: R_386_32	_D10xmlparser28__ModuleZ
       c67:	b9 36 00 00 00       	mov    ecx,0x36
       c6c:	89 04 24             	mov    DWORD PTR [esp],eax
       c6f:	c7 44 24 04 36 00 00 	mov    DWORD PTR [esp+0x4],0x36
       c76:	00
       c77:	89 4c 24 20          	mov    DWORD PTR [esp+0x20],ecx
       c7b:	e8 fc ff ff ff       	call   c7c
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x11c>
			c7c: R_386_PC32	_d_array_bounds
       c80:	8b 44 24 24          	mov    eax,DWORD PTR [esp+0x24]
       c84:	8b 08                	mov    ecx,DWORD PTR [eax]
       c86:	8b 50 04             	mov    edx,DWORD PTR [eax+0x4]
       c89:	8b 74 24 30          	mov    esi,DWORD PTR [esp+0x30]
       c8d:	89 56 04             	mov    DWORD PTR [esi+0x4],edx
       c90:	89 0e                	mov    DWORD PTR [esi],ecx
       c92:	8b 4c 24 78          	mov    ecx,DWORD PTR [esp+0x78]
       c96:	83 c1 4c             	add    ecx,0x4c
       c99:	c7 44 24 6c 4f 09 00 	mov    DWORD PTR [esp+0x6c],0x94f
       ca0:	00
			c9d: R_386_32	.rodata
       ca1:	c7 44 24 68 06 00 00 	mov    DWORD PTR [esp+0x68],0x6
       ca8:	00
       ca9:	8d 54 24 68          	lea    edx,[esp+0x68]
       cad:	89 e7                	mov    edi,esp
       caf:	89 57 0c             	mov    DWORD PTR [edi+0xc],edx
       cb2:	89 0f                	mov    DWORD PTR [edi],ecx
       cb4:	c7 47 08 08 00 00 00 	mov    DWORD PTR [edi+0x8],0x8
       cbb:	c7 47 04 00 00 00 00 	mov    DWORD PTR [edi+0x4],0x0
			cbe: R_386_32	_D12TypeInfo_Aya6__initZ
       cc2:	e8 fc ff ff ff       	call   cc3
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x163>
			cc3: R_386_PC32	_aaGetX
       cc7:	8b 4c 24 2c          	mov    ecx,DWORD PTR [esp+0x2c]
       ccb:	89 08                	mov    DWORD PTR [eax],ecx
       ccd:	c7 40 04 d0 0e 00 00 	mov    DWORD PTR [eax+0x4],0xed0
			cd0: R_386_32	.text
       cd4:	8b 44 24 78          	mov    eax,DWORD PTR [esp+0x78]
       cd8:	83 c0 4c             	add    eax,0x4c
       cdb:	c7 44 24 64 56 09 00 	mov    DWORD PTR [esp+0x64],0x956
       ce2:	00
			cdf: R_386_32	.rodata
       ce3:	c7 44 24 60 05 00 00 	mov    DWORD PTR [esp+0x60],0x5
       cea:	00
       ceb:	8d 54 24 60          	lea    edx,[esp+0x60]
       cef:	89 e6                	mov    esi,esp
       cf1:	89 56 0c             	mov    DWORD PTR [esi+0xc],edx
       cf4:	89 06                	mov    DWORD PTR [esi],eax
       cf6:	c7 46 08 08 00 00 00 	mov    DWORD PTR [esi+0x8],0x8
       cfd:	c7 46 04 00 00 00 00 	mov    DWORD PTR [esi+0x4],0x0
			d00: R_386_32	_D12TypeInfo_Aya6__initZ
       d04:	e8 fc ff ff ff       	call   d05
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x1a5>
			d05: R_386_PC32	_aaGetX
       d09:	8b 4c 24 2c          	mov    ecx,DWORD PTR [esp+0x2c]
       d0d:	89 08                	mov    DWORD PTR [eax],ecx
       d0f:	c7 40 04 10 0f 00 00 	mov    DWORD PTR [eax+0x4],0xf10
			d12: R_386_32	.text
       d16:	8b 44 24 78          	mov    eax,DWORD PTR [esp+0x78]
       d1a:	83 c0 4c             	add    eax,0x4c
       d1d:	c7 44 24 5c 5c 09 00 	mov    DWORD PTR [esp+0x5c],0x95c
       d24:	00
			d21: R_386_32	.rodata
       d25:	c7 44 24 58 05 00 00 	mov    DWORD PTR [esp+0x58],0x5
       d2c:	00
       d2d:	8d 54 24 58          	lea    edx,[esp+0x58]
       d31:	89 e6                	mov    esi,esp
       d33:	89 56 0c             	mov    DWORD PTR [esi+0xc],edx
       d36:	89 06                	mov    DWORD PTR [esi],eax
       d38:	c7 46 08 08 00 00 00 	mov    DWORD PTR [esi+0x8],0x8
       d3f:	c7 46 04 00 00 00 00 	mov    DWORD PTR [esi+0x4],0x0
			d42: R_386_32	_D12TypeInfo_Aya6__initZ
       d46:	e8 fc ff ff ff       	call   d47
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x1e7>
			d47: R_386_PC32	_aaGetX
       d4b:	8b 4c 24 2c          	mov    ecx,DWORD PTR [esp+0x2c]
       d4f:	89 08                	mov    DWORD PTR [eax],ecx
       d51:	c7 40 04 50 0f 00 00 	mov    DWORD PTR [eax+0x4],0xf50
			d54: R_386_32	.text
       d58:	8b 44 24 78          	mov    eax,DWORD PTR [esp+0x78]
       d5c:	83 c0 4c             	add    eax,0x4c
       d5f:	c7 44 24 54 62 09 00 	mov    DWORD PTR [esp+0x54],0x962
       d66:	00
			d63: R_386_32	.rodata
       d67:	c7 44 24 50 05 00 00 	mov    DWORD PTR [esp+0x50],0x5
       d6e:	00
       d6f:	8d 54 24 50          	lea    edx,[esp+0x50]
       d73:	89 e6                	mov    esi,esp
       d75:	89 56 0c             	mov    DWORD PTR [esi+0xc],edx
       d78:	89 06                	mov    DWORD PTR [esi],eax
       d7a:	c7 46 08 08 00 00 00 	mov    DWORD PTR [esi+0x8],0x8
       d81:	c7 46 04 00 00 00 00 	mov    DWORD PTR [esi+0x4],0x0
			d84: R_386_32	_D12TypeInfo_Aya6__initZ
       d88:	e8 fc ff ff ff       	call   d89
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x229>
			d89: R_386_PC32	_aaGetX
       d8d:	8b 4c 24 2c          	mov    ecx,DWORD PTR [esp+0x2c]
       d91:	89 08                	mov    DWORD PTR [eax],ecx
       d93:	c7 40 04 90 0f 00 00 	mov    DWORD PTR [eax+0x4],0xf90
			d96: R_386_32	.text
       d9a:	8b 44 24 78          	mov    eax,DWORD PTR [esp+0x78]
       d9e:	83 c0 4c             	add    eax,0x4c
       da1:	c7 44 24 4c 68 09 00 	mov    DWORD PTR [esp+0x4c],0x968
       da8:	00
			da5: R_386_32	.rodata
       da9:	c7 44 24 48 0c 00 00 	mov    DWORD PTR [esp+0x48],0xc
       db0:	00
       db1:	8d 54 24 48          	lea    edx,[esp+0x48]
       db5:	89 e6                	mov    esi,esp
       db7:	89 56 0c             	mov    DWORD PTR [esi+0xc],edx
       dba:	89 06                	mov    DWORD PTR [esi],eax
       dbc:	c7 46 08 08 00 00 00 	mov    DWORD PTR [esi+0x8],0x8
       dc3:	c7 46 04 00 00 00 00 	mov    DWORD PTR [esi+0x4],0x0
			dc6: R_386_32	_D12TypeInfo_Aya6__initZ
       dca:	e8 fc ff ff ff       	call   dcb
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x26b>
			dcb: R_386_PC32	_aaGetX
       dcf:	8b 4c 24 2c          	mov    ecx,DWORD PTR [esp+0x2c]
       dd3:	89 08                	mov    DWORD PTR [eax],ecx
       dd5:	c7 40 04 d0 0f 00 00 	mov    DWORD PTR [eax+0x4],0xfd0
			dd8: R_386_32	.text
       ddc:	8b 44 24 78          	mov    eax,DWORD PTR [esp+0x78]
       de0:	83 c0 4c             	add    eax,0x4c
       de3:	c7 44 24 44 75 09 00 	mov    DWORD PTR [esp+0x44],0x975
       dea:	00
			de7: R_386_32	.rodata
       deb:	c7 44 24 40 0b 00 00 	mov    DWORD PTR [esp+0x40],0xb
       df2:	00
       df3:	8d 54 24 40          	lea    edx,[esp+0x40]
       df7:	89 e6                	mov    esi,esp
       df9:	89 56 0c             	mov    DWORD PTR [esi+0xc],edx
       dfc:	89 06                	mov    DWORD PTR [esi],eax
       dfe:	c7 46 08 08 00 00 00 	mov    DWORD PTR [esi+0x8],0x8
       e05:	c7 46 04 00 00 00 00 	mov    DWORD PTR [esi+0x4],0x0
			e08: R_386_32	_D12TypeInfo_Aya6__initZ
       e0c:	e8 fc ff ff ff       	call   e0d
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x2ad>
			e0d: R_386_PC32	_aaGetX
       e11:	8b 4c 24 2c          	mov    ecx,DWORD PTR [esp+0x2c]
       e15:	89 08                	mov    DWORD PTR [eax],ecx
       e17:	c7 40 04 10 10 00 00 	mov    DWORD PTR [eax+0x4],0x1010
			e1a: R_386_32	.text
       e1e:	8b 44 24 78          	mov    eax,DWORD PTR [esp+0x78]
       e22:	8b 10                	mov    edx,DWORD PTR [eax]
       e24:	8b 52 34             	mov    edx,DWORD PTR [edx+0x34]
       e27:	ff d2                	call   edx
       e29:	8b 44 24 2c          	mov    eax,DWORD PTR [esp+0x2c]
       e2d:	8b 08                	mov    ecx,DWORD PTR [eax]
       e2f:	8b 11                	mov    edx,DWORD PTR [ecx]
       e31:	89 e6                	mov    esi,esp
       e33:	89 4e 04             	mov    DWORD PTR [esi+0x4],ecx
       e36:	c7 46 08 01 00 00 00 	mov    DWORD PTR [esi+0x8],0x1
       e3d:	c7 06 00 00 00 00    	mov    DWORD PTR [esi],0x0
			e3f: R_386_32	_D28TypeInfo_AS10xmlparser24Book6__initZ
       e43:	89 4c 24 1c          	mov    DWORD PTR [esp+0x1c],ecx
       e47:	89 54 24 18          	mov    DWORD PTR [esp+0x18],edx
       e4b:	e8 fc ff ff ff       	call   e4c
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv+0x2ec>
			e4c: R_386_PC32	_d_arrayappendcTX
       e50:	8b 4c 24 1c          	mov    ecx,DWORD PTR [esp+0x1c]
       e54:	8b 71 04             	mov    esi,DWORD PTR [ecx+0x4]
       e57:	8b 7c 24 18          	mov    edi,DWORD PTR [esp+0x18]
       e5b:	6b ff 38             	imul   edi,edi,0x38
       e5e:	8b 5c 24 28          	mov    ebx,DWORD PTR [esp+0x28]
       e62:	f2 0f 10 43 30       	movsd  xmm0,QWORD PTR [ebx+0x30]
       e67:	f2 0f 11 44 3e 30    	movsd  QWORD PTR
[esi+edi*1+0x30],xmm0
       e6d:	f2 0f 10 43 28       	movsd  xmm0,QWORD PTR [ebx+0x28]
       e72:	f2 0f 11 44 3e 28    	movsd  QWORD PTR
[esi+edi*1+0x28],xmm0
       e78:	f2 0f 10 43 20       	movsd  xmm0,QWORD PTR [ebx+0x20]
       e7d:	f2 0f 11 44 3e 20    	movsd  QWORD PTR
[esi+edi*1+0x20],xmm0
       e83:	f2 0f 10 43 18       	movsd  xmm0,QWORD PTR [ebx+0x18]
       e88:	f2 0f 11 44 3e 18    	movsd  QWORD PTR
[esi+edi*1+0x18],xmm0
       e8e:	f2 0f 10 43 10       	movsd  xmm0,QWORD PTR [ebx+0x10]
       e93:	f2 0f 11 44 3e 10    	movsd  QWORD PTR
[esi+edi*1+0x10],xmm0
       e99:	f2 0f 10 03          	movsd  xmm0,QWORD PTR [ebx]
       e9d:	f2 0f 10 4b 08       	movsd  xmm1,QWORD PTR [ebx+0x8]
       ea2:	f2 0f 11 4c 3e 08    	movsd  QWORD PTR
[esi+edi*1+0x8],xmm1
       ea8:	f2 0f 11 04 3e       	movsd  QWORD PTR [esi+edi*1],xmm0
       ead:	89 44 24 14          	mov    DWORD PTR [esp+0x14],eax
       eb1:	89 54 24 10          	mov    DWORD PTR [esp+0x10],edx
       eb5:	81 c4 80 00 00 00    	add    esp,0x80
       ebb:	5e                   	pop    esi
       ebc:	5f                   	pop    edi
       ebd:	5b                   	pop    ebx
       ebe:	c2 04 00             	ret    0x4
       ec1:	66 66 66 66 66 66 2e 	data32 data32 data32 data32
data32 nop WORD PTR cs:[eax+eax*1+0x0]
       ec8:	0f 1f 84 00 00 00 00
       ecf:	00
Jul 31 2013
next sibling parent "Kagamin" <spam here.lot> writes:
41ms is a big time, run parse only once and time xml.parse 
individually.
Jul 31 2013
prev sibling parent reply "Kagamin" <spam here.lot> writes:
Another possibility is to copy the xml.d, remove the module 
std.xml; declartion from it, change import std.xml; to import 
xml; then compile with dmd and ldc. This will account for 
differences in compiler flags used to compile phobos in dmd and 
ldc projects.
Jul 31 2013
parent "Chris" <wendlec tcd.ie> writes:
On Wednesday, 31 July 2013 at 18:44:14 UTC, Kagamin wrote:
 Another possibility is to copy the xml.d, remove the module 
 std.xml; declartion from it, change import std.xml; to import 
 xml; then compile with dmd and ldc. This will account for 
 differences in compiler flags used to compile phobos in dmd and 
 ldc projects.
Did just this. The result is that both versions perform worse. --- Repeat x1 --- dmd -release -noboundscheck -O -inline Average time: 80 msecs lcd2 Average time: 2 msecs --- Repeat x100 --- dmd -release -noboundscheck -O -inline Average time: 78.84 msecs ldc2 Average time: 0.08 msecs asm of dmd = 48,620 lines asm of lcd2 = 15,524 lines I can send the code to anyone who would like to test it.
Aug 01 2013
prev sibling parent reply "John Colvin" <john.loughran.colvin gmail.com> writes:
On Tuesday, 30 July 2013 at 09:10:24 UTC, Temtaime wrote:
 I have a little question..
 Why Digital Mars doesn't uses LLVM for backend and develops 
 their own performance killer ?
 Is someone contact with them to drop out their backend ?
It's not going to happen (any time soon at least). Luckily, we have ldc and gdc for faster executables. They share the same frontend as dmd (with some modifications) and the differences are closing all the time.
Jul 30 2013
parent reply "Temtaime" <temtaime gmail.com> writes:
Why not LLVM ? LLVM is open and well-optimized.
Writing own backend is a suicide and wasting of energy.
Jul 30 2013
parent "John Colvin" <john.loughran.colvin gmail.com> writes:
On Tuesday, 30 July 2013 at 19:08:59 UTC, Temtaime wrote:
 Why not LLVM ? LLVM is open and well-optimized.
 Writing own backend is a suicide and wasting of energy.
1) Because the current backend compiles code very fast, reducing development turnaround time (particularly useful for testing changes to druntime/phobos). It also has good native windows support. 2) Because the compiler itself is quick to compile. This allows a very quick response time even for quite wide-reaching changes. It also makes the auto-tester more useful. 3) Because Walter likes working with it. It's his backend and dmd is overall his project. 4) Because it's already happened/happening. We have dmd with the llvm backend. It's called ldc.
Jul 30 2013
prev sibling parent "David Nadlinger" <code klickverbot.at> writes:
On 24 Jul 2013, at 14:11, bearophile wrote:
 Chris:

 ldmd2 compiles the code much faster than ldc2 (~4 secs vs 14 secs). 
 The program runs just as fast (as far as I can see at the moment).
The ldmd2 binary is tiny, it's not a compiler, it's just a wrapper. If the compilation time is different then they are can calling the compiler with different compilation switches.
ldmd uses the "-singleobj" flag by default (for DMD compatibility), which causes the code emitted for the n different D modules to be linked together into 1 LLVM module on the LLVM IR level, instead of emitting n LLVM modules as n object files and linking them with the system linker. This could be a factor, but the large difference is strange. David
Jul 24 2013
prev sibling parent "Dicebot" <public dicebot.lv> writes:
On Wednesday, 24 July 2013 at 10:05:17 UTC, Chris wrote:
 ...
That is somewhat expected result. dmd is reference implementation, but I would never use is for release production code personally.
Jul 24 2013