July 30, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to John Colvin | Why not LLVM ? LLVM is open and well-optimized. Writing own backend is a suicide and wasting of energy. | |||
July 30, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Temtaime | 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.
| |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to John Colvin | 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.
| |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Chris | 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.
| |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to John Colvin | 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>: [...] | |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Chris | 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?
| |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to John Colvin | 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 | |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Chris | 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
| |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Chris | 41ms is a big time, run parse only once and time xml.parse individually. | |||
July 31, 2013 Re: Performance dmd vs ldc2 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Chris | 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. | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply