home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Utilities / MView / gxu / loadmesh.cod < prev    next >
Encoding:
Text File  |  2004-09-30  |  110.1 KB  |  3,781 lines

  1. ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4035 
  2.  
  3.     TITLE    .\loadmesh.cpp
  4.     .386P
  5. include listing.inc
  6. if @Version gt 510
  7. .model FLAT
  8. else
  9. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  10. _TEXT    ENDS
  11. _DATA    SEGMENT DWORD USE32 PUBLIC 'DATA'
  12. _DATA    ENDS
  13. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  14. CONST    ENDS
  15. _BSS    SEGMENT DWORD USE32 PUBLIC 'BSS'
  16. _BSS    ENDS
  17. $$SYMBOLS    SEGMENT BYTE USE32 'DEBSYM'
  18. $$SYMBOLS    ENDS
  19. _TLS    SEGMENT DWORD USE32 PUBLIC 'TLS'
  20. _TLS    ENDS
  21. ;    COMDAT ??_C@_04EOLLOPJI@?5?6?$AN?7?$AA@
  22. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  23. CONST    ENDS
  24. ;    COMDAT ??_C@_06LEBKBMLE@Vertex?$AA@
  25. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  26. CONST    ENDS
  27. ;    COMDAT ??_C@_06OFCMNDMK@Corner?$AA@
  28. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  29. CONST    ENDS
  30. ;    COMDAT ??_C@_04DPOPNPPG@Face?$AA@
  31. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  32. CONST    ENDS
  33. ;    COMDAT ??_C@_01ODHLEDKK@?$CI?$AA@
  34. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  35. CONST    ENDS
  36. ;    COMDAT ??_C@_01PKGAHCOL@?$CJ?$AA@
  37. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  38. CONST    ENDS
  39. ;    COMDAT ??_C@_01HCONENDN@?$HL?$AA@
  40. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  41. CONST    ENDS
  42. ;    COMDAT ??_C@_01CELHOKLL@?$HN?$AA@
  43. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  44. CONST    ENDS
  45. ;    COMDAT ??_C@_03FNOJMHE@rgb?$AA@
  46. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  47. CONST    ENDS
  48. ;    COMDAT ??_C@_05PMMPHFOC@matid?$AA@
  49. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  50. CONST    ENDS
  51. ;    COMDAT ??_C@_06IKLLLDHL@normal?$AA@
  52. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  53. CONST    ENDS
  54. ;    COMDAT ??_C@_02CLOBFCCG@uv?$AA@
  55. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  56. CONST    ENDS
  57. ;    COMDAT ??_C@_01NEMOKFLO@?$DN?$AA@
  58. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  59. CONST    ENDS
  60. ;    COMDAT ??_C@_02KGHIDFGE@?$HN?6?$AA@
  61. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  62. CONST    ENDS
  63. ;    COMDAT ??0SLoadedFace@GXU@@QAE@KKK@Z
  64. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  65. _TEXT    ENDS
  66. ;    COMDAT ?Init@SLoadedFace@GXU@@QAEXKKK@Z
  67. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  68. _TEXT    ENDS
  69. ;    COMDAT ?InitEmpty@SLoadedFace@GXU@@QAEXXZ
  70. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  71. _TEXT    ENDS
  72. ;    COMDAT ??0CFileContext@GXU@@QAE@PAUIStream@@@Z
  73. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  74. _TEXT    ENDS
  75. ;    COMDAT ?Rewind@CFileContext@GXU@@QAEJXZ
  76. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  77. _TEXT    ENDS
  78. ;    COMDAT ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z
  79. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  80. _TEXT    ENDS
  81. ;    COMDAT ?GetCharHelper@CFileContext@GXU@@AAEJPADAA_N@Z
  82. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  83. _TEXT    ENDS
  84. ;    COMDAT ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z
  85. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  86. _TEXT    ENDS
  87. ;    COMDAT ??0CParseOptionalArgs@GXU@@QAE@XZ
  88. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  89. _TEXT    ENDS
  90. ;    COMDAT ?COptionalArgs@CParseOptionalArgs@GXU@@QBEIXZ
  91. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  92. _TEXT    ENDS
  93. ;    COMDAT ?EatWhiteSpace@GXU@@YAPADPAD@Z
  94. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  95. _TEXT    ENDS
  96. ;    COMDAT ?NotZero@GXU@@YA_NAAUD3DXVECTOR3@@@Z
  97. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  98. _TEXT    ENDS
  99. ;    COMDAT ?EatNonWhiteSpace@GXU@@YAPADPADD@Z
  100. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  101. _TEXT    ENDS
  102. ;    COMDAT ?EatUntilTerminator@GXU@@YAPADPADD@Z
  103. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  104. _TEXT    ENDS
  105. ;    COMDAT ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z
  106. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  107. _TEXT    ENDS
  108. ;    COMDAT ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z
  109. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  110. _TEXT    ENDS
  111. ;    COMDAT ?GetDWORD@CParseOptionalArgs@GXU@@QAEJIPAK@Z
  112. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  113. _TEXT    ENDS
  114. ;    COMDAT ?GetColorRGB@CParseOptionalArgs@GXU@@QAEJIPAUD3DXCOLOR@@@Z
  115. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  116. _TEXT    ENDS
  117. ;    COMDAT ?GetPoint2@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR2@@@Z
  118. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  119. _TEXT    ENDS
  120. ;    COMDAT ?GetVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z
  121. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  122. _TEXT    ENDS
  123. ;    COMDAT ?GetCoVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z
  124. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  125. _TEXT    ENDS
  126. ;    COMDAT ?LoadCounts@GXU@@YAJPAVCFileContext@1@PAI11@Z
  127. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  128. _TEXT    ENDS
  129. ;    COMDAT ?LoadVertex@GXU@@YAJPADPAUSLoadVertex@1@IAA_N@Z
  130. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  131. _TEXT    ENDS
  132. ;    COMDAT ?LoadFace@GXU@@YAJPADIPAUSLoadedFace@1@@Z
  133. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  134. _TEXT    ENDS
  135. ;    COMDAT ?LoadCorner@GXU@@YAJPADIIIPAUSCorner@1@AA_N@Z
  136. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  137. _TEXT    ENDS
  138. ;    COMDAT ?LoadMeshFromM@GXU@@YGJPAUIStream@@KKPAUIDirect3DDevice9@@PAPAUID3DXMesh@@PAPAUID3DXBuffer@@@Z
  139. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  140. _TEXT    ENDS
  141. ;    COMDAT ??0D3DXCOLOR@@QAE@MMMM@Z
  142. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  143. _TEXT    ENDS
  144. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  145. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  146. _TEXT    ENDS
  147. ;    COMDAT ??0D3DXVECTOR3@@QAE@XZ
  148. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  149. _TEXT    ENDS
  150. ;    COMDAT ??0D3DXCOLOR@@QAE@XZ
  151. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  152. _TEXT    ENDS
  153. FLAT    GROUP _DATA, CONST, _BSS
  154.     ASSUME    CS: FLAT, DS: FLAT, SS: FLAT
  155. endif
  156.  
  157. INCLUDELIB LIBC
  158. INCLUDELIB OLDNAMES
  159.  
  160. PUBLIC    ?x_szSeparators@GXU@@3PBDB            ; GXU::x_szSeparators
  161. PUBLIC    ??_C@_04EOLLOPJI@?5?6?$AN?7?$AA@        ; `string'
  162. PUBLIC    ?x_szVertex@GXU@@3PBDB                ; GXU::x_szVertex
  163. PUBLIC    ??_C@_06LEBKBMLE@Vertex?$AA@            ; `string'
  164. PUBLIC    ?x_szCorner@GXU@@3PBDB                ; GXU::x_szCorner
  165. PUBLIC    ??_C@_06OFCMNDMK@Corner?$AA@            ; `string'
  166. PUBLIC    ?x_szFace@GXU@@3PBDB                ; GXU::x_szFace
  167. PUBLIC    ??_C@_04DPOPNPPG@Face?$AA@            ; `string'
  168. PUBLIC    ?x_szOpenParen@GXU@@3PBDB            ; GXU::x_szOpenParen
  169. PUBLIC    ??_C@_01ODHLEDKK@?$CI?$AA@            ; `string'
  170. PUBLIC    ?x_szCloseParen@GXU@@3PBDB            ; GXU::x_szCloseParen
  171. PUBLIC    ??_C@_01PKGAHCOL@?$CJ?$AA@            ; `string'
  172. PUBLIC    ?x_szOptionalArgStart@GXU@@3PBDB        ; GXU::x_szOptionalArgStart
  173. PUBLIC    ??_C@_01HCONENDN@?$HL?$AA@            ; `string'
  174. PUBLIC    ?x_szOptionalArgEnd@GXU@@3PBDB            ; GXU::x_szOptionalArgEnd
  175. PUBLIC    ??_C@_01CELHOKLL@?$HN?$AA@            ; `string'
  176. PUBLIC    ?x_szRGB@GXU@@3PBDB                ; GXU::x_szRGB
  177. PUBLIC    ??_C@_03FNOJMHE@rgb?$AA@            ; `string'
  178. PUBLIC    ?x_szMatId@GXU@@3PBDB                ; GXU::x_szMatId
  179. PUBLIC    ??_C@_05PMMPHFOC@matid?$AA@            ; `string'
  180. PUBLIC    ?x_szNormal@GXU@@3PBDB                ; GXU::x_szNormal
  181. PUBLIC    ??_C@_06IKLLLDHL@normal?$AA@            ; `string'
  182. PUBLIC    ?x_szUv@GXU@@3PBDB                ; GXU::x_szUv
  183. PUBLIC    ??_C@_02CLOBFCCG@uv?$AA@            ; `string'
  184. PUBLIC    ?x_szEquals@GXU@@3PBDB                ; GXU::x_szEquals
  185. PUBLIC    ??_C@_01NEMOKFLO@?$DN?$AA@            ; `string'
  186. ;    COMDAT ??_C@_04EOLLOPJI@?5?6?$AN?7?$AA@
  187. CONST    SEGMENT
  188. ??_C@_04EOLLOPJI@?5?6?$AN?7?$AA@ DB ' ', 0aH, 0dH, 09H, 00H ; `string'
  189. CONST    ENDS
  190. _DATA    SEGMENT
  191. ?x_szSeparators@GXU@@3PBDB DD FLAT:??_C@_04EOLLOPJI@?5?6?$AN?7?$AA@ ; GXU::x_szSeparators
  192. _DATA    ENDS
  193. ;    COMDAT ??_C@_06LEBKBMLE@Vertex?$AA@
  194. CONST    SEGMENT
  195. ??_C@_06LEBKBMLE@Vertex?$AA@ DB 'Vertex', 00H        ; `string'
  196. CONST    ENDS
  197. _DATA    SEGMENT
  198. ?x_szVertex@GXU@@3PBDB DD FLAT:??_C@_06LEBKBMLE@Vertex?$AA@ ; GXU::x_szVertex
  199. _DATA    ENDS
  200. ;    COMDAT ??_C@_06OFCMNDMK@Corner?$AA@
  201. CONST    SEGMENT
  202. ??_C@_06OFCMNDMK@Corner?$AA@ DB 'Corner', 00H        ; `string'
  203. CONST    ENDS
  204. _DATA    SEGMENT
  205. ?x_szCorner@GXU@@3PBDB DD FLAT:??_C@_06OFCMNDMK@Corner?$AA@ ; GXU::x_szCorner
  206. _DATA    ENDS
  207. ;    COMDAT ??_C@_04DPOPNPPG@Face?$AA@
  208. CONST    SEGMENT
  209. ??_C@_04DPOPNPPG@Face?$AA@ DB 'Face', 00H        ; `string'
  210. CONST    ENDS
  211. _DATA    SEGMENT
  212. ?x_szFace@GXU@@3PBDB DD FLAT:??_C@_04DPOPNPPG@Face?$AA@    ; GXU::x_szFace
  213. _DATA    ENDS
  214. ;    COMDAT ??_C@_01ODHLEDKK@?$CI?$AA@
  215. CONST    SEGMENT
  216. ??_C@_01ODHLEDKK@?$CI?$AA@ DB '(', 00H            ; `string'
  217. CONST    ENDS
  218. _DATA    SEGMENT
  219. ?x_szOpenParen@GXU@@3PBDB DD FLAT:??_C@_01ODHLEDKK@?$CI?$AA@ ; GXU::x_szOpenParen
  220. _DATA    ENDS
  221. ;    COMDAT ??_C@_01PKGAHCOL@?$CJ?$AA@
  222. CONST    SEGMENT
  223. ??_C@_01PKGAHCOL@?$CJ?$AA@ DB ')', 00H            ; `string'
  224. CONST    ENDS
  225. _DATA    SEGMENT
  226. ?x_szCloseParen@GXU@@3PBDB DD FLAT:??_C@_01PKGAHCOL@?$CJ?$AA@ ; GXU::x_szCloseParen
  227. _DATA    ENDS
  228. ;    COMDAT ??_C@_01HCONENDN@?$HL?$AA@
  229. CONST    SEGMENT
  230. ??_C@_01HCONENDN@?$HL?$AA@ DB '{', 00H            ; `string'
  231. CONST    ENDS
  232. _DATA    SEGMENT
  233. ?x_szOptionalArgStart@GXU@@3PBDB DD FLAT:??_C@_01HCONENDN@?$HL?$AA@ ; GXU::x_szOptionalArgStart
  234. _DATA    ENDS
  235. ;    COMDAT ??_C@_01CELHOKLL@?$HN?$AA@
  236. CONST    SEGMENT
  237. ??_C@_01CELHOKLL@?$HN?$AA@ DB '}', 00H            ; `string'
  238. CONST    ENDS
  239. _DATA    SEGMENT
  240. ?x_szOptionalArgEnd@GXU@@3PBDB DD FLAT:??_C@_01CELHOKLL@?$HN?$AA@ ; GXU::x_szOptionalArgEnd
  241. _DATA    ENDS
  242. ;    COMDAT ??_C@_03FNOJMHE@rgb?$AA@
  243. CONST    SEGMENT
  244. ??_C@_03FNOJMHE@rgb?$AA@ DB 'rgb', 00H            ; `string'
  245. CONST    ENDS
  246. _DATA    SEGMENT
  247. ?x_szRGB@GXU@@3PBDB DD FLAT:??_C@_03FNOJMHE@rgb?$AA@    ; GXU::x_szRGB
  248. _DATA    ENDS
  249. ;    COMDAT ??_C@_05PMMPHFOC@matid?$AA@
  250. CONST    SEGMENT
  251. ??_C@_05PMMPHFOC@matid?$AA@ DB 'matid', 00H        ; `string'
  252. CONST    ENDS
  253. _DATA    SEGMENT
  254. ?x_szMatId@GXU@@3PBDB DD FLAT:??_C@_05PMMPHFOC@matid?$AA@ ; GXU::x_szMatId
  255. _DATA    ENDS
  256. ;    COMDAT ??_C@_06IKLLLDHL@normal?$AA@
  257. CONST    SEGMENT
  258. ??_C@_06IKLLLDHL@normal?$AA@ DB 'normal', 00H        ; `string'
  259. CONST    ENDS
  260. _DATA    SEGMENT
  261. ?x_szNormal@GXU@@3PBDB DD FLAT:??_C@_06IKLLLDHL@normal?$AA@ ; GXU::x_szNormal
  262. _DATA    ENDS
  263. ;    COMDAT ??_C@_02CLOBFCCG@uv?$AA@
  264. CONST    SEGMENT
  265. ??_C@_02CLOBFCCG@uv?$AA@ DB 'uv', 00H            ; `string'
  266. CONST    ENDS
  267. _DATA    SEGMENT
  268. ?x_szUv@GXU@@3PBDB DD FLAT:??_C@_02CLOBFCCG@uv?$AA@    ; GXU::x_szUv
  269. _DATA    ENDS
  270. ;    COMDAT ??_C@_01NEMOKFLO@?$DN?$AA@
  271. CONST    SEGMENT
  272. ??_C@_01NEMOKFLO@?$DN?$AA@ DB '=', 00H            ; `string'
  273. CONST    ENDS
  274. _DATA    SEGMENT
  275. ?x_szEquals@GXU@@3PBDB DD FLAT:??_C@_01NEMOKFLO@?$DN?$AA@ ; GXU::x_szEquals
  276. _DATA    ENDS
  277. PUBLIC    ?Init@SLoadedFace@GXU@@QAEXKKK@Z        ; GXU::SLoadedFace::Init
  278. ; Function compile flags: /Ogs
  279. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\loadutil.h
  280. ;    COMDAT ?Init@SLoadedFace@GXU@@QAEXKKK@Z
  281. _TEXT    SEGMENT
  282. _w0$ = 8                        ; size = 4
  283. _w1$ = 12                        ; size = 4
  284. _w2$ = 16                        ; size = 4
  285. ?Init@SLoadedFace@GXU@@QAEXKKK@Z PROC NEAR        ; GXU::SLoadedFace::Init, COMDAT
  286. ; _this$ = ecx
  287.  
  288. ; 63   :     }
  289.  
  290.   00000    8b ff         npad     2
  291.  
  292. ; 55   :     {
  293.  
  294.   00002    55         push     ebp
  295.   00003    8b ec         mov     ebp, esp
  296.  
  297. ; 56   :         m_bColorSpecified = false;
  298. ; 57   :         m_bMaterialSpecified = false;
  299. ; 58   :         m_bAttributeSpecified = false;
  300. ; 59   :         m_bSmoothingGroupSpecified = false;
  301. ; 60   :         m_wIndices[0] = w0;
  302.  
  303.   00005    8b 45 08     mov     eax, DWORD PTR _w0$[ebp]
  304.   00008    80 61 0c f0     and     BYTE PTR [ecx+12], -16    ; fffffff0H
  305.   0000c    89 01         mov     DWORD PTR [ecx], eax
  306.  
  307. ; 61   :         m_wIndices[1] = w1;
  308.  
  309.   0000e    8b 45 0c     mov     eax, DWORD PTR _w1$[ebp]
  310.   00011    89 41 04     mov     DWORD PTR [ecx+4], eax
  311.  
  312. ; 62   :         m_wIndices[2] = w2;
  313.  
  314.   00014    8b 45 10     mov     eax, DWORD PTR _w2$[ebp]
  315.   00017    89 41 08     mov     DWORD PTR [ecx+8], eax
  316.  
  317. ; 63   :     }
  318.  
  319.   0001a    5d         pop     ebp
  320.   0001b    c2 0c 00     ret     12            ; 0000000cH
  321. ?Init@SLoadedFace@GXU@@QAEXKKK@Z ENDP            ; GXU::SLoadedFace::Init
  322. _TEXT    ENDS
  323. PUBLIC    ??0CFileContext@GXU@@QAE@PAUIStream@@@Z        ; GXU::CFileContext::CFileContext
  324. ; Function compile flags: /Ogs
  325. ;    COMDAT ??0CFileContext@GXU@@QAE@PAUIStream@@@Z
  326. _TEXT    SEGMENT
  327. _pstream$ = 8                        ; size = 4
  328. ??0CFileContext@GXU@@QAE@PAUIStream@@@Z PROC NEAR    ; GXU::CFileContext::CFileContext, COMDAT
  329. ; _this$ = ecx
  330.  
  331. ; 126  :     CFileContext(IStream *pstream)
  332.  
  333.   00000    8b ff         npad     2
  334.   00002    55         push     ebp
  335.   00003    8b ec         mov     ebp, esp
  336.   00005    8b c1         mov     eax, ecx
  337.   00007    8b 4d 08     mov     ecx, DWORD PTR _pstream$[ebp]
  338.   0000a    89 08         mov     DWORD PTR [eax], ecx
  339.   0000c    33 c9         xor     ecx, ecx
  340.   0000e    89 88 04 01 00
  341.     00         mov     DWORD PTR [eax+260], ecx
  342.   00014    89 88 08 01 00
  343.     00         mov     DWORD PTR [eax+264], ecx
  344.   0001a    88 88 0c 01 00
  345.     00         mov     BYTE PTR [eax+268], cl
  346.   00020    5d         pop     ebp
  347.   00021    c2 04 00     ret     4
  348. ??0CFileContext@GXU@@QAE@PAUIStream@@@Z ENDP        ; GXU::CFileContext::CFileContext
  349. _TEXT    ENDS
  350. PUBLIC    ?Rewind@CFileContext@GXU@@QAEJXZ        ; GXU::CFileContext::Rewind
  351. ; Function compile flags: /Ogs
  352. ;    COMDAT ?Rewind@CFileContext@GXU@@QAEJXZ
  353. _TEXT    SEGMENT
  354. ?Rewind@CFileContext@GXU@@QAEJXZ PROC NEAR        ; GXU::CFileContext::Rewind, COMDAT
  355. ; _this$ = ecx
  356.  
  357. ; 138  :     }
  358.  
  359.   00000    8b ff         npad     2
  360.   00002    56         push     esi
  361.  
  362. ; 133  :         m_bEndOfFile = false;
  363.  
  364.   00003    33 c0         xor     eax, eax
  365.  
  366. ; 134  : 
  367. ; 135  :         LARGE_INTEGER li;
  368. ; 136  :         li.QuadPart = 0;
  369. ; 137  :         return m_pstream->Seek(li, STREAM_SEEK_SET, NULL);
  370.  
  371.   00005    50         push     eax
  372.   00006    50         push     eax
  373.   00007    33 d2         xor     edx, edx
  374.   00009    52         push     edx
  375.   0000a    88 81 0c 01 00
  376.     00         mov     BYTE PTR [ecx+268], al
  377.   00010    8b 09         mov     ecx, DWORD PTR [ecx]
  378.   00012    8b 31         mov     esi, DWORD PTR [ecx]
  379.   00014    50         push     eax
  380.   00015    51         push     ecx
  381.   00016    ff 56 14     call     DWORD PTR [esi+20]
  382.   00019    5e         pop     esi
  383.  
  384. ; 138  :     }
  385.  
  386.   0001a    c3         ret     0
  387. ?Rewind@CFileContext@GXU@@QAEJXZ ENDP            ; GXU::CFileContext::Rewind
  388. _TEXT    ENDS
  389. PUBLIC    ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z    ; GXU::CFileContext::GetChar
  390. PUBLIC    ?GetCharHelper@CFileContext@GXU@@AAEJPADAA_N@Z    ; GXU::CFileContext::GetCharHelper
  391. ; Function compile flags: /Ogs
  392. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\loadmesh.cpp
  393. ;    COMDAT ?GetCharHelper@CFileContext@GXU@@AAEJPADAA_N@Z
  394. _TEXT    SEGMENT
  395. _cchRead$ = -4                        ; size = 4
  396. _pchBuffer$ = 8                        ; size = 4
  397. _bEOF$ = 12                        ; size = 4
  398. ?GetCharHelper@CFileContext@GXU@@AAEJPADAA_N@Z PROC NEAR ; GXU::CFileContext::GetCharHelper, COMDAT
  399. ; _this$ = ecx
  400.  
  401. ; 176  :     return hr;
  402. ; 177  : }
  403.  
  404.   00000    8b ff         npad     2
  405.  
  406. ; 143  : {
  407.  
  408.   00002    55         push     ebp
  409.   00003    8b ec         mov     ebp, esp
  410.   00005    51         push     ecx
  411.   00006    56         push     esi
  412.   00007    8b f1         mov     esi, ecx
  413.  
  414. ; 144  :     HRESULT hr = S_OK;
  415.  
  416.   00009    33 c0         xor     eax, eax
  417.  
  418. ; 145  :     unsigned long cchRead;
  419. ; 146  : 
  420. ; 147  :     GXASSERT(m_ichBuffer == m_cchBuffer);
  421. ; 148  : 
  422. ; 149  :     if (m_bEndOfFile)
  423.  
  424.   0000b    38 86 0c 01 00
  425.     00         cmp     BYTE PTR [esi+268], al
  426.   00011    74 08         je     SHORT $L56417
  427.  
  428. ; 150  :     {
  429. ; 151  :         bEOF = true;
  430.  
  431.   00013    8b 4d 0c     mov     ecx, DWORD PTR _bEOF$[ebp]
  432.   00016    c6 01 01     mov     BYTE PTR [ecx], 1
  433.  
  434. ; 152  :         goto e_Exit;
  435.  
  436.   00019    eb 54         jmp     SHORT $e_Exit$56418
  437. $L56417:
  438.  
  439. ; 153  :     }
  440. ; 154  : 
  441. ; 155  :     hr = m_pstream->Read(m_szBuffer, x_cbBufferSize, &cchRead);
  442.  
  443.   0001b    8b 06         mov     eax, DWORD PTR [esi]
  444.   0001d    8b 08         mov     ecx, DWORD PTR [eax]
  445.   0001f    8d 55 fc     lea     edx, DWORD PTR _cchRead$[ebp]
  446.   00022    52         push     edx
  447.   00023    68 00 01 00 00     push     256            ; 00000100H
  448.   00028    8d 56 04     lea     edx, DWORD PTR [esi+4]
  449.   0002b    52         push     edx
  450.   0002c    50         push     eax
  451.   0002d    ff 51 0c     call     DWORD PTR [ecx+12]
  452.  
  453. ; 156  :     if (FAILED(hr) || (cchRead == 0))
  454.  
  455.   00030    85 c0         test     eax, eax
  456.   00032    8b 4d fc     mov     ecx, DWORD PTR _cchRead$[ebp]
  457.   00035    7c 20         jl     SHORT $L56422
  458.   00037    85 c9         test     ecx, ecx
  459.   00039    74 1c         je     SHORT $L56422
  460.  
  461. ; 163  :         }
  462. ; 164  : 
  463. ; 165  :         goto e_Exit;
  464. ; 166  :     }
  465. ; 167  : 
  466. ; 168  :     m_cchBuffer = cchRead;
  467. ; 169  :     m_ichBuffer = 0;
  468. ; 170  : 
  469. ; 171  :     hr = GetChar(pchBuffer, bEOF);
  470.  
  471.   0003b    ff 75 0c     push     DWORD PTR _bEOF$[ebp]
  472.   0003e    83 a6 04 01 00
  473.     00 00         and     DWORD PTR [esi+260], 0
  474.   00045    ff 75 08     push     DWORD PTR _pchBuffer$[ebp]
  475.   00048    89 8e 08 01 00
  476.     00         mov     DWORD PTR [esi+264], ecx
  477.   0004e    8b ce         mov     ecx, esi
  478.   00050    e8 00 00 00 00     call     ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z ; GXU::CFileContext::GetChar
  479.  
  480. ; 172  :     if (FAILED(hr))
  481. ; 173  :         goto e_Exit;
  482. ; 174  : 
  483. ; 175  : e_Exit:
  484.  
  485.   00055    eb 18         jmp     SHORT $e_Exit$56418
  486. $L56422:
  487.  
  488. ; 157  :     {
  489. ; 158  :         if ((hr == S_FALSE) || (cchRead == 0))
  490.  
  491.   00057    83 f8 01     cmp     eax, 1
  492.   0005a    74 04         je     SHORT $L56425
  493.   0005c    85 c9         test     ecx, ecx
  494.   0005e    75 0f         jne     SHORT $e_Exit$56418
  495. $L56425:
  496.  
  497. ; 159  :         {
  498. ; 160  :             m_bEndOfFile = true;
  499. ; 161  :             bEOF = true;
  500.  
  501.   00060    8b 45 0c     mov     eax, DWORD PTR _bEOF$[ebp]
  502.   00063    c6 86 0c 01 00
  503.     00 01         mov     BYTE PTR [esi+268], 1
  504.   0006a    c6 00 01     mov     BYTE PTR [eax], 1
  505.  
  506. ; 162  :             hr = S_OK;
  507.  
  508.   0006d    33 c0         xor     eax, eax
  509. $e_Exit$56418:
  510.   0006f    5e         pop     esi
  511.  
  512. ; 176  :     return hr;
  513. ; 177  : }
  514.  
  515.   00070    c9         leave
  516.   00071    c2 08 00     ret     8
  517. ?GetCharHelper@CFileContext@GXU@@AAEJPADAA_N@Z ENDP    ; GXU::CFileContext::GetCharHelper
  518. _TEXT    ENDS
  519. PUBLIC    ??0CParseOptionalArgs@GXU@@QAE@XZ        ; GXU::CParseOptionalArgs::CParseOptionalArgs
  520. ; Function compile flags: /Ogs
  521. ;    COMDAT ??0CParseOptionalArgs@GXU@@QAE@XZ
  522. _TEXT    SEGMENT
  523. ??0CParseOptionalArgs@GXU@@QAE@XZ PROC NEAR        ; GXU::CParseOptionalArgs::CParseOptionalArgs, COMDAT
  524. ; _this$ = ecx
  525.  
  526. ; 247  :     CParseOptionalArgs()
  527.  
  528.   00000    8b c1         mov     eax, ecx
  529.   00002    83 60 40 00     and     DWORD PTR [eax+64], 0
  530.   00006    c3         ret     0
  531. ??0CParseOptionalArgs@GXU@@QAE@XZ ENDP            ; GXU::CParseOptionalArgs::CParseOptionalArgs
  532. _TEXT    ENDS
  533. PUBLIC    ?COptionalArgs@CParseOptionalArgs@GXU@@QBEIXZ    ; GXU::CParseOptionalArgs::COptionalArgs
  534. ; Function compile flags: /Ogs
  535. ;    COMDAT ?COptionalArgs@CParseOptionalArgs@GXU@@QBEIXZ
  536. _TEXT    SEGMENT
  537. ?COptionalArgs@CParseOptionalArgs@GXU@@QBEIXZ PROC NEAR    ; GXU::CParseOptionalArgs::COptionalArgs, COMDAT
  538. ; _this$ = ecx
  539.  
  540. ; 250  :     UINT COptionalArgs() const { return m_cOptionalArgs; }
  541.  
  542.   00000    8b 41 40     mov     eax, DWORD PTR [ecx+64]
  543.   00003    c3         ret     0
  544. ?COptionalArgs@CParseOptionalArgs@GXU@@QBEIXZ ENDP    ; GXU::CParseOptionalArgs::COptionalArgs
  545. _TEXT    ENDS
  546. PUBLIC    ?EatWhiteSpace@GXU@@YAPADPAD@Z            ; GXU::EatWhiteSpace
  547. ; Function compile flags: /Ogs
  548. ;    COMDAT ?EatWhiteSpace@GXU@@YAPADPAD@Z
  549. _TEXT    SEGMENT
  550. _szBuf$ = 8                        ; size = 4
  551. ?EatWhiteSpace@GXU@@YAPADPAD@Z PROC NEAR        ; GXU::EatWhiteSpace, COMDAT
  552.  
  553. ; 270  : 
  554. ; 271  :     return szBuf;
  555. ; 272  : }
  556.  
  557.   00000    8b ff         npad     2
  558.  
  559. ; 265  : {
  560.  
  561.   00002    55         push     ebp
  562.   00003    8b ec         mov     ebp, esp
  563.   00005    8b 45 08     mov     eax, DWORD PTR _szBuf$[ebp]
  564. $L56505:
  565.  
  566. ; 266  :     while ((*szBuf == ' ') || (*szBuf == '\t'))
  567.  
  568.   00008    8a 08         mov     cl, BYTE PTR [eax]
  569.   0000a    80 f9 20     cmp     cl, 32            ; 00000020H
  570.   0000d    74 05         je     SHORT $L56507
  571.   0000f    80 f9 09     cmp     cl, 9
  572.   00012    75 03         jne     SHORT $L56506
  573. $L56507:
  574.  
  575. ; 267  :     {
  576. ; 268  :         szBuf++;
  577.  
  578.   00014    40         inc     eax
  579.  
  580. ; 269  :     }
  581.  
  582.   00015    eb f1         jmp     SHORT $L56505
  583. $L56506:
  584.  
  585. ; 270  : 
  586. ; 271  :     return szBuf;
  587. ; 272  : }
  588.  
  589.   00017    5d         pop     ebp
  590.   00018    c3         ret     0
  591. ?EatWhiteSpace@GXU@@YAPADPAD@Z ENDP            ; GXU::EatWhiteSpace
  592. _TEXT    ENDS
  593. PUBLIC    ?NotZero@GXU@@YA_NAAUD3DXVECTOR3@@@Z        ; GXU::NotZero
  594. PUBLIC    __real@00000000
  595. EXTRN    __fltused:NEAR
  596. ;    COMDAT __real@00000000
  597. CONST    SEGMENT
  598. __real@00000000 DD 000000000r            ; 0
  599. ; Function compile flags: /Ogs
  600. CONST    ENDS
  601. ;    COMDAT ?NotZero@GXU@@YA_NAAUD3DXVECTOR3@@@Z
  602. _TEXT    SEGMENT
  603. _vNormal$ = 8                        ; size = 4
  604. ?NotZero@GXU@@YA_NAAUD3DXVECTOR3@@@Z PROC NEAR        ; GXU::NotZero, COMDAT
  605.  
  606. ; 277  : }
  607.  
  608.   00000    8b ff         npad     2
  609.  
  610. ; 275  : {
  611.  
  612.   00002    55         push     ebp
  613.   00003    8b ec         mov     ebp, esp
  614.  
  615. ; 276  :     return (vNormal.x != 0.0f) || (vNormal.y != 0.0f) || (vNormal.z != 0.0f);
  616.  
  617.   00005    d9 05 00 00 00
  618.     00         fld     DWORD PTR __real@00000000
  619.   0000b    8b 4d 08     mov     ecx, DWORD PTR _vNormal$[ebp]
  620.   0000e    d9 01         fld     DWORD PTR [ecx]
  621.   00010    da e9         fucompp
  622.   00012    df e0         fnstsw     ax
  623.   00014    f6 c4 44     test     ah, 68            ; 00000044H
  624.   00017    7a 28         jp     SHORT $L56956
  625.   00019    d9 05 00 00 00
  626.     00         fld     DWORD PTR __real@00000000
  627.   0001f    d9 41 04     fld     DWORD PTR [ecx+4]
  628.   00022    da e9         fucompp
  629.   00024    df e0         fnstsw     ax
  630.   00026    f6 c4 44     test     ah, 68            ; 00000044H
  631.   00029    7a 16         jp     SHORT $L56956
  632.   0002b    d9 05 00 00 00
  633.     00         fld     DWORD PTR __real@00000000
  634.   00031    d9 41 08     fld     DWORD PTR [ecx+8]
  635.   00034    da e9         fucompp
  636.   00036    df e0         fnstsw     ax
  637.   00038    f6 c4 44     test     ah, 68            ; 00000044H
  638.   0003b    7a 04         jp     SHORT $L56956
  639.   0003d    33 c0         xor     eax, eax
  640.  
  641. ; 277  : }
  642.  
  643.   0003f    5d         pop     ebp
  644.   00040    c3         ret     0
  645. $L56956:
  646.  
  647. ; 276  :     return (vNormal.x != 0.0f) || (vNormal.y != 0.0f) || (vNormal.z != 0.0f);
  648.  
  649.   00041    33 c0         xor     eax, eax
  650.   00043    40         inc     eax
  651.  
  652. ; 277  : }
  653.  
  654.   00044    5d         pop     ebp
  655.   00045    c3         ret     0
  656. ?NotZero@GXU@@YA_NAAUD3DXVECTOR3@@@Z ENDP        ; GXU::NotZero
  657. _TEXT    ENDS
  658. PUBLIC    ?EatNonWhiteSpace@GXU@@YAPADPADD@Z        ; GXU::EatNonWhiteSpace
  659. ; Function compile flags: /Ogs
  660. ;    COMDAT ?EatNonWhiteSpace@GXU@@YAPADPADD@Z
  661. _TEXT    SEGMENT
  662. _szBuf$ = 8                        ; size = 4
  663. _chTerminator$ = 12                    ; size = 1
  664. ?EatNonWhiteSpace@GXU@@YAPADPADD@Z PROC NEAR        ; GXU::EatNonWhiteSpace, COMDAT
  665.  
  666. ; 285  :     }
  667. ; 286  : 
  668. ; 287  :     return szBuf;
  669. ; 288  : }
  670.  
  671.   00000    8b ff         npad     2
  672.  
  673. ; 281  : {
  674.  
  675.   00002    55         push     ebp
  676.   00003    8b ec         mov     ebp, esp
  677.  
  678. ; 282  :     while ((*szBuf != '\0') && (*szBuf != ' ') && (*szBuf != '\t') && (*szBuf != chTerminator))
  679.  
  680.   00005    8b 45 08     mov     eax, DWORD PTR _szBuf$[ebp]
  681.   00008    eb 10         jmp     SHORT $L56965
  682. $L56516:
  683.   0000a    80 f9 20     cmp     cl, 32            ; 00000020H
  684.   0000d    74 11         je     SHORT $L56517
  685.   0000f    80 f9 09     cmp     cl, 9
  686.   00012    74 0c         je     SHORT $L56517
  687.   00014    3a 4d 0c     cmp     cl, BYTE PTR _chTerminator$[ebp]
  688.   00017    74 07         je     SHORT $L56517
  689.  
  690. ; 283  :     {
  691. ; 284  :         szBuf++;
  692.  
  693.   00019    40         inc     eax
  694. $L56965:
  695.  
  696. ; 282  :     while ((*szBuf != '\0') && (*szBuf != ' ') && (*szBuf != '\t') && (*szBuf != chTerminator))
  697.  
  698.   0001a    8a 08         mov     cl, BYTE PTR [eax]
  699.   0001c    84 c9         test     cl, cl
  700.   0001e    75 ea         jne     SHORT $L56516
  701. $L56517:
  702.  
  703. ; 285  :     }
  704. ; 286  : 
  705. ; 287  :     return szBuf;
  706. ; 288  : }
  707.  
  708.   00020    5d         pop     ebp
  709.   00021    c3         ret     0
  710. ?EatNonWhiteSpace@GXU@@YAPADPADD@Z ENDP            ; GXU::EatNonWhiteSpace
  711. _TEXT    ENDS
  712. PUBLIC    ?EatUntilTerminator@GXU@@YAPADPADD@Z        ; GXU::EatUntilTerminator
  713. ; Function compile flags: /Ogs
  714. ;    COMDAT ?EatUntilTerminator@GXU@@YAPADPADD@Z
  715. _TEXT    SEGMENT
  716. _szBuf$ = 8                        ; size = 4
  717. _chTerminator$ = 12                    ; size = 1
  718. ?EatUntilTerminator@GXU@@YAPADPADD@Z PROC NEAR        ; GXU::EatUntilTerminator, COMDAT
  719.  
  720. ; 296  :     }
  721. ; 297  : 
  722. ; 298  :     return szBuf;
  723. ; 299  : }
  724.  
  725.   00000    8b ff         npad     2
  726.  
  727. ; 292  : {
  728.  
  729.   00002    55         push     ebp
  730.   00003    8b ec         mov     ebp, esp
  731.  
  732. ; 293  :     while ((*szBuf != '\0') && (*szBuf != chTerminator))
  733.  
  734.   00005    8b 45 08     mov     eax, DWORD PTR _szBuf$[ebp]
  735.   00008    eb 06         jmp     SHORT $L56970
  736. $L56523:
  737.   0000a    3a 4d 0c     cmp     cl, BYTE PTR _chTerminator$[ebp]
  738.   0000d    74 07         je     SHORT $L56524
  739.  
  740. ; 294  :     {
  741. ; 295  :         szBuf++;
  742.  
  743.   0000f    40         inc     eax
  744. $L56970:
  745.  
  746. ; 293  :     while ((*szBuf != '\0') && (*szBuf != chTerminator))
  747.  
  748.   00010    8a 08         mov     cl, BYTE PTR [eax]
  749.   00012    84 c9         test     cl, cl
  750.   00014    75 f4         jne     SHORT $L56523
  751. $L56524:
  752.  
  753. ; 296  :     }
  754. ; 297  : 
  755. ; 298  :     return szBuf;
  756. ; 299  : }
  757.  
  758.   00016    5d         pop     ebp
  759.   00017    c3         ret     0
  760. ?EatUntilTerminator@GXU@@YAPADPADD@Z ENDP        ; GXU::EatUntilTerminator
  761. _TEXT    ENDS
  762. PUBLIC    ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z    ; GXU::CParseOptionalArgs::Parse
  763. ; Function compile flags: /Ogs
  764. ;    COMDAT ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z
  765. _TEXT    SEGMENT
  766. _hr$ = -4                        ; size = 4
  767. _szOptionalArgs$ = 8                    ; size = 4
  768. ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z PROC NEAR    ; GXU::CParseOptionalArgs::Parse, COMDAT
  769. ; _this$ = ecx
  770.  
  771. ; 386  : }
  772.  
  773.   00000    8b ff         npad     2
  774.  
  775. ; 303  : {
  776.  
  777.   00002    55         push     ebp
  778.   00003    8b ec         mov     ebp, esp
  779.   00005    51         push     ecx
  780.   00006    53         push     ebx
  781.   00007    56         push     esi
  782.  
  783. ; 304  :     HRESULT hr = S_OK;
  784. ; 305  :     char *szCur = szOptionalArgs;
  785. ; 306  :     UINT iOptionalArg;
  786. ; 307  : 
  787. ; 308  :     // find the start of the string
  788. ; 309  :     szCur = EatWhiteSpace(szCur);
  789.  
  790.   00008    ff 75 08     push     DWORD PTR _szOptionalArgs$[ebp]
  791.   0000b    33 db         xor     ebx, ebx
  792.   0000d    8b f1         mov     esi, ecx
  793.   0000f    89 5d fc     mov     DWORD PTR _hr$[ebp], ebx
  794.   00012    e8 00 00 00 00     call     ?EatWhiteSpace@GXU@@YAPADPAD@Z ; GXU::EatWhiteSpace
  795.  
  796. ; 310  : 
  797. ; 311  :     if (*szCur != '{')
  798.  
  799.   00017    80 38 7b     cmp     BYTE PTR [eax], 123    ; 0000007bH
  800.   0001a    59         pop     ecx
  801.   0001b    74 0c         je     SHORT $L56533
  802.  
  803. ; 312  :     {
  804. ; 313  :         hr = E_FAIL;
  805.  
  806.   0001d    c7 45 fc 05 40
  807.     00 80         mov     DWORD PTR _hr$[ebp], -2147467259 ; 80004005H
  808.  
  809. ; 314  :         goto e_Exit;
  810.  
  811.   00024    e9 90 00 00 00     jmp     $e_Exit$56535
  812. $L56533:
  813.  
  814. ; 315  :     }
  815. ; 316  :     szCur++;
  816.  
  817.   00029    40         inc     eax
  818.  
  819. ; 317  : 
  820. ; 318  :     while (szCur != '\0')
  821.  
  822.   0002a    0f 84 89 00 00
  823.     00         je     $e_Exit$56535
  824.   00030    57         push     edi
  825. $L56538:
  826.  
  827. ; 319  :     {
  828. ; 320  :         szCur = EatWhiteSpace(szCur);
  829.  
  830.   00031    50         push     eax
  831.   00032    e8 00 00 00 00     call     ?EatWhiteSpace@GXU@@YAPADPAD@Z ; GXU::EatWhiteSpace
  832.  
  833. ; 321  : 
  834. ; 322  :         // if at the end of the string, then exit
  835. ; 323  :         if (*szCur == '\0')
  836.  
  837.   00037    38 18         cmp     BYTE PTR [eax], bl
  838.   00039    59         pop     ecx
  839.   0003a    74 7c         je     SHORT $L56977
  840.  
  841. ; 324  :             break;
  842. ; 325  : 
  843. ; 326  :         // found the first argument
  844. ; 327  :         iOptionalArg = m_cOptionalArgs;
  845.  
  846.   0003c    8b 56 40     mov     edx, DWORD PTR [esi+64]
  847.  
  848. ; 328  :         m_cOptionalArgs += 1;
  849.  
  850.   0003f    8d 4a 01     lea     ecx, DWORD PTR [edx+1]
  851.  
  852. ; 329  : 
  853. ; 330  :         m_rgszArgs[iOptionalArg] = szCur;
  854. ; 331  : 
  855. ; 332  : 
  856. ; 333  :         // now figure out how long it is
  857. ; 334  :         szCur = EatNonWhiteSpace(szCur, '=');
  858.  
  859.   00042    6a 3d         push     61            ; 0000003dH
  860.   00044    89 4e 40     mov     DWORD PTR [esi+64], ecx
  861.   00047    50         push     eax
  862.   00048    89 04 96     mov     DWORD PTR [esi+edx*4], eax
  863.   0004b    e8 00 00 00 00     call     ?EatNonWhiteSpace@GXU@@YAPADPADD@Z ; GXU::EatNonWhiteSpace
  864.  
  865. ; 335  :         m_rgcchArgs[iOptionalArg] = (DWORD)(szCur - m_rgszArgs[iOptionalArg]);
  866.  
  867.   00050    8b c8         mov     ecx, eax
  868.   00052    2b 0c 96     sub     ecx, DWORD PTR [esi+edx*4]
  869.  
  870. ; 336  : 
  871. ; 337  :         szCur = EatWhiteSpace(szCur);
  872.  
  873.   00055    50         push     eax
  874.   00056    89 4c 96 10     mov     DWORD PTR [esi+edx*4+16], ecx
  875.   0005a    e8 00 00 00 00     call     ?EatWhiteSpace@GXU@@YAPADPAD@Z ; GXU::EatWhiteSpace
  876.   0005f    83 c4 0c     add     esp, 12            ; 0000000cH
  877.  
  878. ; 338  : 
  879. ; 339  :         // if there is a value, find it, else go to next arg
  880. ; 340  :         if (*szCur == '=')
  881.  
  882.   00062    80 38 3d     cmp     BYTE PTR [eax], 61    ; 0000003dH
  883.   00065    75 3c         jne     SHORT $L56542
  884.  
  885. ; 341  :         {
  886. ; 342  :             szCur++; // skip the '='
  887.  
  888.   00067    40         inc     eax
  889.  
  890. ; 343  : 
  891. ; 344  :             szCur = EatWhiteSpace(szCur);
  892.  
  893.   00068    50         push     eax
  894.   00069    e8 00 00 00 00     call     ?EatWhiteSpace@GXU@@YAPADPAD@Z ; GXU::EatWhiteSpace
  895.  
  896. ; 345  : 
  897. ; 346  :             // had better be an argument if there was an '='
  898. ; 347  :             if (*szCur == '\0')
  899.  
  900.   0006e    38 18         cmp     BYTE PTR [eax], bl
  901.   00070    59         pop     ecx
  902.   00071    74 3e         je     SHORT $L56975
  903.  
  904. ; 348  :             {
  905. ; 349  :                 hr = E_FAIL;
  906. ; 350  :                 goto e_Exit;
  907. ; 351  :             }
  908. ; 352  : 
  909. ; 353  :             m_rgszValues[iOptionalArg] = szCur;
  910.  
  911.   00073    8d 7c 96 20     lea     edi, DWORD PTR [esi+edx*4+32]
  912.   00077    89 07         mov     DWORD PTR [edi], eax
  913.  
  914. ; 354  : 
  915. ; 355  :             if (*szCur == '(')
  916.  
  917.   00079    80 38 28     cmp     BYTE PTR [eax], 40    ; 00000028H
  918.   0007c    75 19         jne     SHORT $L56546
  919.  
  920. ; 356  :             {
  921. ; 357  :                 szCur = EatUntilTerminator(szCur, ')');
  922.  
  923.   0007e    6a 29         push     41            ; 00000029H
  924.   00080    50         push     eax
  925.   00081    e8 00 00 00 00     call     ?EatUntilTerminator@GXU@@YAPADPADD@Z ; GXU::EatUntilTerminator
  926.  
  927. ; 358  :                 if (*szCur == '\0')
  928.  
  929.   00086    38 18         cmp     BYTE PTR [eax], bl
  930.   00088    59         pop     ecx
  931.   00089    59         pop     ecx
  932.   0008a    74 25         je     SHORT $L56975
  933.  
  934. ; 361  :                     goto e_Exit;
  935. ; 362  :                 }
  936. ; 363  :                 szCur++;  // move beyond the ')'
  937.  
  938.   0008c    40         inc     eax
  939. $L56978:
  940.  
  941. ; 364  : 
  942. ; 365  :                 m_rgcchValues[iOptionalArg] = (DWORD)(szCur - m_rgszValues[iOptionalArg]);
  943.  
  944.   0008d    8b c8         mov     ecx, eax
  945.   0008f    2b 0f         sub     ecx, DWORD PTR [edi]
  946.   00091    89 4c 96 30     mov     DWORD PTR [esi+edx*4+48], ecx
  947.  
  948. ; 366  :             }
  949. ; 367  :             else
  950.  
  951.   00095    eb 14         jmp     SHORT $L56553
  952. $L56546:
  953.  
  954. ; 368  :             {
  955. ; 369  :                 // NOTE: hitting end of string here is completely acceptable
  956. ; 370  :                 //   and pass in ' ' as the terminator because there is no special terminator
  957. ; 371  :                 szCur = EatNonWhiteSpace(szCur, ' ');
  958.  
  959.   00097    6a 20         push     32            ; 00000020H
  960.   00099    50         push     eax
  961.   0009a    e8 00 00 00 00     call     ?EatNonWhiteSpace@GXU@@YAPADPADD@Z ; GXU::EatNonWhiteSpace
  962.   0009f    59         pop     ecx
  963.   000a0    59         pop     ecx
  964.  
  965. ; 372  : 
  966. ; 373  :                 m_rgcchValues[iOptionalArg] = (DWORD)(szCur - m_rgszValues[iOptionalArg]);
  967. ; 374  :             }
  968. ; 375  : 
  969. ; 376  :         }
  970. ; 377  :         else
  971.  
  972.   000a1    eb ea         jmp     SHORT $L56978
  973. $L56542:
  974.  
  975. ; 378  :         {
  976. ; 379  :             m_rgszValues[iOptionalArg] = NULL;
  977.  
  978.   000a3    89 5c 96 20     mov     DWORD PTR [esi+edx*4+32], ebx
  979.  
  980. ; 380  :             m_rgcchValues[iOptionalArg] = 0;
  981.  
  982.   000a7    89 5c 96 30     mov     DWORD PTR [esi+edx*4+48], ebx
  983. $L56553:
  984.  
  985. ; 317  : 
  986. ; 318  :     while (szCur != '\0')
  987.  
  988.   000ab    3b c3         cmp     eax, ebx
  989.   000ad    75 82         jne     SHORT $L56538
  990.  
  991. ; 358  :                 if (*szCur == '\0')
  992.  
  993.   000af    eb 07         jmp     SHORT $L56977
  994. $L56975:
  995.  
  996. ; 359  :                 {
  997. ; 360  :                     hr = E_FAIL;
  998.  
  999.   000b1    c7 45 fc 05 40
  1000.     00 80         mov     DWORD PTR _hr$[ebp], -2147467259 ; 80004005H
  1001. $L56977:
  1002.   000b8    5f         pop     edi
  1003. $e_Exit$56535:
  1004.  
  1005. ; 381  :         }
  1006. ; 382  :     }
  1007. ; 383  : 
  1008. ; 384  : e_Exit:
  1009. ; 385  :     return hr;
  1010.  
  1011.   000b9    8b 45 fc     mov     eax, DWORD PTR _hr$[ebp]
  1012.   000bc    5e         pop     esi
  1013.   000bd    5b         pop     ebx
  1014.  
  1015. ; 386  : }
  1016.  
  1017.   000be    c9         leave
  1018.   000bf    c2 04 00     ret     4
  1019. ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z ENDP        ; GXU::CParseOptionalArgs::Parse
  1020. _TEXT    ENDS
  1021. PUBLIC    ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ; GXU::CParseOptionalArgs::BCompareArg
  1022. EXTRN    _strncmp:NEAR
  1023. ; Function compile flags: /Ogs
  1024. ;    COMDAT ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z
  1025. _TEXT    SEGMENT
  1026. _iOptionalArg$ = 8                    ; size = 4
  1027. _szPossibleArg$ = 12                    ; size = 4
  1028. ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z PROC NEAR ; GXU::CParseOptionalArgs::BCompareArg, COMDAT
  1029. ; _this$ = ecx
  1030.  
  1031. ; 393  : }
  1032.  
  1033.   00000    8b ff         npad     2
  1034.  
  1035. ; 390  : {
  1036.  
  1037.   00002    55         push     ebp
  1038.   00003    8b ec         mov     ebp, esp
  1039.  
  1040. ; 391  :     GXASSERT(iOptionalArg < m_cOptionalArgs);
  1041. ; 392  :     return strncmp(szPossibleArg, m_rgszArgs[iOptionalArg], m_rgcchArgs[iOptionalArg]) == 0;
  1042.  
  1043.   00005    8b 45 08     mov     eax, DWORD PTR _iOptionalArg$[ebp]
  1044.   00008    ff 74 81 10     push     DWORD PTR [ecx+eax*4+16]
  1045.   0000c    ff 34 81     push     DWORD PTR [ecx+eax*4]
  1046.   0000f    ff 75 0c     push     DWORD PTR _szPossibleArg$[ebp]
  1047.   00012    e8 00 00 00 00     call     _strncmp
  1048.   00017    83 c4 0c     add     esp, 12            ; 0000000cH
  1049.   0001a    f7 d8         neg     eax
  1050.   0001c    1b c0         sbb     eax, eax
  1051.   0001e    40         inc     eax
  1052.  
  1053. ; 393  : }
  1054.  
  1055.   0001f    5d         pop     ebp
  1056.   00020    c2 08 00     ret     8
  1057. ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ENDP    ; GXU::CParseOptionalArgs::BCompareArg
  1058. _TEXT    ENDS
  1059. PUBLIC    ?GetDWORD@CParseOptionalArgs@GXU@@QAEJIPAK@Z    ; GXU::CParseOptionalArgs::GetDWORD
  1060. EXTRN    _atoi:NEAR
  1061. ; Function compile flags: /Ogs
  1062. ;    COMDAT ?GetDWORD@CParseOptionalArgs@GXU@@QAEJIPAK@Z
  1063. _TEXT    SEGMENT
  1064. _iOptionalArg$ = 8                    ; size = 4
  1065. _piArg$ = 12                        ; size = 4
  1066. ?GetDWORD@CParseOptionalArgs@GXU@@QAEJIPAK@Z PROC NEAR    ; GXU::CParseOptionalArgs::GetDWORD, COMDAT
  1067. ; _this$ = ecx
  1068.  
  1069. ; 403  : }
  1070.  
  1071.   00000    8b ff         npad     2
  1072.  
  1073. ; 397  : {
  1074.  
  1075.   00002    55         push     ebp
  1076.   00003    8b ec         mov     ebp, esp
  1077.  
  1078. ; 398  :     GXASSERT(iOptionalArg < m_cOptionalArgs);
  1079. ; 399  : 
  1080. ; 400  :     *piArg = atoi(m_rgszValues[iOptionalArg]);
  1081.  
  1082.   00005    8b 45 08     mov     eax, DWORD PTR _iOptionalArg$[ebp]
  1083.   00008    ff 74 81 20     push     DWORD PTR [ecx+eax*4+32]
  1084.   0000c    e8 00 00 00 00     call     _atoi
  1085.   00011    59         pop     ecx
  1086.   00012    8b 4d 0c     mov     ecx, DWORD PTR _piArg$[ebp]
  1087.   00015    89 01         mov     DWORD PTR [ecx], eax
  1088.  
  1089. ; 401  : 
  1090. ; 402  :     return S_OK;
  1091.  
  1092.   00017    33 c0         xor     eax, eax
  1093.  
  1094. ; 403  : }
  1095.  
  1096.   00019    5d         pop     ebp
  1097.   0001a    c2 08 00     ret     8
  1098. ?GetDWORD@CParseOptionalArgs@GXU@@QAEJIPAK@Z ENDP    ; GXU::CParseOptionalArgs::GetDWORD
  1099. _TEXT    ENDS
  1100. PUBLIC    ?GetColorRGB@CParseOptionalArgs@GXU@@QAEJIPAUD3DXCOLOR@@@Z ; GXU::CParseOptionalArgs::GetColorRGB
  1101. EXTRN    _strtod:NEAR
  1102. ; Function compile flags: /Ogs
  1103. ;    COMDAT ?GetColorRGB@CParseOptionalArgs@GXU@@QAEJIPAUD3DXCOLOR@@@Z
  1104. _TEXT    SEGMENT
  1105. _szCur$ = 8                        ; size = 4
  1106. _iOptionalArg$ = 8                    ; size = 4
  1107. _pcolor$ = 12                        ; size = 4
  1108. ?GetColorRGB@CParseOptionalArgs@GXU@@QAEJIPAUD3DXCOLOR@@@Z PROC NEAR ; GXU::CParseOptionalArgs::GetColorRGB, COMDAT
  1109. ; _this$ = ecx
  1110.  
  1111. ; 425  : }
  1112.  
  1113.   00000    8b ff         npad     2
  1114.  
  1115. ; 407  : {
  1116.  
  1117.   00002    55         push     ebp
  1118.   00003    8b ec         mov     ebp, esp
  1119.  
  1120. ; 408  :     GXASSERT(iOptionalArg < m_cOptionalArgs);
  1121. ; 409  : 
  1122. ; 410  :     HRESULT hr = S_OK;
  1123. ; 411  :     char *szCur;
  1124. ; 412  : 
  1125. ; 413  :     szCur = m_rgszValues[iOptionalArg];
  1126. ; 414  : 
  1127. ; 415  :     GXASSERT(*szCur == '(');
  1128. ; 416  :     szCur++;
  1129.  
  1130.   00005    8b 45 08     mov     eax, DWORD PTR _iOptionalArg$[ebp]
  1131.   00008    8b 44 81 20     mov     eax, DWORD PTR [ecx+eax*4+32]
  1132.   0000c    56         push     esi
  1133.  
  1134. ; 417  : 
  1135. ; 418  :     // convert the three numbers into a color
  1136. ; 419  :     pcolor->r = (float)strtod(szCur, &szCur);
  1137.  
  1138.   0000d    8d 4d 08     lea     ecx, DWORD PTR _szCur$[ebp]
  1139.   00010    40         inc     eax
  1140.   00011    51         push     ecx
  1141.   00012    50         push     eax
  1142.   00013    89 45 08     mov     DWORD PTR _szCur$[ebp], eax
  1143.   00016    e8 00 00 00 00     call     _strtod
  1144.   0001b    8b 75 0c     mov     esi, DWORD PTR _pcolor$[ebp]
  1145.  
  1146. ; 420  :     pcolor->g = (float)strtod(szCur, &szCur);
  1147.  
  1148.   0001e    8d 45 08     lea     eax, DWORD PTR _szCur$[ebp]
  1149.   00021    d9 1e         fstp     DWORD PTR [esi]
  1150.   00023    50         push     eax
  1151.   00024    ff 75 08     push     DWORD PTR _szCur$[ebp]
  1152.   00027    e8 00 00 00 00     call     _strtod
  1153.   0002c    d9 5e 04     fstp     DWORD PTR [esi+4]
  1154.  
  1155. ; 421  :     pcolor->b = (float)strtod(szCur, &szCur);
  1156.  
  1157.   0002f    8d 45 08     lea     eax, DWORD PTR _szCur$[ebp]
  1158.   00032    50         push     eax
  1159.   00033    ff 75 08     push     DWORD PTR _szCur$[ebp]
  1160.   00036    e8 00 00 00 00     call     _strtod
  1161.   0003b    d9 5e 08     fstp     DWORD PTR [esi+8]
  1162.  
  1163. ; 422  :     pcolor->a = 0.0f;
  1164.  
  1165.   0003e    d9 ee         fldz
  1166.   00040    83 c4 18     add     esp, 24            ; 00000018H
  1167.   00043    d9 5e 0c     fstp     DWORD PTR [esi+12]
  1168.  
  1169. ; 423  : 
  1170. ; 424  :     return hr;
  1171.  
  1172.   00046    33 c0         xor     eax, eax
  1173.   00048    5e         pop     esi
  1174.  
  1175. ; 425  : }
  1176.  
  1177.   00049    5d         pop     ebp
  1178.   0004a    c2 08 00     ret     8
  1179. ?GetColorRGB@CParseOptionalArgs@GXU@@QAEJIPAUD3DXCOLOR@@@Z ENDP ; GXU::CParseOptionalArgs::GetColorRGB
  1180. _TEXT    ENDS
  1181. PUBLIC    ?GetPoint2@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR2@@@Z ; GXU::CParseOptionalArgs::GetPoint2
  1182. ; Function compile flags: /Ogs
  1183. ;    COMDAT ?GetPoint2@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR2@@@Z
  1184. _TEXT    SEGMENT
  1185. _szCur$ = 8                        ; size = 4
  1186. _iOptionalArg$ = 8                    ; size = 4
  1187. _puvPoint$ = 12                        ; size = 4
  1188. ?GetPoint2@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR2@@@Z PROC NEAR ; GXU::CParseOptionalArgs::GetPoint2, COMDAT
  1189. ; _this$ = ecx
  1190.  
  1191. ; 445  : }
  1192.  
  1193.   00000    8b ff         npad     2
  1194.  
  1195. ; 429  : {
  1196.  
  1197.   00002    55         push     ebp
  1198.   00003    8b ec         mov     ebp, esp
  1199.  
  1200. ; 430  :     GXASSERT(iOptionalArg < m_cOptionalArgs);
  1201. ; 431  : 
  1202. ; 432  :     HRESULT hr = S_OK;
  1203. ; 433  :     char *szCur;
  1204. ; 434  : 
  1205. ; 435  :     szCur = m_rgszValues[iOptionalArg];
  1206. ; 436  : 
  1207. ; 437  :     GXASSERT(*szCur == '(');
  1208. ; 438  :     szCur++;
  1209.  
  1210.   00005    8b 45 08     mov     eax, DWORD PTR _iOptionalArg$[ebp]
  1211.   00008    8b 44 81 20     mov     eax, DWORD PTR [ecx+eax*4+32]
  1212.   0000c    56         push     esi
  1213.  
  1214. ; 439  : 
  1215. ; 440  :     // find and convert the first number
  1216. ; 441  :     puvPoint->x = (float)strtod(szCur, &szCur);
  1217.  
  1218.   0000d    8d 4d 08     lea     ecx, DWORD PTR _szCur$[ebp]
  1219.   00010    40         inc     eax
  1220.   00011    51         push     ecx
  1221.   00012    50         push     eax
  1222.   00013    89 45 08     mov     DWORD PTR _szCur$[ebp], eax
  1223.   00016    e8 00 00 00 00     call     _strtod
  1224.   0001b    8b 75 0c     mov     esi, DWORD PTR _puvPoint$[ebp]
  1225.  
  1226. ; 442  :     puvPoint->y = (float)strtod(szCur, &szCur);
  1227.  
  1228.   0001e    8d 45 08     lea     eax, DWORD PTR _szCur$[ebp]
  1229.   00021    d9 1e         fstp     DWORD PTR [esi]
  1230.   00023    50         push     eax
  1231.   00024    ff 75 08     push     DWORD PTR _szCur$[ebp]
  1232.   00027    e8 00 00 00 00     call     _strtod
  1233.   0002c    d9 5e 04     fstp     DWORD PTR [esi+4]
  1234.   0002f    83 c4 10     add     esp, 16            ; 00000010H
  1235.  
  1236. ; 443  : 
  1237. ; 444  :     return hr;
  1238.  
  1239.   00032    33 c0         xor     eax, eax
  1240.   00034    5e         pop     esi
  1241.  
  1242. ; 445  : }
  1243.  
  1244.   00035    5d         pop     ebp
  1245.   00036    c2 08 00     ret     8
  1246. ?GetPoint2@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR2@@@Z ENDP ; GXU::CParseOptionalArgs::GetPoint2
  1247. _TEXT    ENDS
  1248. PUBLIC    ?GetVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z ; GXU::CParseOptionalArgs::GetVector3
  1249. ; Function compile flags: /Ogs
  1250. ;    COMDAT ?GetVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z
  1251. _TEXT    SEGMENT
  1252. _szCur$ = 8                        ; size = 4
  1253. _iOptionalArg$ = 8                    ; size = 4
  1254. _pvVector$ = 12                        ; size = 4
  1255. ?GetVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z PROC NEAR ; GXU::CParseOptionalArgs::GetVector3, COMDAT
  1256. ; _this$ = ecx
  1257.  
  1258. ; 466  : }
  1259.  
  1260.   00000    8b ff         npad     2
  1261.  
  1262. ; 449  : {
  1263.  
  1264.   00002    55         push     ebp
  1265.   00003    8b ec         mov     ebp, esp
  1266.  
  1267. ; 450  :     GXASSERT(iOptionalArg < m_cOptionalArgs);
  1268. ; 451  : 
  1269. ; 452  :     HRESULT hr = S_OK;
  1270. ; 453  :     char *szCur;
  1271. ; 454  : 
  1272. ; 455  :     szCur = m_rgszValues[iOptionalArg];
  1273. ; 456  : 
  1274. ; 457  :     GXASSERT(*szCur == '(');
  1275. ; 458  :     szCur++;
  1276.  
  1277.   00005    8b 45 08     mov     eax, DWORD PTR _iOptionalArg$[ebp]
  1278.   00008    8b 44 81 20     mov     eax, DWORD PTR [ecx+eax*4+32]
  1279.   0000c    56         push     esi
  1280.  
  1281. ; 459  : 
  1282. ; 460  :     // find and convert the first number
  1283. ; 461  :     pvVector->x = (float)strtod(szCur, &szCur);
  1284.  
  1285.   0000d    8d 4d 08     lea     ecx, DWORD PTR _szCur$[ebp]
  1286.   00010    40         inc     eax
  1287.   00011    51         push     ecx
  1288.   00012    50         push     eax
  1289.   00013    89 45 08     mov     DWORD PTR _szCur$[ebp], eax
  1290.   00016    e8 00 00 00 00     call     _strtod
  1291.   0001b    8b 75 0c     mov     esi, DWORD PTR _pvVector$[ebp]
  1292.  
  1293. ; 462  :     pvVector->y = (float)strtod(szCur, &szCur);
  1294.  
  1295.   0001e    8d 45 08     lea     eax, DWORD PTR _szCur$[ebp]
  1296.   00021    d9 1e         fstp     DWORD PTR [esi]
  1297.   00023    50         push     eax
  1298.   00024    ff 75 08     push     DWORD PTR _szCur$[ebp]
  1299.   00027    e8 00 00 00 00     call     _strtod
  1300.   0002c    d9 5e 04     fstp     DWORD PTR [esi+4]
  1301.  
  1302. ; 463  :     pvVector->z = (float)strtod(szCur, &szCur);
  1303.  
  1304.   0002f    8d 45 08     lea     eax, DWORD PTR _szCur$[ebp]
  1305.   00032    50         push     eax
  1306.   00033    ff 75 08     push     DWORD PTR _szCur$[ebp]
  1307.   00036    e8 00 00 00 00     call     _strtod
  1308.   0003b    d9 5e 08     fstp     DWORD PTR [esi+8]
  1309.   0003e    83 c4 18     add     esp, 24            ; 00000018H
  1310.  
  1311. ; 464  : 
  1312. ; 465  :     return hr;
  1313.  
  1314.   00041    33 c0         xor     eax, eax
  1315.   00043    5e         pop     esi
  1316.  
  1317. ; 466  : }
  1318.  
  1319.   00044    5d         pop     ebp
  1320.   00045    c2 08 00     ret     8
  1321. ?GetVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z ENDP ; GXU::CParseOptionalArgs::GetVector3
  1322. _TEXT    ENDS
  1323. PUBLIC    ??0D3DXVECTOR3@@QAE@XZ                ; D3DXVECTOR3::D3DXVECTOR3
  1324. ; Function compile flags: /Ogs
  1325. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.h
  1326. ;    COMDAT ??0D3DXVECTOR3@@QAE@XZ
  1327. _TEXT    SEGMENT
  1328. ??0D3DXVECTOR3@@QAE@XZ PROC NEAR            ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
  1329. ; _this$ = ecx
  1330.  
  1331. ; 165  :     D3DXVECTOR3() {};
  1332.  
  1333.   00000    8b c1         mov     eax, ecx
  1334.   00002    c3         ret     0
  1335. ??0D3DXVECTOR3@@QAE@XZ ENDP                ; D3DXVECTOR3::D3DXVECTOR3
  1336. _TEXT    ENDS
  1337. PUBLIC    ??0D3DXCOLOR@@QAE@XZ                ; D3DXCOLOR::D3DXCOLOR
  1338. ; Function compile flags: /Ogs
  1339. ;    COMDAT ??0D3DXCOLOR@@QAE@XZ
  1340. _TEXT    SEGMENT
  1341. ??0D3DXCOLOR@@QAE@XZ PROC NEAR                ; D3DXCOLOR::D3DXCOLOR, COMDAT
  1342. ; _this$ = ecx
  1343.  
  1344. ; 516  :     D3DXCOLOR() {}
  1345.  
  1346.   00000    8b c1         mov     eax, ecx
  1347.   00002    c3         ret     0
  1348. ??0D3DXCOLOR@@QAE@XZ ENDP                ; D3DXCOLOR::D3DXCOLOR
  1349. _TEXT    ENDS
  1350. PUBLIC    ??0D3DXVECTOR3@@QAE@MMM@Z            ; D3DXVECTOR3::D3DXVECTOR3
  1351. ; Function compile flags: /Ogs
  1352. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  1353. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  1354. _TEXT    SEGMENT
  1355. _fx$ = 8                        ; size = 4
  1356. _fy$ = 12                        ; size = 4
  1357. _fz$ = 16                        ; size = 4
  1358. ??0D3DXVECTOR3@@QAE@MMM@Z PROC NEAR            ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
  1359. ; _this$ = ecx
  1360.  
  1361. ; 308  : }
  1362.  
  1363.   00000    8b ff         npad     2
  1364.  
  1365. ; 304  : {
  1366.  
  1367.   00002    55         push     ebp
  1368.   00003    8b ec         mov     ebp, esp
  1369.   00005    8b c1         mov     eax, ecx
  1370.  
  1371. ; 305  :     x = fx;
  1372.  
  1373.   00007    8b 4d 08     mov     ecx, DWORD PTR _fx$[ebp]
  1374.   0000a    89 08         mov     DWORD PTR [eax], ecx
  1375.  
  1376. ; 306  :     y = fy;
  1377.  
  1378.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _fy$[ebp]
  1379.   0000f    89 48 04     mov     DWORD PTR [eax+4], ecx
  1380.  
  1381. ; 307  :     z = fz;
  1382.  
  1383.   00012    8b 4d 10     mov     ecx, DWORD PTR _fz$[ebp]
  1384.   00015    89 48 08     mov     DWORD PTR [eax+8], ecx
  1385.  
  1386. ; 308  : }
  1387.  
  1388.   00018    5d         pop     ebp
  1389.   00019    c2 0c 00     ret     12            ; 0000000cH
  1390. ??0D3DXVECTOR3@@QAE@MMM@Z ENDP                ; D3DXVECTOR3::D3DXVECTOR3
  1391. _TEXT    ENDS
  1392. PUBLIC    ??0D3DXCOLOR@@QAE@MMMM@Z            ; D3DXCOLOR::D3DXCOLOR
  1393. ; Function compile flags: /Ogs
  1394. ;    COMDAT ??0D3DXCOLOR@@QAE@MMMM@Z
  1395. _TEXT    SEGMENT
  1396. _fr$ = 8                        ; size = 4
  1397. _fg$ = 12                        ; size = 4
  1398. _fb$ = 16                        ; size = 4
  1399. _fa$ = 20                        ; size = 4
  1400. ??0D3DXCOLOR@@QAE@MMMM@Z PROC NEAR            ; D3DXCOLOR::D3DXCOLOR, COMDAT
  1401. ; _this$ = ecx
  1402.  
  1403. ; 1395 : }
  1404.  
  1405.   00000    8b ff         npad     2
  1406.  
  1407. ; 1390 : {
  1408.  
  1409.   00002    55         push     ebp
  1410.   00003    8b ec         mov     ebp, esp
  1411.   00005    8b c1         mov     eax, ecx
  1412.  
  1413. ; 1391 :     r = fr;
  1414.  
  1415.   00007    8b 4d 08     mov     ecx, DWORD PTR _fr$[ebp]
  1416.   0000a    89 08         mov     DWORD PTR [eax], ecx
  1417.  
  1418. ; 1392 :     g = fg;
  1419.  
  1420.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _fg$[ebp]
  1421.   0000f    89 48 04     mov     DWORD PTR [eax+4], ecx
  1422.  
  1423. ; 1393 :     b = fb;
  1424.  
  1425.   00012    8b 4d 10     mov     ecx, DWORD PTR _fb$[ebp]
  1426.   00015    89 48 08     mov     DWORD PTR [eax+8], ecx
  1427.  
  1428. ; 1394 :     a = fa;
  1429.  
  1430.   00018    8b 4d 14     mov     ecx, DWORD PTR _fa$[ebp]
  1431.   0001b    89 48 0c     mov     DWORD PTR [eax+12], ecx
  1432.  
  1433. ; 1395 : }
  1434.  
  1435.   0001e    5d         pop     ebp
  1436.   0001f    c2 10 00     ret     16            ; 00000010H
  1437. ??0D3DXCOLOR@@QAE@MMMM@Z ENDP                ; D3DXCOLOR::D3DXCOLOR
  1438. _TEXT    ENDS
  1439. PUBLIC    ??0SLoadedFace@GXU@@QAE@KKK@Z            ; GXU::SLoadedFace::SLoadedFace
  1440. ; Function compile flags: /Ogs
  1441. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\loadutil.h
  1442. ;    COMDAT ??0SLoadedFace@GXU@@QAE@KKK@Z
  1443. _TEXT    SEGMENT
  1444. _w0$ = 8                        ; size = 4
  1445. _w1$ = 12                        ; size = 4
  1446. _w2$ = 16                        ; size = 4
  1447. ??0SLoadedFace@GXU@@QAE@KKK@Z PROC NEAR            ; GXU::SLoadedFace::SLoadedFace, COMDAT
  1448. ; _this$ = ecx
  1449.  
  1450. ; 48   :     }
  1451.  
  1452.   00000    8b ff         npad     2
  1453.  
  1454. ; 45   :     SLoadedFace( DWORD w0, DWORD w1, DWORD w2 )
  1455.  
  1456.   00002    55         push     ebp
  1457.   00003    8b ec         mov     ebp, esp
  1458.   00005    8b c1         mov     eax, ecx
  1459.  
  1460. ; 46   :     {
  1461. ; 47   :         Init(w0, w1, w2);
  1462.  
  1463.   00007    8b 4d 08     mov     ecx, DWORD PTR _w0$[ebp]
  1464.   0000a    80 60 0c f0     and     BYTE PTR [eax+12], -16    ; fffffff0H
  1465.   0000e    89 08         mov     DWORD PTR [eax], ecx
  1466.   00010    8b 4d 0c     mov     ecx, DWORD PTR _w1$[ebp]
  1467.   00013    89 48 04     mov     DWORD PTR [eax+4], ecx
  1468.   00016    8b 4d 10     mov     ecx, DWORD PTR _w2$[ebp]
  1469.   00019    89 48 08     mov     DWORD PTR [eax+8], ecx
  1470.  
  1471. ; 48   :     }
  1472.  
  1473.   0001c    5d         pop     ebp
  1474.   0001d    c2 0c 00     ret     12            ; 0000000cH
  1475. ??0SLoadedFace@GXU@@QAE@KKK@Z ENDP            ; GXU::SLoadedFace::SLoadedFace
  1476. ; Function compile flags: /Ogs
  1477. _TEXT    ENDS
  1478. ;    COMDAT ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z
  1479. _TEXT    SEGMENT
  1480. _szBuffer$ = 8                        ; size = 4
  1481. _bEOF$ = 12                        ; size = 4
  1482. ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z PROC NEAR    ; GXU::CFileContext::GetChar, COMDAT
  1483. ; _this$ = ecx
  1484.  
  1485. ; 154  :         }
  1486. ; 155  : 
  1487. ; 156  :     }
  1488.  
  1489.   00000    8b ff         npad     2
  1490.  
  1491. ; 142  :     {
  1492.  
  1493.   00002    55         push     ebp
  1494.   00003    8b ec         mov     ebp, esp
  1495.   00005    56         push     esi
  1496.  
  1497. ; 143  :         bEOF = false;
  1498.  
  1499.   00006    8b 75 0c     mov     esi, DWORD PTR _bEOF$[ebp]
  1500.   00009    c6 06 00     mov     BYTE PTR [esi], 0
  1501.  
  1502. ; 144  : 
  1503. ; 145  :         if (m_ichBuffer < m_cchBuffer)
  1504.  
  1505.   0000c    8d 81 04 01 00
  1506.     00         lea     eax, DWORD PTR [ecx+260]
  1507.   00012    8b 10         mov     edx, DWORD PTR [eax]
  1508.   00014    3b 91 08 01 00
  1509.     00         cmp     edx, DWORD PTR [ecx+264]
  1510.   0001a    73 0f         jae     SHORT $L56376
  1511.  
  1512. ; 146  :         {
  1513. ; 147  :             *szBuffer = m_szBuffer[m_ichBuffer];
  1514.  
  1515.   0001c    8a 4c 0a 04     mov     cl, BYTE PTR [edx+ecx+4]
  1516.   00020    8b 55 08     mov     edx, DWORD PTR _szBuffer$[ebp]
  1517.   00023    88 0a         mov     BYTE PTR [edx], cl
  1518.  
  1519. ; 148  :             m_ichBuffer += 1;
  1520.  
  1521.   00025    ff 00         inc     DWORD PTR [eax]
  1522.  
  1523. ; 149  :             return S_OK;
  1524.  
  1525.   00027    33 c0         xor     eax, eax
  1526.   00029    eb 09         jmp     SHORT $L56378
  1527. $L56376:
  1528.  
  1529. ; 150  :         }
  1530. ; 151  :         else
  1531. ; 152  :         {
  1532. ; 153  :             return GetCharHelper(szBuffer, bEOF);
  1533.  
  1534.   0002b    56         push     esi
  1535.   0002c    ff 75 08     push     DWORD PTR _szBuffer$[ebp]
  1536.   0002f    e8 00 00 00 00     call     ?GetCharHelper@CFileContext@GXU@@AAEJPADAA_N@Z ; GXU::CFileContext::GetCharHelper
  1537. $L56378:
  1538.   00034    5e         pop     esi
  1539.  
  1540. ; 154  :         }
  1541. ; 155  : 
  1542. ; 156  :     }
  1543.  
  1544.   00035    5d         pop     ebp
  1545.   00036    c2 08 00     ret     8
  1546. ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z ENDP        ; GXU::CFileContext::GetChar
  1547. _TEXT    ENDS
  1548. PUBLIC    ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z    ; GXU::CFileContext::GetLine
  1549. ; Function compile flags: /Ogs
  1550. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\loadmesh.cpp
  1551. ;    COMDAT ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z
  1552. _TEXT    SEGMENT
  1553. _this$ = -4                        ; size = 4
  1554. _szBuffer$ = 8                        ; size = 4
  1555. _chTemp$ = 11                        ; size = 1
  1556. _cchBuffer$ = 12                    ; size = 4
  1557. _bEOF$ = 16                        ; size = 4
  1558. _bTemp$ = 19                        ; size = 1
  1559. ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z PROC NEAR    ; GXU::CFileContext::GetLine, COMDAT
  1560. ; _this$ = ecx
  1561.  
  1562. ; 229  :     return hr;;
  1563. ; 230  : }
  1564.  
  1565.   00000    8b ff         npad     2
  1566.  
  1567. ; 181  : {
  1568.  
  1569.   00002    55         push     ebp
  1570.   00003    8b ec         mov     ebp, esp
  1571.   00005    51         push     ecx
  1572.   00006    53         push     ebx
  1573.  
  1574. ; 182  :     int ichBuffer;
  1575. ; 183  :     HRESULT hr = S_OK;
  1576. ; 184  :     bool bTemp;
  1577. ; 185  :     char chTemp;
  1578. ; 186  : 
  1579. ; 187  :     ichBuffer = 0;
  1580. ; 188  :     bEOF = false;
  1581.  
  1582.   00007    8b 5d 10     mov     ebx, DWORD PTR _bEOF$[ebp]
  1583.   0000a    56         push     esi
  1584.   0000b    57         push     edi
  1585.  
  1586. ; 189  : 
  1587. ; 190  :     hr = GetChar(&szBuffer[ichBuffer], bEOF);
  1588.  
  1589.   0000c    8b 7d 08     mov     edi, DWORD PTR _szBuffer$[ebp]
  1590.   0000f    53         push     ebx
  1591.   00010    57         push     edi
  1592.   00011    89 4d fc     mov     DWORD PTR _this$[ebp], ecx
  1593.   00014    33 f6         xor     esi, esi
  1594.   00016    c6 03 00     mov     BYTE PTR [ebx], 0
  1595.   00019    e8 00 00 00 00     call     ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z ; GXU::CFileContext::GetChar
  1596.  
  1597. ; 191  :         if (FAILED(hr) || bEOF)
  1598.  
  1599.   0001e    85 c0         test     eax, eax
  1600.   00020    7c 71         jl     SHORT $e_Exit$56445
  1601.   00022    80 3b 00     cmp     BYTE PTR [ebx], 0
  1602.   00025    75 6c         jne     SHORT $e_Exit$56445
  1603.  
  1604. ; 192  :     {
  1605. ; 193  :         // this is both an acceptable EOF case, and an error case, but no way to tell the user
  1606. ; 194  :         goto e_Exit;
  1607. ; 195  :     }
  1608. ; 196  : 
  1609. ; 197  :     while ((szBuffer[ichBuffer] != '\n') && (ichBuffer < cchBuffer - 2))
  1610.  
  1611.   00027    80 3f 0a     cmp     BYTE PTR [edi], 10    ; 0000000aH
  1612.   0002a    74 31         je     SHORT $L57005
  1613. $L56448:
  1614.   0002c    8b 4d 0c     mov     ecx, DWORD PTR _cchBuffer$[ebp]
  1615.   0002f    83 c1 fe     add     ecx, -2            ; fffffffeH
  1616.   00032    3b f1         cmp     esi, ecx
  1617.   00034    7d 27         jge     SHORT $L57005
  1618.  
  1619. ; 198  :     {
  1620. ; 199  :         ichBuffer += 1;
  1621. ; 200  : 
  1622. ; 201  :         hr = GetChar(&szBuffer[ichBuffer], bTemp);
  1623.  
  1624.   00036    8b 4d fc     mov     ecx, DWORD PTR _this$[ebp]
  1625.   00039    8d 45 13     lea     eax, DWORD PTR _bTemp$[ebp]
  1626.   0003c    46         inc     esi
  1627.   0003d    50         push     eax
  1628.   0003e    8d 1c 3e     lea     ebx, DWORD PTR [esi+edi]
  1629.   00041    53         push     ebx
  1630.   00042    e8 00 00 00 00     call     ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z ; GXU::CFileContext::GetChar
  1631.  
  1632. ; 202  :             if (FAILED(hr) || bTemp)
  1633.  
  1634.   00047    85 c0         test     eax, eax
  1635.   00049    7c 4f         jl     SHORT $L57001
  1636.   0004b    80 7d 13 00     cmp     BYTE PTR _bTemp$[ebp], 0
  1637.   0004f    75 49         jne     SHORT $L57001
  1638.  
  1639. ; 205  :             goto e_Exit;
  1640. ; 206  :         }
  1641. ; 207  : 
  1642. ; 208  :         if (szBuffer[ichBuffer] == '\r')
  1643.  
  1644.   00051    80 3b 0d     cmp     BYTE PTR [ebx], 13    ; 0000000dH
  1645.   00054    75 01         jne     SHORT $L56454
  1646.  
  1647. ; 209  :             ichBuffer -= 1;
  1648.  
  1649.   00056    4e         dec     esi
  1650. $L56454:
  1651.  
  1652. ; 192  :     {
  1653. ; 193  :         // this is both an acceptable EOF case, and an error case, but no way to tell the user
  1654. ; 194  :         goto e_Exit;
  1655. ; 195  :     }
  1656. ; 196  : 
  1657. ; 197  :     while ((szBuffer[ichBuffer] != '\n') && (ichBuffer < cchBuffer - 2))
  1658.  
  1659.   00057    80 3c 3e 0a     cmp     BYTE PTR [esi+edi], 10    ; 0000000aH
  1660.   0005b    75 cf         jne     SHORT $L56448
  1661. $L57005:
  1662.  
  1663. ; 210  :     }
  1664. ; 211  : 
  1665. ; 212  : 
  1666. ; 213  :     szBuffer[ichBuffer+1] = '\0';
  1667. ; 214  : 
  1668. ; 215  :     // if we hit the limit of the string without hitting the end of the line
  1669. ; 216  :     //    then skip the rest of the line
  1670. ; 217  :     if ((ichBuffer == cchBuffer - 2) && (szBuffer[ichBuffer] != '\n'))
  1671.  
  1672.   0005d    8b 55 0c     mov     edx, DWORD PTR _cchBuffer$[ebp]
  1673.   00060    83 c2 fe     add     edx, -2            ; fffffffeH
  1674.   00063    3b f2         cmp     esi, edx
  1675.   00065    8d 0c 3e     lea     ecx, DWORD PTR [esi+edi]
  1676.   00068    c6 41 01 00     mov     BYTE PTR [ecx+1], 0
  1677.   0006c    75 25         jne     SHORT $e_Exit$56445
  1678.   0006e    80 39 0a     cmp     BYTE PTR [ecx], 10    ; 0000000aH
  1679.   00071    74 20         je     SHORT $e_Exit$56445
  1680. $L56456:
  1681.  
  1682. ; 218  :     {
  1683. ; 219  :         do
  1684. ; 220  :         {
  1685. ; 221  :             hr = GetChar(&chTemp, bTemp);
  1686.  
  1687.   00073    8b 4d fc     mov     ecx, DWORD PTR _this$[ebp]
  1688.   00076    8d 45 13     lea     eax, DWORD PTR _bTemp$[ebp]
  1689.   00079    50         push     eax
  1690.   0007a    8d 45 0b     lea     eax, DWORD PTR _chTemp$[ebp]
  1691.   0007d    50         push     eax
  1692.   0007e    e8 00 00 00 00     call     ?GetChar@CFileContext@GXU@@AAEJPADAA_N@Z ; GXU::CFileContext::GetChar
  1693.  
  1694. ; 222  :             if (FAILED(hr) || bTemp)
  1695.  
  1696.   00083    85 c0         test     eax, eax
  1697.   00085    7c 0c         jl     SHORT $e_Exit$56445
  1698.   00087    80 7d 13 00     cmp     BYTE PTR _bTemp$[ebp], 0
  1699.   0008b    75 06         jne     SHORT $e_Exit$56445
  1700.  
  1701. ; 223  :                 goto e_Exit;
  1702. ; 224  :         }
  1703. ; 225  :         while (chTemp != '\n');
  1704.  
  1705.   0008d    80 7d 0b 0a     cmp     BYTE PTR _chTemp$[ebp], 10 ; 0000000aH
  1706.   00091    75 e0         jne     SHORT $L56456
  1707. $e_Exit$56445:
  1708.   00093    5f         pop     edi
  1709.   00094    5e         pop     esi
  1710.   00095    5b         pop     ebx
  1711.  
  1712. ; 229  :     return hr;;
  1713. ; 230  : }
  1714.  
  1715.   00096    c9         leave
  1716.   00097    c2 0c 00     ret     12            ; 0000000cH
  1717. $L57001:
  1718.  
  1719. ; 203  :         {
  1720. ; 204  :             szBuffer[ichBuffer+1] = '\0';
  1721.  
  1722.   0009a    c6 44 3e 01 00     mov     BYTE PTR [esi+edi+1], 0
  1723.  
  1724. ; 226  :     }
  1725. ; 227  : 
  1726. ; 228  : e_Exit:
  1727.  
  1728.   0009f    eb f2         jmp     SHORT $e_Exit$56445
  1729. ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z ENDP        ; GXU::CFileContext::GetLine
  1730. _TEXT    ENDS
  1731. PUBLIC    ?GetCoVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z ; GXU::CParseOptionalArgs::GetCoVector3
  1732. ; Function compile flags: /Ogs
  1733. ;    COMDAT ?GetCoVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z
  1734. _TEXT    SEGMENT
  1735. _vTemp$ = -12                        ; size = 12
  1736. _iOptionalArg$ = 8                    ; size = 4
  1737. _pvVector$ = 12                        ; size = 4
  1738. ?GetCoVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z PROC NEAR ; GXU::CParseOptionalArgs::GetCoVector3, COMDAT
  1739. ; _this$ = ecx
  1740.  
  1741. ; 481  : }
  1742.  
  1743.   00000    8b ff         npad     2
  1744.  
  1745. ; 470  : {
  1746.  
  1747.   00002    55         push     ebp
  1748.   00003    8b ec         mov     ebp, esp
  1749.   00005    83 ec 0c     sub     esp, 12            ; 0000000cH
  1750.  
  1751. ; 471  :     HRESULT hr;
  1752. ; 472  : 
  1753. ; 473  :     D3DXVECTOR3 vTemp;
  1754. ; 474  :     hr = GetVector3(iOptionalArg, &vTemp);
  1755.  
  1756.   00008    8d 45 f4     lea     eax, DWORD PTR _vTemp$[ebp]
  1757.   0000b    50         push     eax
  1758.   0000c    ff 75 08     push     DWORD PTR _iOptionalArg$[ebp]
  1759.   0000f    e8 00 00 00 00     call     ?GetVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z ; GXU::CParseOptionalArgs::GetVector3
  1760.  
  1761. ; 475  :     if (FAILED(hr))
  1762.  
  1763.   00014    85 c0         test     eax, eax
  1764.  
  1765. ; 476  :         return hr;
  1766.  
  1767.   00016    7c 0f         jl     SHORT $L56609
  1768.   00018    56         push     esi
  1769.   00019    57         push     edi
  1770.  
  1771. ; 477  : 
  1772. ; 478  :     *pvVector = vTemp;
  1773.  
  1774.   0001a    8b 7d 0c     mov     edi, DWORD PTR _pvVector$[ebp]
  1775.   0001d    8d 75 f4     lea     esi, DWORD PTR _vTemp$[ebp]
  1776.   00020    a5         movsd
  1777.   00021    a5         movsd
  1778.   00022    a5         movsd
  1779.   00023    5f         pop     edi
  1780.  
  1781. ; 479  : 
  1782. ; 480  :     return S_OK;
  1783.  
  1784.   00024    33 c0         xor     eax, eax
  1785.   00026    5e         pop     esi
  1786. $L56609:
  1787.  
  1788. ; 481  : }
  1789.  
  1790.   00027    c9         leave
  1791.   00028    c2 08 00     ret     8
  1792. ?GetCoVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z ENDP ; GXU::CParseOptionalArgs::GetCoVector3
  1793. _TEXT    ENDS
  1794. PUBLIC    ?LoadCounts@GXU@@YAJPAVCFileContext@1@PAI11@Z    ; GXU::LoadCounts
  1795. EXTRN    _strtok:NEAR
  1796. EXTRN    _atol:NEAR
  1797. EXTRN    ___security_cookie:DWORD
  1798. EXTRN    @__security_check_cookie@4:NEAR
  1799. ; Function compile flags: /Ogs
  1800. ;    COMDAT ?LoadCounts@GXU@@YAJPAVCFileContext@1@PAI11@Z
  1801. _TEXT    SEGMENT
  1802. $T57014 = -52                        ; size = 4
  1803. $T57015 = -48                        ; size = 4
  1804. $T57012 = -44                        ; size = 4
  1805. _cVertices$ = -40                    ; size = 4
  1806. _cFaces$ = -36                        ; size = 4
  1807. _cCorners$ = -32                    ; size = 4
  1808. _bEOF$ = -25                        ; size = 1
  1809. _rgchBuf$ = -24                        ; size = 20
  1810. __$ArrayPad$ = -4                    ; size = 4
  1811. __$ReturnAddr$ = 4                    ; size = 4
  1812. _pfc$ = 8                        ; size = 4
  1813. _pcVertices$ = 12                    ; size = 4
  1814. _pcFaces$ = 16                        ; size = 4
  1815. _pcCorners$ = 20                    ; size = 4
  1816. ?LoadCounts@GXU@@YAJPAVCFileContext@1@PAI11@Z PROC NEAR    ; GXU::LoadCounts, COMDAT
  1817.  
  1818. ; 573  :     return hr;
  1819. ; 574  : }
  1820.  
  1821.   00000    8b ff         npad     2
  1822.  
  1823. ; 486  : {
  1824.  
  1825.   00002    55         push     ebp
  1826.   00003    8b ec         mov     ebp, esp
  1827.   00005    83 ec 34     sub     esp, 52            ; 00000034H
  1828.   00008    a1 00 00 00 00     mov     eax, DWORD PTR ___security_cookie
  1829.   0000d    8b 4d 08     mov     ecx, DWORD PTR _pfc$[ebp]
  1830.   00010    53         push     ebx
  1831.   00011    8b 5d 0c     mov     ebx, DWORD PTR _pcVertices$[ebp]
  1832.  
  1833. ; 487  :     HRESULT hr = S_OK;
  1834. ; 488  :     char rgchBuf[20];
  1835. ; 489  :     char *szHeader;
  1836. ; 490  :     UINT cFaces;
  1837. ; 491  :     UINT cVertices;
  1838. ; 492  :     UINT cCorners;
  1839. ; 493  :     char *szValue;
  1840. ; 494  :     UINT cNewValue;
  1841. ; 495  :     bool bEOF;
  1842. ; 496  : 
  1843. ; 497  :     GXASSERT((pcVertices != NULL) && (pcFaces != NULL) && (pcCorners != NULL));
  1844. ; 498  : 
  1845. ; 499  :     // initialize the counters
  1846. ; 500  :     *pcVertices = UINT_MAX;
  1847.  
  1848.   00014    83 0b ff     or     DWORD PTR [ebx], -1
  1849.   00017    89 45 fc     mov     DWORD PTR __$ArrayPad$[ebp], eax
  1850.  
  1851. ; 501  :     *pcFaces = UINT_MAX;
  1852. ; 502  :     *pcCorners = UINT_MAX;
  1853. ; 503  : 
  1854. ; 504  : 
  1855. ; 505  :     cFaces = 0;
  1856.  
  1857.   0001a    33 c0         xor     eax, eax
  1858.   0001c    56         push     esi
  1859.   0001d    8b 75 10     mov     esi, DWORD PTR _pcFaces$[ebp]
  1860.   00020    83 0e ff     or     DWORD PTR [esi], -1
  1861.   00023    57         push     edi
  1862.   00024    8b 7d 14     mov     edi, DWORD PTR _pcCorners$[ebp]
  1863.   00027    83 0f ff     or     DWORD PTR [edi], -1
  1864.   0002a    89 45 dc     mov     DWORD PTR _cFaces$[ebp], eax
  1865.  
  1866. ; 506  :     cVertices = 0;
  1867.  
  1868.   0002d    89 45 d8     mov     DWORD PTR _cVertices$[ebp], eax
  1869.  
  1870. ; 507  :     cCorners = 0;
  1871.  
  1872.   00030    89 45 e0     mov     DWORD PTR _cCorners$[ebp], eax
  1873.  
  1874. ; 508  : 
  1875. ; 509  :     // get the counts of the faces, vertices, etc
  1876. ; 510  :     while ( 1 )
  1877. ; 511  :     {
  1878. ; 512  :         hr = pfc->GetLine(rgchBuf, sizeof(rgchBuf), bEOF);
  1879.  
  1880.   00033    8d 45 e7     lea     eax, DWORD PTR _bEOF$[ebp]
  1881.   00036    50         push     eax
  1882.   00037    6a 14         push     20            ; 00000014H
  1883.   00039    8d 45 e8     lea     eax, DWORD PTR _rgchBuf$[ebp]
  1884.   0003c    50         push     eax
  1885.   0003d    89 4d d4     mov     DWORD PTR $T57012[ebp], ecx
  1886.   00040    89 75 cc     mov     DWORD PTR $T57014[ebp], esi
  1887.   00043    89 7d d0     mov     DWORD PTR $T57015[ebp], edi
  1888.   00046    e8 00 00 00 00     call     ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z ; GXU::CFileContext::GetLine
  1889.  
  1890. ; 513  :         if (FAILED(hr))
  1891.  
  1892.   0004b    85 c0         test     eax, eax
  1893.   0004d    0f 8c 52 01 00
  1894.     00         jl     $e_Exit$56637
  1895.   00053    eb 06         jmp     SHORT $L56633
  1896. $L57035:
  1897.   00055    8b 7d d0     mov     edi, DWORD PTR $T57015[ebp]
  1898.   00058    8b 75 cc     mov     esi, DWORD PTR $T57014[ebp]
  1899. $L56633:
  1900.  
  1901. ; 516  :         }
  1902. ; 517  : 
  1903. ; 518  :         if (bEOF)
  1904.  
  1905.   0005b    80 7d e7 00     cmp     BYTE PTR _bEOF$[ebp], 0
  1906.   0005f    0f 85 22 01 00
  1907.     00         jne     $L57019
  1908.  
  1909. ; 519  :         {
  1910. ; 520  :             break;  // EOF, break out of loop
  1911. ; 521  :         }
  1912. ; 522  : 
  1913. ; 523  :         szHeader = strtok( rgchBuf, x_szSeparators );
  1914.  
  1915.   00065    ff 35 00 00 00
  1916.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  1917.   0006b    8d 45 e8     lea     eax, DWORD PTR _rgchBuf$[ebp]
  1918.   0006e    50         push     eax
  1919.   0006f    e8 00 00 00 00     call     _strtok
  1920.   00074    8b f0         mov     esi, eax
  1921.  
  1922. ; 524  : 
  1923. ; 525  :         // if the token is NULL, go onto the next line
  1924. ; 526  :         if (szHeader != NULL)
  1925.  
  1926.   00076    85 f6         test     esi, esi
  1927.   00078    59         pop     ecx
  1928.   00079    59         pop     ecx
  1929.   0007a    0f 84 eb 00 00
  1930.     00         je     $L57034
  1931.  
  1932. ; 527  :         {
  1933. ; 528  :             // add the line to the proper count if it fits the profile
  1934. ; 529  :             if (strcmp(szHeader, x_szVertex) == 0)
  1935.  
  1936.   00080    8b 0d 00 00 00
  1937.     00         mov     ecx, DWORD PTR ?x_szVertex@GXU@@3PBDB ; GXU::x_szVertex
  1938.   00086    8b fe         mov     edi, esi
  1939. $L57022:
  1940.   00088    8a 07         mov     al, BYTE PTR [edi]
  1941.   0008a    8a d0         mov     dl, al
  1942.   0008c    3a 01         cmp     al, BYTE PTR [ecx]
  1943.   0008e    75 1a         jne     SHORT $L57023
  1944.   00090    84 d2         test     dl, dl
  1945.   00092    74 12         je     SHORT $L57024
  1946.   00094    8a 47 01     mov     al, BYTE PTR [edi+1]
  1947.   00097    8a d0         mov     dl, al
  1948.   00099    3a 41 01     cmp     al, BYTE PTR [ecx+1]
  1949.   0009c    75 0c         jne     SHORT $L57023
  1950.   0009e    47         inc     edi
  1951.   0009f    47         inc     edi
  1952.   000a0    41         inc     ecx
  1953.   000a1    41         inc     ecx
  1954.   000a2    84 d2         test     dl, dl
  1955.   000a4    75 e2         jne     SHORT $L57022
  1956. $L57024:
  1957.   000a6    33 c9         xor     ecx, ecx
  1958.   000a8    eb 05         jmp     SHORT $L57025
  1959. $L57023:
  1960.   000aa    1b c9         sbb     ecx, ecx
  1961.   000ac    83 d9 ff     sbb     ecx, -1
  1962. $L57025:
  1963.   000af    85 c9         test     ecx, ecx
  1964.   000b1    75 2e         jne     SHORT $L56641
  1965.  
  1966. ; 530  :             {
  1967. ; 531  :                 szValue = strtok( NULL, x_szSeparators );
  1968.  
  1969.   000b3    ff 35 00 00 00
  1970.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  1971.   000b9    51         push     ecx
  1972.   000ba    e8 00 00 00 00     call     _strtok
  1973.  
  1974. ; 532  :                 if (szValue == NULL)
  1975.  
  1976.   000bf    85 c0         test     eax, eax
  1977.   000c1    59         pop     ecx
  1978.   000c2    59         pop     ecx
  1979.   000c3    0f 84 d7 00 00
  1980.     00         je     $L57021
  1981.  
  1982. ; 533  :                 {
  1983. ; 534  :                     hr = E_FAIL;
  1984. ; 535  :                     goto e_Exit;
  1985. ; 536  :                 }
  1986. ; 537  : 
  1987. ; 538  :                 cNewValue = atol(szValue);
  1988.  
  1989.   000c9    50         push     eax
  1990.   000ca    e8 00 00 00 00     call     _atol
  1991.  
  1992. ; 539  :                 if (cVertices < cNewValue)
  1993.  
  1994.   000cf    39 45 d8     cmp     DWORD PTR _cVertices$[ebp], eax
  1995.   000d2    59         pop     ecx
  1996.   000d3    0f 83 92 00 00
  1997.     00         jae     $L57034
  1998.  
  1999. ; 540  :                     cVertices = cNewValue;
  2000.  
  2001.   000d9    89 45 d8     mov     DWORD PTR _cVertices$[ebp], eax
  2002.  
  2003. ; 541  :             }
  2004. ; 542  :             else if (strcmp(szHeader, x_szFace) == 0)
  2005.  
  2006.   000dc    e9 8a 00 00 00     jmp     $L57034
  2007. $L56641:
  2008.   000e1    8b 0d 00 00 00
  2009.     00         mov     ecx, DWORD PTR ?x_szFace@GXU@@3PBDB ; GXU::x_szFace
  2010.   000e7    8b fe         mov     edi, esi
  2011. $L57026:
  2012.   000e9    8a 07         mov     al, BYTE PTR [edi]
  2013.   000eb    8a d0         mov     dl, al
  2014.   000ed    3a 01         cmp     al, BYTE PTR [ecx]
  2015.   000ef    75 1a         jne     SHORT $L57027
  2016.   000f1    84 d2         test     dl, dl
  2017.   000f3    74 12         je     SHORT $L57028
  2018.   000f5    8a 47 01     mov     al, BYTE PTR [edi+1]
  2019.   000f8    8a d0         mov     dl, al
  2020.   000fa    3a 41 01     cmp     al, BYTE PTR [ecx+1]
  2021.   000fd    75 0c         jne     SHORT $L57027
  2022.   000ff    47         inc     edi
  2023.   00100    47         inc     edi
  2024.   00101    41         inc     ecx
  2025.   00102    41         inc     ecx
  2026.   00103    84 d2         test     dl, dl
  2027.   00105    75 e2         jne     SHORT $L57026
  2028. $L57028:
  2029.   00107    33 c9         xor     ecx, ecx
  2030.   00109    eb 05         jmp     SHORT $L57029
  2031. $L57027:
  2032.   0010b    1b c9         sbb     ecx, ecx
  2033.   0010d    83 d9 ff     sbb     ecx, -1
  2034. $L57029:
  2035.   00110    85 c9         test     ecx, ecx
  2036.   00112    75 23         jne     SHORT $L56647
  2037.  
  2038. ; 543  :             {
  2039. ; 544  :                 szValue = strtok( NULL, x_szSeparators );
  2040.  
  2041.   00114    ff 35 00 00 00
  2042.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2043.   0011a    51         push     ecx
  2044.   0011b    e8 00 00 00 00     call     _strtok
  2045.  
  2046. ; 545  :                 if (szValue == NULL)
  2047.  
  2048.   00120    85 c0         test     eax, eax
  2049.   00122    59         pop     ecx
  2050.   00123    59         pop     ecx
  2051.   00124    74 7a         je     SHORT $L57021
  2052.  
  2053. ; 548  :                     goto e_Exit;
  2054. ; 549  :                 }
  2055. ; 550  : 
  2056. ; 551  :                 cNewValue = atol(szValue);
  2057.  
  2058.   00126    50         push     eax
  2059.   00127    e8 00 00 00 00     call     _atol
  2060.  
  2061. ; 552  :                 if (cFaces < cNewValue)
  2062.  
  2063.   0012c    39 45 dc     cmp     DWORD PTR _cFaces$[ebp], eax
  2064.   0012f    59         pop     ecx
  2065.   00130    73 39         jae     SHORT $L57034
  2066.  
  2067. ; 553  :                     cFaces = cNewValue;
  2068.  
  2069.   00132    89 45 dc     mov     DWORD PTR _cFaces$[ebp], eax
  2070.  
  2071. ; 554  :             }
  2072. ; 555  :             else if (strcmp(szHeader, x_szCorner) == 0)
  2073.  
  2074.   00135    eb 34         jmp     SHORT $L57034
  2075. $L56647:
  2076.   00137    8b 0d 00 00 00
  2077.     00         mov     ecx, DWORD PTR ?x_szCorner@GXU@@3PBDB ; GXU::x_szCorner
  2078. $L57030:
  2079.   0013d    8a 16         mov     dl, BYTE PTR [esi]
  2080.   0013f    8a c2         mov     al, dl
  2081.   00141    3a 11         cmp     dl, BYTE PTR [ecx]
  2082.   00143    75 1a         jne     SHORT $L57031
  2083.   00145    84 c0         test     al, al
  2084.   00147    74 12         je     SHORT $L57032
  2085.   00149    8a 56 01     mov     dl, BYTE PTR [esi+1]
  2086.   0014c    8a c2         mov     al, dl
  2087.   0014e    3a 51 01     cmp     dl, BYTE PTR [ecx+1]
  2088.   00151    75 0c         jne     SHORT $L57031
  2089.   00153    46         inc     esi
  2090.   00154    46         inc     esi
  2091.   00155    41         inc     ecx
  2092.   00156    41         inc     ecx
  2093.   00157    84 c0         test     al, al
  2094.   00159    75 e2         jne     SHORT $L57030
  2095. $L57032:
  2096.   0015b    33 c0         xor     eax, eax
  2097.   0015d    eb 05         jmp     SHORT $L57033
  2098. $L57031:
  2099.   0015f    1b c0         sbb     eax, eax
  2100.   00161    83 d8 ff     sbb     eax, -1
  2101. $L57033:
  2102.   00164    85 c0         test     eax, eax
  2103.   00166    75 03         jne     SHORT $L57034
  2104.  
  2105. ; 556  :             {
  2106. ; 557  :                 cCorners += 1;
  2107.  
  2108.   00168    ff 45 e0     inc     DWORD PTR _cCorners$[ebp]
  2109. $L57034:
  2110.  
  2111. ; 508  : 
  2112. ; 509  :     // get the counts of the faces, vertices, etc
  2113. ; 510  :     while ( 1 )
  2114. ; 511  :     {
  2115. ; 512  :         hr = pfc->GetLine(rgchBuf, sizeof(rgchBuf), bEOF);
  2116.  
  2117.   0016b    8b 4d d4     mov     ecx, DWORD PTR $T57012[ebp]
  2118.   0016e    8d 45 e7     lea     eax, DWORD PTR _bEOF$[ebp]
  2119.   00171    50         push     eax
  2120.   00172    6a 14         push     20            ; 00000014H
  2121.   00174    8d 45 e8     lea     eax, DWORD PTR _rgchBuf$[ebp]
  2122.   00177    50         push     eax
  2123.   00178    e8 00 00 00 00     call     ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z ; GXU::CFileContext::GetLine
  2124.  
  2125. ; 513  :         if (FAILED(hr))
  2126.  
  2127.   0017d    85 c0         test     eax, eax
  2128.   0017f    0f 8d d0 fe ff
  2129.     ff         jge     $L57035
  2130.  
  2131. ; 514  :         {
  2132. ; 515  :             goto e_Exit;
  2133.  
  2134.   00185    eb 1e         jmp     SHORT $e_Exit$56637
  2135. $L57019:
  2136.  
  2137. ; 558  :             }
  2138. ; 559  : 
  2139. ; 560  :         }
  2140. ; 561  :     }
  2141. ; 562  : 
  2142. ; 563  :     *pcFaces = cFaces;
  2143.  
  2144.   00187    8b 45 dc     mov     eax, DWORD PTR _cFaces$[ebp]
  2145.  
  2146. ; 564  :     *pcVertices = cVertices;
  2147. ; 565  :     *pcCorners = cCorners;
  2148. ; 566  : 
  2149. ; 567  :     // rewind
  2150. ; 568  :     hr = pfc->Rewind();
  2151.  
  2152.   0018a    8b 4d d4     mov     ecx, DWORD PTR $T57012[ebp]
  2153.   0018d    89 06         mov     DWORD PTR [esi], eax
  2154.   0018f    8b 45 d8     mov     eax, DWORD PTR _cVertices$[ebp]
  2155.   00192    89 03         mov     DWORD PTR [ebx], eax
  2156.   00194    8b 45 e0     mov     eax, DWORD PTR _cCorners$[ebp]
  2157.   00197    89 07         mov     DWORD PTR [edi], eax
  2158.   00199    e8 00 00 00 00     call     ?Rewind@CFileContext@GXU@@QAEJXZ ; GXU::CFileContext::Rewind
  2159.  
  2160. ; 569  :     if (FAILED(hr))
  2161. ; 570  :         goto e_Exit;
  2162. ; 571  : 
  2163. ; 572  : e_Exit:
  2164.  
  2165.   0019e    eb 05         jmp     SHORT $e_Exit$56637
  2166. $L57021:
  2167.  
  2168. ; 546  :                 {
  2169. ; 547  :                     hr = E_FAIL;
  2170.  
  2171.   001a0    b8 05 40 00 80     mov     eax, -2147467259    ; 80004005H
  2172. $e_Exit$56637:
  2173.  
  2174. ; 573  :     return hr;
  2175. ; 574  : }
  2176.  
  2177.   001a5    8b 4d fc     mov     ecx, DWORD PTR __$ArrayPad$[ebp]
  2178.   001a8    5f         pop     edi
  2179.   001a9    5e         pop     esi
  2180.   001aa    5b         pop     ebx
  2181.   001ab    e8 00 00 00 00     call     @__security_check_cookie@4
  2182.   001b0    c9         leave
  2183.   001b1    c3         ret     0
  2184. ?LoadCounts@GXU@@YAJPAVCFileContext@1@PAI11@Z ENDP    ; GXU::LoadCounts
  2185. _TEXT    ENDS
  2186. PUBLIC    ?LoadVertex@GXU@@YAJPADPAUSLoadVertex@1@IAA_N@Z    ; GXU::LoadVertex
  2187. EXTRN    _atof:NEAR
  2188. ; Function compile flags: /Ogs
  2189. ;    COMDAT ?LoadVertex@GXU@@YAJPADPAUSLoadVertex@1@IAA_N@Z
  2190. _TEXT    SEGMENT
  2191. _ParseArgs$56696 = -96                    ; size = 68
  2192. $T57040 = -28                        ; size = 12
  2193. $T57044 = -16                        ; size = 4
  2194. _szPointX$ = -12                    ; size = 4
  2195. $T57045 = -8                        ; size = 4
  2196. _szPointY$ = -8                        ; size = 4
  2197. _hr$ = -4                        ; size = 4
  2198. _szLineBuf$ = 8                        ; size = 4
  2199. _rglvVertices$ = 12                    ; size = 4
  2200. _cVertices$ = 16                    ; size = 4
  2201. _bNormalFound$ = 20                    ; size = 4
  2202. ?LoadVertex@GXU@@YAJPADPAUSLoadVertex@1@IAA_N@Z PROC NEAR ; GXU::LoadVertex, COMDAT
  2203.  
  2204. ; 673  : }
  2205.  
  2206.   00000    8b ff         npad     2
  2207.  
  2208. ; 579  : {
  2209.  
  2210.   00002    55         push     ebp
  2211.   00003    8b ec         mov     ebp, esp
  2212.   00005    83 ec 60     sub     esp, 96            ; 00000060H
  2213.   00008    56         push     esi
  2214.   00009    57         push     edi
  2215.  
  2216. ; 580  :     HRESULT hr = S_OK;
  2217. ; 581  :     char *szToken;
  2218. ; 582  :     char *szPointId;
  2219. ; 583  :     char *szPointX;
  2220. ; 584  :     char *szPointY;
  2221. ; 585  :     char *szPointZ;
  2222. ; 586  :     char *szHeader;
  2223. ; 587  :     UINT ulPointId;
  2224. ; 588  :     UINT iOptionalArg;
  2225. ; 589  : 
  2226. ; 590  : 
  2227. ; 591  :     // the header should always be present, checked before calling this function
  2228. ; 592  :     szHeader = strtok( szLineBuf, x_szSeparators );
  2229.  
  2230.   0000a    ff 35 00 00 00
  2231.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2232.   00010    33 ff         xor     edi, edi
  2233.   00012    ff 75 08     push     DWORD PTR _szLineBuf$[ebp]
  2234.   00015    89 7d fc     mov     DWORD PTR _hr$[ebp], edi
  2235.   00018    e8 00 00 00 00     call     _strtok
  2236.  
  2237. ; 593  :     GXASSERT((szHeader != NULL) && strcmp(szHeader, x_szVertex) == 0);
  2238. ; 594  : 
  2239. ; 595  :     // get the number for the count
  2240. ; 596  :     szPointId = strtok( NULL, x_szSeparators );
  2241.  
  2242.   0001d    ff 35 00 00 00
  2243.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2244.   00023    57         push     edi
  2245.   00024    e8 00 00 00 00     call     _strtok
  2246.   00029    8b f0         mov     esi, eax
  2247.   0002b    83 c4 10     add     esp, 16            ; 00000010H
  2248.  
  2249. ; 597  :     if (szPointId == NULL)
  2250.  
  2251.   0002e    3b f7         cmp     esi, edi
  2252.   00030    75 0c         jne     SHORT $L56674
  2253. $L57061:
  2254.  
  2255. ; 598  :     {
  2256. ; 599  :         hr = E_FAIL;
  2257.  
  2258.   00032    c7 45 fc 05 40
  2259.     00 80         mov     DWORD PTR _hr$[ebp], -2147467259 ; 80004005H
  2260.  
  2261. ; 600  :         goto e_Exit;
  2262.  
  2263.   00039    e9 33 01 00 00     jmp     $e_Exit$56676
  2264. $L56674:
  2265.  
  2266. ; 601  :     }
  2267. ; 602  : 
  2268. ; 603  :     // load the various parts of the vertex from the strings
  2269. ; 604  :     szPointX = strtok( NULL, x_szSeparators );
  2270.  
  2271.   0003e    ff 35 00 00 00
  2272.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2273.   00044    57         push     edi
  2274.   00045    e8 00 00 00 00     call     _strtok
  2275.  
  2276. ; 605  :     if (szPointX == NULL)
  2277.  
  2278.   0004a    3b c7         cmp     eax, edi
  2279.   0004c    59         pop     ecx
  2280.   0004d    59         pop     ecx
  2281.   0004e    89 45 f4     mov     DWORD PTR _szPointX$[ebp], eax
  2282.  
  2283. ; 666  :                     goto e_Exit;
  2284. ; 667  :             }
  2285. ; 668  :         }
  2286. ; 669  :     }
  2287. ; 670  : 
  2288. ; 671  : e_Exit:
  2289.  
  2290.   00051    74 df         je     SHORT $L57061
  2291.   00053    ff 35 00 00 00
  2292.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2293.   00059    57         push     edi
  2294.   0005a    e8 00 00 00 00     call     _strtok
  2295.   0005f    3b c7         cmp     eax, edi
  2296.   00061    59         pop     ecx
  2297.   00062    59         pop     ecx
  2298.   00063    89 45 f8     mov     DWORD PTR _szPointY$[ebp], eax
  2299.   00066    74 ca         je     SHORT $L57061
  2300.   00068    53         push     ebx
  2301.   00069    ff 35 00 00 00
  2302.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2303.   0006f    57         push     edi
  2304.   00070    e8 00 00 00 00     call     _strtok
  2305.   00075    8b d8         mov     ebx, eax
  2306.   00077    3b df         cmp     ebx, edi
  2307.   00079    59         pop     ecx
  2308.   0007a    59         pop     ecx
  2309.   0007b    0f 84 e8 00 00
  2310.     00         je     $L56688
  2311.   00081    56         push     esi
  2312.   00082    e8 00 00 00 00     call     _atoi
  2313.   00087    8b f0         mov     esi, eax
  2314.   00089    3b f7         cmp     esi, edi
  2315.   0008b    59         pop     ecx
  2316.   0008c    0f 84 d7 00 00
  2317.     00         je     $L56688
  2318.  
  2319. ; 606  :     {
  2320. ; 607  :         hr = E_FAIL;
  2321. ; 608  :         goto e_Exit;
  2322. ; 609  :     }
  2323. ; 610  : 
  2324. ; 611  :     szPointY = strtok( NULL, x_szSeparators );
  2325. ; 612  :     if (szPointY == NULL)
  2326. ; 613  :     {
  2327. ; 614  :         hr = E_FAIL;
  2328. ; 615  :         goto e_Exit;
  2329. ; 616  :     }
  2330. ; 617  : 
  2331. ; 618  :     szPointZ = strtok( NULL, x_szSeparators );
  2332. ; 619  :     if (szPointZ == NULL)
  2333. ; 620  :     {
  2334. ; 621  :         hr = E_FAIL;
  2335. ; 622  :         goto e_Exit;
  2336. ; 623  :     }
  2337. ; 624  : 
  2338. ; 625  :     ulPointId = atoi(szPointId);
  2339. ; 626  :     if ((ulPointId == 0) || (ulPointId > cVertices))
  2340.  
  2341.   00092    3b 75 10     cmp     esi, DWORD PTR _cVertices$[ebp]
  2342.   00095    0f 87 ce 00 00
  2343.     00         ja     $L56688
  2344.  
  2345. ; 629  :         goto e_Exit;
  2346. ; 630  :     }
  2347. ; 631  : 
  2348. ; 632  :     // convert from one based to zero based
  2349. ; 633  :     ulPointId -= 1;
  2350. ; 634  : 
  2351. ; 635  :     // UNDONE - handle errors by not using atof
  2352. ; 636  :     rglvVertices[ulPointId].m_vPos = D3DXVECTOR3((float)atof(szPointX), (float)atof(szPointY), (float)atof(szPointZ));
  2353.  
  2354.   0009b    53         push     ebx
  2355.   0009c    4e         dec     esi
  2356.   0009d    e8 00 00 00 00     call     _atof
  2357.   000a2    d9 5d f0     fstp     DWORD PTR $T57044[ebp]
  2358.   000a5    ff 75 f8     push     DWORD PTR _szPointY$[ebp]
  2359.   000a8    e8 00 00 00 00     call     _atof
  2360.   000ad    d9 5d f8     fstp     DWORD PTR $T57045[ebp]
  2361.   000b0    ff 75 f4     push     DWORD PTR _szPointX$[ebp]
  2362.   000b3    e8 00 00 00 00     call     _atof
  2363.   000b8    6b f6 44     imul     esi, 68            ; 00000044H
  2364.   000bb    d9 5d e4     fstp     DWORD PTR $T57040[ebp]
  2365.   000be    8b 45 f8     mov     eax, DWORD PTR $T57045[ebp]
  2366.   000c1    89 45 e8     mov     DWORD PTR $T57040[ebp+4], eax
  2367.   000c4    8b 45 f0     mov     eax, DWORD PTR $T57044[ebp]
  2368.   000c7    89 45 ec     mov     DWORD PTR $T57040[ebp+8], eax
  2369.   000ca    8b 45 0c     mov     eax, DWORD PTR _rglvVertices$[ebp]
  2370.   000cd    8d 1c 06     lea     ebx, DWORD PTR [esi+eax]
  2371.   000d0    8d 75 e4     lea     esi, DWORD PTR $T57040[ebp]
  2372.   000d3    8b fb         mov     edi, ebx
  2373.   000d5    a5         movsd
  2374.   000d6    a5         movsd
  2375.   000d7    a5         movsd
  2376.  
  2377. ; 637  : 
  2378. ; 638  :     // look optional information
  2379. ; 639  :     szToken = strtok( NULL, "}" );
  2380.  
  2381.   000d8    68 00 00 00 00     push     OFFSET FLAT:??_C@_01CELHOKLL@?$HN?$AA@
  2382.   000dd    33 ff         xor     edi, edi
  2383.   000df    57         push     edi
  2384.   000e0    e8 00 00 00 00     call     _strtok
  2385.   000e5    83 c4 14     add     esp, 20            ; 00000014H
  2386.  
  2387. ; 640  :     if (szToken != NULL)
  2388.  
  2389.   000e8    3b c7         cmp     eax, edi
  2390.   000ea    0f 84 80 00 00
  2391.     00         je     $L57060
  2392.  
  2393. ; 641  :     {
  2394. ; 642  :         CParseOptionalArgs ParseArgs;
  2395. ; 643  : 
  2396. ; 644  :         // parse the optional information, into an wonder of all wonders, a readable form
  2397. ; 645  :         hr = ParseArgs.Parse(szToken);
  2398.  
  2399.   000f0    50         push     eax
  2400.   000f1    8d 4d a0     lea     ecx, DWORD PTR _ParseArgs$56696[ebp]
  2401.   000f4    89 7d e0     mov     DWORD PTR _ParseArgs$56696[ebp+64], edi
  2402.   000f7    e8 00 00 00 00     call     ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z ; GXU::CParseOptionalArgs::Parse
  2403.  
  2404. ; 646  :         if (FAILED(hr))
  2405.  
  2406.   000fc    3b c7         cmp     eax, edi
  2407.   000fe    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  2408.   00101    7c 6d         jl     SHORT $L57060
  2409.  
  2410. ; 647  :         {
  2411. ; 648  :             goto e_Exit;
  2412. ; 649  :         }
  2413. ; 650  : 
  2414. ; 651  :         // loop over all the args, getting the info for the understood items
  2415. ; 652  :         for (iOptionalArg = 0; iOptionalArg < ParseArgs.COptionalArgs(); iOptionalArg++)
  2416.  
  2417.   00103    39 7d e0     cmp     DWORD PTR _ParseArgs$56696[ebp+64], edi
  2418.   00106    76 68         jbe     SHORT $L57060
  2419. $L57059:
  2420.  
  2421. ; 653  :         {
  2422. ; 654  :             if (ParseArgs.BCompareArg(iOptionalArg, x_szNormal))
  2423.  
  2424.   00108    ff 35 00 00 00
  2425.     00         push     DWORD PTR ?x_szNormal@GXU@@3PBDB ; GXU::x_szNormal
  2426.   0010e    8d 4d a0     lea     ecx, DWORD PTR _ParseArgs$56696[ebp]
  2427.   00111    57         push     edi
  2428.   00112    e8 00 00 00 00     call     ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ; GXU::CParseOptionalArgs::BCompareArg
  2429.   00117    84 c0         test     al, al
  2430.  
  2431. ; 655  :             {
  2432. ; 656  :                 hr = ParseArgs.GetCoVector3(iOptionalArg, &rglvVertices[ulPointId].m_vNormal);
  2433.  
  2434.   00119    8d 4d a0     lea     ecx, DWORD PTR _ParseArgs$56696[ebp]
  2435.   0011c    74 1f         je     SHORT $L56703
  2436.   0011e    8d 73 24     lea     esi, DWORD PTR [ebx+36]
  2437.   00121    56         push     esi
  2438.   00122    57         push     edi
  2439.   00123    e8 00 00 00 00     call     ?GetCoVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z ; GXU::CParseOptionalArgs::GetCoVector3
  2440.  
  2441. ; 657  :                 if (FAILED(hr))
  2442.  
  2443.   00128    85 c0         test     eax, eax
  2444.   0012a    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  2445.   0012d    7c 41         jl     SHORT $L57060
  2446.  
  2447. ; 658  :                     goto e_Exit;
  2448. ; 659  : 
  2449. ; 660  :                 bNormalFound = NotZero(rglvVertices[ulPointId].m_vNormal);
  2450.  
  2451.   0012f    56         push     esi
  2452.   00130    e8 00 00 00 00     call     ?NotZero@GXU@@YA_NAAUD3DXVECTOR3@@@Z ; GXU::NotZero
  2453.   00135    59         pop     ecx
  2454.   00136    8b 4d 14     mov     ecx, DWORD PTR _bNormalFound$[ebp]
  2455.   00139    88 01         mov     BYTE PTR [ecx], al
  2456.  
  2457. ; 661  :             }
  2458. ; 662  :             else if (ParseArgs.BCompareArg(iOptionalArg, x_szUv))
  2459.  
  2460.   0013b    eb 24         jmp     SHORT $L56701
  2461. $L56703:
  2462.   0013d    ff 35 00 00 00
  2463.     00         push     DWORD PTR ?x_szUv@GXU@@3PBDB ; GXU::x_szUv
  2464.   00143    57         push     edi
  2465.   00144    e8 00 00 00 00     call     ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ; GXU::CParseOptionalArgs::BCompareArg
  2466.   00149    84 c0         test     al, al
  2467.   0014b    74 14         je     SHORT $L56701
  2468.  
  2469. ; 663  :             {
  2470. ; 664  :                 hr = ParseArgs.GetPoint2(iOptionalArg, &rglvVertices[ulPointId].m_uvTex1);
  2471.  
  2472.   0014d    8d 43 1c     lea     eax, DWORD PTR [ebx+28]
  2473.   00150    50         push     eax
  2474.   00151    57         push     edi
  2475.   00152    8d 4d a0     lea     ecx, DWORD PTR _ParseArgs$56696[ebp]
  2476.   00155    e8 00 00 00 00     call     ?GetPoint2@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR2@@@Z ; GXU::CParseOptionalArgs::GetPoint2
  2477.  
  2478. ; 665  :                 if (FAILED(hr))
  2479.  
  2480.   0015a    85 c0         test     eax, eax
  2481.   0015c    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  2482.   0015f    7c 0f         jl     SHORT $L57060
  2483. $L56701:
  2484.  
  2485. ; 647  :         {
  2486. ; 648  :             goto e_Exit;
  2487. ; 649  :         }
  2488. ; 650  : 
  2489. ; 651  :         // loop over all the args, getting the info for the understood items
  2490. ; 652  :         for (iOptionalArg = 0; iOptionalArg < ParseArgs.COptionalArgs(); iOptionalArg++)
  2491.  
  2492.   00161    47         inc     edi
  2493.   00162    3b 7d e0     cmp     edi, DWORD PTR _ParseArgs$56696[ebp+64]
  2494.   00165    72 a1         jb     SHORT $L57059
  2495.  
  2496. ; 665  :                 if (FAILED(hr))
  2497.  
  2498.   00167    eb 07         jmp     SHORT $L57060
  2499. $L56688:
  2500.  
  2501. ; 627  :     {
  2502. ; 628  :         hr = E_FAIL;
  2503.  
  2504.   00169    c7 45 fc 05 40
  2505.     00 80         mov     DWORD PTR _hr$[ebp], -2147467259 ; 80004005H
  2506. $L57060:
  2507.   00170    5b         pop     ebx
  2508. $e_Exit$56676:
  2509.  
  2510. ; 672  :     return hr;
  2511.  
  2512.   00171    8b 45 fc     mov     eax, DWORD PTR _hr$[ebp]
  2513.   00174    5f         pop     edi
  2514.   00175    5e         pop     esi
  2515.  
  2516. ; 673  : }
  2517.  
  2518.   00176    c9         leave
  2519.   00177    c3         ret     0
  2520. ?LoadVertex@GXU@@YAJPADPAUSLoadVertex@1@IAA_N@Z ENDP    ; GXU::LoadVertex
  2521. _TEXT    ENDS
  2522. PUBLIC    ?LoadFace@GXU@@YAJPADIPAUSLoadedFace@1@@Z    ; GXU::LoadFace
  2523. PUBLIC    ??_C@_02KGHIDFGE@?$HN?6?$AA@            ; `string'
  2524. ;    COMDAT ??_C@_02KGHIDFGE@?$HN?6?$AA@
  2525. CONST    SEGMENT
  2526. ??_C@_02KGHIDFGE@?$HN?6?$AA@ DB '}', 0aH, 00H        ; `string'
  2527. ; Function compile flags: /Ogs
  2528. CONST    ENDS
  2529. ;    COMDAT ?LoadFace@GXU@@YAJPADIPAUSLoadedFace@1@@Z
  2530. _TEXT    SEGMENT
  2531. _ParseArgs$56748 = -76                    ; size = 68
  2532. $T57063 = -52                        ; size = 44
  2533. _szPoint1$ = -8                        ; size = 4
  2534. _hr$ = -4                        ; size = 4
  2535. _szLineBuf$ = 8                        ; size = 4
  2536. _cFacesMax$ = 12                    ; size = 4
  2537. _rgFaces$ = 16                        ; size = 4
  2538. ?LoadFace@GXU@@YAJPADIPAUSLoadedFace@1@@Z PROC NEAR    ; GXU::LoadFace, COMDAT
  2539.  
  2540. ; 775  : }
  2541.  
  2542.   00000    8b ff         npad     2
  2543.  
  2544. ; 677  : {
  2545.  
  2546.   00002    55         push     ebp
  2547.   00003    8b ec         mov     ebp, esp
  2548.   00005    83 ec 4c     sub     esp, 76            ; 0000004cH
  2549.   00008    56         push     esi
  2550.   00009    57         push     edi
  2551.  
  2552. ; 678  :     HRESULT hr = S_OK;
  2553. ; 679  :     char *szToken;
  2554. ; 680  :     char *szFaceId;
  2555. ; 681  :     char *szPoint1;
  2556. ; 682  :     char *szPoint2;
  2557. ; 683  :     char *szPoint3;
  2558. ; 684  :     char *szHeader;
  2559. ; 685  :     UINT ulFaceId;
  2560. ; 686  :     UINT iOptionalArg;
  2561. ; 687  : 
  2562. ; 688  :     szHeader = strtok( szLineBuf, x_szSeparators );
  2563.  
  2564.   0000a    ff 35 00 00 00
  2565.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2566.   00010    33 f6         xor     esi, esi
  2567.   00012    ff 75 08     push     DWORD PTR _szLineBuf$[ebp]
  2568.   00015    89 75 fc     mov     DWORD PTR _hr$[ebp], esi
  2569.   00018    e8 00 00 00 00     call     _strtok
  2570.  
  2571. ; 689  :     GXASSERT((szHeader != NULL) && strcmp(szHeader, x_szFace) == 0);
  2572. ; 690  : 
  2573. ; 691  : 
  2574. ; 692  :     // get the number for the count
  2575. ; 693  :     szFaceId = strtok( NULL, x_szSeparators );
  2576.  
  2577.   0001d    ff 35 00 00 00
  2578.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2579.   00023    56         push     esi
  2580.   00024    e8 00 00 00 00     call     _strtok
  2581.   00029    83 c4 10     add     esp, 16            ; 00000010H
  2582.  
  2583. ; 694  :     if (szFaceId == NULL)
  2584.  
  2585.   0002c    3b c6         cmp     eax, esi
  2586.   0002e    75 0c         jne     SHORT $L56728
  2587.  
  2588. ; 695  :     {
  2589. ; 696  :         hr = E_FAIL;
  2590.  
  2591.   00030    c7 45 fc 05 40
  2592.     00 80         mov     DWORD PTR _hr$[ebp], -2147467259 ; 80004005H
  2593.  
  2594. ; 697  :         goto e_Exit;
  2595.  
  2596.   00037    e9 29 01 00 00     jmp     $e_Exit$56730
  2597. $L56728:
  2598.   0003c    53         push     ebx
  2599.  
  2600. ; 698  :     }
  2601. ; 699  : 
  2602. ; 700  :     ulFaceId = atoi(szFaceId) - 1;
  2603.  
  2604.   0003d    50         push     eax
  2605.   0003e    e8 00 00 00 00     call     _atoi
  2606.   00043    48         dec     eax
  2607.  
  2608. ; 701  : 
  2609. ; 702  :     // if the face id is too high, and/or the face is already in use (specified twice in file)
  2610. ; 703  :     if ((ulFaceId >= cFacesMax) || (rgFaces[ulFaceId].m_wIndices[0] != UNUSED32))
  2611.  
  2612.   00044    3b 45 0c     cmp     eax, DWORD PTR _cFacesMax$[ebp]
  2613.   00047    59         pop     ecx
  2614.   00048    0f 83 0f 01 00
  2615.     00         jae     $L56733
  2616.   0004e    8b 4d 10     mov     ecx, DWORD PTR _rgFaces$[ebp]
  2617.   00051    6b c0 2c     imul     eax, 44            ; 0000002cH
  2618.   00054    8d 1c 08     lea     ebx, DWORD PTR [eax+ecx]
  2619.   00057    83 3b ff     cmp     DWORD PTR [ebx], -1
  2620.   0005a    0f 85 fd 00 00
  2621.     00         jne     $L56733
  2622.  
  2623. ; 706  :         goto e_Exit;
  2624. ; 707  :     }
  2625. ; 708  : 
  2626. ; 709  :     // load the various parts of the vertex from the strings
  2627. ; 710  :     szPoint1 = strtok( NULL, x_szSeparators );
  2628.  
  2629.   00060    ff 35 00 00 00
  2630.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2631.   00066    56         push     esi
  2632.   00067    e8 00 00 00 00     call     _strtok
  2633.  
  2634. ; 711  :     if (szPoint1 == NULL)
  2635.  
  2636.   0006c    3b c6         cmp     eax, esi
  2637.   0006e    59         pop     ecx
  2638.   0006f    59         pop     ecx
  2639.   00070    89 45 f8     mov     DWORD PTR _szPoint1$[ebp], eax
  2640.   00073    75 0c         jne     SHORT $L56736
  2641. $L57094:
  2642.  
  2643. ; 712  :     {
  2644. ; 713  :         hr = E_FAIL;
  2645.  
  2646.   00075    c7 45 fc 05 40
  2647.     00 80         mov     DWORD PTR _hr$[ebp], -2147467259 ; 80004005H
  2648.  
  2649. ; 767  :                     goto e_Exit;
  2650. ; 768  :             }
  2651. ; 769  :         }
  2652. ; 770  :     }
  2653. ; 771  : 
  2654. ; 772  : e_Exit:
  2655.  
  2656.   0007c    e9 e3 00 00 00     jmp     $L57092
  2657. $L56736:
  2658.  
  2659. ; 714  :         goto e_Exit;
  2660. ; 715  :     }
  2661. ; 716  : 
  2662. ; 717  :     szPoint2 = strtok( NULL, x_szSeparators );
  2663.  
  2664.   00081    ff 35 00 00 00
  2665.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2666.   00087    56         push     esi
  2667.   00088    e8 00 00 00 00     call     _strtok
  2668.   0008d    8b f8         mov     edi, eax
  2669.  
  2670. ; 718  :     if (szPoint2 == NULL)
  2671.  
  2672.   0008f    3b fe         cmp     edi, esi
  2673.   00091    59         pop     ecx
  2674.   00092    59         pop     ecx
  2675.  
  2676. ; 767  :                     goto e_Exit;
  2677. ; 768  :             }
  2678. ; 769  :         }
  2679. ; 770  :     }
  2680. ; 771  : 
  2681. ; 772  : e_Exit:
  2682.  
  2683.   00093    74 e0         je     SHORT $L57094
  2684.   00095    ff 35 00 00 00
  2685.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2686.   0009b    56         push     esi
  2687.   0009c    e8 00 00 00 00     call     _strtok
  2688.   000a1    3b c6         cmp     eax, esi
  2689.   000a3    59         pop     ecx
  2690.   000a4    59         pop     ecx
  2691.   000a5    74 ce         je     SHORT $L57094
  2692.   000a7    50         push     eax
  2693.   000a8    e8 00 00 00 00     call     _atoi
  2694.   000ad    8b f0         mov     esi, eax
  2695.   000af    57         push     edi
  2696.   000b0    4e         dec     esi
  2697.   000b1    e8 00 00 00 00     call     _atoi
  2698.   000b6    ff 75 f8     push     DWORD PTR _szPoint1$[ebp]
  2699.   000b9    80 65 d8 f0     and     BYTE PTR $T57063[ebp+12], -16 ; fffffff0H
  2700.   000bd    8b f8         mov     edi, eax
  2701.   000bf    4f         dec     edi
  2702.   000c0    e8 00 00 00 00     call     _atoi
  2703.   000c5    6a 0b         push     11            ; 0000000bH
  2704.   000c7    89 7d d0     mov     DWORD PTR $T57063[ebp+4], edi
  2705.   000ca    48         dec     eax
  2706.   000cb    89 75 d4     mov     DWORD PTR $T57063[ebp+8], esi
  2707.   000ce    59         pop     ecx
  2708.   000cf    89 45 cc     mov     DWORD PTR $T57063[ebp], eax
  2709.   000d2    8d 75 cc     lea     esi, DWORD PTR $T57063[ebp]
  2710.   000d5    8b fb         mov     edi, ebx
  2711.   000d7    f3 a5         rep movsd
  2712.   000d9    68 00 00 00 00     push     OFFSET FLAT:??_C@_02KGHIDFGE@?$HN?6?$AA@
  2713.   000de    33 ff         xor     edi, edi
  2714.   000e0    57         push     edi
  2715.   000e1    e8 00 00 00 00     call     _strtok
  2716.   000e6    83 c4 14     add     esp, 20            ; 00000014H
  2717.   000e9    3b c7         cmp     eax, edi
  2718.   000eb    74 77         je     SHORT $L57092
  2719.   000ed    50         push     eax
  2720.   000ee    8d 4d b4     lea     ecx, DWORD PTR _ParseArgs$56748[ebp]
  2721.   000f1    89 7d f4     mov     DWORD PTR _ParseArgs$56748[ebp+64], edi
  2722.   000f4    e8 00 00 00 00     call     ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z ; GXU::CParseOptionalArgs::Parse
  2723.   000f9    3b c7         cmp     eax, edi
  2724.   000fb    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  2725.   000fe    7c 64         jl     SHORT $L57092
  2726.   00100    33 f6         xor     esi, esi
  2727.   00102    39 7d f4     cmp     DWORD PTR _ParseArgs$56748[ebp+64], edi
  2728.   00105    76 5d         jbe     SHORT $L57092
  2729. $L56752:
  2730.  
  2731. ; 752  :         {
  2732. ; 753  :             if (ParseArgs.BCompareArg(iOptionalArg, x_szMatId))
  2733.  
  2734.   00107    ff 35 00 00 00
  2735.     00         push     DWORD PTR ?x_szMatId@GXU@@3PBDB ; GXU::x_szMatId
  2736.   0010d    8d 4d b4     lea     ecx, DWORD PTR _ParseArgs$56748[ebp]
  2737.   00110    56         push     esi
  2738.   00111    e8 00 00 00 00     call     ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ; GXU::CParseOptionalArgs::BCompareArg
  2739.   00116    84 c0         test     al, al
  2740.  
  2741. ; 754  :             {
  2742. ; 755  :                 rgFaces[ulFaceId].m_bMaterialSpecified = true;
  2743. ; 756  : 
  2744. ; 757  :                 hr = ParseArgs.GetDWORD(iOptionalArg, &rgFaces[ulFaceId].m_matid);
  2745.  
  2746.   00118    8d 4d b4     lea     ecx, DWORD PTR _ParseArgs$56748[ebp]
  2747.   0011b    74 10         je     SHORT $L56755
  2748.   0011d    80 4b 0c 02     or     BYTE PTR [ebx+12], 2
  2749.   00121    8d 43 20     lea     eax, DWORD PTR [ebx+32]
  2750.   00124    50         push     eax
  2751.   00125    56         push     esi
  2752.   00126    e8 00 00 00 00     call     ?GetDWORD@CParseOptionalArgs@GXU@@QAEJIPAK@Z ; GXU::CParseOptionalArgs::GetDWORD
  2753.  
  2754. ; 758  :                 if (FAILED(hr))
  2755. ; 759  :                     goto e_Exit;
  2756. ; 760  :             }
  2757. ; 761  :             else if (ParseArgs.BCompareArg(iOptionalArg, x_szRGB))
  2758.  
  2759.   0012b    eb 21         jmp     SHORT $L57093
  2760. $L56755:
  2761.   0012d    ff 35 00 00 00
  2762.     00         push     DWORD PTR ?x_szRGB@GXU@@3PBDB ; GXU::x_szRGB
  2763.   00133    56         push     esi
  2764.   00134    e8 00 00 00 00     call     ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ; GXU::CParseOptionalArgs::BCompareArg
  2765.   00139    84 c0         test     al, al
  2766.   0013b    74 18         je     SHORT $L56753
  2767.  
  2768. ; 762  :             {
  2769. ; 763  :                 rgFaces[ulFaceId].m_bColorSpecified = true;
  2770.  
  2771.   0013d    80 4b 0c 01     or     BYTE PTR [ebx+12], 1
  2772.  
  2773. ; 764  : 
  2774. ; 765  :                 hr = ParseArgs.GetColorRGB(iOptionalArg, &rgFaces[ulFaceId].m_colorFace);
  2775.  
  2776.   00141    8d 43 10     lea     eax, DWORD PTR [ebx+16]
  2777.   00144    50         push     eax
  2778.   00145    56         push     esi
  2779.   00146    8d 4d b4     lea     ecx, DWORD PTR _ParseArgs$56748[ebp]
  2780.   00149    e8 00 00 00 00     call     ?GetColorRGB@CParseOptionalArgs@GXU@@QAEJIPAUD3DXCOLOR@@@Z ; GXU::CParseOptionalArgs::GetColorRGB
  2781. $L57093:
  2782.  
  2783. ; 766  :                 if (FAILED(hr))
  2784.  
  2785.   0014e    3b c7         cmp     eax, edi
  2786.   00150    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  2787.   00153    7c 0f         jl     SHORT $L57092
  2788. $L56753:
  2789.  
  2790. ; 719  :     {
  2791. ; 720  :         hr = E_FAIL;
  2792. ; 721  :         goto e_Exit;
  2793. ; 722  :     }
  2794. ; 723  : 
  2795. ; 724  :     szPoint3 = strtok( NULL, x_szSeparators );
  2796. ; 725  :     if (szPoint3 == NULL)
  2797. ; 726  :     {
  2798. ; 727  :         hr = E_FAIL;
  2799. ; 728  :         goto e_Exit;
  2800. ; 729  :     }
  2801. ; 730  : 
  2802. ; 731  :     // UNDONE - handle errors by not using atoi
  2803. ; 732  :     // NOTE: reverse the ordering of the indices... otherwise CCW ordering becomes CW ordering
  2804. ; 733  :     //          when -z applied to change from right hand to left hand coordinate system
  2805. ; 734  :     rgFaces[ulFaceId] = SLoadedFace(atoi(szPoint1)-1, atoi(szPoint2)-1, atoi(szPoint3)-1);
  2806. ; 735  : 
  2807. ; 736  : 
  2808. ; 737  :     // look optional information
  2809. ; 738  :     szToken = strtok( NULL, "}\n" );
  2810. ; 739  :     if (szToken != NULL)
  2811. ; 740  :     {
  2812. ; 741  :         CParseOptionalArgs ParseArgs;
  2813. ; 742  : 
  2814. ; 743  :         // parse the optional information, into an wonder of all wonders, a readable form
  2815. ; 744  :         hr = ParseArgs.Parse(szToken);
  2816. ; 745  :         if (FAILED(hr))
  2817. ; 746  :         {
  2818. ; 747  :             goto e_Exit;
  2819. ; 748  :         }
  2820. ; 749  : 
  2821. ; 750  :         // loop over all the args, getting the info for the understood items
  2822. ; 751  :         for (iOptionalArg = 0; iOptionalArg < ParseArgs.COptionalArgs(); iOptionalArg++)
  2823.  
  2824.   00155    46         inc     esi
  2825.   00156    3b 75 f4     cmp     esi, DWORD PTR _ParseArgs$56748[ebp+64]
  2826.   00159    72 ac         jb     SHORT $L56752
  2827.  
  2828. ; 766  :                 if (FAILED(hr))
  2829.  
  2830.   0015b    eb 07         jmp     SHORT $L57092
  2831. $L56733:
  2832.  
  2833. ; 704  :     {
  2834. ; 705  :         hr = E_INVALIDARG;
  2835.  
  2836.   0015d    c7 45 fc 57 00
  2837.     07 80         mov     DWORD PTR _hr$[ebp], -2147024809 ; 80070057H
  2838. $L57092:
  2839.   00164    5b         pop     ebx
  2840. $e_Exit$56730:
  2841.  
  2842. ; 773  : 
  2843. ; 774  :     return hr;
  2844.  
  2845.   00165    8b 45 fc     mov     eax, DWORD PTR _hr$[ebp]
  2846.   00168    5f         pop     edi
  2847.   00169    5e         pop     esi
  2848.  
  2849. ; 775  : }
  2850.  
  2851.   0016a    c9         leave
  2852.   0016b    c3         ret     0
  2853. ?LoadFace@GXU@@YAJPADIPAUSLoadedFace@1@@Z ENDP        ; GXU::LoadFace
  2854. _TEXT    ENDS
  2855. PUBLIC    ?LoadCorner@GXU@@YAJPADIIIPAUSCorner@1@AA_N@Z    ; GXU::LoadCorner
  2856. ; Function compile flags: /Ogs
  2857. ;    COMDAT ?LoadCorner@GXU@@YAJPADIIIPAUSCorner@1@AA_N@Z
  2858. _TEXT    SEGMENT
  2859. _ParseArgs$56794 = -72                    ; size = 68
  2860. _hr$ = -4                        ; size = 4
  2861. _szLineBuf$ = 8                        ; size = 4
  2862. _iCorner$ = 12                        ; size = 4
  2863. _cVertices$ = 16                    ; size = 4
  2864. _cFaces$ = 20                        ; size = 4
  2865. _rgCorners$ = 24                    ; size = 4
  2866. _bNormalFound$ = 28                    ; size = 4
  2867. ?LoadCorner@GXU@@YAJPADIIIPAUSCorner@1@AA_N@Z PROC NEAR    ; GXU::LoadCorner, COMDAT
  2868.  
  2869. ; 862  : }
  2870.  
  2871.   00000    8b ff         npad     2
  2872.  
  2873. ; 779  : {
  2874.  
  2875.   00002    55         push     ebp
  2876.   00003    8b ec         mov     ebp, esp
  2877.   00005    83 ec 48     sub     esp, 72            ; 00000048H
  2878.   00008    53         push     ebx
  2879.   00009    56         push     esi
  2880.  
  2881. ; 780  :     HRESULT hr = S_OK;
  2882. ; 781  :     char *szToken;
  2883. ; 782  :     char *szFaceId;
  2884. ; 783  :     char *szPointId;
  2885. ; 784  :     char *szHeader;
  2886. ; 785  :     UINT ulFaceId;
  2887. ; 786  :     UINT ulPointId;
  2888. ; 787  :     UINT iOptionalArg;
  2889. ; 788  : 
  2890. ; 789  :     szHeader = strtok( szLineBuf, x_szSeparators );
  2891.  
  2892.   0000a    ff 35 00 00 00
  2893.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2894.   00010    33 db         xor     ebx, ebx
  2895.   00012    ff 75 08     push     DWORD PTR _szLineBuf$[ebp]
  2896.   00015    89 5d fc     mov     DWORD PTR _hr$[ebp], ebx
  2897.   00018    e8 00 00 00 00     call     _strtok
  2898.  
  2899. ; 790  :     GXASSERT((szHeader != NULL) && strcmp(szHeader, x_szCorner) == 0);
  2900. ; 791  : 
  2901. ; 792  : 
  2902. ; 793  :     // get the number for the count
  2903. ; 794  :     szPointId = strtok( NULL, x_szSeparators );
  2904.  
  2905.   0001d    ff 35 00 00 00
  2906.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2907.   00023    53         push     ebx
  2908.   00024    e8 00 00 00 00     call     _strtok
  2909.   00029    8b f0         mov     esi, eax
  2910.   0002b    83 c4 10     add     esp, 16            ; 00000010H
  2911.  
  2912. ; 795  :     if (szPointId == NULL)
  2913.  
  2914.   0002e    3b f3         cmp     esi, ebx
  2915.   00030    75 0c         jne     SHORT $L56782
  2916. $L57110:
  2917.  
  2918. ; 796  :     {
  2919. ; 797  :         hr = E_FAIL;
  2920.  
  2921.   00032    c7 45 fc 05 40
  2922.     00 80         mov     DWORD PTR _hr$[ebp], -2147467259 ; 80004005H
  2923.  
  2924. ; 798  :         goto e_Exit;
  2925.  
  2926.   00039    e9 e7 00 00 00     jmp     $e_Exit$56784
  2927. $L56782:
  2928.  
  2929. ; 799  :     }
  2930. ; 800  : 
  2931. ; 801  :     szFaceId = strtok( NULL, x_szSeparators );
  2932.  
  2933.   0003e    ff 35 00 00 00
  2934.     00         push     DWORD PTR ?x_szSeparators@GXU@@3PBDB ; GXU::x_szSeparators
  2935.   00044    53         push     ebx
  2936.   00045    e8 00 00 00 00     call     _strtok
  2937.  
  2938. ; 802  :     if (szFaceId == NULL)
  2939.  
  2940.   0004a    3b c3         cmp     eax, ebx
  2941.   0004c    59         pop     ecx
  2942.   0004d    59         pop     ecx
  2943.  
  2944. ; 854  :                     goto e_Exit;
  2945. ; 855  :             }
  2946. ; 856  :         }
  2947. ; 857  :     }
  2948. ; 858  : 
  2949. ; 859  : e_Exit:
  2950.  
  2951.   0004e    74 e2         je     SHORT $L57110
  2952.   00050    57         push     edi
  2953.   00051    50         push     eax
  2954.   00052    e8 00 00 00 00     call     _atoi
  2955.   00057    8b f8         mov     edi, eax
  2956.   00059    56         push     esi
  2957.   0005a    4f         dec     edi
  2958.   0005b    e8 00 00 00 00     call     _atoi
  2959.   00060    59         pop     ecx
  2960.   00061    48         dec     eax
  2961.   00062    3b 7d 14     cmp     edi, DWORD PTR _cFaces$[ebp]
  2962.   00065    59         pop     ecx
  2963.   00066    0f 83 b1 00 00
  2964.     00         jae     $L56790
  2965.  
  2966. ; 803  :     {
  2967. ; 804  :         hr = E_FAIL;
  2968. ; 805  :         goto e_Exit;
  2969. ; 806  :     }
  2970. ; 807  : 
  2971. ; 808  :     ulFaceId = atoi(szFaceId) - 1;
  2972. ; 809  :     ulPointId = atoi(szPointId) - 1;
  2973. ; 810  : 
  2974. ; 811  :     if ((ulFaceId >= cFaces) || (ulPointId > cVertices))
  2975.  
  2976.   0006c    3b 45 10     cmp     eax, DWORD PTR _cVertices$[ebp]
  2977.   0006f    0f 87 a8 00 00
  2978.     00         ja     $L56790
  2979.  
  2980. ; 814  :         goto e_Exit;
  2981. ; 815  :     }
  2982. ; 816  : 
  2983. ; 817  :     rgCorners[iCorner].m_wFace = ulFaceId;
  2984.  
  2985.   00075    8b 4d 0c     mov     ecx, DWORD PTR _iCorner$[ebp]
  2986.   00078    8b 55 18     mov     edx, DWORD PTR _rgCorners$[ebp]
  2987.   0007b    c1 e1 05     shl     ecx, 5
  2988.   0007e    8d 34 11     lea     esi, DWORD PTR [ecx+edx]
  2989.  
  2990. ; 818  :     rgCorners[iCorner].m_wPoint = ulPointId;
  2991. ; 819  : 
  2992. ; 820  : 
  2993. ; 821  :     // look optional information
  2994. ; 822  :     szToken = strtok( NULL, "}\n" );
  2995.  
  2996.   00081    68 00 00 00 00     push     OFFSET FLAT:??_C@_02KGHIDFGE@?$HN?6?$AA@
  2997.   00086    53         push     ebx
  2998.   00087    89 7e 04     mov     DWORD PTR [esi+4], edi
  2999.   0008a    89 06         mov     DWORD PTR [esi], eax
  3000.   0008c    e8 00 00 00 00     call     _strtok
  3001.  
  3002. ; 823  :     if (szToken != NULL)
  3003.  
  3004.   00091    3b c3         cmp     eax, ebx
  3005.   00093    59         pop     ecx
  3006.   00094    59         pop     ecx
  3007.   00095    0f 84 89 00 00
  3008.     00         je     $L57109
  3009.  
  3010. ; 824  :     {
  3011. ; 825  :         CParseOptionalArgs ParseArgs;
  3012. ; 826  : 
  3013. ; 827  :         // parse the optional information, into an wonder of all wonders, a readable form
  3014. ; 828  :         hr = ParseArgs.Parse(szToken);
  3015.  
  3016.   0009b    50         push     eax
  3017.   0009c    8d 4d b8     lea     ecx, DWORD PTR _ParseArgs$56794[ebp]
  3018.   0009f    89 5d f8     mov     DWORD PTR _ParseArgs$56794[ebp+64], ebx
  3019.   000a2    e8 00 00 00 00     call     ?Parse@CParseOptionalArgs@GXU@@QAEJPAD@Z ; GXU::CParseOptionalArgs::Parse
  3020.  
  3021. ; 829  :         if (FAILED(hr))
  3022.  
  3023.   000a7    3b c3         cmp     eax, ebx
  3024.   000a9    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3025.   000ac    7c 76         jl     SHORT $L57109
  3026.  
  3027. ; 830  :         {
  3028. ; 831  :             goto e_Exit;
  3029. ; 832  :         }
  3030. ; 833  : 
  3031. ; 834  :         // loop over all the args, getting the info for the understood items
  3032. ; 835  :         for (iOptionalArg = 0; iOptionalArg < ParseArgs.COptionalArgs(); iOptionalArg++)
  3033.  
  3034.   000ae    83 7d f8 00     cmp     DWORD PTR _ParseArgs$56794[ebp+64], 0
  3035.   000b2    76 70         jbe     SHORT $L57109
  3036. $L57108:
  3037.  
  3038. ; 836  :         {
  3039. ; 837  : 
  3040. ; 838  :             if (ParseArgs.BCompareArg(iOptionalArg, x_szNormal))
  3041.  
  3042.   000b4    ff 35 00 00 00
  3043.     00         push     DWORD PTR ?x_szNormal@GXU@@3PBDB ; GXU::x_szNormal
  3044.   000ba    8d 4d b8     lea     ecx, DWORD PTR _ParseArgs$56794[ebp]
  3045.   000bd    53         push     ebx
  3046.   000be    e8 00 00 00 00     call     ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ; GXU::CParseOptionalArgs::BCompareArg
  3047.   000c3    84 c0         test     al, al
  3048.  
  3049. ; 839  :             {
  3050. ; 840  :                 rgCorners[iCorner].m_bNormalSpecified = true;
  3051. ; 841  : 
  3052. ; 842  :                 hr = ParseArgs.GetCoVector3(iOptionalArg, &rgCorners[iCorner].m_vNormal);
  3053.  
  3054.   000c5    8d 4d b8     lea     ecx, DWORD PTR _ParseArgs$56794[ebp]
  3055.   000c8    74 23         je     SHORT $L56801
  3056.   000ca    80 4e 08 01     or     BYTE PTR [esi+8], 1
  3057.   000ce    8d 7e 14     lea     edi, DWORD PTR [esi+20]
  3058.   000d1    57         push     edi
  3059.   000d2    53         push     ebx
  3060.   000d3    e8 00 00 00 00     call     ?GetCoVector3@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR3@@@Z ; GXU::CParseOptionalArgs::GetCoVector3
  3061.  
  3062. ; 843  :                 if (FAILED(hr))
  3063.  
  3064.   000d8    85 c0         test     eax, eax
  3065.   000da    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3066.   000dd    7c 45         jl     SHORT $L57109
  3067.  
  3068. ; 844  :                     goto e_Exit;
  3069. ; 845  : 
  3070. ; 846  :                 bNormalFound = NotZero(rgCorners[iCorner].m_vNormal);
  3071.  
  3072.   000df    57         push     edi
  3073.   000e0    e8 00 00 00 00     call     ?NotZero@GXU@@YA_NAAUD3DXVECTOR3@@@Z ; GXU::NotZero
  3074.   000e5    59         pop     ecx
  3075.   000e6    8b 4d 1c     mov     ecx, DWORD PTR _bNormalFound$[ebp]
  3076.   000e9    88 01         mov     BYTE PTR [ecx], al
  3077.  
  3078. ; 847  :             }
  3079. ; 848  :             else if (ParseArgs.BCompareArg(iOptionalArg, x_szUv))
  3080.  
  3081.   000eb    eb 28         jmp     SHORT $L56799
  3082. $L56801:
  3083.   000ed    ff 35 00 00 00
  3084.     00         push     DWORD PTR ?x_szUv@GXU@@3PBDB ; GXU::x_szUv
  3085.   000f3    53         push     ebx
  3086.   000f4    e8 00 00 00 00     call     ?BCompareArg@CParseOptionalArgs@GXU@@QAE_NIPBD@Z ; GXU::CParseOptionalArgs::BCompareArg
  3087.   000f9    84 c0         test     al, al
  3088.   000fb    74 18         je     SHORT $L56799
  3089.  
  3090. ; 849  :             {
  3091. ; 850  :                 rgCorners[iCorner].m_bUvSpecified = true;
  3092.  
  3093.   000fd    80 4e 08 02     or     BYTE PTR [esi+8], 2
  3094.  
  3095. ; 851  : 
  3096. ; 852  :                 hr = ParseArgs.GetPoint2(iOptionalArg, &rgCorners[iCorner].m_uvTex1);
  3097.  
  3098.   00101    8d 46 0c     lea     eax, DWORD PTR [esi+12]
  3099.   00104    50         push     eax
  3100.   00105    53         push     ebx
  3101.   00106    8d 4d b8     lea     ecx, DWORD PTR _ParseArgs$56794[ebp]
  3102.   00109    e8 00 00 00 00     call     ?GetPoint2@CParseOptionalArgs@GXU@@QAEJIPAUD3DXVECTOR2@@@Z ; GXU::CParseOptionalArgs::GetPoint2
  3103.  
  3104. ; 853  :                 if (FAILED(hr))
  3105.  
  3106.   0010e    85 c0         test     eax, eax
  3107.   00110    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3108.   00113    7c 0f         jl     SHORT $L57109
  3109. $L56799:
  3110.  
  3111. ; 830  :         {
  3112. ; 831  :             goto e_Exit;
  3113. ; 832  :         }
  3114. ; 833  : 
  3115. ; 834  :         // loop over all the args, getting the info for the understood items
  3116. ; 835  :         for (iOptionalArg = 0; iOptionalArg < ParseArgs.COptionalArgs(); iOptionalArg++)
  3117.  
  3118.   00115    43         inc     ebx
  3119.   00116    3b 5d f8     cmp     ebx, DWORD PTR _ParseArgs$56794[ebp+64]
  3120.   00119    72 99         jb     SHORT $L57108
  3121.  
  3122. ; 853  :                 if (FAILED(hr))
  3123.  
  3124.   0011b    eb 07         jmp     SHORT $L57109
  3125. $L56790:
  3126.  
  3127. ; 812  :     {
  3128. ; 813  :         hr = E_INVALIDARG;
  3129.  
  3130.   0011d    c7 45 fc 57 00
  3131.     07 80         mov     DWORD PTR _hr$[ebp], -2147024809 ; 80070057H
  3132. $L57109:
  3133.   00124    5f         pop     edi
  3134. $e_Exit$56784:
  3135.  
  3136. ; 860  : 
  3137. ; 861  :     return hr;
  3138.  
  3139.   00125    8b 45 fc     mov     eax, DWORD PTR _hr$[ebp]
  3140.   00128    5e         pop     esi
  3141.   00129    5b         pop     ebx
  3142.  
  3143. ; 862  : }
  3144.  
  3145.   0012a    c9         leave
  3146.   0012b    c3         ret     0
  3147. ?LoadCorner@GXU@@YAJPADIIIPAUSCorner@1@AA_N@Z ENDP    ; GXU::LoadCorner
  3148. _TEXT    ENDS
  3149. PUBLIC    ?LoadMeshFromM@GXU@@YGJPAUIStream@@KKPAUIDirect3DDevice9@@PAPAUID3DXMesh@@PAPAUID3DXBuffer@@@Z ; GXU::LoadMeshFromM
  3150. EXTRN    ?SetMesh@GXU@@YAJAAPAUSLoadedFace@1@KAAPAUSLoadVertex@1@KPAUSCorner@1@KPAUSFVFData@1@HPAKKKPAUIDirect3DDevice9@@PAPAUID3DXMesh@@PAPAUID3DXBuffer@@@Z:NEAR ; GXU::SetMesh
  3151. EXTRN    ??3@YAXPAX@Z:NEAR                ; operator delete
  3152. EXTRN    ?InitVertices@GXU@@YAJAAPAUSLoadVertex@1@K@Z:NEAR ; GXU::InitVertices
  3153. EXTRN    ?InitCorners@GXU@@YAJAAPAUSCorner@1@K@Z:NEAR    ; GXU::InitCorners
  3154. EXTRN    ?InitFaces@GXU@@YAJAAPAUSLoadedFace@1@K@Z:NEAR    ; GXU::InitFaces
  3155. ; Function compile flags: /Ogs
  3156. ;    COMDAT ?LoadMeshFromM@GXU@@YGJPAUIStream@@KKPAUIDirect3DDevice9@@PAPAUID3DXMesh@@PAPAUID3DXBuffer@@@Z
  3157. _TEXT    SEGMENT
  3158. $T57113 = -592                        ; size = 16
  3159. $T57123 = -576                        ; size = 4
  3160. $T57122 = -572                        ; size = 4
  3161. $T57121 = -568                        ; size = 4
  3162. _cCorners$ = -564                    ; size = 4
  3163. _iCorner$ = -560                    ; size = 4
  3164. _rgCorners$ = -556                    ; size = 4
  3165. _cVertices$ = -552                    ; size = 4
  3166. _rglvLoaded$ = -548                    ; size = 4
  3167. _rglfFaces$ = -544                    ; size = 4
  3168. _cFaces$ = -540                        ; size = 4
  3169. _bEOF$ = -534                        ; size = 1
  3170. _bNormalFound$ = -533                    ; size = 1
  3171. _fc$ = -532                        ; size = 272
  3172. _rgchBuf$ = -260                    ; size = 256
  3173. __$ArrayPad$ = -4                    ; size = 4
  3174. __$ReturnAddr$ = 4                    ; size = 4
  3175. _pstream$ = 8                        ; size = 4
  3176. _options$ = 12                        ; size = 4
  3177. _fvf$ = 16                        ; size = 4
  3178. _pD3DDevice$ = 20                    ; size = 4
  3179. _ppMesh$ = 24                        ; size = 4
  3180. _ppbufAdjacency$ = 28                    ; size = 4
  3181. ?LoadMeshFromM@GXU@@YGJPAUIStream@@KKPAUIDirect3DDevice9@@PAPAUID3DXMesh@@PAPAUID3DXBuffer@@@Z PROC NEAR ; GXU::LoadMeshFromM, COMDAT
  3182.  
  3183. ; 1057 : 
  3184. ; 1058 :     return hr;
  3185. ; 1059 : }
  3186.  
  3187.   00000    8b ff         npad     2
  3188.  
  3189. ; 868  : {
  3190.  
  3191.   00002    55         push     ebp
  3192.   00003    8b ec         mov     ebp, esp
  3193.   00005    81 ec 50 02 00
  3194.     00         sub     esp, 592        ; 00000250H
  3195.   0000b    a1 00 00 00 00     mov     eax, DWORD PTR ___security_cookie
  3196.   00010    53         push     ebx
  3197.   00011    89 45 fc     mov     DWORD PTR __$ArrayPad$[ebp], eax
  3198.  
  3199. ; 869  :     HRESULT hr = S_OK;
  3200. ; 870  :     UINT cVertices;
  3201. ; 871  :     UINT cCorners;
  3202. ; 872  :     UINT cFaces;
  3203. ; 873  :     UINT iVert;
  3204. ; 874  :     bool bNormalFound = false;
  3205. ; 875  :     UINT iFace;
  3206. ; 876  : 
  3207. ; 877  :     SLoadedFace        *rglfFaces = NULL;
  3208. ; 878  :     SLoadVertex *rglvLoaded = NULL;
  3209. ; 879  :     SCorner *rgCorners = NULL;
  3210. ; 880  : 
  3211. ; 881  :     bool bEOF;
  3212. ; 882  :     UINT iCorner = 0;
  3213.  
  3214.   00014    8b 45 14     mov     eax, DWORD PTR _pD3DDevice$[ebp]
  3215.   00017    56         push     esi
  3216.   00018    8b 75 08     mov     esi, DWORD PTR _pstream$[ebp]
  3217.   0001b    33 db         xor     ebx, ebx
  3218.   0001d    57         push     edi
  3219.   0001e    8b 7d 18     mov     edi, DWORD PTR _ppMesh$[ebp]
  3220.   00021    89 85 c8 fd ff
  3221.     ff         mov     DWORD PTR $T57121[ebp], eax
  3222.   00027    8b 45 1c     mov     eax, DWORD PTR _ppbufAdjacency$[ebp]
  3223.  
  3224. ; 883  :     CFileContext fc(pstream);
  3225.  
  3226.   0002a    56         push     esi
  3227.   0002b    8d 8d ec fd ff
  3228.     ff         lea     ecx, DWORD PTR _fc$[ebp]
  3229.   00031    89 bd c4 fd ff
  3230.     ff         mov     DWORD PTR $T57122[ebp], edi
  3231.   00037    89 85 c0 fd ff
  3232.     ff         mov     DWORD PTR $T57123[ebp], eax
  3233.   0003d    88 9d eb fd ff
  3234.     ff         mov     BYTE PTR _bNormalFound$[ebp], bl
  3235.   00043    89 9d e0 fd ff
  3236.     ff         mov     DWORD PTR _rglfFaces$[ebp], ebx
  3237.   00049    89 9d dc fd ff
  3238.     ff         mov     DWORD PTR _rglvLoaded$[ebp], ebx
  3239.   0004f    89 9d d4 fd ff
  3240.     ff         mov     DWORD PTR _rgCorners$[ebp], ebx
  3241.   00055    89 9d d0 fd ff
  3242.     ff         mov     DWORD PTR _iCorner$[ebp], ebx
  3243.   0005b    e8 00 00 00 00     call     ??0CFileContext@GXU@@QAE@PAUIStream@@@Z ; GXU::CFileContext::CFileContext
  3244.  
  3245. ; 884  : 
  3246. ; 885  :     char rgchBuf[256];
  3247. ; 886  : 
  3248. ; 887  : #if 0 // color attribute bundle testing
  3249. ; 888  :     //IGXAttributeBundle *pattrColor;
  3250. ; 889  :     //IGXAttributeBundle **rgBundles = NULL;
  3251. ; 890  :     UINT cBundles = 0;
  3252. ; 891  :     UINT cBundlesMax = 0;
  3253. ; 892  :     D3DXCOLOR *rgColors = NULL;
  3254. ; 893  :     UINT cColors = 0;
  3255. ; 894  :     UINT cColorsMax = 0;
  3256. ; 895  :     UINT iColor;
  3257. ; 896  :     const D3DXCOLOR colorGrey(0.5f, 0.5f, 0.5f, 0.0f);
  3258. ; 897  : #endif
  3259. ; 898  : 
  3260. ; 899  :     if ((ppMesh == NULL) || (pstream == NULL))
  3261.  
  3262.   00060    3b fb         cmp     edi, ebx
  3263.   00062    0f 84 88 02 00
  3264.     00         je     $L56834
  3265.   00068    3b f3         cmp     esi, ebx
  3266.   0006a    0f 84 80 02 00
  3267.     00         je     $L56834
  3268.  
  3269. ; 902  :         goto e_Exit;
  3270. ; 903  :     }
  3271. ; 904  : 
  3272. ; 905  :     hr = LoadCounts(&fc, &cVertices, &cFaces, &cCorners);
  3273.  
  3274.   00070    8d 85 cc fd ff
  3275.     ff         lea     eax, DWORD PTR _cCorners$[ebp]
  3276.   00076    50         push     eax
  3277.   00077    8d 85 e4 fd ff
  3278.     ff         lea     eax, DWORD PTR _cFaces$[ebp]
  3279.   0007d    50         push     eax
  3280.   0007e    8d 85 d8 fd ff
  3281.     ff         lea     eax, DWORD PTR _cVertices$[ebp]
  3282.   00084    50         push     eax
  3283.   00085    8d 85 ec fd ff
  3284.     ff         lea     eax, DWORD PTR _fc$[ebp]
  3285.   0008b    50         push     eax
  3286.   0008c    e8 00 00 00 00     call     ?LoadCounts@GXU@@YAJPAVCFileContext@1@PAI11@Z ; GXU::LoadCounts
  3287.   00091    8b f0         mov     esi, eax
  3288.   00093    83 c4 10     add     esp, 16            ; 00000010H
  3289.  
  3290. ; 906  :     if (FAILED(hr))
  3291.  
  3292.   00096    3b f3         cmp     esi, ebx
  3293.   00098    0f 8c 57 02 00
  3294.     00         jl     $e_Exit$56836
  3295.  
  3296. ; 907  :         goto e_Exit;
  3297. ; 908  : 
  3298. ; 909  :     if ((cVertices == 0) || (cFaces == 0))
  3299.  
  3300.   0009e    8b bd d8 fd ff
  3301.     ff         mov     edi, DWORD PTR _cVertices$[ebp]
  3302.   000a4    3b fb         cmp     edi, ebx
  3303.   000a6    0f 84 44 02 00
  3304.     00         je     $L56834
  3305.   000ac    39 9d e4 fd ff
  3306.     ff         cmp     DWORD PTR _cFaces$[ebp], ebx
  3307.   000b2    0f 84 38 02 00
  3308.     00         je     $L56834
  3309.  
  3310. ; 910  :     {
  3311. ; 911  :         hr = E_INVALIDARG;
  3312. ; 912  :         goto e_Exit;
  3313. ; 913  :     }
  3314. ; 914  : 
  3315. ; 915  :     // allocate memory to load data into
  3316. ; 916  : 
  3317. ; 917  :     hr = InitVertices(rglvLoaded, cVertices);
  3318.  
  3319.   000b8    8d 85 dc fd ff
  3320.     ff         lea     eax, DWORD PTR _rglvLoaded$[ebp]
  3321.   000be    57         push     edi
  3322.   000bf    50         push     eax
  3323.   000c0    e8 00 00 00 00     call     ?InitVertices@GXU@@YAJAAPAUSLoadVertex@1@K@Z ; GXU::InitVertices
  3324.   000c5    8b f0         mov     esi, eax
  3325.  
  3326. ; 918  :     if (FAILED(hr))
  3327.  
  3328.   000c7    3b f3         cmp     esi, ebx
  3329.   000c9    59         pop     ecx
  3330.   000ca    59         pop     ecx
  3331.   000cb    0f 8c 24 02 00
  3332.     00         jl     $e_Exit$56836
  3333.  
  3334. ; 919  :         goto e_Exit;
  3335. ; 920  : 
  3336. ; 921  :     hr = InitFaces(rglfFaces, cFaces);
  3337.  
  3338.   000d1    ff b5 e4 fd ff
  3339.     ff         push     DWORD PTR _cFaces$[ebp]
  3340.   000d7    8d 85 e0 fd ff
  3341.     ff         lea     eax, DWORD PTR _rglfFaces$[ebp]
  3342.   000dd    50         push     eax
  3343.   000de    e8 00 00 00 00     call     ?InitFaces@GXU@@YAJAAPAUSLoadedFace@1@K@Z ; GXU::InitFaces
  3344.   000e3    8b f0         mov     esi, eax
  3345.  
  3346. ; 922  :     if (FAILED(hr))
  3347.  
  3348.   000e5    3b f3         cmp     esi, ebx
  3349.   000e7    59         pop     ecx
  3350.   000e8    59         pop     ecx
  3351.   000e9    0f 8c 06 02 00
  3352.     00         jl     $e_Exit$56836
  3353.  
  3354. ; 923  :         goto e_Exit;
  3355. ; 924  : 
  3356. ; 925  :     hr = InitCorners(rgCorners, cCorners);
  3357.  
  3358.   000ef    ff b5 cc fd ff
  3359.     ff         push     DWORD PTR _cCorners$[ebp]
  3360.   000f5    8d 85 d4 fd ff
  3361.     ff         lea     eax, DWORD PTR _rgCorners$[ebp]
  3362.   000fb    50         push     eax
  3363.   000fc    e8 00 00 00 00     call     ?InitCorners@GXU@@YAJAAPAUSCorner@1@K@Z ; GXU::InitCorners
  3364.   00101    8b f0         mov     esi, eax
  3365.  
  3366. ; 926  :     if (FAILED(hr))
  3367.  
  3368.   00103    3b f3         cmp     esi, ebx
  3369.   00105    59         pop     ecx
  3370.   00106    59         pop     ecx
  3371.   00107    0f 8c e8 01 00
  3372.     00         jl     $e_Exit$56836
  3373.  
  3374. ; 927  :         goto e_Exit;
  3375. ; 928  : 
  3376. ; 929  :     // initialize the colors of the vertices to a reasonable default
  3377. ; 930  :     for (iVert = 0; iVert < cVertices; iVert++)
  3378.  
  3379.   0010d    3b fb         cmp     edi, ebx
  3380.   0010f    76 44         jbe     SHORT $L57125
  3381.  
  3382. ; 931  :     {
  3383. ; 932  :         rglvLoaded[iVert].m_color = D3DXCOLOR(0.9f, 0.6f, 0.4f, 0.0f);
  3384.  
  3385.   00111    d9 ee         fldz
  3386.   00113    c7 85 b0 fd ff
  3387.     ff 66 66 66 3f     mov     DWORD PTR $T57113[ebp], 1063675494 ; 3f666666H
  3388.   0011d    d9 9d bc fd ff
  3389.     ff         fstp     DWORD PTR $T57113[ebp+12]
  3390.   00123    c7 85 b4 fd ff
  3391.     ff 9a 99 19 3f     mov     DWORD PTR $T57113[ebp+4], 1058642330 ; 3f19999aH
  3392.   0012d    c7 85 b8 fd ff
  3393.     ff cd cc cc 3e     mov     DWORD PTR $T57113[ebp+8], 1053609165 ; 3ecccccdH
  3394.   00137    33 c0         xor     eax, eax
  3395.   00139    8b cf         mov     ecx, edi
  3396. $L56854:
  3397.   0013b    8b 95 dc fd ff
  3398.     ff         mov     edx, DWORD PTR _rglvLoaded$[ebp]
  3399.   00141    8d 7c 10 0c     lea     edi, DWORD PTR [eax+edx+12]
  3400.   00145    8d b5 b0 fd ff
  3401.     ff         lea     esi, DWORD PTR $T57113[ebp]
  3402.   0014b    a5         movsd
  3403.   0014c    a5         movsd
  3404.   0014d    a5         movsd
  3405.   0014e    83 c0 44     add     eax, 68            ; 00000044H
  3406.   00151    49         dec     ecx
  3407.   00152    a5         movsd
  3408.   00153    75 e6         jne     SHORT $L56854
  3409. $L57125:
  3410.  
  3411. ; 933  :     }
  3412. ; 934  : 
  3413. ; 935  :     while ( 1 )
  3414. ; 936  :     {
  3415. ; 937  :         hr = fc.GetLine(rgchBuf, sizeof(rgchBuf), bEOF);
  3416.  
  3417.   00155    bf 00 01 00 00     mov     edi, 256        ; 00000100H
  3418.   0015a    e9 e3 00 00 00     jmp     $L56875
  3419. $L56859:
  3420.  
  3421. ; 939  :         {
  3422. ; 940  :             goto e_Exit;
  3423. ; 941  :         }
  3424. ; 942  : 
  3425. ; 943  :         if (bEOF)
  3426.  
  3427.   0015f    38 9d ea fd ff
  3428.     ff         cmp     BYTE PTR _bEOF$[ebp], bl
  3429.   00165    0f 85 00 01 00
  3430.     00         jne     $L57128
  3431.  
  3432. ; 944  :         {
  3433. ; 945  :             break;  // EOF, break out of loop
  3434. ; 946  :         }
  3435. ; 947  : 
  3436. ; 948  :         // load the various face and vertices, ignore unrecognized lines
  3437. ; 949  : 
  3438. ; 950  :         if (strncmp(rgchBuf, x_szVertex, x_cchVertex) == 0)
  3439.  
  3440.   0016b    6a 06         push     6
  3441.   0016d    ff 35 00 00 00
  3442.     00         push     DWORD PTR ?x_szVertex@GXU@@3PBDB ; GXU::x_szVertex
  3443.   00173    8d 85 fc fe ff
  3444.     ff         lea     eax, DWORD PTR _rgchBuf$[ebp]
  3445.   00179    50         push     eax
  3446.   0017a    e8 00 00 00 00     call     _strncmp
  3447.   0017f    83 c4 0c     add     esp, 12            ; 0000000cH
  3448.   00182    85 c0         test     eax, eax
  3449.   00184    75 31         jne     SHORT $L56865
  3450.  
  3451. ; 951  :         {
  3452. ; 952  :             hr = LoadVertex(rgchBuf, rglvLoaded, cVertices, bNormalFound);
  3453.  
  3454.   00186    8d 85 eb fd ff
  3455.     ff         lea     eax, DWORD PTR _bNormalFound$[ebp]
  3456.   0018c    50         push     eax
  3457.   0018d    ff b5 d8 fd ff
  3458.     ff         push     DWORD PTR _cVertices$[ebp]
  3459.   00193    8d 85 fc fe ff
  3460.     ff         lea     eax, DWORD PTR _rgchBuf$[ebp]
  3461.   00199    ff b5 dc fd ff
  3462.     ff         push     DWORD PTR _rglvLoaded$[ebp]
  3463.   0019f    50         push     eax
  3464.   001a0    e8 00 00 00 00     call     ?LoadVertex@GXU@@YAJPADPAUSLoadVertex@1@IAA_N@Z ; GXU::LoadVertex
  3465.   001a5    83 c4 10     add     esp, 16            ; 00000010H
  3466. $L57144:
  3467.   001a8    8b f0         mov     esi, eax
  3468.  
  3469. ; 953  :             if (FAILED(hr))
  3470.  
  3471.   001aa    3b f3         cmp     esi, ebx
  3472.   001ac    0f 8c 43 01 00
  3473.     00         jl     $e_Exit$56836
  3474.  
  3475. ; 954  :                 goto e_Exit;
  3476. ; 955  :         }
  3477. ; 956  :         else if (strncmp(rgchBuf, x_szFace, x_cchFace) == 0)
  3478.  
  3479.   001b2    e9 8b 00 00 00     jmp     $L56875
  3480. $L56865:
  3481.   001b7    6a 04         push     4
  3482.   001b9    ff 35 00 00 00
  3483.     00         push     DWORD PTR ?x_szFace@GXU@@3PBDB ; GXU::x_szFace
  3484.   001bf    8d 85 fc fe ff
  3485.     ff         lea     eax, DWORD PTR _rgchBuf$[ebp]
  3486.   001c5    50         push     eax
  3487.   001c6    e8 00 00 00 00     call     _strncmp
  3488.   001cb    83 c4 0c     add     esp, 12            ; 0000000cH
  3489.   001ce    85 c0         test     eax, eax
  3490.  
  3491. ; 957  :         {
  3492. ; 958  :             hr = LoadFace(rgchBuf, cFaces, rglfFaces);
  3493.  
  3494.   001d0    8d 85 fc fe ff
  3495.     ff         lea     eax, DWORD PTR _rgchBuf$[ebp]
  3496.   001d6    75 17         jne     SHORT $L56870
  3497.   001d8    ff b5 e0 fd ff
  3498.     ff         push     DWORD PTR _rglfFaces$[ebp]
  3499.   001de    ff b5 e4 fd ff
  3500.     ff         push     DWORD PTR _cFaces$[ebp]
  3501.   001e4    50         push     eax
  3502.   001e5    e8 00 00 00 00     call     ?LoadFace@GXU@@YAJPADIPAUSLoadedFace@1@@Z ; GXU::LoadFace
  3503.   001ea    83 c4 0c     add     esp, 12            ; 0000000cH
  3504.  
  3505. ; 959  :             if (FAILED(hr))
  3506. ; 960  :                 goto e_Exit;
  3507. ; 961  :         }
  3508. ; 962  :         else if (strncmp(rgchBuf, x_szCorner, x_cchCorner) == 0)
  3509.  
  3510.   001ed    eb b9         jmp     SHORT $L57144
  3511. $L56870:
  3512.   001ef    6a 06         push     6
  3513.   001f1    ff 35 00 00 00
  3514.     00         push     DWORD PTR ?x_szCorner@GXU@@3PBDB ; GXU::x_szCorner
  3515.   001f7    50         push     eax
  3516.   001f8    e8 00 00 00 00     call     _strncmp
  3517.   001fd    83 c4 0c     add     esp, 12            ; 0000000cH
  3518.   00200    85 c0         test     eax, eax
  3519.   00202    75 3e         jne     SHORT $L56875
  3520.  
  3521. ; 963  :         {
  3522. ; 964  :             hr = LoadCorner(rgchBuf, iCorner, cVertices, cFaces, rgCorners, bNormalFound);
  3523.  
  3524.   00204    8d 85 eb fd ff
  3525.     ff         lea     eax, DWORD PTR _bNormalFound$[ebp]
  3526.   0020a    50         push     eax
  3527.   0020b    ff b5 d4 fd ff
  3528.     ff         push     DWORD PTR _rgCorners$[ebp]
  3529.   00211    8d 85 fc fe ff
  3530.     ff         lea     eax, DWORD PTR _rgchBuf$[ebp]
  3531.   00217    ff b5 e4 fd ff
  3532.     ff         push     DWORD PTR _cFaces$[ebp]
  3533.   0021d    ff b5 d8 fd ff
  3534.     ff         push     DWORD PTR _cVertices$[ebp]
  3535.   00223    ff b5 d0 fd ff
  3536.     ff         push     DWORD PTR _iCorner$[ebp]
  3537.   00229    50         push     eax
  3538.   0022a    e8 00 00 00 00     call     ?LoadCorner@GXU@@YAJPADIIIPAUSCorner@1@AA_N@Z ; GXU::LoadCorner
  3539.   0022f    8b f0         mov     esi, eax
  3540.   00231    83 c4 18     add     esp, 24            ; 00000018H
  3541.  
  3542. ; 965  :             if (FAILED(hr))
  3543.  
  3544.   00234    3b f3         cmp     esi, ebx
  3545.   00236    0f 8c b9 00 00
  3546.     00         jl     $e_Exit$56836
  3547.  
  3548. ; 966  :                 goto e_Exit;
  3549. ; 967  : 
  3550. ; 968  :             iCorner++;
  3551.  
  3552.   0023c    ff 85 d0 fd ff
  3553.     ff         inc     DWORD PTR _iCorner$[ebp]
  3554. $L56875:
  3555.  
  3556. ; 933  :     }
  3557. ; 934  : 
  3558. ; 935  :     while ( 1 )
  3559. ; 936  :     {
  3560. ; 937  :         hr = fc.GetLine(rgchBuf, sizeof(rgchBuf), bEOF);
  3561.  
  3562.   00242    8d 85 ea fd ff
  3563.     ff         lea     eax, DWORD PTR _bEOF$[ebp]
  3564.   00248    50         push     eax
  3565.   00249    8d 85 fc fe ff
  3566.     ff         lea     eax, DWORD PTR _rgchBuf$[ebp]
  3567.   0024f    57         push     edi
  3568.   00250    8d 8d ec fd ff
  3569.     ff         lea     ecx, DWORD PTR _fc$[ebp]
  3570.   00256    50         push     eax
  3571.   00257    e8 00 00 00 00     call     ?GetLine@CFileContext@GXU@@QAEJPADHAA_N@Z ; GXU::CFileContext::GetLine
  3572.   0025c    8b f0         mov     esi, eax
  3573.  
  3574. ; 938  :         if (FAILED(hr))
  3575.  
  3576.   0025e    3b f3         cmp     esi, ebx
  3577.   00260    0f 8d f9 fe ff
  3578.     ff         jge     $L56859
  3579.  
  3580. ; 1049 :     if (FAILED(hr))
  3581. ; 1050 :         goto e_Exit;
  3582. ; 1051 : 
  3583. ; 1052 : e_Exit:
  3584.  
  3585.   00266    e9 8a 00 00 00     jmp     $e_Exit$56836
  3586. $L57128:
  3587.  
  3588. ; 969  :         }
  3589. ; 970  :     }
  3590. ; 971  : 
  3591. ; 972  :     GXASSERT(iCorner == cCorners);
  3592. ; 973  : 
  3593. ; 974  :     if (!bNormalFound)
  3594.  
  3595.   0026b    38 9d eb fd ff
  3596.     ff         cmp     BYTE PTR _bNormalFound$[ebp], bl
  3597.   00271    75 30         jne     SHORT $L57141
  3598.  
  3599. ; 975  :     {
  3600. ; 976  :         for (iFace = 0; iFace < cFaces; iFace++)
  3601.  
  3602.   00273    8b 95 e4 fd ff
  3603.     ff         mov     edx, DWORD PTR _cFaces$[ebp]
  3604.   00279    3b d3         cmp     edx, ebx
  3605.   0027b    76 26         jbe     SHORT $L57141
  3606.   0027d    33 c9         xor     ecx, ecx
  3607. $L56881:
  3608.  
  3609. ; 977  :         {
  3610. ; 978  :             if (rglfFaces[iFace].m_wIndices[0] != UNUSED32)
  3611.  
  3612.   0027f    8b 85 e0 fd ff
  3613.     ff         mov     eax, DWORD PTR _rglfFaces$[ebp]
  3614.   00285    03 c1         add     eax, ecx
  3615.   00287    83 38 ff     cmp     DWORD PTR [eax], -1
  3616.   0028a    74 11         je     SHORT $L56882
  3617.  
  3618. ; 979  :             {
  3619. ; 980  :                 rglfFaces[iFace].m_bSmoothingGroupSpecified = true;
  3620.  
  3621.   0028c    80 48 0c 08     or     BYTE PTR [eax+12], 8
  3622.  
  3623. ; 981  :                 rglfFaces[iFace].m_iSmoothingGroup = 1;
  3624.  
  3625.   00290    8b 85 e0 fd ff
  3626.     ff         mov     eax, DWORD PTR _rglfFaces$[ebp]
  3627.   00296    66 c7 44 01 28
  3628.     01 00         mov     WORD PTR [ecx+eax+40], 1
  3629. $L56882:
  3630.   0029d    83 c1 2c     add     ecx, 44            ; 0000002cH
  3631.   002a0    4a         dec     edx
  3632.   002a1    75 dc         jne     SHORT $L56881
  3633. $L57141:
  3634.  
  3635. ; 982  :             }
  3636. ; 983  :         }
  3637. ; 984  :     }
  3638. ; 985  : 
  3639. ; 986  :     // test materials by generating materials for colors
  3640. ; 987  : 
  3641. ; 988  : #if 0
  3642. ; 989  :     for (iFace = 0; iFace < cFaces; iFace++)
  3643. ; 990  :     {
  3644. ; 991  :         if (rglfFaces[iFace].m_bColorSpecified)
  3645. ; 992  :         {
  3646. ; 993  :             for (iColor = 0; iColor < cColors; iColor++)
  3647. ; 994  :             {
  3648. ; 995  :                 if (rgColors[iColor] == rglfFaces[iFace].m_colorFace)
  3649. ; 996  :                     break;
  3650. ; 997  :             }
  3651. ; 998  : 
  3652. ; 999  :             if (iColor == cColors)
  3653. ; 1000 :             {
  3654. ; 1001 :                 if ( ! AddToDynamicArray( &rgColors, rglfFaces[iFace].m_colorFace, &cColors, &cColorsMax ) )
  3655. ; 1002 :                 {
  3656. ; 1003 :                     hr = E_OUTOFMEMORY;
  3657. ; 1004 :                     goto e_Exit;
  3658. ; 1005 :                 }
  3659. ; 1006 :             }
  3660. ; 1007 : 
  3661. ; 1008 : #if 0
  3662. ; 1009 :             if (iColor < cColors)
  3663. ; 1010 :             {
  3664. ; 1011 :                 pattrColor = rgBundles[iColor];
  3665. ; 1012 :             }
  3666. ; 1013 :             else
  3667. ; 1014 :             {
  3668. ; 1015 :                 if ( ! AddToDynamicArray( &rgColors, rglfFaces[iFace].m_colorFace, &cColors, &cColorsMax ) )
  3669. ; 1016 :                 {
  3670. ; 1017 :                     hr = E_OUTOFMEMORY;
  3671. ; 1018 :                     goto e_Exit;
  3672. ; 1019 :                 }
  3673. ; 1020 : 
  3674. ; 1021 :                 pattrColor = new GXColorAttributeBundle(rglfFaces[iFace].m_colorFace);
  3675. ; 1022 :                 if (pattrColor == NULL)
  3676. ; 1023 :                 {
  3677. ; 1024 :                     hr = E_OUTOFMEMORY;
  3678. ; 1025 :                     goto e_Exit;
  3679. ; 1026 :                 }
  3680. ; 1027 : 
  3681. ; 1028 :                 if ( ! AddToDynamicArray( &rgBundles, pattrColor, &cBundles, &cBundlesMax ) )
  3682. ; 1029 :                 {
  3683. ; 1030 :                     hr = E_OUTOFMEMORY;
  3684. ; 1031 :                     goto e_Exit;
  3685. ; 1032 :                 }
  3686. ; 1033 :             }
  3687. ; 1034 : #endif
  3688. ; 1035 : 
  3689. ; 1036 :             //rglfFaces[iFace].m_pattr = pattrColor;
  3690. ; 1037 :             rglfFaces[iFace].m_attr = iColor;
  3691. ; 1038 :             rglfFaces[iFace].m_bAttributeSpecified = true;
  3692. ; 1039 : 
  3693. ; 1040 :             rglfFaces[iFace].m_colorFace = colorGrey;
  3694. ; 1041 :             //rglfFaces[iFace].m_bColorSpecified = false;
  3695. ; 1042 :         }
  3696. ; 1043 :     }
  3697. ; 1044 : #endif
  3698. ; 1045 : 
  3699. ; 1046 : 
  3700. ; 1047 :     hr = SetMesh(rglfFaces, cFaces, rglvLoaded, cVertices, rgCorners, cCorners, NULL, FALSE, NULL,
  3701. ; 1048 :                         options, fvf, pD3DDevice, ppMesh, ppbufAdjacency);
  3702.  
  3703.   002a3    ff b5 c0 fd ff
  3704.     ff         push     DWORD PTR $T57123[ebp]
  3705.   002a9    8d 85 dc fd ff
  3706.     ff         lea     eax, DWORD PTR _rglvLoaded$[ebp]
  3707.   002af    ff b5 c4 fd ff
  3708.     ff         push     DWORD PTR $T57122[ebp]
  3709.   002b5    ff b5 c8 fd ff
  3710.     ff         push     DWORD PTR $T57121[ebp]
  3711.   002bb    ff 75 10     push     DWORD PTR _fvf$[ebp]
  3712.   002be    ff 75 0c     push     DWORD PTR _options$[ebp]
  3713.   002c1    53         push     ebx
  3714.   002c2    53         push     ebx
  3715.   002c3    53         push     ebx
  3716.   002c4    ff b5 cc fd ff
  3717.     ff         push     DWORD PTR _cCorners$[ebp]
  3718.   002ca    ff b5 d4 fd ff
  3719.     ff         push     DWORD PTR _rgCorners$[ebp]
  3720.   002d0    ff b5 d8 fd ff
  3721.     ff         push     DWORD PTR _cVertices$[ebp]
  3722.   002d6    50         push     eax
  3723.   002d7    ff b5 e4 fd ff
  3724.     ff         push     DWORD PTR _cFaces$[ebp]
  3725.   002dd    8d 85 e0 fd ff
  3726.     ff         lea     eax, DWORD PTR _rglfFaces$[ebp]
  3727.   002e3    50         push     eax
  3728.   002e4    e8 00 00 00 00     call     ?SetMesh@GXU@@YAJAAPAUSLoadedFace@1@KAAPAUSLoadVertex@1@KPAUSCorner@1@KPAUSFVFData@1@HPAKKKPAUIDirect3DDevice9@@PAPAUID3DXMesh@@PAPAUID3DXBuffer@@@Z ; GXU::SetMesh
  3729.   002e9    83 c4 38     add     esp, 56            ; 00000038H
  3730.   002ec    8b f0         mov     esi, eax
  3731.  
  3732. ; 1049 :     if (FAILED(hr))
  3733. ; 1050 :         goto e_Exit;
  3734. ; 1051 : 
  3735. ; 1052 : e_Exit:
  3736.  
  3737.   002ee    eb 05         jmp     SHORT $e_Exit$56836
  3738. $L56834:
  3739.  
  3740. ; 900  :     {
  3741. ; 901  :         hr = E_INVALIDARG;
  3742.  
  3743.   002f0    be 57 00 07 80     mov     esi, -2147024809    ; 80070057H
  3744. $e_Exit$56836:
  3745.  
  3746. ; 1053 : 
  3747. ; 1054 :     delete []rglfFaces;
  3748.  
  3749.   002f5    ff b5 e0 fd ff
  3750.     ff         push     DWORD PTR _rglfFaces$[ebp]
  3751.   002fb    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  3752.  
  3753. ; 1055 :     delete []rglvLoaded;
  3754.  
  3755.   00300    ff b5 dc fd ff
  3756.     ff         push     DWORD PTR _rglvLoaded$[ebp]
  3757.   00306    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  3758.  
  3759. ; 1056 :     delete []rgCorners;
  3760.  
  3761.   0030b    ff b5 d4 fd ff
  3762.     ff         push     DWORD PTR _rgCorners$[ebp]
  3763.   00311    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  3764.  
  3765. ; 1057 : 
  3766. ; 1058 :     return hr;
  3767. ; 1059 : }
  3768.  
  3769.   00316    8b 4d fc     mov     ecx, DWORD PTR __$ArrayPad$[ebp]
  3770.   00319    83 c4 0c     add     esp, 12            ; 0000000cH
  3771.   0031c    5f         pop     edi
  3772.   0031d    8b c6         mov     eax, esi
  3773.   0031f    5e         pop     esi
  3774.   00320    5b         pop     ebx
  3775.   00321    e8 00 00 00 00     call     @__security_check_cookie@4
  3776.   00326    c9         leave
  3777.   00327    c2 18 00     ret     24            ; 00000018H
  3778. ?LoadMeshFromM@GXU@@YGJPAUIStream@@KKPAUIDirect3DDevice9@@PAPAUID3DXMesh@@PAPAUID3DXBuffer@@@Z ENDP ; GXU::LoadMeshFromM
  3779. _TEXT    ENDS
  3780. END
  3781.