Geometrian

Assembly Code for Bug

Mar 17th, 2016
127
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; mark_description "Intel(R) C++ Intel(R) 64 Compiler for applications running on IA-32, Version 16.0 Build 20151021";
  2. ; mark_description "-c -Qm32 -ZI -nologo -W3 -Od -Qftz- -D __INTEL_COMPILER=1600 -D WIN32 -D _DEBUG -D _CONSOLE -D _UNICODE -D U";
  3. ; mark_description "NICODE -EHs -EHc -RTC1 -MT -GS -Zc:wchar_t -Zc:forScope -FoC:\\dev\\C++\\Tests\\union init bug\\build\\Win32";
  4. ; mark_description "\\Debug\\// -FdC:\\dev\\C++\\Tests\\union init bug\\build\\Win32\\Debug\\vc140.pdb -Gd -TP -S";
  5.     .686P
  6.     .387
  7.     OPTION DOTNAME
  8.     ASSUME  CS:FLAT,DS:FLAT,SS:FLAT
  9. _TEXT   SEGMENT  DWORD PUBLIC FLAT  'CODE'
  10. ;   COMDAT ??_HFoo@@QAEPAV0@PAV0@H@Z
  11. TXTST0:
  12. _2__routine_start_??_HFoo@@QAEPAV0@PAV0@H@Z_0:
  13. ; -- Begin  ??_HFoo@@QAEPAV0@PAV0@H@Z
  14. ;??_HFoo@@QAEPAV0@PAV0@H@Z  ENDS
  15. _TEXT   ENDS
  16. _TEXT   SEGMENT  DWORD PUBLIC FLAT  'CODE'
  17. ;   COMDAT ??_HFoo@@QAEPAV0@PAV0@H@Z
  18. ; mark_begin;
  19. IF @Version GE 800
  20.   .MMX
  21. ELSEIF @Version GE 612
  22.   .MMX
  23.   MMWORD TEXTEQU <QWORD>
  24. ENDIF
  25. IF @Version GE 800
  26.   .XMM
  27. ELSEIF @Version GE 614
  28.   .XMM
  29.   XMMWORD TEXTEQU <OWORD>
  30. ENDIF
  31.        ALIGN     2
  32.     PUBLIC ??_HFoo@@QAEPAV0@PAV0@H@Z
  33. ; --- Foo::??_HFoo@@QAEPAV0@H@Z(Foo *, int)
  34. ??_HFoo@@QAEPAV0@PAV0@H@Z   PROC NEAR
  35. ; parameter 1: ecx
  36. ; parameter 2: 8 + ebp
  37. .B1.1:                          ; Preds .B1.0
  38. L2::
  39.                                                            ;
  40.         push      ebp                                           ;
  41.         mov       ebp, esp                                      ;
  42.         sub       esp, 8                                        ;
  43.         push      eax                                           ;
  44.         push      edi                                           ;
  45.         push      ecx                                           ;
  46.         mov       edi, ebp                                      ;
  47.         sub       edi, 8                                        ;
  48.         mov       ecx, 2                                        ;
  49.         mov       eax, -858993460                               ;
  50.         rep   stosd                                             ;
  51.         pop       ecx                                           ;
  52.         pop       edi                                           ;
  53.         pop       eax                                           ;
  54.         mov       DWORD PTR [-8+ebp], ecx                       ;
  55.         mov       eax, DWORD PTR [-8+ebp]                       ;
  56.         mov       DWORD PTR [-4+ebp], eax                       ;
  57.                                 ; LOE ebx ebp esi edi esp
  58. .B1.2:                          ; Preds .B1.5 .B1.1
  59.         mov       eax, DWORD PTR [8+ebp]                        ;
  60.         test      eax, eax                                      ;
  61.         jne       .B1.4         ; Prob 50%                      ;
  62.                                 ; LOE ebx ebp esi edi esp
  63. .B1.3:                          ; Preds .B1.2
  64.         mov       eax, DWORD PTR [-4+ebp]                       ;
  65.         add       esp, 8                                        ;
  66.         cmp       ebp, esp                                      ;
  67.         call      __RTC_CheckEsp                                ;
  68.         leave                                                   ;
  69.         ret       4                                             ;
  70.                                 ; LOE
  71. .B1.4:                          ; Preds .B1.2
  72.         mov       eax, DWORD PTR [-8+ebp]                       ;
  73.         mov       ecx, eax                                      ;
  74.         call      ??0Foo@@QAE@XZ                                ;
  75.                                 ; LOE ebx ebp esi edi esp
  76. .B1.5:                          ; Preds .B1.4
  77.         mov       eax, 1                                        ;
  78.         add       eax, DWORD PTR [-8+ebp]                       ;
  79.         mov       DWORD PTR [-8+ebp], eax                       ;
  80.         mov       eax, -1                                       ;
  81.         add       eax, DWORD PTR [8+ebp]                        ;
  82.         mov       DWORD PTR [8+ebp], eax                        ;
  83.         jmp       .B1.2         ; Prob 100%                     ;
  84.         ALIGN     2
  85.                                 ; LOE ebx ebp esi edi esp
  86. ; mark_end;
  87. ??_HFoo@@QAEPAV0@PAV0@H@Z ENDP
  88. ;??_HFoo@@QAEPAV0@PAV0@H@Z  ENDS
  89. _TEXT   ENDS
  90. _DATA   SEGMENT  DWORD PUBLIC FLAT  'DATA'
  91. _DATA   ENDS
  92. ; -- End  ??_HFoo@@QAEPAV0@PAV0@H@Z
  93. _TEXT   SEGMENT  DWORD PUBLIC FLAT  'CODE'
  94. ;   COMDAT ??0Foo@@QAE@XZ
  95. TXTST1:
  96. _2__routine_start_??0Foo@@QAE@XZ_1:
  97. ; -- Begin  ??0Foo@@QAE@XZ
  98. ;??0Foo@@QAE@XZ ENDS
  99. _TEXT   ENDS
  100. _TEXT   SEGMENT  DWORD PUBLIC FLAT  'CODE'
  101. ;   COMDAT ??0Foo@@QAE@XZ
  102. ; mark_begin;
  103.        ALIGN     2
  104.     PUBLIC ??0Foo@@QAE@XZ
  105. ; --- Foo::Foo(Foo *)
  106. ??0Foo@@QAE@XZ  PROC NEAR
  107. ; parameter 1: ecx
  108. .B2.1:                          ; Preds .B2.0
  109. L7::
  110.                                                            ;8.41
  111. $LN0:
  112.         push      ebp                                           ;8.41
  113. $LN1:
  114.         mov       ebp, esp                                      ;8.41
  115. $LN2:
  116.         push      esi                                           ;8.41
  117. $LN3:
  118.         push      eax                                           ;8.41
  119. $LN4:
  120.         push      edi                                           ;8.41
  121. $LN5:
  122.         push      ecx                                           ;8.41
  123. $LN6:
  124.         mov       edi, ebp                                      ;8.41
  125. $LN7:
  126.         sub       edi, 4                                        ;8.41
  127. $LN8:
  128.         mov       ecx, 1                                        ;8.41
  129. $LN9:
  130.         mov       eax, -858993460                               ;8.41
  131. $LN10:
  132.         rep   stosd                                             ;8.41
  133. $LN11:
  134.         pop       ecx                                           ;8.41
  135. $LN12:
  136.         pop       edi                                           ;8.41
  137. $LN13:
  138.         pop       eax                                           ;8.41
  139. $LN14:
  140.         mov       DWORD PTR [-4+ebp], ecx                       ;8.16
  141. $LN15:
  142.         mov       eax, DWORD PTR [-4+ebp]                       ;8.16
  143. $LN16:
  144.         mov       BYTE PTR [eax], 255                           ;8.16
  145. $LN17:
  146.         mov       eax, DWORD PTR [-4+ebp]                       ;8.42
  147. $LN18:
  148.         add       esp, 4                                        ;8.42
  149. $LN19:
  150.         cmp       ebp, esp                                      ;8.42
  151. $LN20:
  152.         call      __RTC_CheckEsp                                ;8.42
  153. $LN21:
  154.         leave                                                   ;8.42
  155. $LN22:
  156.         ret                                                     ;8.42
  157.         ALIGN     2
  158. $LN23:
  159.                                 ; LOE
  160. $LN24:
  161. ; mark_end;
  162. ??0Foo@@QAE@XZ ENDP
  163. $LN??0Foo@@QAE@XZ$25:
  164. ;??0Foo@@QAE@XZ ENDS
  165. _TEXT   ENDS
  166. _DATA   SEGMENT  DWORD PUBLIC FLAT  'DATA'
  167. _DATA   ENDS
  168. ; -- End  ??0Foo@@QAE@XZ
  169. ;ident "/FAILIFMISMATCH:\"_MSC_VER=1900\""
  170. ;ident "/FAILIFMISMATCH:\"_ITERATOR_DEBUG_LEVEL=2\""
  171. ;ident "/FAILIFMISMATCH:\"RuntimeLibrary=MTd_StaticDebug\""
  172. ;ident "-defaultlib:libcpmtd"
  173. _TEXT   SEGMENT  DWORD PUBLIC FLAT  'CODE'
  174. TXTST2:
  175. _2__routine_start__main_2:
  176. ; -- Begin  _main
  177. _TEXT   ENDS
  178. _TEXT   SEGMENT  DWORD PUBLIC FLAT  'CODE'
  179. ; mark_begin;
  180.  
  181.     PUBLIC _main
  182. ; --- main(int, char **)
  183. _main   PROC NEAR
  184. ; parameter 1: 8 + ebp
  185. ; parameter 2: 12 + ebp
  186. .B3.1:                          ; Preds .B3.0
  187. L12::
  188.                                                           ;13.42
  189. $LN26:
  190.         push      ebp                                           ;13.42
  191. $LN27:
  192.         mov       ebp, esp                                      ;13.42
  193. $LN28:
  194.         push      -1                                            ;13.42
  195. $LN29:
  196.         push      OFFSET FLAT: __ehhandler._main                ;13.42
  197. $LN30:
  198.         push      DWORD PTR fs:[__except_list]                  ;13.42
  199. $LN31:
  200.         mov       DWORD PTR fs:[__except_list], esp             ;13.42
  201. $LN32:
  202.         sub       esp, 64                                       ;13.42
  203. $LN33:
  204.         push      eax                                           ;13.42
  205. $LN34:
  206.         push      edi                                           ;13.42
  207. $LN35:
  208.         push      ecx                                           ;13.42
  209. $LN36:
  210.         mov       edi, ebp                                      ;13.42
  211. $LN37:
  212.         sub       edi, 76                                       ;13.42
  213. $LN38:
  214.         mov       ecx, 16                                       ;13.42
  215. $LN39:
  216.         mov       eax, -858993460                               ;13.42
  217. $LN40:
  218.         rep   stosd                                             ;13.42
  219. $LN41:
  220.         pop       ecx                                           ;13.42
  221. $LN42:
  222.         pop       edi                                           ;13.42
  223. $LN43:
  224.         pop       eax                                           ;13.42
  225. $LN44:
  226.         mov       DWORD PTR [-20+ebp], edi                      ;13.42
  227. $LN45:
  228.         mov       DWORD PTR [-24+ebp], esi                      ;13.42
  229. $LN46:
  230.         mov       DWORD PTR [-28+ebp], ebx                      ;13.42
  231. $LN47:
  232.         mov       eax, DWORD PTR [___security_cookie]           ;13.42
  233. $LN48:
  234.         xor       eax, ebp                                      ;13.42
  235. $LN49:
  236.         mov       DWORD PTR [-76+ebp], eax                      ;13.42
  237. $LN50:
  238.         mov       DWORD PTR [-72+ebp], 0                        ;14.5
  239. $LN51:
  240.                                 ; LOE ebp esp
  241. .B3.2:                          ; Preds .B3.1
  242. $LN52:
  243.         mov       DWORD PTR [-4+ebp], 0                         ;14.10
  244. $LN53:
  245.                                 ; LOE ebp esp
  246. .B3.19:                         ; Preds .B3.2
  247. $LN54:
  248.         push      eax                                           ;14.10
  249. $LN55:
  250.         mov       DWORD PTR [esp], 8                            ;14.10
  251. $LN56:
  252. ;       operator new(unsigned int)
  253.         call      ??2@YAPAXI@Z                                  ;14.10
  254. $LN57:
  255.         jmp       .B3.8         ; Prob 100%                     ;14.10
  256. $LN58:
  257.                                 ; LOE eax ebp esp
  258. .B3.3:                          ; Preds .B3.8
  259. $LN59:
  260.         mov       eax, DWORD PTR [-68+ebp]                      ;14.10
  261. $LN60:
  262.         mov       DWORD PTR [-64+ebp], eax                      ;14.10
  263. $LN61:
  264.         mov       eax, DWORD PTR [-64+ebp]                      ;14.10
  265. $LN62:
  266.         mov       DWORD PTR [-60+ebp], eax                      ;14.10
  267. $LN63:
  268.         mov       eax, DWORD PTR [-60+ebp]                      ;14.10
  269. $LN64:
  270.         mov       DWORD PTR [-56+ebp], eax                      ;14.10
  271. $LN65:
  272.         mov       eax, DWORD PTR [-60+ebp]                      ;14.10
  273. $LN66:
  274.         test      eax, eax                                      ;14.10
  275. $LN67:
  276.         jne       .B3.5         ; Prob 50%                      ;14.10
  277. $LN68:
  278.                                 ; LOE ebp esp
  279. .B3.4:                          ; Preds .B3.3
  280. $LN69:
  281.         mov       DWORD PTR [-48+ebp], 0                        ;14.10
  282. $LN70:
  283.         jmp       .B3.9         ; Prob 100%                     ;14.10
  284. $LN71:
  285.                                 ; LOE ebp esp
  286. .B3.5:                          ; Preds .B3.3
  287. $LN72:
  288.         mov       DWORD PTR [-72+ebp], 1                        ;14.10
  289. $LN73:
  290.         mov       eax, DWORD PTR [-56+ebp]                      ;14.10
  291. $LN74:
  292.         mov       DWORD PTR [eax], 4                            ;14.10
  293. $LN75:
  294.         push      eax                                           ;14.10
  295. $LN76:
  296.         mov       eax, 4                                        ;14.10
  297. $LN77:
  298.         add       eax, DWORD PTR [-56+ebp]                      ;14.10
  299. $LN78:
  300.         mov       DWORD PTR [esp], 4                            ;14.10
  301. $LN79:
  302.         mov       ecx, eax                                      ;14.10
  303. $LN80:
  304. ;       Foo::??_HFoo@@QAEPAV0@H@Z(Foo *, int)
  305.         call      ??_HFoo@@QAEPAV0@PAV0@H@Z                     ;14.10
  306. $LN81:
  307.         jmp       .B3.7         ; Prob 100%                     ;14.10
  308. $LN82:
  309.                                 ; LOE eax ebp esp
  310. .B3.6:                          ; Preds .B3.7
  311. $LN83:
  312.         mov       eax, DWORD PTR [-52+ebp]                      ;14.10
  313. $LN84:
  314.         mov       DWORD PTR [-44+ebp], eax                      ;14.10
  315. $LN85:
  316.         mov       DWORD PTR [-72+ebp], 0                        ;14.10
  317. $LN86:
  318.         mov       eax, 4                                        ;14.10
  319. $LN87:
  320.         add       eax, DWORD PTR [-56+ebp]                      ;14.10
  321. $LN88:
  322.         mov       DWORD PTR [-48+ebp], eax                      ;14.10
  323. $LN89:
  324.         jmp       .B3.9         ; Prob 100%                     ;14.10
  325. $LN90:
  326.                                 ; LOE ebp esp
  327. .B3.7:                          ; Preds .B3.5
  328. $LN91:
  329.         mov       DWORD PTR [-52+ebp], eax                      ;14.10
  330. $LN92:
  331.         jmp       .B3.6         ; Prob 100%                     ;14.10
  332. $LN93:
  333.                                 ; LOE ebp esp
  334. .B3.8:                          ; Preds .B3.19
  335. $LN94:
  336.         mov       DWORD PTR [-68+ebp], eax                      ;14.10
  337. $LN95:
  338.         add       esp, 4                                        ;14.10
  339. $LN96:
  340.         jmp       .B3.3         ; Prob 100%                     ;14.10
  341. $LN97:
  342.                                 ; LOE ebp esp
  343. .B3.9:                          ; Preds .B3.6 .B3.4
  344. $LN98:
  345.         mov       DWORD PTR [-4+ebp], -1                        ;14.10
  346. $LN99:
  347.                                 ; LOE ebp esp
  348. .B3.20:                         ; Preds .B3.9
  349. $LN100:
  350.         mov       eax, DWORD PTR [-48+ebp]                      ;14.10
  351. $LN101:
  352.         mov       DWORD PTR [-40+ebp], eax                      ;14.10
  353. $LN102:
  354.         mov       eax, DWORD PTR [-40+ebp]                      ;15.5
  355. $LN103:
  356.         mov       DWORD PTR [-36+ebp], eax                      ;15.5
  357. $LN104:
  358.         mov       eax, DWORD PTR [-36+ebp]                      ;15.5
  359. $LN105:
  360.         mov       DWORD PTR [-32+ebp], eax                      ;15.5
  361. $LN106:
  362.         mov       eax, DWORD PTR [-36+ebp]                      ;15.5
  363. $LN107:
  364.         test      eax, eax                                      ;15.5
  365. $LN108:
  366.         je        .B3.11        ; Prob 50%                      ;15.5
  367. $LN109:
  368.                                 ; LOE ebp esp
  369. .B3.10:                         ; Preds .B3.20
  370. $LN110:
  371.         push      eax                                           ;15.5
  372. $LN111:
  373.         mov       eax, DWORD PTR [-32+ebp]                      ;15.5
  374. $LN112:
  375.         mov       DWORD PTR [esp], eax                          ;15.5
  376. $LN113:
  377. ;       operator delete(void *)
  378.         call      ??3@YAXPAX@Z                                  ;15.5
  379. $LN114:
  380.                                 ; LOE ebp esp
  381. .B3.21:                         ; Preds .B3.10
  382. $LN115:
  383.         add       esp, 4                                        ;15.5
  384. $LN116:
  385.                                 ; LOE ebp esp
  386. .B3.11:                         ; Preds .B3.21 .B3.20
  387. $LN117:
  388.         mov       eax, 0                                        ;17.5
  389. $LN118:
  390.         mov       ebx, DWORD PTR [-28+ebp]                      ;17.5
  391. $LN119:
  392.         mov       esi, DWORD PTR [-24+ebp]                      ;17.5
  393. $LN120:
  394.         mov       edi, DWORD PTR [-20+ebp]                      ;17.5
  395. $LN121:
  396.         mov       ecx, DWORD PTR [-12+ebp]                      ;17.5
  397. $LN122:
  398.         mov       DWORD PTR fs:[__except_list], ecx             ;17.5
  399. $LN123:
  400.         add       esp, 76                                       ;17.5
  401. $LN124:
  402.         cmp       ebp, esp                                      ;17.5
  403. $LN125:
  404.         call      __RTC_CheckEsp                                ;17.5
  405. $LN126:
  406.         leave                                                   ;17.5
  407. $LN127:
  408.         ret                                                     ;17.5
  409. $LN128:
  410.                                 ; LOE
  411. unwind._main.0.0::
  412. .B3.12:                         ; Preds .B3.5 .B3.19
  413. $LN129:
  414.                                 ; LOE ebp esp
  415. .B3.13:                         ; Preds .B3.12
  416. $LN130:
  417.         mov       eax, DWORD PTR [-72+ebp]                      ;14.5
  418. $LN131:
  419.         test      eax, eax                                      ;14.5
  420. $LN132:
  421.         je        .B3.15        ; Prob 50%                      ;14.5
  422. $LN133:
  423.                                 ; LOE ebp esp
  424. .B3.14:                         ; Preds .B3.13
  425. $LN134:
  426.         push      eax                                           ;14.5
  427. $LN135:
  428.         mov       eax, DWORD PTR [-56+ebp]                      ;14.5
  429. $LN136:
  430.         mov       DWORD PTR [esp], eax                          ;14.5
  431. $LN137:
  432. ;       operator delete(void *)
  433.         call      ??3@YAXPAX@Z                                  ;14.5
  434. $LN138:
  435.                                 ; LOE ebp esp
  436. .B3.22:                         ; Preds .B3.14
  437. $LN139:
  438.         add       esp, 4                                        ;14.5
  439. $LN140:
  440.                                 ; LOE ebp esp
  441. .B3.15:                         ; Preds .B3.22 .B3.13
  442. $LN141:
  443. .B3.16:                         ; Preds .B3.15
  444. $LN142:
  445.         ret                                                     ;14.5
  446. __ehhandler._main::                                             ;
  447. $LN143:
  448.         mov       edx, DWORD PTR [8+esp]                        ;14.5
  449. $LN144:
  450.         lea       eax, DWORD PTR [12+edx]                       ;14.5
  451. $LN145:
  452.         mov       ecx, DWORD PTR [-76+eax]                      ;14.5
  453. $LN146:
  454.         xor       ecx, eax                                      ;14.5
  455. $LN147:
  456.         call      @__security_check_cookie@4                    ;14.5
  457. $LN148:
  458.         mov       eax, OFFSET FLAT: FI._main.0                  ;14.5
  459. $LN149:
  460.         jmp       ___CxxFrameHandler3                           ;14.5
  461. $LN150:
  462.                                 ; LOE
  463. $LN151:
  464. ; mark_end;
  465. _main ENDP
  466. $LN_main$152:
  467. _TEXT   ENDS
  468. _RDATA  SEGMENT  DWORD PUBLIC FLAT READ  'DATA'
  469.     ALIGN 004H
  470. FI._main.DD  429065506
  471.     DD  1
  472.     DD  OFFSET FLAT: UME._main.0
  473.     DD  0
  474.     DD  0
  475.     DD  0
  476.     DD  0
  477.     DD  0
  478.     DD  0
  479.     DD  1
  480. UME._main.0 DD  -1
  481.     DD  OFFSET FLAT: unwind._main.0.0
  482. _RDATA  ENDS
  483. _DATA   SEGMENT  DWORD PUBLIC FLAT  'DATA'
  484. _DATA   ENDS
  485. ; -- End  _main
  486. _DATA   SEGMENT  DWORD PUBLIC FLAT  'DATA'
  487. EXTRN   ___security_cookie:BYTE
  488. _DATA   ENDS
  489. EXTRN   ??3@YAXPAX@Z:PROC
  490. EXTRN   ??2@YAPAXI@Z:PROC
  491. EXTRN   @__security_check_cookie@4:PROC
  492. EXTRN   __RTC_CheckEsp:PROC
  493. EXTRN   __except_list:BYTE
  494. EXTRN   ___CxxFrameHandler3:PROC
  495.     INCLUDELIB <libmmt>
  496.     INCLUDELIB <LIBCMT>
  497.     INCLUDELIB <libirc>
  498.     INCLUDELIB <svml_dispmt>
  499.     INCLUDELIB <OLDNAMES>
  500.     INCLUDELIB <libdecimal>
  501.     END
RAW Paste Data