Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 140.14 KB | None | 0 0
  1. ; ---------------------------------------------------------------------------
  2.  
  3. _MEMORYSTATUS struc ; (sizeof=0x20, standard type)
  4. dwLength dd ?
  5. dwMemoryLoad dd ?
  6. dwTotalPhys dd ?
  7. dwAvailPhys dd ?
  8. dwTotalPageFile dd ?
  9. dwAvailPageFile dd ?
  10. dwTotalVirtual dd ?
  11. dwAvailVirtual dd ?
  12. _MEMORYSTATUS ends
  13.  
  14. ; ---------------------------------------------------------------------------
  15.  
  16. _tpidc struc ; (sizeof=0x30, variable size)
  17. tpDtt dd ? ; base 16
  18. tpMask dw ? ; base 16
  19. tpName dw ? ; base 16
  20. bParent dd ? ; offset
  21. tpcFlags dd ? ; base 16
  22. Size dw ? ; base 16
  23. ExpDim dw ? ; base 16
  24. mfnDel dd ? ; offset
  25. mfnMask dw ? ; base 16
  26. mfnMaskArr dw ? ; base 16
  27. mfnDelArr dd ? ; offset
  28. DtorCount dd ? ; base 10
  29. DtorAltCount dd ? ; base 10
  30. DtorAddr dd ? ; offset
  31. DtorMask dw ? ; base 16
  32. DtorMemberOff dw ? ; base 16
  33. Name db 0 dup(?) ; string(C)
  34. _tpidc ends
  35.  
  36.  
  37.  
  38. ; File Name : C:\SIERRA\ES2\ES.EXE
  39. ; Format : Portable executable for 80386 (PE)
  40. ; Imagebase : 400000
  41. ; Section 1. (virtual address 00001000)
  42. ; Virtual size : 00002000 ( 8192.)
  43. ; Section size in file : 00001600 ( 5632.)
  44. ; Offset to raw data for section: 00000600
  45. ; Flags 60000020: Text Executable Readable
  46. ; Alignment : default
  47. ; OS type : MS Windows
  48. ; Application type: Executable 32bit
  49.  
  50. .686p
  51. .mmx
  52. .model flat
  53.  
  54. ; ===========================================================================
  55.  
  56. ; Segment type: Pure code
  57. ; Segment permissions: Read/Execute
  58. CODE segment para public 'CODE' use32
  59. assume cs:CODE
  60. ;org 401000h
  61. assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing
  62.  
  63. ; =============== S U B R O U T I N E =======================================
  64.  
  65. ; Attributes: library function
  66.  
  67. public start
  68. start proc near
  69.  
  70. ; FUNCTION CHUNK AT 0040249A SIZE 00000006 BYTES
  71.  
  72. mov eax, ds:dword_403059
  73. shl eax, 2
  74. mov ds:dword_40305D, eax
  75. push edi
  76. push ecx
  77. xor eax, eax
  78. mov edi, offset unk_40349C
  79. mov ecx, offset unk_4038FC
  80. cmp ecx, edi
  81. jbe short loc_401024
  82. sub ecx, edi
  83. cld
  84. rep stosb
  85.  
  86. loc_401024: ; CODE XREF: start+1Dj
  87. pop ecx
  88. pop edi
  89. mov edx, fs:4
  90. mov eax, [edx-8]
  91. mov ds:dword_403061, eax
  92. mov eax, [edx-4]
  93. mov ds:dword_403065, eax
  94. sub edx, 4
  95. mov ds:classInstanceCounter, edx
  96. sub edx, 4
  97. cmp edx, esp
  98. jnb short loc_40104E
  99. mov esp, edx
  100.  
  101. loc_40104E: ; CODE XREF: start+4Aj
  102. push 0
  103. call sub_40230D
  104. pop ecx
  105. push offset off_40302C
  106. push 0 ; lpModuleName
  107. call GetModuleHandleA
  108. mov ds:dword_40306A, eax
  109. push 0
  110. jmp loc_40249A
  111. start endp
  112.  
  113. ; Exported entry 1. __GetExceptDLLinfo
  114. ; [00000005 BYTES: COLLAPSED FUNCTION __GetExceptDLLinfo. PRESS KEYPAD "+" TO EXPAND]
  115. align 4
  116.  
  117. ; =============== S U B R O U T I N E =======================================
  118.  
  119. ; Attributes: bp-based frame
  120.  
  121. ; char *__cdecl stringCopyStuff(char *a1, const char *a2)
  122. stringCopyStuff proc near
  123.  
  124. a1 = dword ptr 8
  125. a2 = dword ptr 0Ch
  126.  
  127. push ebp
  128. ; 4: v2 = 2;
  129. mov ebp, esp
  130. push ebx
  131. push esi
  132. push edi
  133. mov ebx, [ebp+a1]
  134. mov esi, 2
  135. ; 5: if ( a1[1] != ':' )
  136. movsx eax, byte ptr [ebx+1]
  137. cmp eax, 3Ah
  138. jz short loc_40108E
  139. ; 6: v2 = 0;
  140. add esi, 0FFFFFFFEh
  141. ; 7: strcpy(byte_4036D0, a2);
  142.  
  143. loc_40108E: ; CODE XREF: stringCopyStuff+15j
  144. mov edx, [ebp+a2]
  145. xor eax, eax
  146. push esi
  147. mov edi, edx
  148. or ecx, 0FFFFFFFFh
  149. ; 8: strcat(byte_4036D0, &a1[v2]);
  150. mov esi, offset byte_4036D0
  151. repne scasb
  152. not ecx
  153. sub edi, ecx
  154. mov edx, ecx
  155. xchg esi, edi
  156. shr ecx, 2
  157. mov eax, edi
  158. rep movsd
  159. mov ecx, edx
  160. and ecx, 3
  161. rep movsb
  162. pop esi
  163. add esi, ebx
  164. push esi ; src
  165. push offset byte_4036D0 ; dest
  166. call _strcat
  167. ; 9: return byte_4036D0;
  168. add esp, 8
  169. mov eax, offset byte_4036D0
  170. pop edi
  171. pop esi
  172. pop ebx
  173. pop ebp
  174. retn
  175. stringCopyStuff endp
  176.  
  177. ; ---------------------------------------------------------------------------
  178. align 4
  179.  
  180. ; =============== S U B R O U T I N E =======================================
  181.  
  182. ; split a commandline argument string by whitespace and return a new one
  183. ; Attributes: bp-based frame
  184.  
  185. ; int __cdecl makeNewCmdLine(const char *oldCmdLine, char **newCmdLine)
  186. makeNewCmdLine proc near ; CODE XREF: WinMain+50p
  187.  
  188. currentPositionInNewString= dword ptr -8
  189. elementCounter = dword ptr -4
  190. oldCmdLine = dword ptr 8
  191. newCmdLine = dword ptr 0Ch
  192.  
  193. push ebp
  194. ; 12: elementCounter = 1;
  195. mov ebp, esp
  196. add esp, 0FFFFFFF8h
  197. push ebx
  198. push esi
  199. mov [ebp+elementCounter], 1
  200. ; 13: oldCmdLineCopy = oldCmdLine;
  201. mov ebx, [ebp+oldCmdLine]
  202. ; 14: *newCmdLine = "dbsim";
  203. mov eax, [ebp+newCmdLine]
  204. mov dword ptr [eax], offset aDbsim_0 ; "dbsim"
  205. ; 15: currentPositionInNewString = newCmdLine + 1;
  206. mov edx, [ebp+newCmdLine]
  207. lea ecx, [edx+4]
  208. mov [ebp+currentPositionInNewString], ecx
  209. jmp short loc_401159
  210. ; ---------------------------------------------------------------------------
  211. ; 18: if ( *oldCmdLineCopy == 32 )
  212.  
  213. loc_4010FA: ; CODE XREF: makeNewCmdLine+89j
  214. movsx eax, al
  215. cmp eax, 20h
  216. jz short loc_401158
  217. ; 24: nextWhitespacePos = strchr(oldCmdLineCopy, 32);// 32 == whitespace
  218. push 20h ; c
  219. push ebx ; s
  220. call _strchr
  221. ; 25: if ( nextWhitespacePos ) // found a whitespace
  222. add esp, 8
  223. test eax, eax
  224. jnz short loc_40111D
  225. ; 28: elementLength = strlen(oldCmdLineCopy) + 1;
  226. push ebx ; s
  227. call _strlen
  228. pop ecx
  229. mov esi, eax
  230. inc esi
  231. jmp short loc_401122
  232. ; ---------------------------------------------------------------------------
  233. ; 26: elementLength = nextWhitespacePos - oldCmdLineCopy + 1;
  234.  
  235. loc_40111D: ; CODE XREF: makeNewCmdLine+3Bj
  236. mov esi, eax
  237. sub esi, ebx
  238. inc esi
  239. ; 29: *currentPositionInNewString = (char *)operator new__(elementLength + 1);// allocate enough mem bytes => MEMORY LEAK, this is NOT freed!!
  240.  
  241. loc_401122: ; CODE XREF: makeNewCmdLine+47j
  242. inc esi
  243. push esi
  244. call @$bnwa$qui ; operator new[](uint)
  245. pop ecx
  246. mov edx, [ebp+currentPositionInNewString]
  247. mov [edx], eax
  248. ; 30: ++currentPositionInNewString;
  249. add [ebp+currentPositionInNewString], 4
  250. ; 31: currentElement = elementCounter++;
  251. mov eax, [ebp+elementCounter]
  252. ; 32: for ( i = newCmdLine[currentElement]; ; ++i )// i is yet another pointer
  253. inc [ebp+elementCounter]
  254. mov ecx, [ebp+newCmdLine]
  255. mov edx, [ecx+eax*4]
  256. jmp short loc_401145
  257. ; ---------------------------------------------------------------------------
  258. ; 39: *i = currentCopyChar;
  259.  
  260. loc_401141: ; CODE XREF: makeNewCmdLine+7Dj
  261. mov [edx], al
  262. ; 40: ++oldCmdLineCopy;
  263. inc ebx
  264. inc edx
  265. ; 34: currentCopyChar = *oldCmdLineCopy;
  266.  
  267. loc_401145: ; CODE XREF: makeNewCmdLine+6Bj
  268. mov al, [ebx]
  269. ; 36: break;
  270. test al, al
  271. ; 35: if ( !*oldCmdLineCopy ) // no chars left in source string (arrived at end)
  272. jz short loc_401153
  273. ; 37: if ( currentCopyChar == 32 ) // hit a whitespace => break out
  274. movsx ecx, al
  275. cmp ecx, 20h
  276. ; 38: break;
  277. jnz short loc_401141
  278. ; 42: *i = 0;
  279.  
  280. loc_401153: ; CODE XREF: makeNewCmdLine+75j
  281. mov byte ptr [edx], 0
  282. jmp short loc_401159
  283. ; ---------------------------------------------------------------------------
  284. ; 20: ++oldCmdLineCopy; // advance 1 position
  285.  
  286. loc_401158: ; CODE XREF: makeNewCmdLine+2Cj
  287. inc ebx
  288. ; 16: while ( *oldCmdLineCopy )
  289.  
  290. loc_401159: ; CODE XREF: makeNewCmdLine+24j
  291. ; makeNewCmdLine+82j
  292. mov al, [ebx]
  293. test al, al
  294. jnz short loc_4010FA
  295. ; 45: return elementCounter;
  296. mov eax, [ebp+elementCounter]
  297. pop esi
  298. pop ebx
  299. pop ecx
  300. pop ecx
  301. pop ebp
  302. retn
  303. makeNewCmdLine endp
  304.  
  305.  
  306. ; =============== S U B R O U T I N E =======================================
  307.  
  308. ; Attributes: bp-based frame
  309.  
  310. ; int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
  311. WinMain proc near ; DATA XREF: DATA:00403044o
  312.  
  313. var_2C8 = byte ptr -2C8h
  314. string = byte ptr -2C6h
  315. Buffer = _MEMORYSTATUS ptr -0C0h
  316. newCmdLine = dword ptr -0A0h
  317. var_9C = byte ptr -9Ch
  318. dest = byte ptr -50h
  319. value = dword ptr -3Ch
  320. var_38 = dword ptr -38h
  321. var_34 = dword ptr -34h
  322. var_30 = word ptr -30h
  323. s = dword ptr -2Ch
  324. counter = dword ptr -28h
  325. cmdLineArgCount = dword ptr -24h
  326. var_20 = dword ptr -20h
  327. enableCmdSwitchCheat= dword ptr -1Ch
  328. var_18 = dword ptr -18h
  329. enableCmdSwitchm= dword ptr -14h
  330. var_10 = dword ptr -10h
  331. enableCmdSwitchl= dword ptr -0Ch
  332. var_8 = dword ptr -8
  333. disableCmdSwitchZ= dword ptr -4
  334. hInstance = dword ptr 8
  335. hPrevInstance = dword ptr 0Ch
  336. oldCmdLine = dword ptr 10h
  337. nShowCmd = dword ptr 14h
  338.  
  339. push ebp
  340. ; 48: v46 = 0;
  341. mov ebp, esp
  342. add esp, 0FFFFFD38h
  343. xor eax, eax
  344. ; 49: enableCmdSwitchl = 0;
  345. xor edx, edx
  346. ; 50: v44 = 0;
  347. xor ecx, ecx
  348. ; 47: disableCmdSwitchZ = 1;
  349. push ebx
  350. push esi
  351. push edi
  352. lea edi, [ebp+dest]
  353. mov [ebp+disableCmdSwitchZ], 1
  354. mov [ebp+var_8], eax
  355. mov [ebp+enableCmdSwitchl], edx
  356. mov [ebp+var_10], ecx
  357. ; 51: enableCmdSwitchm = 0;
  358. xor eax, eax
  359. mov [ebp+enableCmdSwitchm], eax
  360. ; 52: v42 = 0;
  361. xor edx, edx
  362. mov [ebp+var_18], edx
  363. ; 53: enableCmdSwitchCheat = 0;
  364. xor ecx, ecx
  365. mov [ebp+enableCmdSwitchCheat], ecx
  366. ; 54: v40 = 0;
  367. xor eax, eax
  368. mov [ebp+var_20], eax
  369. ; 55: memcpy(dest, "-", sizeof(dest)); // src is a - followed by 19 whitespaces
  370. mov ecx, 5
  371. mov esi, offset asc_403077 ; "-"
  372. lea eax, [ebp+newCmdLine]
  373. rep movsd
  374. ; 56: cmdLineArgCount = makeNewCmdLine(lpCmdLine, &newCmdLine);
  375. push eax ; newCmdLine
  376. mov edx, [ebp+oldCmdLine]
  377. push edx ; oldCmdLine
  378. call makeNewCmdLine ; split a commandline argument string by whitespace and return a new one
  379. add esp, 8
  380. mov [ebp+cmdLineArgCount], eax
  381. ; 57: cmdLineString = (char **)operator new__(4 * (cmdLineArgCount + 20));
  382. mov ecx, [ebp+cmdLineArgCount]
  383. add ecx, 14h
  384. shl ecx, 2
  385. push ecx
  386. call @$bnwa$qui ; operator new[](uint)
  387. pop ecx
  388. mov esi, eax
  389. ; 58: counter = 1;
  390. mov [ebp+counter], 1
  391. ; 59: for ( currentChar = &v31; counter < cmdLineArgCount; ++currentChar )
  392. lea edi, [ebp+var_9C]
  393. mov eax, [ebp+counter]
  394. cmp eax, [ebp+cmdLineArgCount]
  395. jge loc_4012E3
  396. ; 61: if ( **currentChar == '-' )
  397.  
  398. loc_4011EE: ; CODE XREF: WinMain+175j
  399. mov ebx, [edi]
  400. movsx edx, byte ptr [ebx]
  401. cmp edx, 2Dh
  402. jnz loc_4012D1
  403. ; 63: currentCharPtr = *currentChar + 1; // advance 1 position
  404. inc ebx
  405. ; 64: currentCharValue = *currentCharPtr;
  406. movsx ecx, byte ptr [ebx]
  407. cmp ecx, 58h
  408. ; 65: if ( currentCharValue > 88 ) // 88==ASCII 'X'
  409. jg short loc_401223
  410. ; 89: if ( currentCharValue == 88 ) // 88==ASCII 'X'
  411. jz loc_4012AE
  412. ; 96: v8 = currentCharValue - 68;
  413. sub ecx, 44h
  414. ; 97: if ( v8 )
  415. jz loc_4012C3
  416. ; 99: v9 = v8 - 8;
  417. sub ecx, 8
  418. ; 100: if ( v9 )
  419. jz short loc_401246
  420. ; 102: if ( v9 == 7 )
  421. sub ecx, 7
  422. jz short loc_40127A
  423. jmp loc_4012D1
  424. ; ---------------------------------------------------------------------------
  425. ; 67: tmp1 = currentCharValue - 97; // 97==ASCII 'a'
  426.  
  427. loc_401223: ; CODE XREF: WinMain+9Bj
  428. sub ecx, 61h
  429. ; 68: if ( tmp1 ) // check if it's a lower-case char
  430. jz short loc_401255
  431. ; 70: v11 = tmp1 - 17;
  432. sub ecx, 11h
  433. ; 71: if ( v11 )
  434. jz short loc_401264
  435. ; 73: if ( v11 == 1 )
  436. dec ecx
  437. jnz loc_4012D1
  438. ; 74: v46 = v46 == 0;
  439. cmp [ebp+var_8], 0
  440. setz al
  441. and eax, 1
  442. mov [ebp+var_8], eax
  443. jmp loc_4012D1
  444. ; ---------------------------------------------------------------------------
  445. ; 131: enableCmdSwitchl = enableCmdSwitchl == 0;
  446.  
  447. loc_401246: ; CODE XREF: WinMain+AFj
  448. cmp [ebp+enableCmdSwitchl], 0
  449. setz dl
  450. and edx, 1
  451. mov [ebp+enableCmdSwitchl], edx
  452. jmp short loc_4012D1
  453. ; ---------------------------------------------------------------------------
  454. ; 84: v44 = v44 == 0;
  455.  
  456. loc_401255: ; CODE XREF: WinMain+BEj
  457. cmp [ebp+var_10], 0
  458. setz cl
  459. and ecx, 1
  460. mov [ebp+var_10], ecx
  461. jmp short loc_4012D1
  462. ; ---------------------------------------------------------------------------
  463. ; 78: v42 = 1;
  464.  
  465. loc_401264: ; CODE XREF: WinMain+C3j
  466. mov [ebp+var_18], 1
  467. ; 79: strcat(dest, currentCharPtr);
  468. push ebx ; src
  469. lea eax, [ebp+dest]
  470. push eax ; dest
  471. call _strcat
  472. add esp, 8
  473. jmp short loc_4012D1
  474. ; ---------------------------------------------------------------------------
  475. ; 104: v12 = *currentChar + 1;
  476.  
  477. loc_40127A: ; CODE XREF: WinMain+B4j
  478. mov eax, ebx
  479. ; 105: stringForCheatMode = "SPRUNKNOWN";
  480. mov edx, offset aSprunknown ; "SPRUNKNOWN"
  481. ; 106: while ( 1 )
  482. ; 108: v14 = *v12;
  483.  
  484. loc_401281: ; CODE XREF: WinMain+133j
  485. mov cl, [eax]
  486. ; 109: if ( *v12 != *stringForCheatMode )
  487. cmp cl, [edx]
  488. ; 110: break;
  489. jnz short loc_4012D1
  490. ; 111: v15 = v14 == 0;
  491. test cl, cl
  492. ; 112: if ( v14 )
  493. jz short loc_40129D
  494. ; 114: v16 = v12[1];
  495. mov cl, [eax+1]
  496. ; 115: if ( v16 != stringForCheatMode[1] )
  497. cmp cl, [edx+1]
  498. ; 116: break;
  499. jnz short loc_4012D1
  500. ; 117: v12 += 2;
  501. add eax, 2
  502. ; 118: stringForCheatMode += 2;
  503. add edx, 2
  504. ; 119: v15 = v16 == 0;
  505. test cl, cl
  506. ; 120: if ( v16 )
  507. ; 121: continue;
  508. jnz short loc_401281
  509. ; 123: if ( v15 )
  510.  
  511. loc_40129D: ; CODE XREF: WinMain+121j
  512. jnz short loc_4012D1
  513. ; 124: enableCmdSwitchCheat = enableCmdSwitchCheat == 0;
  514. cmp [ebp+enableCmdSwitchCheat], 0
  515. setz al
  516. and eax, 1
  517. mov [ebp+enableCmdSwitchCheat], eax
  518. ; 125: break;
  519. jmp short loc_4012D1
  520. ; ---------------------------------------------------------------------------
  521. ; 91: if ( enableCmdSwitchCheat )
  522.  
  523. loc_4012AE: ; CODE XREF: WinMain+9Dj
  524. cmp [ebp+enableCmdSwitchCheat], 0
  525. jz short loc_4012D1
  526. ; 92: v40 = v40 == 0;
  527. cmp [ebp+var_20], 0
  528. setz dl
  529. and edx, 1
  530. mov [ebp+var_20], edx
  531. jmp short loc_4012D1
  532. ; ---------------------------------------------------------------------------
  533. ; 136: s = *currentChar + 2;
  534.  
  535. loc_4012C3: ; CODE XREF: WinMain+A6j
  536. inc ebx
  537. mov [ebp+s], ebx
  538. ; 137: atol(currentCharPtr + 1);
  539. mov ecx, [ebp+s]
  540. push ecx ; s
  541. call _atol
  542. pop ecx
  543. ; 142: ++counter;
  544.  
  545. loc_4012D1: ; CODE XREF: WinMain+8Ej WinMain+B6j ...
  546. inc [ebp+counter]
  547. add edi, 4
  548. mov eax, [ebp+counter]
  549. cmp eax, [ebp+cmdLineArgCount]
  550. jl loc_4011EE
  551. ; 144: fpLanguageCfg = fopen("data\\language.cfg", "rb");
  552.  
  553. loc_4012E3: ; CODE XREF: WinMain+80j
  554. push offset mode ; "rb"
  555. push offset path ; "data\\language.cfg"
  556. call _fopen
  557. ; 145: fpLanguageCfgCopy = fpLanguageCfg;
  558. add esp, 8
  559. mov ebx, eax
  560. ; 146: if ( fpLanguageCfg )
  561. test ebx, ebx
  562. jz short loc_401327
  563. ; 148: fread(&chLanguage, 1u, 1u, fpLanguageCfg);
  564. push ebx ; stream
  565. push 1 ; n
  566. push 1 ; size
  567. push offset chLanguage ; ptr
  568. call _fread
  569. ; 149: fclose(fpLanguageCfgCopy);
  570. add esp, 10h
  571. push ebx ; stream
  572. call _fclose
  573. ; 150: if ( chLanguage == 69 ) // 69==ASCII 'E'
  574. pop ecx
  575. movsx eax, ds:chLanguage
  576. cmp eax, 45h
  577. jnz short loc_401327
  578. ; 151: chLanguage = 0;
  579. mov ds:chLanguage, 0
  580. ; 153: if ( (unsigned __int8)Strings__loadFile(&StringInstance1, "error.str") )
  581.  
  582. loc_401327: ; CODE XREF: WinMain+191j WinMain+1B6j
  583. push offset aError_str ; "error.str"
  584. push offset StringInstance1 ; int
  585. call Strings__loadFile
  586. add esp, 8
  587. test al, al
  588. jz short loc_40136B
  589. ; 155: Strings__loadText(&StringInstance1, lpText, 6, 0);
  590. push 0
  591. push 6
  592. push offset lpText
  593. push offset StringInstance1
  594. call Strings__loadText
  595. ; 156: Strings__loadText(&StringInstance1, lpCaption, 3, 0);
  596. add esp, 10h
  597. push 0
  598. push 3
  599. push offset lpCaption
  600. push offset StringInstance1
  601. call Strings__loadText
  602. add esp, 10h
  603. jmp short loc_401385
  604. ; ---------------------------------------------------------------------------
  605. ; 278: MessageBoxA(0, "Missing string resource: error.str.", "Error", 0x30u);
  606.  
  607. loc_40136B: ; CODE XREF: WinMain+1D3j
  608. push 30h ; uType
  609. push offset Caption ; "Error"
  610. push offset Text ; "Missing string resource: error.str."
  611. push 0 ; hWnd
  612. call MessageBoxA
  613. ; 279: result = 0;
  614. xor eax, eax
  615. jmp loc_401675
  616. ; ---------------------------------------------------------------------------
  617. ; 161: value = 0;
  618.  
  619. loc_401385: ; CODE XREF: WinMain+201j
  620. mov edx, ds:dword_40308B
  621. xor ecx, ecx
  622. ; 157: *(_DWORD *)&v34 = dword_40308B[0];
  623. mov [ebp+var_38], edx
  624. ; 158: v35 = dword_40308F;
  625. mov edx, ds:dword_40308F
  626. mov [ebp+var_34], edx
  627. ; 159: v19 = 20000000;
  628. mov ebx, 1312D00h
  629. ; 160: v36 = word_403093;
  630. mov dx, ds:word_403093
  631. mov [ebp+var_30], dx
  632. mov [ebp+value], ecx
  633. jmp short loc_4013B4
  634. ; ---------------------------------------------------------------------------
  635. ; 167: v19 -= 200000;
  636.  
  637. loc_4013AE: ; CODE XREF: WinMain+258j
  638. sub ebx, 30D40h
  639. ; 164: v21 = GlobalAlloc(0, v19);
  640.  
  641. loc_4013B4: ; CODE XREF: WinMain+244j
  642. push ebx ; dwBytes
  643. push 0 ; uFlags
  644. call GlobalAlloc
  645. ; 162: while ( 1 )
  646. mov edi, eax
  647. ; 165: if ( v21 )
  648. test eax, eax
  649. ; 166: break;
  650. jz short loc_4013AE
  651. ; 169: GlobalMemoryStatus(&Buffer);
  652. lea edx, [ebp+Buffer]
  653. push edx ; lpBuffer
  654. call GlobalMemoryStatus
  655. ; 170: GlobalFree(v21);
  656. push edi ; hMem
  657. call GlobalFree
  658. ; 180: if ( (signed int)v22 > (signed int)(v19 + Buffer.dwAvailPageFile) )
  659. mov edx, [ebp+Buffer.dwAvailPageFile]
  660. mov ecx, [ebp+Buffer.dwTotalPhys]
  661. add edx, ebx
  662. ; 172: if ( Buffer.dwTotalPhys < 0xDAC000 )
  663. cmp ecx, 0DAC000h
  664. ; 171: v22 = 18000000;
  665. mov eax, 112A880h
  666. jnb short loc_4013F4
  667. ; 173: v22 = 12000000;
  668. mov eax, 0B71B00h
  669. ; 174: if ( Buffer.dwTotalPhys >= 0x73A000 )
  670.  
  671. loc_4013F4: ; CODE XREF: WinMain+285j
  672. cmp ecx, 73A000h
  673. jnb short loc_40141C
  674. ; 200: MessageBoxA(0, *(LPCSTR *)lpText, *(LPCSTR *)lpCaption, 0x30u);
  675. push 30h ; uType
  676. mov edx, ds:lpCaption
  677. push edx ; lpCaption
  678. mov ecx, ds:lpText
  679. push ecx ; lpText
  680. push 0 ; hWnd
  681. call MessageBoxA
  682. ; 201: ::value = 0;
  683. xor eax, eax
  684. mov ds:value, eax
  685. jmp short loc_401493
  686. ; ---------------------------------------------------------------------------
  687. ; 176: if ( Buffer.dwTotalPageFile )
  688.  
  689. loc_40141C: ; CODE XREF: WinMain+292j
  690. cmp [ebp+Buffer.dwTotalPageFile], 0
  691. jnz short loc_401445
  692. ; 194: MessageBoxA(0, dword_4036B0, *(LPCSTR *)lpCaption, 0x30u);
  693. push 30h ; uType
  694. mov edx, ds:lpCaption
  695. push edx ; lpCaption
  696. mov ecx, ds:dword_4036B0
  697. push ecx ; lpText
  698. push 0 ; hWnd
  699. call MessageBoxA
  700. ; 195: ::value = 0;
  701. xor eax, eax
  702. mov ds:value, eax
  703. jmp short loc_401493
  704. ; ---------------------------------------------------------------------------
  705. ; 178: if ( Buffer.dwTotalPageFile >= 0x7A1200 )
  706.  
  707. loc_401445: ; CODE XREF: WinMain+2BBj
  708. cmp [ebp+Buffer.dwTotalPageFile], 7A1200h
  709. jnb short loc_401471
  710. ; 188: MessageBoxA(0, dword_4036B4, *(LPCSTR *)lpCaption, 0x30u);
  711. push 30h ; uType
  712. mov edx, ds:lpCaption
  713. push edx ; lpCaption
  714. mov ecx, ds:dword_4036B4
  715. push ecx ; lpText
  716. push 0 ; hWnd
  717. call MessageBoxA
  718. ; 189: ::value = 0;
  719. xor eax, eax
  720. mov ds:value, eax
  721. jmp short loc_401493
  722. ; ---------------------------------------------------------------------------
  723.  
  724. loc_401471: ; CODE XREF: WinMain+2E7j
  725. cmp eax, edx
  726. jle short loc_401493
  727. ; 182: MessageBoxA(0, dword_4036B4, *(LPCSTR *)lpCaption, 0x30u);// MB_ICONEXCLAMATION
  728. push 30h ; uType
  729. mov edx, ds:lpCaption
  730. push edx ; lpCaption
  731. mov ecx, ds:dword_4036B4
  732. push ecx ; lpText
  733. push 0 ; hWnd
  734. call MessageBoxA
  735. ; 183: ::value = 0;
  736. xor eax, eax
  737. mov ds:value, eax
  738. ; 203: memcpy(v27, "-X", sizeof(v27));
  739.  
  740. loc_401493: ; CODE XREF: WinMain+2B2j WinMain+2DBj ...
  741. push esi
  742. mov esi, offset asc_403095 ; "-X"
  743. lea edi, [ebp+var_2C8]
  744. mov ecx, 5
  745. rep movsd
  746. pop esi
  747. jmp loc_401666
  748. ; ---------------------------------------------------------------------------
  749. ; 206: enableCmdSwitchD = 0;
  750.  
  751. loc_4014AC: ; CODE XREF: WinMain+505j
  752. xor edi, edi
  753. ; 207: if ( v40 )
  754. cmp [ebp+var_20], 0
  755. jz short loc_4014BE
  756. ; 208: ::value = 2;
  757. mov ds:value, 2
  758.  
  759. loc_4014BE: ; CODE XREF: WinMain+34Aj
  760. mov eax, ds:value
  761. cmp eax, 6 ; switch 7 cases
  762. ja loc_40165E ; default
  763. ; jumptable 004014CC case 0
  764. ; 209: switch ( ::value )
  765. jmp off_4014D3[eax*4] ; switch jump
  766. ; ---------------------------------------------------------------------------
  767. off_4014D3 dd offset loc_40165E ; DATA XREF: WinMain+364r
  768. dd offset loc_4014EF ; jump table for switch statement
  769. dd offset loc_401582
  770. dd offset loc_4014EF
  771. dd offset loc_4014EF
  772. dd offset loc_40157D
  773. dd offset loc_4014EF
  774. ; ---------------------------------------------------------------------------
  775. ; 215: *cmdLineString = "dummy";
  776.  
  777. loc_4014EF: ; CODE XREF: WinMain+364j
  778. ; DATA XREF: WinMain:off_4014D3o
  779. xor ebx, ebx ; jumptable 004014CC cases 1,3,4,6
  780. mov dword ptr [esi+ebx*4], offset aDummy ; "dummy"
  781. ; 216: cmdLineString[1] = "-eggplant";
  782. inc ebx
  783. mov dword ptr [esi+ebx*4], offset aEggplant ; "-eggplant"
  784. ; 217: itoa(::value, &string, 10);
  785. inc ebx
  786. push 0Ah ; radix
  787. lea eax, [ebp+string]
  788. push eax ; string
  789. mov edx, ds:value
  790. push edx ; value
  791. call _itoa
  792. ; 218: cmdLineString[2] = v27;
  793. add esp, 0Ch
  794. lea ecx, [ebp+var_2C8]
  795. mov [esi+ebx*4], ecx
  796. ; 219: v24 = 3;
  797. inc ebx
  798. ; 220: if ( v46 )
  799. cmp [ebp+var_8], 0
  800. jz short loc_401531
  801. ; 222: cmdLineString[3] = "-s";
  802. mov dword ptr [esi+ebx*4], offset aS ; "-s"
  803. ; 223: v24 = 4;
  804. inc ebx
  805. ; 225: if ( v44 )
  806.  
  807. loc_401531: ; CODE XREF: WinMain+3BFj
  808. cmp [ebp+var_10], 0
  809. jz short loc_40153F
  810. ; 226: cmdLineString[v24++] = "-a";
  811. mov dword ptr [esi+ebx*4], offset aA ; "-a"
  812. inc ebx
  813. ; 227: if ( enableCmdSwitchCheat )
  814.  
  815. loc_40153F: ; CODE XREF: WinMain+3CDj
  816. cmp [ebp+enableCmdSwitchCheat], 0
  817. jz short loc_40154D
  818. ; 228: cmdLineString[v24++] = "-@";
  819. mov dword ptr [esi+ebx*4], offset a@ ; "-@"
  820. inc ebx
  821. ; 229: if ( chLanguage )
  822.  
  823. loc_40154D: ; CODE XREF: WinMain+3DBj
  824. cmp ds:chLanguage, 0
  825. jz short loc_40155E
  826. ; 230: cmdLineString[v24++] = "-";
  827. mov dword ptr [esi+ebx*4], offset languageToken ; "-"
  828. inc ebx
  829. ; 231: cmdLineString[v24] = 0;
  830.  
  831. loc_40155E: ; CODE XREF: WinMain+3ECj
  832. xor eax, eax
  833. mov [esi+ebx*4], eax
  834. ; 232: ::value = spawnv(0, "vshell", cmdLineString);
  835. push esi ; argv
  836. push offset aVshell ; "vshell"
  837. push 0 ; mode
  838. call _spawnv
  839. add esp, 0Ch
  840. mov ds:value, eax
  841. ; 233: break;
  842. jmp loc_401666
  843. ; ---------------------------------------------------------------------------
  844. ; 235: enableCmdSwitchD = 1;
  845. ; 236: goto LABEL_59;
  846.  
  847. loc_40157D: ; CODE XREF: WinMain+364j
  848. ; DATA XREF: WinMain:off_4014D3o
  849. mov edi, 1 ; jumptable 004014CC case 5
  850. ; 238: LABEL_59:
  851. ; 239: *cmdLineString = "dummy";
  852.  
  853. loc_401582: ; CODE XREF: WinMain+364j
  854. ; DATA XREF: WinMain:off_4014D3o
  855. xor ebx, ebx ; jumptable 004014CC case 2
  856. mov dword ptr [esi+ebx*4], offset aDummy_0 ; "dummy"
  857. ; 240: cmdLineString[1] = "-eggplant";
  858. inc ebx
  859. mov dword ptr [esi+ebx*4], offset aEggplant_0 ; "-eggplant"
  860. ; 241: itoa(::value, &string, 10);
  861. inc ebx
  862. push 0Ah ; radix
  863. lea eax, [ebp+string]
  864. push eax ; string
  865. mov edx, ds:value
  866. push edx ; value
  867. call _itoa
  868. ; 242: cmdLineString[2] = v27;
  869. add esp, 0Ch
  870. lea ecx, [ebp+var_2C8]
  871. mov [esi+ebx*4], ecx
  872. ; 244: itoa(v26, &v34 + 2, 10);
  873. inc ebx
  874. push 0Ah ; radix
  875. ; 243: v26 = value++;
  876. lea eax, [ebp+var_38+2]
  877. push eax ; string
  878. mov edx, [ebp+value]
  879. inc [ebp+value]
  880. push edx ; value
  881. call _itoa
  882. ; 245: cmdLineString[3] = &v34;
  883. add esp, 0Ch
  884. lea ecx, [ebp+var_38]
  885. mov [esi+ebx*4], ecx
  886. ; 246: v25 = 4;
  887. inc ebx
  888. ; 247: if ( v46 )
  889. cmp [ebp+var_8], 0
  890. jz short loc_4015E0
  891. ; 249: cmdLineString[4] = "-s";
  892. mov dword ptr [esi+ebx*4], offset aS_0 ; "-s"
  893. ; 250: v25 = 5;
  894. inc ebx
  895. ; 252: if ( enableCmdSwitchm )
  896.  
  897. loc_4015E0: ; CODE XREF: WinMain+46Ej
  898. cmp [ebp+enableCmdSwitchm], 0
  899. jz short loc_4015EE
  900. ; 253: cmdLineString[v25++] = "-m";
  901. mov dword ptr [esi+ebx*4], offset aM ; "-m"
  902. inc ebx
  903. ; 254: if ( enableCmdSwitchD )
  904.  
  905. loc_4015EE: ; CODE XREF: WinMain+47Cj
  906. test edi, edi
  907. jz short loc_4015FA
  908. ; 255: cmdLineString[v25++] = "-D";
  909. mov dword ptr [esi+ebx*4], offset aD ; "-D"
  910. inc ebx
  911. ; 256: if ( !disableCmdSwitchZ )
  912.  
  913. loc_4015FA: ; CODE XREF: WinMain+488j
  914. cmp [ebp+disableCmdSwitchZ], 0
  915. jnz short loc_401608
  916. ; 257: cmdLineString[v25++] = "-Z";
  917. mov dword ptr [esi+ebx*4], offset aZ ; "-Z"
  918. inc ebx
  919. ; 258: if ( enableCmdSwitchl )
  920.  
  921. loc_401608: ; CODE XREF: WinMain+496j
  922. cmp [ebp+enableCmdSwitchl], 0
  923. jz short loc_401616
  924. ; 259: cmdLineString[v25++] = "-l"; // lowercase L
  925. mov dword ptr [esi+ebx*4], offset asc_403163 ; "-l"
  926. inc ebx
  927. ; 260: if ( v42 )
  928.  
  929. loc_401616: ; CODE XREF: WinMain+4A4j
  930. cmp [ebp+var_18], 0
  931. jz short loc_401623
  932. ; 261: cmdLineString[v25++] = dest;
  933. lea eax, [ebp+dest]
  934. mov [esi+ebx*4], eax
  935. inc ebx
  936. ; 262: if ( enableCmdSwitchCheat )
  937.  
  938. loc_401623: ; CODE XREF: WinMain+4B2j
  939. cmp [ebp+enableCmdSwitchCheat], 0
  940. jz short loc_401631
  941. ; 263: cmdLineString[v25++] = "-SPRUNKNOWN";
  942. mov dword ptr [esi+ebx*4], offset aSprunknown_0 ; "-SPRUNKNOWN"
  943. inc ebx
  944. ; 264: if ( chLanguage )
  945.  
  946. loc_401631: ; CODE XREF: WinMain+4BFj
  947. cmp ds:chLanguage, 0
  948. jz short loc_401642
  949. ; 265: cmdLineString[v25++] = "-";
  950. mov dword ptr [esi+ebx*4], offset languageToken ; "-"
  951. inc ebx
  952. ; 266: cmdLineString[v25] = 0;
  953.  
  954. loc_401642: ; CODE XREF: WinMain+4D0j
  955. xor edx, edx
  956. mov [esi+ebx*4], edx
  957. ; 267: ::value = spawnv(0, "dbsim", cmdLineString);
  958. push esi ; argv
  959. push offset aDbsim ; "dbsim"
  960. push 0 ; mode
  961. call _spawnv
  962. add esp, 0Ch
  963. mov ds:value, eax
  964. ; 268: break;
  965. ; 269: default:
  966. jmp short loc_401666
  967. ; ---------------------------------------------------------------------------
  968. ; 270: ::value = 0;
  969.  
  970. loc_40165E: ; CODE XREF: WinMain+35Ej WinMain+364j
  971. ; DATA XREF: ...
  972. xor ecx, ecx ; default
  973. ; jumptable 004014CC case 0
  974. ; 271: break;
  975. mov ds:value, ecx
  976. ; 204: while ( ::value )
  977.  
  978. loc_401666: ; CODE XREF: WinMain+33Fj WinMain+410j ...
  979. cmp ds:value, 0
  980. jnz loc_4014AC
  981. ; 274: result = 0;
  982. xor eax, eax
  983. ; 281: return result;
  984.  
  985. loc_401675: ; CODE XREF: WinMain+218j
  986. pop edi
  987. pop esi
  988. pop ebx
  989. mov esp, ebp
  990. pop ebp
  991. retn 10h
  992. WinMain endp
  993.  
  994. ; ---------------------------------------------------------------------------
  995. align 10h
  996.  
  997. ; =============== S U B R O U T I N E =======================================
  998.  
  999. ; Attributes: bp-based frame
  1000.  
  1001. callStringsConstructorForInstance1 proc near ; DATA XREF: DATA:00403486o
  1002.  
  1003. var_20 = dword ptr -20h
  1004. var_10 = word ptr -10h
  1005.  
  1006. push ebp
  1007. ; 2: __InitExceptBlock();
  1008. mov ebp, esp
  1009. add esp, 0FFFFFFE0h
  1010. mov eax, offset unk_4030B9
  1011. call @__InitExceptBlock
  1012. ; 3: return Strings____construct((int *)&StringInstance1);
  1013. mov [ebp+var_10], 8
  1014. push offset StringInstance1
  1015. call Strings____construct
  1016. pop ecx
  1017. mov edx, [ebp+var_20]
  1018. mov large fs:0, edx
  1019. mov esp, ebp
  1020. pop ebp
  1021. retn
  1022. callStringsConstructorForInstance1 endp
  1023.  
  1024. ; ---------------------------------------------------------------------------
  1025. align 10h
  1026.  
  1027. ; =============== S U B R O U T I N E =======================================
  1028.  
  1029.  
  1030. callStringsDestructorForInstance1 proc near ; DATA XREF: DATA:00403492o
  1031. push 2 ; char
  1032. push offset StringInstance1 ; void *
  1033. call Strings____destruct
  1034. add esp, 8
  1035. retn
  1036. callStringsDestructorForInstance1 endp
  1037.  
  1038. ; ---------------------------------------------------------------------------
  1039. classdesc_Strings dd 10h ; tpDtt ; DATA XREF: DATA:off_4030A9o
  1040. dw 3 ; tpMask
  1041. dw 30h ; tpName
  1042. dd 0FFFFFFFFh ; bParent
  1043. dd 3 ; tpcFlags
  1044. dw 38h ; Size
  1045. dw 3Ch ; ExpDim
  1046. dd 0 ; mfnDel
  1047. dw 0 ; mfnMask
  1048. dw 0 ; mfnMaskArr
  1049. dd 0 ; mfnDelArr
  1050. dd 1 ; DtorCount
  1051. dd 1 ; DtorAltCount
  1052. dd offset Strings____destruct; DtorAddr
  1053. dw 1 ; DtorMask
  1054. dw 40h ; DtorMemberOff
  1055. db 'Strings',0 ; Name
  1056. dd 0
  1057. dd 0
  1058. dd 0 ; end of tpid
  1059.  
  1060. ; =============== S U B R O U T I N E =======================================
  1061.  
  1062. ; Attributes: bp-based frame
  1063.  
  1064. ; int *__cdecl Strings____construct(int *vtablePtr)
  1065. Strings____construct proc near ; CODE XREF: callStringsConstructorForInstance1+1Bp
  1066.  
  1067. vtablePtr = dword ptr 8
  1068.  
  1069. push ebp
  1070. mov ebp, esp
  1071. xor edx, edx
  1072. xor ecx, ecx
  1073. ; 4: result = vtablePtr;
  1074. mov eax, [ebp+vtablePtr]
  1075. ; 5: vtablePtr[1] = 0;
  1076. mov [eax+4], edx
  1077. ; 6: *vtablePtr = 0;
  1078. mov [eax], edx
  1079. ; 7: vtablePtr[2] = 0;
  1080. mov [eax+8], ecx
  1081. ; 8: *(vtablePtr + 7) = 0;
  1082. mov [eax+0Eh], cx
  1083. ; 9: *(vtablePtr + 6) = 0;
  1084. mov [eax+0Ch], cx
  1085. ; 10: ++*classInstanceCounter;
  1086. mov edx, ds:classInstanceCounter
  1087. inc dword ptr [edx]
  1088. ; 11: return result;
  1089. pop ebp
  1090. retn
  1091. Strings____construct endp
  1092.  
  1093.  
  1094. ; =============== S U B R O U T I N E =======================================
  1095.  
  1096. ; Attributes: bp-based frame
  1097.  
  1098. ; int __cdecl Strings____destruct(void *, char)
  1099. Strings____destruct proc near ; CODE XREF: callStringsDestructorForInstance1+7p
  1100. ; DATA XREF: CODE:classdesc_Stringso
  1101.  
  1102. arg_0 = dword ptr 8
  1103. arg_4 = byte ptr 0Ch
  1104.  
  1105. push ebp
  1106. mov ebp, esp
  1107. mov eax, ds:classInstanceCounter
  1108. push ebx
  1109. mov ebx, [ebp+arg_0]
  1110. dec dword ptr [eax]
  1111. test ebx, ebx
  1112. jz short loc_401754
  1113. mov eax, [ebx]
  1114. test eax, eax
  1115. jz short loc_401747
  1116. push eax ; void *
  1117. call @$bdla$qpv ; operator delete[](void *)
  1118. pop ecx
  1119.  
  1120. loc_401747: ; CODE XREF: Strings____destruct+16j
  1121. test [ebp+arg_4], 1
  1122. jz short loc_401754
  1123. push ebx ; void *
  1124. call @$bdele$qpv ; operator delete(void *)
  1125. pop ecx
  1126.  
  1127. loc_401754: ; CODE XREF: Strings____destruct+10j
  1128. ; Strings____destruct+23j
  1129. pop ebx
  1130. pop ebp
  1131. retn
  1132. Strings____destruct endp
  1133.  
  1134. ; ---------------------------------------------------------------------------
  1135. align 4
  1136.  
  1137. ; =============== S U B R O U T I N E =======================================
  1138.  
  1139. ; Attributes: bp-based frame
  1140.  
  1141. ; int __cdecl Strings__loadFile(int *vtablePtr, const char *path)
  1142. Strings__loadFile proc near ; CODE XREF: WinMain+1C9p
  1143.  
  1144. var_2C = dword ptr -2Ch
  1145. var_1C = word ptr -1Ch
  1146. var_C = dword ptr -0Ch
  1147. var_8 = dword ptr -8
  1148. vtablePtr = dword ptr 8
  1149. path = dword ptr 0Ch
  1150.  
  1151. push ebp
  1152. ; 8: __InitExceptBlock();
  1153. mov ebp, esp
  1154. add esp, 0FFFFFFD4h
  1155. mov eax, offset unk_403188
  1156. push ebx
  1157. mov ebx, [ebp+vtablePtr]
  1158. call @__InitExceptBlock
  1159. ; 9: FileRStream____constructWithPath(&v5, (char *)path);
  1160. mov [ebp+var_1C], 8
  1161. mov edx, [ebp+path]
  1162. push edx ; path
  1163. lea ecx, [ebp+var_C]
  1164. push ecx ; int
  1165. call FileRStream____constructWithPath
  1166. ; 10: if ( v6 )
  1167. add esp, 8
  1168. cmp [ebp+var_8], 0
  1169. jnz short loc_4017B1
  1170. ; 17: LOBYTE(v3) = Strings__internal1(vtablePtr, &v5);
  1171. lea eax, [ebp+var_C]
  1172. push eax
  1173. push ebx
  1174. call Strings__readFromStream
  1175. ; 18: v4 = v3;
  1176. add esp, 8
  1177. lea edx, [ebp+var_C]
  1178. push eax
  1179. ; 19: FileRStream____destruct(&v5, 2);
  1180. push 2 ; char
  1181. push edx ; void *
  1182. call FileRStream____destruct
  1183. ; 20: result = v4;
  1184. add esp, 8
  1185. pop eax
  1186. mov edx, [ebp+var_2C]
  1187. mov large fs:0, edx
  1188. jmp short loc_4017CD
  1189. ; ---------------------------------------------------------------------------
  1190. ; 13: result = 0;
  1191.  
  1192. loc_4017B1: ; CODE XREF: Strings__loadFile+2Ej
  1193. xor eax, eax
  1194. ; 12: FileRStream____destruct(&v5, 2);
  1195. lea edx, [ebp+var_C]
  1196. push eax
  1197. push 2 ; char
  1198. push edx ; void *
  1199. call FileRStream____destruct
  1200. add esp, 8
  1201. pop eax
  1202. mov edx, [ebp+var_2C]
  1203. mov large fs:0, edx
  1204. ; 22: return result;
  1205.  
  1206. loc_4017CD: ; CODE XREF: Strings__loadFile+57j
  1207. pop ebx
  1208. mov esp, ebp
  1209. pop ebp
  1210. retn
  1211. Strings__loadFile endp
  1212.  
  1213. ; ---------------------------------------------------------------------------
  1214. align 4
  1215.  
  1216. ; =============== S U B R O U T I N E =======================================
  1217.  
  1218. ; Attributes: bp-based frame
  1219.  
  1220. ; char __cdecl Strings__readFromStream(int *vtablePtr, int *fileStreamPtr)
  1221. Strings__readFromStream proc near ; CODE XREF: Strings__loadFile+35p
  1222.  
  1223. vtablePtr = dword ptr 8
  1224. fileStreamPtr = dword ptr 0Ch
  1225.  
  1226. push ebp
  1227. ; 5: (*(void (__cdecl **)(_DWORD, _DWORD, _DWORD))(*fileStreamPtr + 24))(fileStreamPtr, 4, vtablePtr + 2);// this is FileRStream::read(4,buf) and reads the length of the file
  1228. mov ebp, esp
  1229. push ebx
  1230. push esi
  1231. push edi
  1232. mov edi, [ebp+fileStreamPtr]
  1233. mov ebx, [ebp+vtablePtr]
  1234. lea eax, [ebx+8]
  1235. push eax
  1236. push 4
  1237. push edi
  1238. mov edx, [edi]
  1239. call dword ptr [edx+18h]
  1240. ; 6: v2 = operator new__(vtablePtr[2]);
  1241. add esp, 0Ch
  1242. mov ecx, [ebx+8]
  1243. push ecx
  1244. call @$bnwa$qui ; operator new[](uint)
  1245. ; 7: *vtablePtr = v2;
  1246. pop ecx
  1247. mov esi, eax
  1248. mov [ebx], esi
  1249. ; 8: if ( v2 )
  1250. test esi, esi
  1251. jz short loc_40181A
  1252. ; 10: (*(void (__cdecl **)(_DWORD, _DWORD, _DWORD))(*fileStreamPtr + 24))(fileStreamPtr, vtablePtr[2], v2);// FileRStream::read
  1253. mov eax, esi
  1254. mov edx, [ebx+8]
  1255. push eax
  1256. push edx
  1257. push edi
  1258. mov ecx, [edi]
  1259. call dword ptr [ecx+18h]
  1260. ; 11: vtablePtr[1] = *vtablePtr;
  1261. add esp, 0Ch
  1262. mov eax, [ebx]
  1263. mov [ebx+4], eax
  1264. ; 12: result = 1;
  1265. mov al, 1
  1266. jmp short loc_40181C
  1267. ; ---------------------------------------------------------------------------
  1268. ; 16: result = 0;
  1269.  
  1270. loc_40181A: ; CODE XREF: Strings__readFromStream+2Bj
  1271. xor eax, eax
  1272. ; 18: return result;
  1273.  
  1274. loc_40181C: ; CODE XREF: Strings__readFromStream+44j
  1275. pop edi
  1276. pop esi
  1277. pop ebx
  1278. pop ebp
  1279. retn
  1280. Strings__readFromStream endp
  1281.  
  1282. ; ---------------------------------------------------------------------------
  1283. align 4
  1284.  
  1285. ; =============== S U B R O U T I N E =======================================
  1286.  
  1287. ; Attributes: bp-based frame
  1288.  
  1289. ; char __cdecl Strings__internal2(int *vtablePtr, char *a2, int a3)
  1290. Strings__internal2 proc near ; CODE XREF: Strings__loadText+24p
  1291.  
  1292. vtablePtr = dword ptr 8
  1293. arg_4 = dword ptr 0Ch
  1294. arg_8 = dword ptr 10h
  1295.  
  1296. push ebp
  1297. ; 11: v3 = vtablePtr[1];
  1298. mov ebp, esp
  1299. push ebx
  1300. push esi
  1301. mov eax, [ebp+vtablePtr]
  1302. mov edx, [eax+4]
  1303. ; 12: if ( vtablePtr[2] + *vtablePtr > (unsigned int)vtablePtr[1] )
  1304. mov ecx, [eax]
  1305. add ecx, [eax+8]
  1306. cmp ecx, [eax+4]
  1307. setnbe cl
  1308. and ecx, 1
  1309. test cl, cl
  1310. jnz short loc_401845
  1311. ; 48: result = 0;
  1312. xor eax, eax
  1313. jmp short loc_4018A5
  1314. ; ---------------------------------------------------------------------------
  1315. ; 14: if ( !*((_WORD *)vtablePtr + 6) )
  1316.  
  1317. loc_401845: ; CODE XREF: Strings__internal2+1Bj
  1318. cmp word ptr [eax+0Ch], 0
  1319. jnz short loc_40185F
  1320. ; 16: v5 = *(_WORD *)v3;
  1321. mov cx, [edx]
  1322. ; 17: v3 += 2;
  1323. add edx, 2
  1324. ; 18: *((_WORD *)vtablePtr + 6) = v5;
  1325. mov [eax+0Ch], cx
  1326. ; 19: vtablePtr[1] = v3;
  1327. mov [eax+4], edx
  1328. ; 20: *((_WORD *)vtablePtr + 7) = 0;
  1329. mov word ptr [eax+0Eh], 0
  1330. ; 22: if ( *((_WORD *)vtablePtr + 7) >= *((_WORD *)vtablePtr + 6) )
  1331.  
  1332. loc_40185F: ; CODE XREF: Strings__internal2+26j
  1333. mov cx, [eax+0Eh]
  1334. cmp cx, [eax+0Ch]
  1335. jge short loc_401899
  1336. ; 30: v8 = *(_WORD *)v3;
  1337. mov bx, [edx]
  1338. ; 31: v9 = v3 + 2;
  1339. mov esi, [ebp+arg_4]
  1340. add edx, 2
  1341. ; 32: *(_DWORD *)a2 = v9;
  1342. mov [esi], edx
  1343. ; 33: v10 = v8 + v9;
  1344. mov ecx, edx
  1345. movsx edx, bx
  1346. add ecx, edx
  1347. ; 34: v6 = *(_BYTE *)v10;
  1348. mov dl, [ecx]
  1349. ; 35: v7 = v10 + 1;
  1350. inc ecx
  1351. ; 36: if ( a3 )
  1352. cmp [ebp+arg_8], 0
  1353. jz short loc_40188E
  1354. ; 38: *(_DWORD *)a3 = v7;
  1355. movsx edx, dl
  1356. mov ebx, [ebp+arg_8]
  1357. mov [ebx], ecx
  1358. ; 39: v7 += v6;
  1359. add ecx, edx
  1360. ; 41: vtablePtr[1] = v7;
  1361.  
  1362. loc_40188E: ; CODE XREF: Strings__internal2+5Ej
  1363. mov [eax+4], ecx
  1364. ; 42: ++*((_WORD *)vtablePtr + 7);
  1365. inc word ptr [eax+0Eh]
  1366. ; 43: result = 1;
  1367. mov al, 1
  1368. jmp short loc_4018A5
  1369. ; ---------------------------------------------------------------------------
  1370.  
  1371. loc_401899: ; CODE XREF: Strings__internal2+43j
  1372. xor ecx, ecx
  1373. ; 24: *((_WORD *)vtablePtr + 7) = 0;
  1374. mov [eax+0Eh], cx
  1375. ; 25: *((_WORD *)vtablePtr + 6) = 0;
  1376. mov [eax+0Ch], cx
  1377. ; 26: result = 0;
  1378. xor eax, eax
  1379. ; 50: return result;
  1380.  
  1381. loc_4018A5: ; CODE XREF: Strings__internal2+1Fj
  1382. ; Strings__internal2+73j
  1383. pop esi
  1384. pop ebx
  1385. pop ebp
  1386. retn
  1387. Strings__internal2 endp
  1388.  
  1389. ; ---------------------------------------------------------------------------
  1390. align 4
  1391.  
  1392. ; =============== S U B R O U T I N E =======================================
  1393.  
  1394. ; Attributes: bp-based frame
  1395.  
  1396. ; __int16 __cdecl Strings__loadText(int *vtablePtr, char *targetString, int elementCount, int offset)
  1397. Strings__loadText proc near ; CODE XREF: WinMain+1E3p WinMain+1F9p
  1398.  
  1399. vtablePtrCopy = word ptr -2
  1400. vtablePtr = dword ptr 8
  1401. targetString = dword ptr 0Ch
  1402. offset = dword ptr 14h
  1403.  
  1404. push ebp
  1405. ; 7: vtablePtrCopy = *vtablePtr[1];
  1406. mov ebp, esp
  1407. push ecx
  1408. push ebx
  1409. push esi
  1410. push edi
  1411. mov eax, [ebp+vtablePtr]
  1412. mov eax, [eax+4]
  1413. mov dx, [eax]
  1414. mov [ebp+vtablePtrCopy], dx
  1415. ; 8: targetStringArrayCopy = targetStringArray;
  1416. mov esi, [ebp+targetString]
  1417. ; 9: offsetCopy = offset;
  1418. mov ebx, [ebp+offset]
  1419. ; 10: counter = 0;
  1420. xor edi, edi
  1421. jmp short loc_4018E3
  1422. ; ---------------------------------------------------------------------------
  1423. ; 13: sub_401824(vtablePtr, targetStringArrayCopy, offsetCopy);
  1424.  
  1425. loc_4018CA: ; CODE XREF: Strings__loadText+3Dj
  1426. push ebx
  1427. push esi
  1428. mov eax, [ebp+vtablePtr]
  1429. push eax
  1430. call Strings__internal2
  1431. ; 14: if ( offsetCopy )
  1432. add esp, 0Ch
  1433. test ebx, ebx
  1434. jz short loc_4018DF
  1435. ; 15: offsetCopy += 4;
  1436. add ebx, 4
  1437. ; 16: ++counter;
  1438.  
  1439. loc_4018DF: ; CODE XREF: Strings__loadText+2Ej
  1440. inc edi
  1441. ; 17: targetStringArrayCopy += 4;
  1442. add esi, 4
  1443. ; 11: while ( counter < vtablePtrCopy )
  1444.  
  1445. loc_4018E3: ; CODE XREF: Strings__loadText+1Cj
  1446. movsx edx, [ebp+vtablePtrCopy]
  1447. cmp edi, edx
  1448. jl short loc_4018CA
  1449. ; 19: *(vtablePtr + 6) = 0;
  1450. mov ecx, [ebp+vtablePtr]
  1451. mov word ptr [ecx+0Ch], 0
  1452. ; 20: return vtablePtrCopy;
  1453. mov ax, [ebp+vtablePtrCopy]
  1454. pop edi
  1455. pop esi
  1456. pop ebx
  1457. pop ecx
  1458. pop ebp
  1459. retn
  1460. Strings__loadText endp
  1461.  
  1462. ; ---------------------------------------------------------------------------
  1463. align 10h
  1464.  
  1465. ; =============== S U B R O U T I N E =======================================
  1466.  
  1467. ; Attributes: bp-based frame
  1468.  
  1469. ; int __cdecl Strings__internal3(int *vtablePtr)
  1470. Strings__internal3 proc near
  1471.  
  1472. vtablePtr = dword ptr 8
  1473.  
  1474. push ebp
  1475. ; 4: if ( *vtablePtr )
  1476. mov ebp, esp
  1477. mov eax, [ebp+vtablePtr]
  1478. mov edx, [eax]
  1479. test edx, edx
  1480. jz short loc_401916
  1481. ; 5: result = *vtablePtr + 4;
  1482. mov eax, edx
  1483. add eax, 2
  1484. add eax, 2
  1485. ; 8: return result;
  1486. pop ebp
  1487. retn
  1488. ; ---------------------------------------------------------------------------
  1489. ; 7: result = 0;
  1490.  
  1491. loc_401916: ; CODE XREF: Strings__internal3+Aj
  1492. xor eax, eax
  1493. pop ebp
  1494. retn
  1495. Strings__internal3 endp
  1496.  
  1497. ; ---------------------------------------------------------------------------
  1498. align 4
  1499.  
  1500. ; =============== S U B R O U T I N E =======================================
  1501.  
  1502. ; Attributes: bp-based frame
  1503.  
  1504. ; int __cdecl Strings__internal4(int *a1, unsigned int a2)
  1505. Strings__internal4 proc near
  1506.  
  1507. arg_0 = dword ptr 8
  1508. arg_4 = dword ptr 0Ch
  1509.  
  1510. push ebp
  1511. ; 4: if ( a1[2] + *a1 > a2 )
  1512. mov ebp, esp
  1513. push ebx
  1514. mov edx, [ebp+arg_0]
  1515. mov eax, [ebp+arg_4]
  1516. mov ecx, eax
  1517. mov ebx, [edx]
  1518. add ebx, [edx+8]
  1519. cmp ebx, eax
  1520. setnbe dl
  1521. and edx, 1
  1522. test dl, dl
  1523. jz short loc_401952
  1524. ; 5: result = *(_BYTE *)(*(_WORD *)(a2 - 2) + a2) + 2 + *(_WORD *)(a2 - 2) + a2 + 1;
  1525. sub ecx, 2
  1526. mov dx, [ecx]
  1527. movsx ecx, dx
  1528. add eax, ecx
  1529. mov dl, [eax]
  1530. inc eax
  1531. movsx ecx, dl
  1532. add ecx, 2
  1533. add eax, ecx
  1534. ; 8: return result;
  1535. pop ebx
  1536. pop ebp
  1537. retn
  1538. ; ---------------------------------------------------------------------------
  1539. ; 7: result = 0;
  1540.  
  1541. loc_401952: ; CODE XREF: Strings__internal4+1Bj
  1542. xor eax, eax
  1543. pop ebx
  1544. pop ebp
  1545. retn
  1546. Strings__internal4 endp
  1547.  
  1548. ; ---------------------------------------------------------------------------
  1549. align 4
  1550.  
  1551. ; =============== S U B R O U T I N E =======================================
  1552.  
  1553. ; Attributes: bp-based frame
  1554.  
  1555. ; int __cdecl Strings__internal5(int *vtablePtr, unsigned int a2)
  1556. Strings__internal5 proc near
  1557.  
  1558. vtablePtr = dword ptr 8
  1559. arg_4 = dword ptr 0Ch
  1560.  
  1561. push ebp
  1562. ; 6: if ( vtablePtr[2] + *vtablePtr > a2 )
  1563. mov ebp, esp
  1564. push ebx
  1565. mov edx, [ebp+vtablePtr]
  1566. mov eax, [ebp+arg_4]
  1567. mov ecx, eax
  1568. mov ebx, [edx]
  1569. add ebx, [edx+8]
  1570. cmp ebx, eax
  1571. setnbe dl
  1572. and edx, 1
  1573. test dl, dl
  1574. jz short loc_40198A
  1575. ; 8: v3 = *(_WORD *)(a2 - 2) + a2;
  1576. mov dx, [ecx-2]
  1577. movsx ecx, dx
  1578. add eax, ecx
  1579. ; 9: v4 = *(_BYTE *)v3;
  1580. mov dl, [eax]
  1581. ; 10: result = v3 + 1;
  1582. inc eax
  1583. ; 11: if ( !v4 )
  1584. test dl, dl
  1585. jnz short loc_40198C
  1586. ; 12: result = 0;
  1587. xor eax, eax
  1588. ; 18: return result;
  1589. pop ebx
  1590. pop ebp
  1591. retn
  1592. ; ---------------------------------------------------------------------------
  1593. ; 16: result = 0;
  1594.  
  1595. loc_40198A: ; CODE XREF: Strings__internal5+1Bj
  1596. xor eax, eax
  1597.  
  1598. loc_40198C: ; CODE XREF: Strings__internal5+2Bj
  1599. pop ebx
  1600. pop ebp
  1601. retn
  1602. Strings__internal5 endp
  1603.  
  1604. ; ---------------------------------------------------------------------------
  1605. align 10h
  1606.  
  1607. ; =============== S U B R O U T I N E =======================================
  1608.  
  1609. ; Attributes: bp-based frame
  1610.  
  1611. ; int __cdecl Assert____construct(int vtablePtr)
  1612. Assert____construct proc near ; CODE XREF: Assert__constructWithExceptBlock+1Bp
  1613.  
  1614. vtablePtr = dword ptr 8
  1615.  
  1616. push ebp
  1617. ; 2: sub_401CAC(0, 1, 0, 0, 0);
  1618. mov ebp, esp
  1619. push ebx
  1620. mov ebx, [ebp+vtablePtr]
  1621. push 0 ; buf
  1622. push 0 ; int
  1623. push 0 ; int
  1624. push 1 ; int
  1625. push 0 ; int
  1626. call Assert__act
  1627. ; 3: ++*(_DWORD *)classInstanceCounter;
  1628. add esp, 14h
  1629. mov eax, ds:classInstanceCounter
  1630. inc dword ptr [eax]
  1631. ; 4: return vtablePtr;
  1632. mov eax, ebx
  1633. pop ebx
  1634. pop ebp
  1635. retn
  1636. Assert____construct endp
  1637.  
  1638. ; ---------------------------------------------------------------------------
  1639. align 4
  1640.  
  1641. ; =============== S U B R O U T I N E =======================================
  1642.  
  1643. ; Attributes: bp-based frame
  1644.  
  1645. ; void __cdecl Assert____destruct(void *vtablePtr, char a2)
  1646. Assert____destruct proc near ; CODE XREF: Assert__destructWithParam2+7p
  1647. ; DATA XREF: CODE:classdesc_Asserto
  1648.  
  1649. vtablePtr = dword ptr 8
  1650. arg_4 = byte ptr 0Ch
  1651.  
  1652. push ebp
  1653. ; 2: --*classInstanceCounter;
  1654. mov ebp, esp
  1655. mov eax, ds:classInstanceCounter
  1656. push ebx
  1657. mov ebx, [ebp+vtablePtr]
  1658. dec dword ptr [eax]
  1659. ; 3: if ( vtablePtr )
  1660. test ebx, ebx
  1661. jz short loc_4019E9
  1662. ; 5: Assert__act(1, 1, 0, 0, 0); // this doesnt do anything
  1663. push 0 ; buf
  1664. push 0 ; int
  1665. push 0 ; int
  1666. push 1 ; int
  1667. push 1 ; int
  1668. call Assert__act
  1669. ; 6: if ( a2 & 1 )
  1670. add esp, 14h
  1671. test [ebp+arg_4], 1
  1672. jz short loc_4019E9
  1673. ; 7: operator delete(vtablePtr);
  1674. push ebx ; void *
  1675. call @$bdele$qpv ; operator delete(void *)
  1676. pop ecx
  1677.  
  1678. loc_4019E9: ; CODE XREF: Assert____destruct+10j
  1679. ; Assert____destruct+28j
  1680. pop ebx
  1681. pop ebp
  1682. retn
  1683. Assert____destruct endp
  1684.  
  1685.  
  1686. ; =============== S U B R O U T I N E =======================================
  1687.  
  1688. ; Attributes: bp-based frame
  1689.  
  1690. ; int __cdecl Assert__internal1(int *vtablePtr, int a2)
  1691. Assert__internal1 proc near ; CODE XREF: Assert__preAct+23p
  1692.  
  1693. arg_4 = dword ptr 0Ch
  1694.  
  1695. push ebp
  1696. ; 5: for ( i = dword_4037A0; i; i = *i )
  1697. mov ebp, esp
  1698. push ebx
  1699. push esi
  1700. mov esi, [ebp+arg_4]
  1701. mov ebx, ds:strangeAssertDWORD
  1702. test ebx, ebx
  1703. jz short loc_401A09
  1704. ; 6: result = (*(i + 4))(a2);
  1705.  
  1706. loc_4019FE: ; CODE XREF: Assert__internal1+1Bj
  1707. push esi
  1708. call dword ptr [ebx+4]
  1709. pop ecx
  1710. mov ebx, [ebx]
  1711. test ebx, ebx
  1712. jnz short loc_4019FE
  1713. ; 7: return result;
  1714.  
  1715. loc_401A09: ; CODE XREF: Assert__internal1+10j
  1716. pop esi
  1717. pop ebx
  1718. pop ebp
  1719. retn
  1720. Assert__internal1 endp
  1721.  
  1722. ; ---------------------------------------------------------------------------
  1723. align 10h
  1724.  
  1725. ; =============== S U B R O U T I N E =======================================
  1726.  
  1727. ; Attributes: bp-based frame
  1728.  
  1729. ; int __cdecl Assert__preAct(int a1, int msgType, int ignored, const char *sourceFileName, int lineNumber, void *buf)
  1730. Assert__preAct proc near
  1731.  
  1732. arg_0 = dword ptr 8
  1733. msgType = dword ptr 0Ch
  1734. ignored = dword ptr 10h
  1735. sourceFileName = dword ptr 14h
  1736. lineNumber = dword ptr 18h
  1737. buf = dword ptr 1Ch
  1738.  
  1739. push ebp
  1740. ; 2: if ( msgType == 4 || msgType == 5 || msgType == 6 )
  1741. mov ebp, esp
  1742. push ebx
  1743. push esi
  1744. push edi
  1745. mov edi, [ebp+sourceFileName]
  1746. mov esi, [ebp+ignored]
  1747. mov ebx, [ebp+msgType]
  1748. mov eax, [ebp+arg_0]
  1749. cmp ebx, 4
  1750. jz short loc_401A31
  1751. cmp ebx, 5
  1752. jz short loc_401A31
  1753. cmp ebx, 6
  1754. jnz short loc_401A6A
  1755. ; 4: sub_4019EC(a1, msgType);
  1756.  
  1757. loc_401A31: ; CODE XREF: Assert__preAct+15j
  1758. ; Assert__preAct+1Aj
  1759. push ebx
  1760. push eax
  1761. call Assert__internal1
  1762. ; 5: Assert__act(msgType, ignored, sourceFileName, lineNumber, buf);
  1763. add esp, 8
  1764. mov eax, [ebp+buf]
  1765. push eax ; buf
  1766. mov edx, [ebp+lineNumber]
  1767. push edx ; int
  1768. push edi ; int
  1769. push esi ; int
  1770. push ebx ; int
  1771. call Assert__act
  1772. ; 6: Assert__act(1, 1, 0, 0, 0); // this doesnt do anything
  1773. add esp, 14h
  1774. push 0 ; buf
  1775. push 0 ; int
  1776. push 0 ; int
  1777. push 1 ; int
  1778. push 1 ; int
  1779. call Assert__act
  1780. ; 7: _exit(1);
  1781. add esp, 14h
  1782. push 1 ; status
  1783. call __exit
  1784. ; ---------------------------------------------------------------------------
  1785. pop ecx
  1786. jmp short loc_401A7D
  1787. ; ---------------------------------------------------------------------------
  1788. ; 9: return Assert__act(msgType, ignored, sourceFileName, lineNumber, buf);
  1789.  
  1790. loc_401A6A: ; CODE XREF: Assert__preAct+1Fj
  1791. mov ecx, [ebp+buf]
  1792. push ecx ; buf
  1793. mov eax, [ebp+lineNumber]
  1794. push eax ; int
  1795. push edi ; int
  1796. push esi ; int
  1797. push ebx ; int
  1798. call Assert__act
  1799. add esp, 14h
  1800.  
  1801. loc_401A7D: ; CODE XREF: Assert__preAct+58j
  1802. pop edi
  1803. pop esi
  1804. pop ebx
  1805. pop ebp
  1806. retn
  1807. Assert__preAct endp
  1808.  
  1809. ; ---------------------------------------------------------------------------
  1810. align 4
  1811.  
  1812. ; =============== S U B R O U T I N E =======================================
  1813.  
  1814. ; Attributes: bp-based frame
  1815.  
  1816. ; int __cdecl Assert__assert_abort_notify(int *vtablePtr)
  1817. Assert__assert_abort_notify proc near
  1818.  
  1819. vtablePtr = dword ptr 8
  1820.  
  1821. push ebp
  1822. ; 4: result = operator new(8);
  1823. mov ebp, esp
  1824. push ebx
  1825. push 8
  1826. call @$bnew$qui ; operator new(uint)
  1827. ; 5: if ( !result )
  1828. pop ecx
  1829. mov ebx, eax
  1830. test eax, eax
  1831. jnz short loc_401AAD
  1832. ; 7: (fputs.curp)("Assert::assert_abort_notify: Cannot allocate memory.", &fputs);
  1833. push offset _fputs ; stream
  1834. push offset s ; "Assert::assert_abort_notify: Cannot all"...
  1835. call _fputs
  1836. ; 8: abort();
  1837. add esp, 8
  1838. call _abort
  1839. ; ---------------------------------------------------------------------------
  1840. ; 10: *result = strangeAssertDWORD;
  1841.  
  1842. loc_401AAD: ; CODE XREF: Assert__assert_abort_notify+10j
  1843. mov edx, ds:strangeAssertDWORD
  1844. mov [ebx], edx
  1845. ; 11: *(result + 4) = vtablePtr;
  1846. mov ecx, [ebp+vtablePtr]
  1847. mov [ebx+4], ecx
  1848. ; 12: strangeAssertDWORD = result;
  1849. mov ds:strangeAssertDWORD, ebx
  1850. ; 13: return result;
  1851. pop ebx
  1852. pop ebp
  1853. retn
  1854. Assert__assert_abort_notify endp
  1855.  
  1856. ; 2: return dword_403794;
  1857.  
  1858. ; =============== S U B R O U T I N E =======================================
  1859.  
  1860.  
  1861. Assert__returnSomeGlobalDWORD proc near
  1862. mov eax, ds:dword_403794
  1863. retn
  1864. Assert__returnSomeGlobalDWORD endp
  1865.  
  1866. ; ---------------------------------------------------------------------------
  1867. align 4
  1868. ; 2: return dword_403798;
  1869.  
  1870. ; =============== S U B R O U T I N E =======================================
  1871.  
  1872.  
  1873. Assert__returnSomeGlobalDWORD_2 proc near
  1874. mov eax, ds:dword_403798
  1875. retn
  1876. Assert__returnSomeGlobalDWORD_2 endp
  1877.  
  1878. ; ---------------------------------------------------------------------------
  1879. align 4
  1880.  
  1881. ; =============== S U B R O U T I N E =======================================
  1882.  
  1883. ; Attributes: bp-based frame
  1884.  
  1885. Assert__constructWithExceptBlock proc near ; DATA XREF: DATA:0040348Co
  1886.  
  1887. var_20 = dword ptr -20h
  1888. var_10 = word ptr -10h
  1889.  
  1890. push ebp
  1891. ; 2: __InitExceptBlock();
  1892. mov ebp, esp
  1893. add esp, 0FFFFFFE0h
  1894. mov eax, offset unk_4031AC
  1895. call @__InitExceptBlock
  1896. ; 3: return Assert____construct(&InstanceOfAssertVtable);
  1897. mov [ebp+var_10], 8
  1898. push offset InstanceOfAssertVtable
  1899. call Assert____construct
  1900. pop ecx
  1901. mov edx, [ebp+var_20]
  1902. mov large fs:0, edx
  1903. mov esp, ebp
  1904. pop ebp
  1905. retn
  1906. Assert__constructWithExceptBlock endp
  1907.  
  1908. ; ---------------------------------------------------------------------------
  1909. align 4
  1910. ; 2: Assert____destruct(&InstanceOfAssertVtable, 2);
  1911.  
  1912. ; =============== S U B R O U T I N E =======================================
  1913.  
  1914.  
  1915. Assert__destructWithParam2 proc near ; DATA XREF: DATA:00403498o
  1916. push 2 ; char
  1917. push offset InstanceOfAssertVtable ; void *
  1918. call Assert____destruct
  1919. add esp, 8
  1920. retn
  1921. Assert__destructWithParam2 endp
  1922.  
  1923. ; ---------------------------------------------------------------------------
  1924. classdesc_Assert dd 1 ; tpDtt ; DATA XREF: DATA:off_40319Co
  1925. dw 3 ; tpMask
  1926. dw 30h ; tpName
  1927. dd 0FFFFFFFFh ; bParent
  1928. dd 3 ; tpcFlags
  1929. dw 38h ; Size
  1930. dw 3Ch ; ExpDim
  1931. dd 0 ; mfnDel
  1932. dw 0 ; mfnMask
  1933. dw 0 ; mfnMaskArr
  1934. dd 0 ; mfnDelArr
  1935. dd 1 ; DtorCount
  1936. dd 1 ; DtorAltCount
  1937. dd offset Assert____destruct; DtorAddr
  1938. dw 1 ; DtorMask
  1939. dw 40h ; DtorMemberOff
  1940. db 'Assert',0 ; Name
  1941. align 4
  1942. dd 0
  1943. dd 0
  1944. dd 0 ; end of tpid
  1945.  
  1946. ; =============== S U B R O U T I N E =======================================
  1947.  
  1948. ; Attributes: bp-based frame
  1949.  
  1950. ; int __cdecl Assert__prepareMsg(char *buffer, int msgType, const char *sourceFile, int lineNumber, const char *msg)
  1951. Assert__prepareMsg proc near ; CODE XREF: Assert__act+62p
  1952. ; Assert__act+A8p
  1953.  
  1954. buffer = dword ptr 8
  1955. msgType = dword ptr 0Ch
  1956. sourceFile = dword ptr 10h
  1957. lineNumber = dword ptr 14h
  1958. msg = dword ptr 18h
  1959.  
  1960. push ebp
  1961. ; 4: result = sprintf(buffer, "Assert::%s: Line %d in \"%s\"", assertTypes[msgType], lineNumber, sourceFile);
  1962. mov ebp, esp
  1963. push ebx
  1964. push esi
  1965. mov esi, [ebp+msg]
  1966. mov ebx, [ebp+buffer]
  1967. mov eax, [ebp+sourceFile]
  1968. push eax
  1969. mov edx, [ebp+lineNumber]
  1970. push edx
  1971. mov ecx, [ebp+msgType]
  1972. mov eax, ds:assertTypes[ecx*4]
  1973. push eax
  1974. push offset format ; "Assert::%s: Line %d in \"%s\""
  1975. push ebx ; buffer
  1976. call _sprintf
  1977. ; 5: if ( msg )
  1978. add esp, 14h
  1979. test esi, esi
  1980. jz short loc_401B99
  1981. ; 6: result = sprintf(&buffer[result], ": %s", msg);
  1982. push esi
  1983. push offset aS_1 ; ": %s"
  1984. add eax, ebx
  1985. push eax ; buffer
  1986. call _sprintf
  1987. add esp, 0Ch
  1988. ; 7: return result;
  1989.  
  1990. loc_401B99: ; CODE XREF: Assert__prepareMsg+2Ej
  1991. pop esi
  1992. pop ebx
  1993. pop ebp
  1994. retn
  1995. Assert__prepareMsg endp
  1996.  
  1997. ; ---------------------------------------------------------------------------
  1998. align 10h
  1999.  
  2000. ; =============== S U B R O U T I N E =======================================
  2001.  
  2002. ; Attributes: bp-based frame
  2003.  
  2004. Assert__copySomeString proc near
  2005.  
  2006. arg_0 = dword ptr 8
  2007.  
  2008. push ebp
  2009. ; 2: return strcpy(&unknownPositionInAssert, a1);
  2010. mov ebp, esp
  2011. push esi
  2012. push edi
  2013. mov eax, [ebp+arg_0]
  2014. mov esi, offset applicationPathString
  2015. mov edi, eax
  2016. xor eax, eax
  2017. or ecx, 0FFFFFFFFh
  2018. repne scasb
  2019. not ecx
  2020. sub edi, ecx
  2021. mov edx, ecx
  2022. xchg esi, edi
  2023. shr ecx, 2
  2024. mov eax, edi
  2025. rep movsd
  2026. mov ecx, edx
  2027. and ecx, 3
  2028. rep movsb
  2029. pop edi
  2030. pop esi
  2031. pop ebp
  2032. retn
  2033. Assert__copySomeString endp
  2034.  
  2035.  
  2036. ; =============== S U B R O U T I N E =======================================
  2037.  
  2038.  
  2039. ; char *__cdecl Assert__getAssertLogFilePath()
  2040. Assert__getAssertLogFilePath proc near ; CODE XREF: Assert__writeToLogFile+27p
  2041. push esi
  2042. ; 2: strcpy(dest, &applicationPathString);
  2043. push edi
  2044. xor eax, eax
  2045. or ecx, 0FFFFFFFFh
  2046. mov edi, offset applicationPathString
  2047. ; 3: strcat(dest, "assert.log");
  2048. mov esi, offset dest
  2049. repne scasb
  2050. not ecx
  2051. sub edi, ecx
  2052. mov edx, ecx
  2053. xchg esi, edi
  2054. shr ecx, 2
  2055. mov eax, edi
  2056. rep movsd
  2057. mov ecx, edx
  2058. and ecx, 3
  2059. rep movsb
  2060. push offset src ; "assert.log"
  2061. push offset dest ; dest
  2062. call _strcat
  2063. ; 4: return dest;
  2064. add esp, 8
  2065. mov eax, offset dest
  2066. pop edi
  2067. pop esi
  2068. retn
  2069. Assert__getAssertLogFilePath endp
  2070.  
  2071. ; ---------------------------------------------------------------------------
  2072. align 4
  2073.  
  2074. ; =============== S U B R O U T I N E =======================================
  2075.  
  2076. ; Attributes: bp-based frame
  2077.  
  2078. ; int __cdecl Assert__writeToLogFile(void *buf)
  2079. Assert__writeToLogFile proc near ; CODE XREF: Assert__act+43p
  2080. ; Assert__act+71p ...
  2081.  
  2082. terminationStr = word ptr -3
  2083. var_1 = byte ptr -1
  2084. buf = dword ptr 8
  2085.  
  2086. push ebp
  2087. ; 9: *&terminationStr = strCRLF;
  2088. mov ebp, esp
  2089. mov ax, ds:strCRLF
  2090. push ecx
  2091. push ebx
  2092. push esi
  2093. mov esi, [ebp+buf]
  2094. mov [ebp+terminationStr], ax
  2095. ; 10: v7 = strNullbyte;
  2096. mov al, ds:strNullbyte
  2097. mov [ebp+var_1], al
  2098. ; 12: fileHandle = open(logFilePath, 2305, 384);
  2099. push 180h
  2100. push 901h ; access
  2101. ; 11: logFilePath = Assert__getAssertLogFilePath();
  2102. call Assert__getAssertLogFilePath
  2103. push eax ; path
  2104. call _open
  2105. ; 13: fileHandleCopy = fileHandle;
  2106. add esp, 0Ch
  2107. mov ebx, eax
  2108. ; 14: if ( fileHandle < 0 )
  2109. test eax, eax
  2110. jl short loc_401C9F
  2111. ; 16: if ( Assert__haveWrittenHeaderLine )
  2112. cmp ds:Assert__haveWrittenHeaderLine, 0
  2113. jz short loc_401C70
  2114. ; 18: write(fileHandle, "------------------------------------------------------------------------------\r\n", 0x50u);
  2115. push 50h ; len
  2116. push offset asc_403203 ; "---------------------------------------"...
  2117. push ebx ; handle
  2118. call _write
  2119. ; 19: Assert__haveWrittenHeaderLine = 0;
  2120. add esp, 0Ch
  2121. xor edx, edx
  2122. mov ds:Assert__haveWrittenHeaderLine, edx
  2123. ; 21: for ( i = buf; *i; i = i + 1 )
  2124.  
  2125. loc_401C70: ; CODE XREF: Assert__writeToLogFile+42j
  2126. mov eax, esi
  2127. jmp short loc_401C75
  2128. ; ---------------------------------------------------------------------------
  2129.  
  2130. loc_401C74: ; CODE XREF: Assert__writeToLogFile+64j
  2131. inc eax
  2132.  
  2133. loc_401C75: ; CODE XREF: Assert__writeToLogFile+5Ej
  2134. cmp byte ptr [eax], 0
  2135. jnz short loc_401C74
  2136. ; 23: write(fileHandleCopy, buf, i - buf);
  2137. sub eax, esi
  2138. push eax ; len
  2139. push esi ; buf
  2140. push ebx ; handle
  2141. call _write
  2142. ; 24: write(fileHandleCopy, &terminationStr, 2u);
  2143. add esp, 0Ch
  2144. lea edx, [ebp+terminationStr]
  2145. push 2 ; len
  2146. push edx ; buf
  2147. push ebx ; handle
  2148. call _write
  2149. ; 25: return close(fileHandleCopy);
  2150. add esp, 0Ch
  2151. push ebx ; handle
  2152. call _close
  2153. pop ecx
  2154. jmp short loc_401CA4
  2155. ; ---------------------------------------------------------------------------
  2156. ; 15: abort();
  2157.  
  2158. loc_401C9F: ; CODE XREF: Assert__writeToLogFile+39j
  2159. call _abort
  2160. ; ---------------------------------------------------------------------------
  2161.  
  2162. loc_401CA4: ; CODE XREF: Assert__writeToLogFile+89j
  2163. pop esi
  2164. pop ebx
  2165. pop ecx
  2166. pop ebp
  2167. retn
  2168. Assert__writeToLogFile endp
  2169.  
  2170. ; ---------------------------------------------------------------------------
  2171. align 4
  2172.  
  2173. ; =============== S U B R O U T I N E =======================================
  2174.  
  2175. ; Attributes: bp-based frame
  2176.  
  2177. ; int __cdecl Assert__act(int msgType, int ignored, const char *sourceFileName, int lineNumber, void *buf)
  2178. Assert__act proc near ; CODE XREF: Assert____construct+11p
  2179. ; Assert____destruct+1Cp ...
  2180.  
  2181. buffer = byte ptr -200h
  2182. msgType = dword ptr 8
  2183. sourceFileName = dword ptr 10h
  2184. lineNumber = dword ptr 14h
  2185. buf = dword ptr 18h
  2186.  
  2187. push ebp
  2188. ; 5: result = msgType;
  2189. mov ebp, esp
  2190. add esp, 0FFFFFE00h
  2191. mov eax, [ebp+msgType]
  2192. mov edx, eax
  2193. cmp edx, 6 ; switch 7 cases
  2194. ja loc_401D8C ; default
  2195. ; jumptable 00401CC3 cases 0,1,5
  2196. ; 6: switch ( msgType )
  2197. jmp off_401CCA[edx*4] ; switch jump
  2198. ; ---------------------------------------------------------------------------
  2199. off_401CCA dd offset loc_401D8C ; DATA XREF: Assert__act+17r
  2200. dd offset loc_401D8C ; jump table for switch statement
  2201. dd offset loc_401CEB
  2202. dd offset loc_401D3A
  2203. dd offset loc_401CFA
  2204. dd offset loc_401D8C
  2205. dd offset loc_401D80
  2206. ; ---------------------------------------------------------------------------
  2207. jmp loc_401D8C ; default
  2208. ; jumptable 00401CC3 cases 0,1,5
  2209. ; ---------------------------------------------------------------------------
  2210. ; 9: result = Assert__writeToLogFile(buf);
  2211.  
  2212. loc_401CEB: ; CODE XREF: Assert__act+17j
  2213. ; DATA XREF: Assert__act:off_401CCAo
  2214. mov eax, [ebp+buf] ; jumptable 00401CC3 case 2
  2215. push eax ; buf
  2216. call Assert__writeToLogFile
  2217. ; 10: break;
  2218. pop ecx
  2219. jmp loc_401D8C ; default
  2220. ; jumptable 00401CC3 cases 0,1,5
  2221. ; ---------------------------------------------------------------------------
  2222. ; 12: Assert__prepareMsg(&buffer, msgType, sourceFileName, lineNumber, buf);
  2223.  
  2224. loc_401CFA: ; CODE XREF: Assert__act+17j
  2225. ; DATA XREF: Assert__act:off_401CCAo
  2226. mov ecx, [ebp+buf] ; jumptable 00401CC3 case 4
  2227. push ecx ; int
  2228. mov edx, [ebp+lineNumber]
  2229. push edx ; int
  2230. mov ecx, [ebp+sourceFileName]
  2231. push ecx ; int
  2232. push eax ; int
  2233. lea eax, [ebp+buffer]
  2234. push eax ; buffer
  2235. call Assert__prepareMsg
  2236. ; 13: Assert__writeToLogFile(&buffer);
  2237. add esp, 14h
  2238. lea eax, [ebp+buffer]
  2239. push eax ; buf
  2240. call Assert__writeToLogFile
  2241. ; 14: result = MessageBoxA(0, &buffer, "Error", 0);
  2242. pop ecx
  2243. push 0 ; uType
  2244. push offset aError_0 ; "Error"
  2245. lea edx, [ebp+buffer]
  2246. push edx ; lpText
  2247. push 0 ; hWnd
  2248. call MessageBoxA
  2249. ; 15: break;
  2250. jmp short loc_401D8C ; default
  2251. ; jumptable 00401CC3 cases 0,1,5
  2252. ; ---------------------------------------------------------------------------
  2253. ; 17: ++errorCounter;
  2254.  
  2255. loc_401D3A: ; CODE XREF: Assert__act+17j
  2256. ; DATA XREF: Assert__act:off_401CCAo
  2257. inc ds:errorCounter ; jumptable 00401CC3 case 3
  2258. ; 18: Assert__prepareMsg(&buffer, msgType, sourceFileName, lineNumber, buf);
  2259. mov ecx, [ebp+buf]
  2260. push ecx ; int
  2261. mov edx, [ebp+lineNumber]
  2262. push edx ; int
  2263. mov ecx, [ebp+sourceFileName]
  2264. push ecx ; int
  2265. push eax ; int
  2266. lea eax, [ebp+buffer]
  2267. push eax ; buffer
  2268. call Assert__prepareMsg
  2269. ; 19: MessageBoxA(0, &buffer, "Error", 0);
  2270. add esp, 14h
  2271. lea eax, [ebp+buffer]
  2272. push 0 ; uType
  2273. push offset aError_1 ; "Error"
  2274. push eax ; lpText
  2275. push 0 ; hWnd
  2276. call MessageBoxA
  2277. ; 20: result = Assert__writeToLogFile(&buffer);
  2278. lea edx, [ebp+buffer]
  2279. push edx ; buf
  2280. call Assert__writeToLogFile
  2281. ; 21: break;
  2282. pop ecx
  2283. jmp short loc_401D8C ; default
  2284. ; jumptable 00401CC3 cases 0,1,5
  2285. ; ---------------------------------------------------------------------------
  2286. ; 23: result = Assert__writeToLogFile("Assert::break: Ctrl-C / Ctrl-Break");
  2287.  
  2288. loc_401D80: ; CODE XREF: Assert__act+17j
  2289. ; DATA XREF: Assert__act:off_401CCAo
  2290. mov eax, offset aAssertBreakCtr ; jumptable 00401CC3 case 6
  2291. push eax ; buf
  2292. ; 24: break;
  2293. ; 25: default:
  2294. call Assert__writeToLogFile
  2295. pop ecx
  2296. ; 28: return result;
  2297.  
  2298. loc_401D8C: ; CODE XREF: Assert__act+11j
  2299. ; Assert__act+17j ...
  2300. mov esp, ebp ; default
  2301. ; jumptable 00401CC3 cases 0,1,5
  2302. pop ebp
  2303. retn
  2304. Assert__act endp
  2305.  
  2306.  
  2307. ; =============== S U B R O U T I N E =======================================
  2308.  
  2309. ; Attributes: bp-based frame
  2310.  
  2311. ; int __cdecl StreamIO____construct(int *vtablePtr)
  2312. StreamIO____construct proc near ; CODE XREF: FileRStream____constructBlank+8p
  2313. ; FileRStream____constructWithFileHandle+Cp ...
  2314.  
  2315. vtablePtr = dword ptr 8
  2316.  
  2317. push ebp
  2318. ; 6: vtablePtr[1] = 0;
  2319. mov ebp, esp
  2320. xor edx, edx
  2321. ; 4: result = vtablePtr;
  2322. mov eax, [ebp+vtablePtr]
  2323. ; 5: *vtablePtr = (int)&off_40334C;
  2324. mov dword ptr [eax], offset off_40334C
  2325. mov [eax+4], edx
  2326. ; 7: ++*(_DWORD *)classInstanceCounter;
  2327. mov ecx, ds:classInstanceCounter
  2328. inc dword ptr [ecx]
  2329. ; 8: return result;
  2330. pop ebp
  2331. retn
  2332. StreamIO____construct endp
  2333.  
  2334. ; ---------------------------------------------------------------------------
  2335. align 4
  2336.  
  2337. ; =============== S U B R O U T I N E =======================================
  2338.  
  2339. ; Attributes: bp-based frame
  2340.  
  2341. ; void __cdecl StreamIO____destruct(int *vtablePtr, char a2)
  2342. StreamIO____destruct proc near ; CODE XREF: FileRStream____destruct+22p
  2343. ; DATA XREF: CODE:classdesc_StreamIOo ...
  2344.  
  2345. vtablePtr = dword ptr 8
  2346. arg_4 = byte ptr 0Ch
  2347.  
  2348. push ebp
  2349. mov ebp, esp
  2350. mov eax, ds:classInstanceCounter
  2351. push ebx
  2352. mov ebx, [ebp+vtablePtr]
  2353. dec dword ptr [eax]
  2354. test ebx, ebx
  2355. jz short loc_401DD8
  2356. mov dword ptr [ebx], offset off_40334C
  2357. push ebx
  2358. mov edx, [ebx]
  2359. call dword ptr [edx+10h]
  2360. test [ebp+arg_4], 1
  2361. pop ecx
  2362. jz short loc_401DD8
  2363. push ebx ; void *
  2364. call @$bdele$qpv ; operator delete(void *)
  2365. pop ecx
  2366.  
  2367. loc_401DD8: ; CODE XREF: StreamIO____destruct+10j
  2368. ; StreamIO____destruct+23j
  2369. pop ebx
  2370. pop ebp
  2371. retn
  2372. StreamIO____destruct endp
  2373.  
  2374. ; ---------------------------------------------------------------------------
  2375. align 4
  2376.  
  2377. ; =============== S U B R O U T I N E =======================================
  2378.  
  2379. ; Attributes: bp-based frame
  2380.  
  2381. StreamIO__returnZero proc near ; DATA XREF: DATA:00403358o
  2382.  
  2383. arg_4 = dword ptr 0Ch
  2384.  
  2385. push ebp
  2386. mov ebp, esp
  2387. mov eax, [ebp+arg_4]
  2388. sub eax, 1
  2389. jb short loc_401DEE
  2390. sub eax, 4
  2391. jb short loc_401DF2
  2392. jmp short loc_401DF6
  2393. ; ---------------------------------------------------------------------------
  2394.  
  2395. loc_401DEE: ; CODE XREF: StreamIO__returnZero+9j
  2396. xor eax, eax
  2397. pop ebp
  2398. retn
  2399. ; ---------------------------------------------------------------------------
  2400.  
  2401. loc_401DF2: ; CODE XREF: StreamIO__returnZero+Ej
  2402. xor eax, eax
  2403. pop ebp
  2404. retn
  2405. ; ---------------------------------------------------------------------------
  2406.  
  2407. loc_401DF6: ; CODE XREF: StreamIO__returnZero+10j
  2408. xor eax, eax
  2409. pop ebp
  2410. retn
  2411. StreamIO__returnZero endp
  2412.  
  2413. ; ---------------------------------------------------------------------------
  2414. align 4
  2415. ; [00000007 BYTES: COLLAPSED FUNCTION __GetPolymorphicDTC(void *,uint). PRESS KEYPAD "+" TO EXPAND]
  2416. align 4
  2417.  
  2418. ; =============== S U B R O U T I N E =======================================
  2419.  
  2420. ; Attributes: bp-based frame
  2421.  
  2422. StreamIO__returnOne proc near ; DATA XREF: DATA:00403354o
  2423. push ebp
  2424. mov ebp, esp
  2425. mov al, 1
  2426. pop ebp
  2427. retn
  2428. StreamIO__returnOne endp
  2429.  
  2430. ; ---------------------------------------------------------------------------
  2431. align 4
  2432.  
  2433. ; =============== S U B R O U T I N E =======================================
  2434.  
  2435. ; Attributes: bp-based frame
  2436.  
  2437. StreamIO__returnOne_2 proc near ; DATA XREF: DATA:0040335Co
  2438. push ebp
  2439. mov ebp, esp
  2440. mov al, 1
  2441. pop ebp
  2442. retn
  2443. StreamIO__returnOne_2 endp
  2444.  
  2445. ; ---------------------------------------------------------------------------
  2446. align 4
  2447.  
  2448. ; =============== S U B R O U T I N E =======================================
  2449.  
  2450. ; Attributes: bp-based frame
  2451.  
  2452. StreamIO__returnOne_3 proc near ; DATA XREF: DATA:00403360o
  2453. push ebp
  2454. mov ebp, esp
  2455. mov al, 1
  2456. pop ebp
  2457. retn
  2458. StreamIO__returnOne_3 endp
  2459.  
  2460. ; ---------------------------------------------------------------------------
  2461. align 4
  2462.  
  2463. ; =============== S U B R O U T I N E =======================================
  2464.  
  2465. ; Attributes: bp-based frame
  2466.  
  2467. StreamIO__returnOne_4 proc near ; DATA XREF: DATA:00403364o
  2468. push ebp
  2469. mov ebp, esp
  2470. mov al, 1
  2471. pop ebp
  2472. retn
  2473. StreamIO__returnOne_4 endp
  2474.  
  2475. ; ---------------------------------------------------------------------------
  2476. align 4
  2477.  
  2478. ; =============== S U B R O U T I N E =======================================
  2479.  
  2480. ; Attributes: bp-based frame
  2481.  
  2482. ; int __cdecl FileRStream____constructBlank(int *vtablePtr)
  2483. FileRStream____constructBlank proc near
  2484.  
  2485. vtablePtr = dword ptr 8
  2486.  
  2487. push ebp
  2488. ; 2: StreamIO____construct((int)vtablePtr);
  2489. mov ebp, esp
  2490. push ebx
  2491. mov ebx, [ebp+vtablePtr]
  2492. push ebx
  2493. call StreamIO____construct
  2494. ; 3: *vtablePtr = (int)&off_403374;
  2495. pop ecx
  2496. mov dword ptr [ebx], offset off_403374
  2497. ; 4: *((_WORD *)vtablePtr + 4) = -1;
  2498. mov word ptr [ebx+8], 0FFFFh
  2499. ; 5: vtablePtr[1] = 5;
  2500. mov dword ptr [ebx+4], 5
  2501. ; 6: *((_BYTE *)vtablePtr + 10) = 0;
  2502. mov byte ptr [ebx+0Ah], 0
  2503. ; 7: ++*(_DWORD *)classInstanceCounter;
  2504. mov eax, ds:classInstanceCounter
  2505. inc dword ptr [eax]
  2506. ; 8: return vtablePtr;
  2507. mov eax, ebx
  2508. pop ebx
  2509. pop ebp
  2510. retn
  2511. FileRStream____constructBlank endp
  2512.  
  2513. ; ---------------------------------------------------------------------------
  2514. align 4
  2515.  
  2516. ; =============== S U B R O U T I N E =======================================
  2517.  
  2518. ; Attributes: bp-based frame
  2519.  
  2520. ; int __cdecl FileRStream____constructWithFileHandle(int *vtablePtr, __int16 fileHandle)
  2521. FileRStream____constructWithFileHandle proc near
  2522.  
  2523. vtablePtr = dword ptr 8
  2524. fileHandle = dword ptr 0Ch
  2525.  
  2526. push ebp
  2527. ; 4: StreamIO____construct(vtablePtr);
  2528. mov ebp, esp
  2529. push ebx
  2530. push esi
  2531. mov esi, [ebp+fileHandle]
  2532. mov ebx, [ebp+vtablePtr]
  2533. push ebx
  2534. call StreamIO____construct
  2535. ; 5: *vtablePtr = &off_403374;
  2536. pop ecx
  2537. mov dword ptr [ebx], offset off_403374
  2538. ; 6: *(vtablePtr + 4) = fileHandle;
  2539. mov [ebx+8], si
  2540. ; 7: if ( lseek(fileHandle, 0, 1) == -1 )
  2541. push 1 ; fromwhere
  2542. push 0 ; offset
  2543. movsx eax, si
  2544. push eax ; handle
  2545. call _lseek
  2546. add esp, 0Ch
  2547. inc eax
  2548. jnz short loc_401E8E
  2549. ; 8: sub_4020C0(vtablePtr);
  2550. push ebx
  2551. call FileRStream__setStatusAccordingToError ; if the global error byte is set, set the status member to 1, else to 3
  2552. pop ecx
  2553. ; 9: *(vtablePtr + 10) = 0;
  2554.  
  2555. loc_401E8E: ; CODE XREF: FileRStream____constructWithFileHandle+2Dj
  2556. mov byte ptr [ebx+0Ah], 0
  2557. ; 10: result = vtablePtr;
  2558. mov edx, ds:classInstanceCounter
  2559. mov eax, ebx
  2560. ; 11: ++*classInstanceCounter;
  2561. inc dword ptr [edx]
  2562. ; 12: return result;
  2563. pop esi
  2564. pop ebx
  2565. pop ebp
  2566. retn
  2567. FileRStream____constructWithFileHandle endp
  2568.  
  2569.  
  2570. ; =============== S U B R O U T I N E =======================================
  2571.  
  2572. ; Attributes: bp-based frame
  2573.  
  2574. ; int __cdecl FileRStream____constructWithPath(int *vtablePtr, char *path)
  2575. FileRStream____constructWithPath proc near ; CODE XREF: Strings__loadFile+22p
  2576.  
  2577. vtablePtr = dword ptr 8
  2578. path = dword ptr 0Ch
  2579.  
  2580. push ebp
  2581. ; 2: StreamIO____construct(vtablePtr);
  2582. mov ebp, esp
  2583. push ebx
  2584. mov ebx, [ebp+vtablePtr]
  2585. push ebx
  2586. call StreamIO____construct
  2587. ; 3: *vtablePtr = &off_403374;
  2588. pop ecx
  2589. mov dword ptr [ebx], offset off_403374
  2590. ; 4: *(vtablePtr + 4) = -1;
  2591. mov word ptr [ebx+8], 0FFFFh
  2592. ; 5: *(vtablePtr + 10) = 0;
  2593. mov byte ptr [ebx+0Ah], 0
  2594. ; 6: sub_401FC8(vtablePtr, path);
  2595. mov eax, [ebp+path]
  2596. push eax ; path
  2597. push ebx ; int
  2598. call FileRStream__openFile ; try to open a file, return zero for fail and 1 for succes
  2599. ; 7: ++*classInstanceCounter;
  2600. add esp, 8
  2601. mov edx, ds:classInstanceCounter
  2602. inc dword ptr [edx]
  2603. ; 8: return vtablePtr;
  2604. mov eax, ebx
  2605. pop ebx
  2606. pop ebp
  2607. retn
  2608. FileRStream____constructWithPath endp
  2609.  
  2610.  
  2611. ; =============== S U B R O U T I N E =======================================
  2612.  
  2613. ; Attributes: bp-based frame
  2614.  
  2615. ; int __cdecl FileRStream____destruct(void *, char)
  2616. FileRStream____destruct proc near ; CODE XREF: Strings__loadFile+44p
  2617. ; Strings__loadFile+62p
  2618. ; DATA XREF: ...
  2619.  
  2620. arg_0 = dword ptr 8
  2621. arg_4 = byte ptr 0Ch
  2622.  
  2623. push ebp
  2624. mov ebp, esp
  2625. mov eax, ds:classInstanceCounter
  2626. push ebx
  2627. mov ebx, [ebp+arg_0]
  2628. dec dword ptr [eax]
  2629. test ebx, ebx
  2630. jz short loc_401F0F
  2631. mov dword ptr [ebx], offset off_403374
  2632. push ebx
  2633. call FileRStream__closeCurrentFile
  2634. pop ecx
  2635. push 0 ; char
  2636. push ebx ; void *
  2637. call StreamIO____destruct
  2638. add esp, 8
  2639. test [ebp+arg_4], 1
  2640. jz short loc_401F0F
  2641. push ebx ; void *
  2642. call @$bdele$qpv ; operator delete(void *)
  2643. pop ecx
  2644.  
  2645. loc_401F0F: ; CODE XREF: FileRStream____destruct+10j
  2646. ; FileRStream____destruct+2Ej
  2647. pop ebx
  2648. pop ebp
  2649. retn
  2650. FileRStream____destruct endp
  2651.  
  2652. ; ---------------------------------------------------------------------------
  2653. align 4
  2654.  
  2655. ; =============== S U B R O U T I N E =======================================
  2656.  
  2657. ; Attributes: bp-based frame
  2658.  
  2659. ; signed int __cdecl FileRStream__switchIn(int *vtablePtr, int in)
  2660. FileRStream__switchIn proc near ; DATA XREF: DATA:00403380o
  2661.  
  2662. in = dword ptr 0Ch
  2663.  
  2664. push ebp
  2665. mov ebp, esp
  2666. mov eax, [ebp+in]
  2667. sub eax, 1
  2668. ; 2: if ( in < 1 )
  2669. jb short loc_401F2B
  2670. ; 4: if ( in != 1 )
  2671. jz short loc_401F39
  2672. ; 6: if ( (in - 2) < 2 )
  2673. dec eax
  2674. sub eax, 2
  2675. jb short loc_401F32
  2676. ; 8: if ( in != 4 )
  2677. jz short loc_401F39
  2678. jmp short loc_401F3D
  2679. ; ---------------------------------------------------------------------------
  2680. ; 3: return 2;
  2681.  
  2682. loc_401F2B: ; CODE XREF: FileRStream__switchIn+9j
  2683. mov eax, 2
  2684. ; 11: return 0;
  2685. pop ebp
  2686. retn
  2687. ; ---------------------------------------------------------------------------
  2688. ; 7: return 1;
  2689.  
  2690. loc_401F32: ; CODE XREF: FileRStream__switchIn+11j
  2691. mov eax, 1
  2692. pop ebp
  2693. retn
  2694. ; ---------------------------------------------------------------------------
  2695.  
  2696. loc_401F39: ; CODE XREF: FileRStream__switchIn+Bj
  2697. ; FileRStream__switchIn+13j
  2698. xor eax, eax
  2699. pop ebp
  2700. retn
  2701. ; ---------------------------------------------------------------------------
  2702. ; 9: return 0;
  2703.  
  2704. loc_401F3D: ; CODE XREF: FileRStream__switchIn+15j
  2705. xor eax, eax
  2706. pop ebp
  2707. retn
  2708. FileRStream__switchIn endp
  2709.  
  2710. ; ---------------------------------------------------------------------------
  2711. align 4
  2712.  
  2713. ; =============== S U B R O U T I N E =======================================
  2714.  
  2715. ; Attributes: bp-based frame
  2716.  
  2717. ; int *__cdecl FileRStream__setFileHandle(int *vtablePtr, __int16 fileHandle)
  2718. FileRStream__setFileHandle proc near
  2719.  
  2720. vtablePtr = dword ptr 8
  2721. fileHandle = dword ptr 0Ch
  2722.  
  2723. push ebp
  2724. ; 4: FileRStream__closeCurrentFile(vtablePtr);
  2725. mov ebp, esp
  2726. push ebx
  2727. push esi
  2728. mov esi, [ebp+fileHandle]
  2729. mov ebx, [ebp+vtablePtr]
  2730. push ebx
  2731. call FileRStream__closeCurrentFile
  2732. ; 5: *((_WORD *)vtablePtr + 4) = fileHandle;
  2733. pop ecx
  2734. mov [ebx+8], si
  2735. ; 6: *((_BYTE *)vtablePtr + 10) = 0;
  2736. mov byte ptr [ebx+0Ah], 0
  2737. ; 7: if ( lseek(fileHandle, 0, 1) == -1 )
  2738. push 1 ; fromwhere
  2739. push 0 ; offset
  2740. movsx eax, si
  2741. push eax ; handle
  2742. call _lseek
  2743. add esp, 0Ch
  2744. inc eax
  2745. jnz short loc_401F7A
  2746. ; 8: result = FileRStream__setStatusAccordingToError(vtablePtr);
  2747. push ebx
  2748. call FileRStream__setStatusAccordingToError ; if the global error byte is set, set the status member to 1, else to 3
  2749. pop ecx
  2750. jmp short loc_401F81
  2751. ; ---------------------------------------------------------------------------
  2752. ; 10: result = (int)FileRStream__setStatusToZero(vtablePtr);
  2753.  
  2754. loc_401F7A: ; CODE XREF: FileRStream__setFileHandle+2Bj
  2755. push ebx
  2756. call FileRStream__setStatusToZero ; set the class member for the status to zero
  2757. pop ecx
  2758. ; 11: return result;
  2759.  
  2760. loc_401F81: ; CODE XREF: FileRStream__setFileHandle+34j
  2761. pop esi
  2762. pop ebx
  2763. pop ebp
  2764. retn
  2765. FileRStream__setFileHandle endp
  2766.  
  2767. ; ---------------------------------------------------------------------------
  2768. align 4
  2769.  
  2770. ; =============== S U B R O U T I N E =======================================
  2771.  
  2772. ; Attributes: bp-based frame
  2773.  
  2774. ; char __cdecl FileRStream__closeCurrentFile(int *vtablePtr)
  2775. FileRStream__closeCurrentFile proc near ; CODE XREF: FileRStream____destruct+19p
  2776. ; FileRStream__setFileHandle+Cp ...
  2777.  
  2778. vtablePtr = dword ptr 8
  2779.  
  2780. push ebp
  2781. ; 4: if ( *(vtablePtr + 10) && *(vtablePtr + 4) != -1 && close(*(vtablePtr + 4)) == -1 )
  2782. mov ebp, esp
  2783. push ebx
  2784. mov ebx, [ebp+vtablePtr]
  2785. cmp byte ptr [ebx+0Ah], 0
  2786. jz short loc_401FB6
  2787. cmp word ptr [ebx+8], 0FFFFh
  2788. jz short loc_401FB6
  2789. movsx eax, word ptr [ebx+8]
  2790. push eax ; handle
  2791. call _close
  2792. pop ecx
  2793. inc eax
  2794. jnz short loc_401FB6
  2795. ; 6: vtablePtr[1] = 3;
  2796. mov dword ptr [ebx+4], 3
  2797. ; 7: result = 0;
  2798. xor eax, eax
  2799. ; 15: return result;
  2800. pop ebx
  2801. pop ebp
  2802. retn
  2803. ; ---------------------------------------------------------------------------
  2804. ; 11: *(vtablePtr + 4) = -1;
  2805.  
  2806. loc_401FB6: ; CODE XREF: FileRStream__closeCurrentFile+Bj
  2807. ; FileRStream__closeCurrentFile+12j ...
  2808. mov word ptr [ebx+8], 0FFFFh
  2809. ; 12: vtablePtr[1] = 5;
  2810. mov dword ptr [ebx+4], 5
  2811. ; 13: result = 1;
  2812. mov al, 1
  2813. pop ebx
  2814. pop ebp
  2815. retn
  2816. FileRStream__closeCurrentFile endp
  2817.  
  2818.  
  2819. ; =============== S U B R O U T I N E =======================================
  2820.  
  2821. ; try to open a file, return zero for fail and 1 for succes
  2822. ; Attributes: bp-based frame
  2823.  
  2824. ; int FileRStream__openFile
  2825. FileRStream__openFile proc near ; CODE XREF: FileRStream____constructWithPath+23p
  2826.  
  2827. vtablePtr = dword ptr 8
  2828. path = dword ptr 0Ch
  2829.  
  2830. push ebp
  2831. ; 6: sub_401F88(vtablePtr);
  2832. mov ebp, esp
  2833. push ebx
  2834. mov ebx, [ebp+vtablePtr]
  2835. push ebx
  2836. call FileRStream__closeCurrentFile
  2837. ; 7: v2 = open(path, 32768); // O_BINARY
  2838. pop ecx
  2839. push 8000h ; access
  2840. mov eax, [ebp+path]
  2841. push eax ; path
  2842. call _open
  2843. ; 8: *(vtablePtr + 4) = v2;
  2844. add esp, 8
  2845. mov [ebx+8], ax
  2846. ; 9: if ( v2 == -1 )
  2847. cmp ax, 0FFFFh
  2848. jnz short loc_401FFD
  2849. ; 11: vtablePtr[1] = 1;
  2850. mov dword ptr [ebx+4], 1
  2851. ; 12: result = 0;
  2852. xor eax, eax
  2853. ; 20: return result;
  2854. pop ebx
  2855. pop ebp
  2856. retn
  2857. ; ---------------------------------------------------------------------------
  2858. ; 16: sub_4021E4(vtablePtr);
  2859.  
  2860. loc_401FFD: ; CODE XREF: FileRStream__openFile+27j
  2861. push ebx
  2862. call FileRStream__setStatusToZero ; set the class member for the status to zero
  2863. ; 17: result = 1;
  2864. pop ecx
  2865. mov al, 1
  2866. ; 18: *(vtablePtr + 10) = 1;
  2867. mov byte ptr [ebx+0Ah], 1
  2868. pop ebx
  2869. pop ebp
  2870. retn
  2871. FileRStream__openFile endp
  2872.  
  2873. ; ---------------------------------------------------------------------------
  2874. align 10h
  2875.  
  2876. ; =============== S U B R O U T I N E =======================================
  2877.  
  2878. ; Attributes: bp-based frame
  2879.  
  2880. ; __int32 __cdecl FileRStream__getPosition(int *vtablePtr)
  2881. FileRStream__getPosition proc near ; DATA XREF: DATA:00403378o
  2882.  
  2883. vtablePtr = dword ptr 8
  2884.  
  2885. push ebp
  2886. ; 2: return lseek(*(vtablePtr + 4), 0, 1);
  2887. mov ebp, esp
  2888. mov eax, [ebp+vtablePtr]
  2889. push 1 ; fromwhere
  2890. push 0 ; offset
  2891. movsx eax, word ptr [eax+8]
  2892. push eax ; handle
  2893. call _lseek
  2894. add esp, 0Ch
  2895. pop ebp
  2896. retn
  2897. FileRStream__getPosition endp
  2898.  
  2899. ; ---------------------------------------------------------------------------
  2900. align 4
  2901.  
  2902. ; =============== S U B R O U T I N E =======================================
  2903.  
  2904. ; Attributes: bp-based frame
  2905.  
  2906. ; char __cdecl FileRStream__seekToPosition(int *vtablePtr, int offset)
  2907. FileRStream__seekToPosition proc near ; DATA XREF: DATA:0040337Co
  2908.  
  2909. vtablePtr = dword ptr 8
  2910. offset = dword ptr 0Ch
  2911.  
  2912. push ebp
  2913. ; 4: if ( vtablePtr[1] == 2 )
  2914. mov ebp, esp
  2915. push ebx
  2916. mov ebx, [ebp+vtablePtr]
  2917. cmp dword ptr [ebx+4], 2
  2918. jnz short loc_40203E
  2919. ; 5: vtablePtr[1] = 0;
  2920. xor eax, eax
  2921. mov [ebx+4], eax
  2922. ; 6: if ( vtablePtr[1] )
  2923.  
  2924. loc_40203E: ; CODE XREF: FileRStream__seekToPosition+Bj
  2925. cmp dword ptr [ebx+4], 0
  2926. jz short loc_402049
  2927. ; 8: result = 0;
  2928. xor eax, eax
  2929. ; 17: return result;
  2930. pop ebx
  2931. pop ebp
  2932. retn
  2933. ; ---------------------------------------------------------------------------
  2934. ; 12: if ( lseek(*(vtablePtr + 4), offset, 0) == -1 )// SEEK_SET
  2935.  
  2936. loc_402049: ; CODE XREF: FileRStream__seekToPosition+16j
  2937. push 0 ; fromwhere
  2938. mov edx, [ebp+offset]
  2939. push edx ; offset
  2940. movsx ecx, word ptr [ebx+8]
  2941. push ecx ; handle
  2942. call _lseek
  2943. add esp, 0Ch
  2944. inc eax
  2945. jnz short loc_402069
  2946. ; 13: result = FileRStream__setStatusAccordingToError(vtablePtr);
  2947. push ebx
  2948. call FileRStream__setStatusAccordingToError ; if the global error byte is set, set the status member to 1, else to 3
  2949. pop ecx
  2950. pop ebx
  2951. pop ebp
  2952. retn
  2953. ; ---------------------------------------------------------------------------
  2954. ; 15: result = 1;
  2955.  
  2956. loc_402069: ; CODE XREF: FileRStream__seekToPosition+31j
  2957. mov al, 1
  2958. pop ebx
  2959. pop ebp
  2960. retn
  2961. FileRStream__seekToPosition endp
  2962.  
  2963. ; ---------------------------------------------------------------------------
  2964. align 10h
  2965.  
  2966. ; =============== S U B R O U T I N E =======================================
  2967.  
  2968. ; Attributes: bp-based frame
  2969.  
  2970. ; __int32 __cdecl FileRStream__getFileSize(int *vtablePtr)
  2971. FileRStream__getFileSize proc near
  2972.  
  2973. vtablePtr = dword ptr 8
  2974.  
  2975. push ebp
  2976. ; 7: status = vtablePtr[1];
  2977. mov ebp, esp
  2978. push ebx
  2979. push esi
  2980. push edi
  2981. mov ebx, [ebp+vtablePtr]
  2982. mov eax, [ebx+4]
  2983. ; 8: if ( status && status != 2 )
  2984. test eax, eax
  2985. jz short loc_402085
  2986. cmp eax, 2
  2987. jnz short loc_4020AF
  2988. ; 14: oldPosition = (*(*vtablePtr + 4))(vtablePtr);// FileRStream::getPosition
  2989.  
  2990. loc_402085: ; CODE XREF: FileRStream__getFileSize+Ej
  2991. push ebx
  2992. mov edx, [ebx]
  2993. call dword ptr [edx+4]
  2994. pop ecx
  2995. mov esi, eax
  2996. ; 15: lastBytePosition = lseek(*(vtablePtr + 4), 0, 2);// seek to end
  2997. push 2 ; fromwhere
  2998. push 0 ; offset
  2999. movsx eax, word ptr [ebx+8]
  3000. push eax ; handle
  3001. call _lseek
  3002. add esp, 0Ch
  3003. mov edi, eax
  3004. ; 16: (*(*vtablePtr + 8))(vtablePtr, oldPosition);// FileRStream::seekToPosition
  3005. push esi
  3006. push ebx
  3007. mov eax, [ebx]
  3008. call dword ptr [eax+8]
  3009. ; 17: result = lastBytePosition;
  3010. add esp, 8
  3011. mov eax, edi
  3012. jmp short loc_4020B1
  3013. ; ---------------------------------------------------------------------------
  3014. ; 10: result = 0;
  3015.  
  3016. loc_4020AF: ; CODE XREF: FileRStream__getFileSize+13j
  3017. xor eax, eax
  3018. ; 19: return result;
  3019.  
  3020. loc_4020B1: ; CODE XREF: FileRStream__getFileSize+3Dj
  3021. pop edi
  3022. pop esi
  3023. pop ebx
  3024. pop ebp
  3025. retn
  3026. FileRStream__getFileSize endp
  3027.  
  3028. ; ---------------------------------------------------------------------------
  3029. align 4
  3030.  
  3031. ; =============== S U B R O U T I N E =======================================
  3032.  
  3033. ; always return int(1)
  3034. ; Attributes: bp-based frame
  3035.  
  3036. ; char FileRStream__return1
  3037. FileRStream__return1 proc near ; DATA XREF: DATA:00403384o
  3038. push ebp
  3039. ; 3: return 1;
  3040. mov ebp, esp
  3041. mov al, 1
  3042. pop ebp
  3043. retn
  3044. FileRStream__return1 endp
  3045.  
  3046. ; ---------------------------------------------------------------------------
  3047. align 10h
  3048.  
  3049. ; =============== S U B R O U T I N E =======================================
  3050.  
  3051. ; if the global error byte is set, set the status member to 1, else to 3
  3052. ; Attributes: bp-based frame
  3053.  
  3054. ; int __cdecl FileRStream__setStatusAccordingToError(int *vtablePtr)
  3055. FileRStream__setStatusAccordingToError proc near
  3056. ; CODE XREF: FileRStream____constructWithFileHandle+30p
  3057. ; FileRStream__setFileHandle+2Ep ...
  3058.  
  3059. vtablePtr = dword ptr 8
  3060.  
  3061. push ebp
  3062. ; 3: if ( errno )
  3063. mov ebp, esp
  3064. mov eax, [ebp+vtablePtr]
  3065. cmp dword ptr _errno, 0
  3066. jz short loc_4020D8
  3067. ; 4: vtablePtr[1] = 1;
  3068. mov dword ptr [eax+4], 1
  3069. jmp short loc_4020DF
  3070. ; ---------------------------------------------------------------------------
  3071. ; 6: vtablePtr[1] = 3;
  3072.  
  3073. loc_4020D8: ; CODE XREF: FileRStream__setStatusAccordingToError+Dj
  3074. mov dword ptr [eax+4], 3
  3075. ; 7: return 0;
  3076.  
  3077. loc_4020DF: ; CODE XREF: FileRStream__setStatusAccordingToError+16j
  3078. xor eax, eax
  3079. pop ebp
  3080. retn
  3081. FileRStream__setStatusAccordingToError endp
  3082.  
  3083. ; ---------------------------------------------------------------------------
  3084. align 4
  3085.  
  3086. ; =============== S U B R O U T I N E =======================================
  3087.  
  3088. ; set the status byte to 4
  3089. ; Attributes: bp-based frame
  3090.  
  3091. ; int __cdecl FileRStream__setStatusTo4(int *vtablePtr)
  3092. FileRStream__setStatusTo4 proc near ; DATA XREF: DATA:00403388o
  3093.  
  3094. vtablePtr = dword ptr 8
  3095.  
  3096. push ebp
  3097. ; 3: vtablePtr[1] = 4;
  3098. mov ebp, esp
  3099. mov eax, [ebp+vtablePtr]
  3100. mov dword ptr [eax+4], 4
  3101. ; 4: return 0;
  3102. xor eax, eax
  3103. pop ebp
  3104. retn
  3105. FileRStream__setStatusTo4 endp
  3106.  
  3107. ; ---------------------------------------------------------------------------
  3108. align 4
  3109.  
  3110. ; =============== S U B R O U T I N E =======================================
  3111.  
  3112. ; Attributes: bp-based frame
  3113.  
  3114. ; char __cdecl FileRStream__read(int *vtablePtr, unsigned int len, void *buf)
  3115. FileRStream__read proc near ; DATA XREF: DATA:0040338Co
  3116.  
  3117. vtablePtr = dword ptr 8
  3118. len = dword ptr 0Ch
  3119. buf = dword ptr 10h
  3120.  
  3121. push ebp
  3122. ; 5: if ( vtablePtr[1] )
  3123. mov ebp, esp
  3124. push ebx
  3125. push esi
  3126. push edi
  3127. mov esi, [ebp+len]
  3128. mov ebx, [ebp+vtablePtr]
  3129. cmp dword ptr [ebx+4], 0
  3130. jz short loc_40210E
  3131. ; 6: return 0;
  3132. xor eax, eax
  3133. jmp short loc_402143
  3134. ; ---------------------------------------------------------------------------
  3135. ; 8: goto LABEL_11;
  3136.  
  3137. loc_40210E: ; CODE XREF: FileRStream__read+10j
  3138. test esi, esi
  3139. ; 7: if ( !len )
  3140. jz short loc_402141
  3141. ; 9: v4 = read(*(vtablePtr + 4), buf, len);
  3142. push esi ; len
  3143. mov edx, [ebp+buf]
  3144. push edx ; buf
  3145. movsx ecx, word ptr [ebx+8]
  3146. push ecx ; handle
  3147. call _read
  3148. add esp, 0Ch
  3149. mov edi, eax
  3150. ; 10: if ( v4 == -1 )
  3151. inc eax
  3152. jnz short loc_402132
  3153. ; 11: return FileRStream__setStatusAccordingToError(vtablePtr);
  3154. push ebx
  3155. call FileRStream__setStatusAccordingToError ; if the global error byte is set, set the status member to 1, else to 3
  3156. pop ecx
  3157. jmp short loc_402143
  3158. ; ---------------------------------------------------------------------------
  3159. ; 12: if ( len != v4 )
  3160.  
  3161. loc_402132: ; CODE XREF: FileRStream__read+2Fj
  3162. cmp esi, edi
  3163. jz short loc_402141
  3164. ; 14: vtablePtr[1] = 2;
  3165. mov dword ptr [ebx+4], 2
  3166. ; 15: result = 0;
  3167. xor eax, eax
  3168. jmp short loc_402143
  3169. ; ---------------------------------------------------------------------------
  3170. ; 19: LABEL_11:
  3171. ; 20: result = 1;
  3172.  
  3173. loc_402141: ; CODE XREF: FileRStream__read+18j
  3174. ; FileRStream__read+3Cj
  3175. mov al, 1
  3176. ; 22: return result;
  3177.  
  3178. loc_402143: ; CODE XREF: FileRStream__read+14j
  3179. ; FileRStream__read+38j ...
  3180. pop edi
  3181. pop esi
  3182. pop ebx
  3183. pop ebp
  3184. retn
  3185. FileRStream__read endp
  3186.  
  3187. ; ---------------------------------------------------------------------------
  3188. classdesc_FileRStream dd 0Bh ; tpDtt ; DATA XREF: DATA:off_403178o
  3189. ; DATA:00403368o
  3190. dw 3 ; tpMask
  3191. dw 30h ; tpName
  3192. dd 0 ; bParent
  3193. dd 77h ; tpcFlags
  3194. dw 3Ch ; Size
  3195. dw 4Ch ; ExpDim
  3196. dd 0 ; mfnDel
  3197. dw 0 ; mfnMask
  3198. dw 0 ; mfnMaskArr
  3199. dd 0 ; mfnDelArr
  3200. dd 2 ; DtorCount
  3201. dd 2 ; DtorAltCount
  3202. dd offset FileRStream____destruct; DtorAddr
  3203. dw 1 ; DtorMask
  3204. dw 50h ; DtorMemberOff
  3205. db 'FileRStream',0 ; Name
  3206. dd offset classdesc_StreamIO ; Parent
  3207. dd 0, 3, 0
  3208. dd 0
  3209. dd 0 ; end of tpid
  3210. classdesc_StreamIO dd 8 ; tpDtt ; DATA XREF: CODE:00402184o
  3211. ; DATA:00403340o
  3212. dw 3 ; tpMask
  3213. dw 30h ; tpName
  3214. dd 0 ; bParent
  3215. dd 73h ; tpcFlags
  3216. dw 3Ch ; Size
  3217. dw 40h ; ExpDim
  3218. dd 0 ; mfnDel
  3219. dw 0 ; mfnMask
  3220. dw 0 ; mfnMaskArr
  3221. dd 0 ; mfnDelArr
  3222. dd 1 ; DtorCount
  3223. dd 1 ; DtorAltCount
  3224. dd offset StreamIO____destruct; DtorAddr
  3225. dw 1 ; DtorMask
  3226. dw 44h ; DtorMemberOff
  3227. db 'StreamIO',0 ; Name
  3228. align 4
  3229. dd 0
  3230. dd 0
  3231. dd 0 ; end of tpid
  3232.  
  3233. ; =============== S U B R O U T I N E =======================================
  3234.  
  3235. ; set the class member for the status to zero
  3236. ; Attributes: bp-based frame
  3237.  
  3238. ; int *__cdecl FileRStream__setStatusToZero(int *vtablePtr)
  3239. FileRStream__setStatusToZero proc near ; CODE XREF: FileRStream__setFileHandle+37p
  3240. ; FileRStream__openFile+36p
  3241.  
  3242. vtablePtr = dword ptr 8
  3243.  
  3244. push ebp
  3245. ; 5: result = vtablePtr;
  3246. mov ebp, esp
  3247. mov eax, [ebp+vtablePtr]
  3248. ; 6: vtablePtr[1] = 0;
  3249. xor edx, edx
  3250. mov [eax+4], edx
  3251. ; 7: return result;
  3252. pop ebp
  3253. retn
  3254. FileRStream__setStatusToZero endp
  3255.  
  3256. ; ---------------------------------------------------------------------------
  3257. align 4
  3258. ; [0000003E BYTES: COLLAPSED FUNCTION @__InitExceptBlock. PRESS KEYPAD "+" TO EXPAND]
  3259. align 4
  3260.  
  3261. ; =============== S U B R O U T I N E =======================================
  3262.  
  3263. ; Attributes: noreturn thunk
  3264.  
  3265. ; void j__abort(void)
  3266. j__abort proc near ; DATA XREF: sub_40230D+1Ao
  3267. ; DATA:00403398o
  3268. call _abort
  3269. j__abort endp
  3270.  
  3271. ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
  3272.  
  3273. ; =============== S U B R O U T I N E =======================================
  3274.  
  3275. ; Attributes: bp-based frame
  3276.  
  3277. ; int __cdecl sub_40223A(int *a1)
  3278. sub_40223A proc near
  3279.  
  3280. arg_0 = dword ptr 8
  3281.  
  3282. push ebp
  3283. ; 4: result = *(*(*MK_FP(__FS__, 4) - 8) + 8);
  3284. mov ebp, esp
  3285. mov edx, [ebp+arg_0]
  3286. mov eax, large fs:4
  3287. mov ecx, [eax-8]
  3288. test edx, edx
  3289. mov eax, [ecx+8]
  3290. ; 5: if ( a1 )
  3291. jz short loc_40225D
  3292. ; 6: *(*(*MK_FP(__FS__, 4) - 8) + 8) = a1;
  3293. mov ecx, large fs:4
  3294. mov ecx, [ecx-8]
  3295. mov [ecx+8], edx
  3296. ; 7: return result;
  3297.  
  3298. loc_40225D: ; CODE XREF: sub_40223A+14j
  3299. pop ebp
  3300. retn
  3301. sub_40223A endp
  3302.  
  3303.  
  3304. ; =============== S U B R O U T I N E =======================================
  3305.  
  3306. ; Attributes: noreturn bp-based frame
  3307.  
  3308. sub_40225F proc near ; CODE XREF: sub_4022AFp
  3309.  
  3310. var_10 = word ptr -10h
  3311.  
  3312. push ebp
  3313. mov ebp, esp
  3314. add esp, 0FFFFFFE0h
  3315. mov eax, offset unk_403454
  3316. push ebx
  3317. push esi
  3318. push edi
  3319. call @__InitExceptBlock
  3320. call _flushall
  3321. mov edx, large fs:4
  3322. mov ecx, [edx-8]
  3323. mov eax, [ecx+8]
  3324. mov [ebp+var_10], 8
  3325. call eax
  3326. mov [ebp+var_10], 0
  3327. jmp short loc_402299
  3328. ; ---------------------------------------------------------------------------
  3329.  
  3330. loc_402294: ; DATA XREF: DATA:0040343Co
  3331. call @_CatchCleanup$qv ; _CatchCleanup(void)
  3332.  
  3333. loc_402299: ; CODE XREF: sub_40225F+33j
  3334. call _abort
  3335. sub_40225F endp
  3336.  
  3337.  
  3338. ; =============== S U B R O U T I N E =======================================
  3339.  
  3340.  
  3341. sub_40229E proc near
  3342. mov edx, [ebp-20h]
  3343. mov large fs:0, edx
  3344. pop edi
  3345. pop esi
  3346. pop ebx
  3347. mov esp, ebp
  3348. pop ebp
  3349. retn
  3350. sub_40229E endp
  3351.  
  3352.  
  3353. ; =============== S U B R O U T I N E =======================================
  3354.  
  3355. ; Attributes: noreturn thunk
  3356.  
  3357. sub_4022AF proc near ; DATA XREF: sub_40230D+21o
  3358. ; DATA:0040339Co
  3359. call sub_40225F
  3360. sub_4022AF endp
  3361.  
  3362. ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
  3363.  
  3364. ; =============== S U B R O U T I N E =======================================
  3365.  
  3366. ; Attributes: bp-based frame
  3367.  
  3368. sub_4022B5 proc near
  3369.  
  3370. arg_0 = dword ptr 8
  3371.  
  3372. push ebp
  3373. mov ebp, esp
  3374. mov edx, [ebp+arg_0]
  3375. mov eax, large fs:4
  3376. mov ecx, [eax-8]
  3377. test edx, edx
  3378. mov eax, [ecx+0Ch]
  3379. jz short loc_4022D8
  3380. mov ecx, large fs:4
  3381. mov ecx, [ecx-8]
  3382. mov [ecx+0Ch], edx
  3383.  
  3384. loc_4022D8: ; CODE XREF: sub_4022B5+14j
  3385. pop ebp
  3386. retn
  3387. sub_4022B5 endp
  3388.  
  3389.  
  3390. ; =============== S U B R O U T I N E =======================================
  3391.  
  3392. ; Attributes: noreturn
  3393.  
  3394. sub_4022DA proc near
  3395. mov eax, large fs:4
  3396. mov edx, [eax-8]
  3397. mov eax, [edx+0Ch]
  3398. call eax
  3399. call _abort
  3400. sub_4022DA endp
  3401.  
  3402. ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
  3403. ; [0000001F BYTES: COLLAPSED FUNCTION __GetPolymorphicDTC(void *,uint). PRESS KEYPAD "+" TO EXPAND]
  3404.  
  3405. ; =============== S U B R O U T I N E =======================================
  3406.  
  3407. ; Attributes: bp-based frame
  3408.  
  3409. sub_40230D proc near ; CODE XREF: start+50p
  3410.  
  3411. var_8 = dword ptr -8
  3412. var_4 = dword ptr -4
  3413. arg_0 = dword ptr 8
  3414.  
  3415. push ebp
  3416. mov ebp, esp
  3417. add esp, 0FFFFFFF8h
  3418. push ebx
  3419. push esi
  3420. push edi
  3421. mov ebx, [ebp+arg_0]
  3422. test ebx, ebx
  3423. setnz al
  3424. and eax, 1
  3425. test ebx, ebx
  3426. mov esi, eax
  3427. jz short loc_402337
  3428. mov dword ptr [ebx+8], offset j__abort
  3429. mov dword ptr [ebx+0Ch], offset sub_4022AF
  3430. jmp short loc_40238B
  3431. ; ---------------------------------------------------------------------------
  3432.  
  3433. loc_402337: ; CODE XREF: sub_40230D+18j
  3434. cmp ds:byte_403058, 0
  3435. jz short loc_40237A
  3436. xor edi, edi
  3437. push 0 ; lpModuleName
  3438. call GetModuleHandleA
  3439. test eax, eax
  3440. jz short loc_40235A
  3441. push offset ProcName ; "__GetExceptDLLinfo"
  3442. push eax ; hModule
  3443. call GetProcAddress
  3444. mov edi, eax
  3445.  
  3446. loc_40235A: ; CODE XREF: sub_40230D+3Ej
  3447. test edi, edi
  3448. jz short loc_40237A
  3449. lea eax, [ebp+var_8]
  3450. push eax
  3451. call edi
  3452. cmp [ebp+var_8], 82727349h
  3453. pop ecx
  3454. jb short loc_40237A
  3455. cmp [ebp+var_8], 82727359h
  3456. ja short loc_40237A
  3457. mov ebx, [ebp+var_4]
  3458.  
  3459. loc_40237A: ; CODE XREF: sub_40230D+31j
  3460. ; sub_40230D+4Fj ...
  3461. test ebx, ebx
  3462. jnz short loc_40238B
  3463. lea eax, [ebp+var_8]
  3464. push eax
  3465. call __GetExceptDLLinfo_0
  3466. pop ecx
  3467. mov ebx, [ebp+var_4]
  3468.  
  3469. loc_40238B: ; CODE XREF: sub_40230D+28j
  3470. ; sub_40230D+6Fj
  3471. mov eax, large fs:4
  3472. mov [eax-8], ebx
  3473. test esi, esi
  3474. jnz short loc_4023A8
  3475. mov edx, large fs:4
  3476. add edx, 0FFFFFFFCh
  3477. mov ds:classInstanceCounter, edx
  3478.  
  3479. loc_4023A8: ; CODE XREF: sub_40230D+89j
  3480. mov ecx, large fs:4
  3481. xor eax, eax
  3482. mov [ecx-4], eax
  3483. mov edx, large fs:4
  3484. mov ecx, [edx-8]
  3485. xor eax, eax
  3486. mov [ecx+4], eax
  3487. pop edi
  3488. pop esi
  3489. pop ebx
  3490. pop ecx
  3491. pop ecx
  3492. pop ebp
  3493. retn
  3494. sub_40230D endp
  3495.  
  3496.  
  3497. ; =============== S U B R O U T I N E =======================================
  3498.  
  3499. ; Attributes: bp-based frame
  3500.  
  3501. __GetExceptDLLinfo_0 proc near ; CODE XREF: __GetExceptDLLinfoj
  3502. ; sub_40230D+75p
  3503.  
  3504. arg_0 = dword ptr 8
  3505.  
  3506. push ebp
  3507. mov ebp, esp
  3508. mov eax, [ebp+arg_0]
  3509. mov edx, large fs:4
  3510. mov ecx, [edx-8]
  3511. add ecx, 24h
  3512. mov ds:dword_4033AC, ecx
  3513. mov dword ptr [eax], 82727349h
  3514. mov dword ptr [eax+4], offset unk_403390
  3515. pop ebp
  3516. retn
  3517. __GetExceptDLLinfo_0 endp
  3518.  
  3519. ; ---------------------------------------------------------------------------
  3520. align 8
  3521. ; [0000002A BYTES: COLLAPSED FUNCTION __matherr. PRESS KEYPAD "+" TO EXPAND]
  3522. align 4
  3523. ; [0000002E BYTES: COLLAPSED FUNCTION __matherrl. PRESS KEYPAD "+" TO EXPAND]
  3524. ; [00000006 BYTES: COLLAPSED FUNCTION _strchr. PRESS KEYPAD "+" TO EXPAND]
  3525. ; [00000006 BYTES: COLLAPSED FUNCTION _sprintf. PRESS KEYPAD "+" TO EXPAND]
  3526. ; [00000006 BYTES: COLLAPSED FUNCTION _write. PRESS KEYPAD "+" TO EXPAND]
  3527. ; [00000006 BYTES: COLLAPSED FUNCTION _strlen. PRESS KEYPAD "+" TO EXPAND]
  3528. ; [00000006 BYTES: COLLAPSED FUNCTION _strcat. PRESS KEYPAD "+" TO EXPAND]
  3529. ; [00000006 BYTES: COLLAPSED FUNCTION operator delete(void *). PRESS KEYPAD "+" TO EXPAND]
  3530. ; [00000006 BYTES: COLLAPSED FUNCTION operator delete[](void *). PRESS KEYPAD "+" TO EXPAND]
  3531. ; [00000006 BYTES: COLLAPSED FUNCTION operator new(uint). PRESS KEYPAD "+" TO EXPAND]
  3532. ; [00000006 BYTES: COLLAPSED FUNCTION operator new[](uint). PRESS KEYPAD "+" TO EXPAND]
  3533. ; [00000006 BYTES: COLLAPSED FUNCTION _CatchCleanup(void). PRESS KEYPAD "+" TO EXPAND]
  3534.  
  3535. ; =============== S U B R O U T I N E =======================================
  3536.  
  3537. ; Attributes: thunk
  3538.  
  3539. __ExceptionHandler proc near ; DATA XREF: @__InitExceptBlock+10o
  3540. jmp ds:__imp___ExceptionHandler
  3541. __ExceptionHandler endp
  3542.  
  3543. ; [00000006 BYTES: COLLAPSED FUNCTION __exit. PRESS KEYPAD "+" TO EXPAND]
  3544. ; ---------------------------------------------------------------------------
  3545. ; START OF FUNCTION CHUNK FOR start
  3546.  
  3547. loc_40249A: ; CODE XREF: start+69j
  3548. jmp ds:__startup
  3549. ; END OF FUNCTION CHUNK FOR start
  3550. ; [00000006 BYTES: COLLAPSED FUNCTION __streams. PRESS KEYPAD "+" TO EXPAND]
  3551. ; [00000006 BYTES: COLLAPSED FUNCTION _abort. PRESS KEYPAD "+" TO EXPAND]
  3552. ; [00000006 BYTES: COLLAPSED FUNCTION _atol. PRESS KEYPAD "+" TO EXPAND]
  3553. ; [00000006 BYTES: COLLAPSED FUNCTION _close. PRESS KEYPAD "+" TO EXPAND]
  3554. ; [00000006 BYTES: COLLAPSED FUNCTION _errno. PRESS KEYPAD "+" TO EXPAND]
  3555. ; [00000006 BYTES: COLLAPSED FUNCTION _fclose. PRESS KEYPAD "+" TO EXPAND]
  3556. ; [00000006 BYTES: COLLAPSED FUNCTION _flushall. PRESS KEYPAD "+" TO EXPAND]
  3557. ; [00000006 BYTES: COLLAPSED FUNCTION _fopen. PRESS KEYPAD "+" TO EXPAND]
  3558. ; [00000006 BYTES: COLLAPSED FUNCTION _fputs. PRESS KEYPAD "+" TO EXPAND]
  3559. ; [00000006 BYTES: COLLAPSED FUNCTION _fread. PRESS KEYPAD "+" TO EXPAND]
  3560. ; [00000006 BYTES: COLLAPSED FUNCTION _itoa. PRESS KEYPAD "+" TO EXPAND]
  3561. ; [00000006 BYTES: COLLAPSED FUNCTION _lseek. PRESS KEYPAD "+" TO EXPAND]
  3562. ; [00000006 BYTES: COLLAPSED FUNCTION _open. PRESS KEYPAD "+" TO EXPAND]
  3563. ; [00000006 BYTES: COLLAPSED FUNCTION _read. PRESS KEYPAD "+" TO EXPAND]
  3564. ; [00000006 BYTES: COLLAPSED FUNCTION _spawnv. PRESS KEYPAD "+" TO EXPAND]
  3565. ; [00000006 BYTES: COLLAPSED FUNCTION GlobalAlloc. PRESS KEYPAD "+" TO EXPAND]
  3566. ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA. PRESS KEYPAD "+" TO EXPAND]
  3567. ; [00000006 BYTES: COLLAPSED FUNCTION GlobalMemoryStatus. PRESS KEYPAD "+" TO EXPAND]
  3568. ; [00000006 BYTES: COLLAPSED FUNCTION GlobalFree. PRESS KEYPAD "+" TO EXPAND]
  3569. ; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND]
  3570. ; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD "+" TO EXPAND]
  3571. align 10h
  3572. dd 38h dup(0)
  3573. dd 280h dup(?)
  3574. CODE ends
  3575.  
  3576. ; Section 2. (virtual address 00003000)
  3577. ; Virtual size : 00001000 ( 4096.)
  3578. ; Section size in file : 00000600 ( 1536.)
  3579. ; Offset to raw data for section: 00001C00
  3580. ; Flags C0000040: Data Readable Writable
  3581. ; Alignment : default
  3582. ; ===========================================================================
  3583.  
  3584. ; Segment type: Pure data
  3585. ; Segment permissions: Read/Write
  3586. DATA segment para public 'DATA' use32
  3587. assume cs:DATA
  3588. ;org 403000h
  3589. aBorlandCCopyri db 'Borland C++ - Copyright 1995 Borland Intl.',0
  3590. align 4
  3591. off_40302C dd offset unk_403484 ; DATA XREF: start+56o
  3592. dd offset unk_403490
  3593. dd offset unk_403490
  3594. dd offset unk_40349C
  3595. db 1
  3596. db 0
  3597. db 0
  3598. db 0
  3599. db 0
  3600. db 0
  3601. db 0
  3602. db 0
  3603. dd offset WinMain
  3604. dd offset __matherr
  3605. dd offset __matherrl
  3606. db 0
  3607. db 0
  3608. db 0
  3609. db 0
  3610. dd offset unk_403480
  3611. byte_403058 db 0 ; DATA XREF: sub_40230D:loc_402337r
  3612. dword_403059 dd 0 ; DATA XREF: startr
  3613. dword_40305D dd 0 ; DATA XREF: start+8w
  3614. dword_403061 dd 0 ; DATA XREF: start+2Fw
  3615. dword_403065 dd 0 ; DATA XREF: start+37w
  3616. db 1
  3617. dword_40306A dd 0 ; DATA XREF: start+62w
  3618. align 10h
  3619. ; int value
  3620. value dd 1 ; DATA XREF: WinMain+2ADw WinMain+2D6w ...
  3621. ; char languageToken[1]
  3622. languageToken db '-' ; DATA XREF: WinMain+3EEo WinMain+4D2o
  3623. ; char chLanguage
  3624. chLanguage db 0 ; DATA XREF: WinMain+198o WinMain+1ACr ...
  3625. db 0
  3626. ; char *asc_403077[2]
  3627. asc_403077 db '-',0 ; DATA XREF: WinMain+3Eo
  3628. db 0
  3629. db 0
  3630. db 0
  3631. db 0
  3632. db 0
  3633. db 0
  3634. db 0
  3635. db 0
  3636. db 0
  3637. db 0
  3638. db 0
  3639. db 0
  3640. db 0
  3641. db 0
  3642. db 0
  3643. db 0
  3644. db 0
  3645. db 0
  3646. ; char *dword_40308B[2]
  3647. dword_40308B dd 522Dh ; DATA XREF: WinMain:loc_401385r
  3648. dword_40308F dd 0 ; DATA XREF: WinMain+228r
  3649. word_403093 dw 0 ; DATA XREF: WinMain+236r
  3650. ; char asc_403095[3]
  3651. asc_403095 db '-X',0 ; DATA XREF: WinMain+32Co
  3652. db 0
  3653. db 0
  3654. db 0
  3655. db 0
  3656. db 0
  3657. db 0
  3658. db 0
  3659. db 0
  3660. db 0
  3661. db 0
  3662. db 0
  3663. db 0
  3664. db 0
  3665. db 0
  3666. db 0
  3667. db 0
  3668. db 0
  3669. off_4030A9 dd offset classdesc_Strings ; DATA XREF: DATA:004030C9o
  3670. db 0
  3671. db 0
  3672. db 0
  3673. db 0
  3674. dd offset StringInstance1
  3675. db 0
  3676. db 0
  3677. db 0
  3678. db 0
  3679. unk_4030B9 db 0 ; DATA XREF: callStringsConstructorForInstance1+6o
  3680. db 0
  3681. db 0
  3682. db 0
  3683. db 0E0h ; à
  3684. db 0FFh
  3685. db 0FFh
  3686. db 0FFh
  3687. db 0
  3688. db 0
  3689. db 5
  3690. db 0
  3691. db 0
  3692. db 0
  3693. db 0
  3694. db 0
  3695. dd offset off_4030A9
  3696. aDbsim_0 db 'dbsim',0 ; DATA XREF: makeNewCmdLine+15o
  3697. aSprunknown db 'SPRUNKNOWN',0 ; DATA XREF: WinMain+114o
  3698. ; char path[]
  3699. path db 'data\language.cfg',0 ; DATA XREF: WinMain+180o
  3700. ; char mode[]
  3701. mode db 'rb',0 ; DATA XREF: WinMain:loc_4012E3o
  3702. ; char aError_str[]
  3703. aError_str db 'error.str',0 ; DATA XREF: WinMain:loc_401327o
  3704. ; char Text[]
  3705. Text db 'Missing string resource: error.str.',0 ; DATA XREF: WinMain+20Ao
  3706. ; char Caption[]
  3707. Caption db 'Error',0 ; DATA XREF: WinMain+205o
  3708. aDummy db 'dummy',0 ; DATA XREF: WinMain+389o
  3709. aEggplant db '-eggplant',0 ; DATA XREF: WinMain+391o
  3710. aS db '-s',0 ; DATA XREF: WinMain+3C1o
  3711. aA db '-a',0 ; DATA XREF: WinMain+3CFo
  3712. a@ db '-@',0 ; DATA XREF: WinMain+3DDo
  3713. ; char aVshell[]
  3714. aVshell db 'vshell',0 ; DATA XREF: WinMain+3FCo
  3715. aDummy_0 db 'dummy',0 ; DATA XREF: WinMain+41Co
  3716. aEggplant_0 db '-eggplant',0 ; DATA XREF: WinMain+424o
  3717. aS_0 db '-s',0 ; DATA XREF: WinMain+470o
  3718. aM db '-m',0 ; DATA XREF: WinMain+47Eo
  3719. aD db '-D',0 ; DATA XREF: WinMain+48Ao
  3720. aZ db '-Z',0 ; DATA XREF: WinMain+498o
  3721. asc_403163 db '-l',0 ; DATA XREF: WinMain+4A6o
  3722. aSprunknown_0 db '-SPRUNKNOWN',0 ; DATA XREF: WinMain+4C1o
  3723. ; char aDbsim[]
  3724. aDbsim db 'dbsim',0 ; DATA XREF: WinMain+4E0o
  3725. off_403178 dd offset classdesc_FileRStream ; DATA XREF: DATA:00403198o
  3726. db 4
  3727. db 0
  3728. db 0
  3729. db 0
  3730. db 0F4h ; ô
  3731. db 0FFh
  3732. db 0FFh
  3733. db 0FFh
  3734. db 0
  3735. db 0
  3736. db 0
  3737. db 0
  3738. unk_403188 db 0 ; DATA XREF: Strings__loadFile+6o
  3739. db 0
  3740. db 0
  3741. db 0
  3742. db 0D4h ; Ô
  3743. db 0FFh
  3744. db 0FFh
  3745. db 0FFh
  3746. db 0
  3747. db 0
  3748. db 5
  3749. db 0
  3750. db 0
  3751. db 0
  3752. db 0
  3753. db 0
  3754. dd offset off_403178
  3755. off_40319C dd offset classdesc_Assert ; DATA XREF: DATA:004031BCo
  3756. db 0
  3757. db 0
  3758. db 0
  3759. db 0
  3760. dd offset InstanceOfAssertVtable
  3761. db 0
  3762. db 0
  3763. db 0
  3764. db 0
  3765. unk_4031AC db 0 ; DATA XREF: Assert__constructWithExceptBlock+6o
  3766. db 0
  3767. db 0
  3768. db 0
  3769. db 0E0h ; à
  3770. db 0FFh
  3771. db 0FFh
  3772. db 0FFh
  3773. db 0
  3774. db 0
  3775. db 5
  3776. db 0
  3777. db 0
  3778. db 0
  3779. db 0
  3780. db 0
  3781. dd offset off_40319C
  3782. ; char s[]
  3783. s db 'Assert::assert_abort_notify: Cannot allocate memory.',0
  3784. ; DATA XREF: Assert__assert_abort_notify+17o
  3785. align 4
  3786. ; char src[]
  3787. src db 'assert.log',0 ; DATA XREF: Assert__getAssertLogFilePath+29o
  3788. asc_403203 db '-----------------------------------------------------------------'
  3789. ; DATA XREF: Assert__writeToLogFile+46o
  3790. db '-------------',0Dh,0Ah,0
  3791. aInternalErrorP db 'Internal Error:',0Ah
  3792. db 'Please call Sierra customer support with the following informatio'
  3793. db 'n:',0Ah,0
  3794. align 4
  3795. assertTypes dd offset aInit ; DATA XREF: Assert__prepareMsg+16r
  3796. ; "init"
  3797. dd offset aExit ; "exit"
  3798. dd offset aMsg ; "msg"
  3799. dd offset aWrn ; "wrn"
  3800. dd offset aErr ; "err"
  3801. dd offset aSys ; "sys"
  3802. dd offset aBrk ; "brk"
  3803. Assert__haveWrittenHeaderLine dd 1 ; DATA XREF: Assert__writeToLogFile+3Br
  3804. ; Assert__writeToLogFile+56w
  3805. strCRLF dw 0A0Dh ; DATA XREF: Assert__writeToLogFile+3r
  3806. strNullbyte db 0 ; DATA XREF: Assert__writeToLogFile+14r
  3807. aInit db 'init',0 ; DATA XREF: DATA:assertTypeso
  3808. aExit db 'exit',0 ; DATA XREF: DATA:004032B0o
  3809. aMsg db 'msg',0 ; DATA XREF: DATA:004032B4o
  3810. aWrn db 'wrn',0 ; DATA XREF: DATA:004032B8o
  3811. aErr db 'err',0 ; DATA XREF: DATA:004032BCo
  3812. aSys db 'sys',0 ; DATA XREF: DATA:004032C0o
  3813. aBrk db 'brk',0 ; DATA XREF: DATA:004032C4o
  3814. ; char format[]
  3815. format db 'Assert::%s: Line %d in "%s"',0 ; DATA XREF: Assert__prepareMsg+1Eo
  3816. ; char aS_1[]
  3817. aS_1 db ': %s',0 ; DATA XREF: Assert__prepareMsg+31o
  3818. ; char aError_0[]
  3819. aError_0 db 'Error',0 ; DATA XREF: Assert__act+79o
  3820. ; char aError_1[]
  3821. aError_1 db 'Error',0 ; DATA XREF: Assert__act+B8o
  3822. aAssertBreakCtr db 'Assert::break: Ctrl-C / Ctrl-Break',0
  3823. ; DATA XREF: Assert__act:loc_401D80o
  3824. align 10h
  3825. dd offset classdesc_StreamIO
  3826. db 0
  3827. db 0
  3828. db 0
  3829. db 0
  3830. db 0
  3831. db 0
  3832. db 0
  3833. db 0
  3834. off_40334C dd offset StreamIO____destruct ; DATA XREF: StreamIO____construct+8o
  3835. ; StreamIO____destruct+12o
  3836. dd offset @__GetPolymorphicDTC$qpvui ; __GetPolymorphicDTC(void *,uint)
  3837. dd offset StreamIO__returnOne
  3838. dd offset StreamIO__returnZero
  3839. dd offset StreamIO__returnOne_2
  3840. dd offset StreamIO__returnOne_3
  3841. dd offset StreamIO__returnOne_4
  3842. dd offset classdesc_FileRStream
  3843. db 0
  3844. db 0
  3845. db 0
  3846. db 0
  3847. db 0
  3848. db 0
  3849. db 0
  3850. db 0
  3851. off_403374 dd offset FileRStream____destruct
  3852. ; DATA XREF: FileRStream____constructBlank+Eo
  3853. ; FileRStream____constructWithFileHandle+12o ...
  3854. dd offset FileRStream__getPosition
  3855. dd offset FileRStream__seekToPosition
  3856. dd offset FileRStream__switchIn
  3857. dd offset FileRStream__return1 ; always return int(1)
  3858. dd offset FileRStream__setStatusTo4 ; set the status byte to 4
  3859. dd offset FileRStream__read
  3860. unk_403390 db 0 ; DATA XREF: __GetExceptDLLinfo_0+1Fo
  3861. db 0
  3862. db 0
  3863. db 0
  3864. db 0
  3865. db 0
  3866. db 0
  3867. db 0
  3868. dd offset j__abort
  3869. dd offset sub_4022AF
  3870. db 0
  3871. db 0
  3872. db 0
  3873. db 0
  3874. db 0
  3875. db 0
  3876. db 0
  3877. db 0
  3878. db 0
  3879. db 0
  3880. db 0
  3881. db 0
  3882. dword_4033AC dd 0 ; DATA XREF: __GetExceptDLLinfo_0+13w
  3883. db 0
  3884. db 0
  3885. db 0
  3886. db 0
  3887. db 0
  3888. db 0
  3889. db 0
  3890. db 0
  3891. db 0
  3892. db 0
  3893. db 0
  3894. db 0
  3895. db 0
  3896. db 0
  3897. db 0
  3898. db 0
  3899. db 0
  3900. db 0
  3901. db 0
  3902. db 0
  3903. db 0
  3904. db 0
  3905. db 0
  3906. db 0
  3907. db 0
  3908. db 0
  3909. db 0
  3910. db 0
  3911. db 0
  3912. db 0
  3913. db 0
  3914. db 0
  3915. db 0
  3916. db 0
  3917. db 0
  3918. db 0
  3919. db 0
  3920. db 0
  3921. db 0
  3922. db 0
  3923. db 0
  3924. db 0
  3925. db 0
  3926. db 0
  3927. db 0
  3928. db 0
  3929. db 0
  3930. db 0
  3931. db 0
  3932. db 0
  3933. db 0
  3934. db 0
  3935. db 0
  3936. db 0
  3937. db 0
  3938. db 0
  3939. db 0
  3940. db 0
  3941. db 0
  3942. db 0
  3943. db 0
  3944. db 0
  3945. db 0
  3946. db 0
  3947. db 0
  3948. db 0
  3949. db 0
  3950. db 0
  3951. db 0
  3952. db 0
  3953. db 0
  3954. db 0
  3955. db 0
  3956. db 0
  3957. db 0
  3958. db 0
  3959. db 0
  3960. db 0
  3961. db 0
  3962. db 0
  3963. db 0
  3964. db 0
  3965. db 0
  3966. db 0
  3967. db 0
  3968. db 0
  3969. db 0
  3970. db 0
  3971. db 0
  3972. db 0
  3973. db 0
  3974. db 0
  3975. db 0
  3976. db 0
  3977. db 0
  3978. db 0
  3979. db 0
  3980. db 0
  3981. db 0
  3982. db 0
  3983. db 0
  3984. db 0
  3985. db 0
  3986. db 0
  3987. db 0
  3988. db 0
  3989. db 0
  3990. db 0
  3991. db 0
  3992. db 0
  3993. db 0
  3994. db 0
  3995. db 0
  3996. db 0
  3997. db 0
  3998. db 0
  3999. db 0
  4000. db 0
  4001. db 0
  4002. db 0
  4003. db 0
  4004. db 0
  4005. db 0
  4006. db 0
  4007. db 0
  4008. db 0
  4009. db 0
  4010. db 0
  4011. db 0
  4012. db 0
  4013. db 0
  4014. db 0
  4015. unk_403434 db 0 ; DATA XREF: DATA:00403460o
  4016. db 0
  4017. db 0
  4018. db 0
  4019. db 0
  4020. db 0
  4021. db 0
  4022. db 0
  4023. dd offset loc_402294
  4024. db 0
  4025. db 0
  4026. db 0
  4027. db 0
  4028. db 0
  4029. db 0
  4030. db 0
  4031. db 0
  4032. db 0
  4033. db 0
  4034. db 0
  4035. db 0
  4036. db 0
  4037. db 0
  4038. db 0
  4039. db 0
  4040. db 0
  4041. db 0
  4042. db 0
  4043. db 0
  4044. unk_403454 db 0 ; DATA XREF: sub_40225F+6o
  4045. db 0
  4046. db 0
  4047. db 0
  4048. db 0E0h ; à
  4049. db 0FFh
  4050. db 0FFh
  4051. db 0FFh
  4052. db 0
  4053. db 0
  4054. db 3
  4055. db 0
  4056. dd offset unk_403434
  4057. db 0
  4058. db 0
  4059. db 4
  4060. db 0
  4061. db 0A4h ; ¤
  4062. db 0
  4063. db 0
  4064. db 0
  4065. ; char ProcName[]
  4066. ProcName db '__GetExceptDLLinfo',0 ; DATA XREF: sub_40230D+40o
  4067. align 10h
  4068. unk_403480 db 0 ; DATA XREF: DATA:00403054o
  4069. db 40h ; @
  4070. db 0
  4071. db 0
  4072. unk_403484 db 0 ; DATA XREF: DATA:off_40302Co
  4073. db 20h
  4074. dd offset callStringsConstructorForInstance1
  4075. db 0
  4076. db 20h
  4077. dd offset Assert__constructWithExceptBlock
  4078. unk_403490 db 0 ; DATA XREF: DATA:00403030o
  4079. ; DATA:00403034o
  4080. db 20h
  4081. dd offset callStringsDestructorForInstance1
  4082. db 0
  4083. db 20h
  4084. dd offset Assert__destructWithParam2
  4085. unk_40349C db 0 ; DATA XREF: start+11o DATA:00403038o
  4086. db 0
  4087. db 0
  4088. db 0
  4089. db 0
  4090. db 0
  4091. db 0
  4092. db 0
  4093. db 0
  4094. db 0
  4095. db 0
  4096. db 0
  4097. db 0
  4098. db 0
  4099. db 0
  4100. db 0
  4101. db 0
  4102. db 0
  4103. db 0
  4104. db 0
  4105. db 0
  4106. db 0
  4107. db 0
  4108. db 0
  4109. db 0
  4110. db 0
  4111. db 0
  4112. db 0
  4113. db 0
  4114. db 0
  4115. db 0
  4116. db 0
  4117. db 0
  4118. db 0
  4119. db 0
  4120. db 0
  4121. db 0
  4122. db 0
  4123. db 0
  4124. db 0
  4125. db 0
  4126. db 0
  4127. db 0
  4128. db 0
  4129. db 0
  4130. db 0
  4131. db 0
  4132. db 0
  4133. db 0
  4134. db 0
  4135. db 0
  4136. db 0
  4137. db 0
  4138. db 0
  4139. db 0
  4140. db 0
  4141. db 0
  4142. db 0
  4143. db 0
  4144. db 0
  4145. db 0
  4146. db 0
  4147. db 0
  4148. db 0
  4149. db 0
  4150. db 0
  4151. db 0
  4152. db 0
  4153. db 0
  4154. db 0
  4155. db 0
  4156. db 0
  4157. db 0
  4158. db 0
  4159. db 0
  4160. db 0
  4161. db 0
  4162. db 0
  4163. db 0
  4164. db 0
  4165. db 0
  4166. db 0
  4167. db 0
  4168. db 0
  4169. db 0
  4170. db 0
  4171. db 0
  4172. db 0
  4173. db 0
  4174. db 0
  4175. db 0
  4176. db 0
  4177. db 0
  4178. db 0
  4179. db 0
  4180. db 0
  4181. db 0
  4182. db 0
  4183. db 0
  4184. db 0
  4185. db 0
  4186. db 0
  4187. db 0
  4188. db 0
  4189. db 0
  4190. db 0
  4191. db 0
  4192. db 0
  4193. db 0
  4194. db 0
  4195. db 0
  4196. db 0
  4197. db 0
  4198. db 0
  4199. db 0
  4200. db 0
  4201. db 0
  4202. db 0
  4203. db 0
  4204. db 0
  4205. db 0
  4206. db 0
  4207. db 0
  4208. db 0
  4209. db 0
  4210. db 0
  4211. db 0
  4212. db 0
  4213. db 0
  4214. db 0
  4215. db 0
  4216. db 0
  4217. db 0
  4218. db 0
  4219. db 0
  4220. db 0
  4221. db 0
  4222. db 0
  4223. db 0
  4224. db 0
  4225. db 0
  4226. db 0
  4227. db 0
  4228. db 0
  4229. db 0
  4230. db 0
  4231. db 0
  4232. db 0
  4233. db 0
  4234. db 0
  4235. db 0
  4236. db 0
  4237. db 0
  4238. db 0
  4239. db 0
  4240. db 0
  4241. db 0
  4242. db 0
  4243. db 0
  4244. db 0
  4245. db 0
  4246. db 0
  4247. db 0
  4248. db 0
  4249. db 0
  4250. db 0
  4251. db 0
  4252. db 0
  4253. db 0
  4254. db 0
  4255. db 0
  4256. db 0
  4257. db 0
  4258. db 0
  4259. db 0
  4260. db 0
  4261. db 0
  4262. db 0
  4263. db 0
  4264. db 0
  4265. db 0
  4266. db 0
  4267. db 0
  4268. db 0
  4269. db 0
  4270. db 0
  4271. db 0
  4272. db 0
  4273. db 0
  4274. db 0
  4275. db 0
  4276. db 0
  4277. db 0
  4278. db 0
  4279. db 0
  4280. db 0
  4281. db 0
  4282. db 0
  4283. db 0
  4284. db 0
  4285. db 0
  4286. db 0
  4287. db 0
  4288. db 0
  4289. db 0
  4290. db 0
  4291. db 0
  4292. db 0
  4293. db 0
  4294. db 0
  4295. db 0
  4296. db 0
  4297. db 0
  4298. db 0
  4299. db 0
  4300. db 0
  4301. db 0
  4302. db 0
  4303. db 0
  4304. db 0
  4305. db 0
  4306. db 0
  4307. db 0
  4308. db 0
  4309. db 0
  4310. db 0
  4311. db 0
  4312. db 0
  4313. db 0
  4314. db 0
  4315. db 0
  4316. db 0
  4317. db 0
  4318. db 0
  4319. db 0
  4320. db 0
  4321. db 0
  4322. db 0
  4323. db 0
  4324. db 0
  4325. db 0
  4326. db 0
  4327. db 0
  4328. db 0
  4329. db 0
  4330. db 0
  4331. db 0
  4332. db 0
  4333. db 0
  4334. db 0
  4335. db 0
  4336. db 0
  4337. db 0
  4338. db 0
  4339. db 0
  4340. db 0
  4341. db 0
  4342. db 0
  4343. db 0
  4344. db 0
  4345. db 0
  4346. db 0
  4347. db 0
  4348. db 0
  4349. db 0
  4350. db 0
  4351. db 0
  4352. db 0
  4353. db 0
  4354. db 0
  4355. db 0
  4356. db 0
  4357. db 0
  4358. db 0
  4359. db 0
  4360. db 0
  4361. db 0
  4362. db 0
  4363. db 0
  4364. db 0
  4365. db 0
  4366. db 0
  4367. db 0
  4368. db 0
  4369. db 0
  4370. db 0
  4371. db 0
  4372. db 0
  4373. db 0
  4374. db 0
  4375. db 0
  4376. db 0
  4377. db 0
  4378. db 0
  4379. db 0
  4380. db 0
  4381. db 0
  4382. db 0
  4383. db 0
  4384. db 0
  4385. db 0
  4386. db 0
  4387. db 0
  4388. db 0
  4389. db 0
  4390. db 0
  4391. db 0
  4392. db 0
  4393. db 0
  4394. db 0
  4395. db 0
  4396. db 0
  4397. db 0
  4398. db 0
  4399. db 0
  4400. db 0
  4401. db 0
  4402. db 0
  4403. db 0
  4404. db 0
  4405. db 0
  4406. db 0
  4407. db 0
  4408. db 0
  4409. db 0
  4410. db 0
  4411. db 0
  4412. db 0
  4413. db 0
  4414. db 0
  4415. db 0
  4416. db 0
  4417. db 0
  4418. db 0
  4419. db 0
  4420. db 0
  4421. db 0
  4422. db 0
  4423. db 0
  4424. db 0
  4425. db 0
  4426. db 0
  4427. db 0
  4428. db 0
  4429. db 0
  4430. db 0
  4431. db 0
  4432. db 0
  4433. db 0
  4434. db 0
  4435. db 0
  4436. db 0
  4437. db 0
  4438. db 0
  4439. db 0
  4440. db 0
  4441. db ? ;
  4442. db ? ;
  4443. db ? ;
  4444. db ? ;
  4445. db ? ;
  4446. db ? ;
  4447. db ? ;
  4448. db ? ;
  4449. db ? ;
  4450. db ? ;
  4451. db ? ;
  4452. db ? ;
  4453. db ? ;
  4454. db ? ;
  4455. db ? ;
  4456. db ? ;
  4457. db ? ;
  4458. db ? ;
  4459. db ? ;
  4460. db ? ;
  4461. db ? ;
  4462. db ? ;
  4463. db ? ;
  4464. db ? ;
  4465. db ? ;
  4466. db ? ;
  4467. db ? ;
  4468. db ? ;
  4469. db ? ;
  4470. db ? ;
  4471. db ? ;
  4472. db ? ;
  4473. db ? ;
  4474. db ? ;
  4475. db ? ;
  4476. db ? ;
  4477. db ? ;
  4478. db ? ;
  4479. db ? ;
  4480. db ? ;
  4481. db ? ;
  4482. db ? ;
  4483. db ? ;
  4484. db ? ;
  4485. db ? ;
  4486. db ? ;
  4487. db ? ;
  4488. db ? ;
  4489. db ? ;
  4490. db ? ;
  4491. db ? ;
  4492. db ? ;
  4493. db ? ;
  4494. db ? ;
  4495. db ? ;
  4496. db ? ;
  4497. db ? ;
  4498. db ? ;
  4499. db ? ;
  4500. db ? ;
  4501. db ? ;
  4502. db ? ;
  4503. db ? ;
  4504. db ? ;
  4505. db ? ;
  4506. db ? ;
  4507. db ? ;
  4508. db ? ;
  4509. db ? ;
  4510. db ? ;
  4511. db ? ;
  4512. db ? ;
  4513. db ? ;
  4514. db ? ;
  4515. db ? ;
  4516. db ? ;
  4517. db ? ;
  4518. db ? ;
  4519. db ? ;
  4520. db ? ;
  4521. db ? ;
  4522. db ? ;
  4523. db ? ;
  4524. db ? ;
  4525. db ? ;
  4526. db ? ;
  4527. db ? ;
  4528. db ? ;
  4529. db ? ;
  4530. db ? ;
  4531. db ? ;
  4532. db ? ;
  4533. db ? ;
  4534. db ? ;
  4535. db ? ;
  4536. db ? ;
  4537. db ? ;
  4538. db ? ;
  4539. db ? ;
  4540. db ? ;
  4541. db ? ;
  4542. db ? ;
  4543. db ? ;
  4544. db ? ;
  4545. db ? ;
  4546. db ? ;
  4547. db ? ;
  4548. db ? ;
  4549. db ? ;
  4550. db ? ;
  4551. db ? ;
  4552. db ? ;
  4553. db ? ;
  4554. db ? ;
  4555. db ? ;
  4556. db ? ;
  4557. db ? ;
  4558. db ? ;
  4559. db ? ;
  4560. db ? ;
  4561. db ? ;
  4562. db ? ;
  4563. db ? ;
  4564. db ? ;
  4565. db ? ;
  4566. db ? ;
  4567. db ? ;
  4568. db ? ;
  4569. db ? ;
  4570. db ? ;
  4571. db ? ;
  4572. db ? ;
  4573. db ? ;
  4574. db ? ;
  4575. db ? ;
  4576. db ? ;
  4577. db ? ;
  4578. db ? ;
  4579. db ? ;
  4580. db ? ;
  4581. db ? ;
  4582. db ? ;
  4583. db ? ;
  4584. db ? ;
  4585. db ? ;
  4586. db ? ;
  4587. db ? ;
  4588. db ? ;
  4589. db ? ;
  4590. db ? ;
  4591. db ? ;
  4592. db ? ;
  4593. db ? ;
  4594. db ? ;
  4595. db ? ;
  4596. db ? ;
  4597. ; int StringInstance1
  4598. StringInstance1 dd ? ; DATA XREF: WinMain+1C4o WinMain+1DEo ...
  4599. db ? ;
  4600. db ? ;
  4601. db ? ;
  4602. db ? ;
  4603. db ? ;
  4604. db ? ;
  4605. db ? ;
  4606. db ? ;
  4607. db ? ;
  4608. db ? ;
  4609. db ? ;
  4610. db ? ;
  4611. ; char lpText[]
  4612. lpText dd ? ; DATA XREF: WinMain+1D9o WinMain+29Dr
  4613. ; LPCSTR dword_4036B0
  4614. dword_4036B0 dd ? ; DATA XREF: WinMain+2C6r
  4615. ; LPCSTR dword_4036B4
  4616. dword_4036B4 dd ? ; DATA XREF: WinMain+2F2r WinMain+316r
  4617. db ? ;
  4618. db ? ;
  4619. db ? ;
  4620. db ? ;
  4621. db ? ;
  4622. db ? ;
  4623. db ? ;
  4624. db ? ;
  4625. db ? ;
  4626. db ? ;
  4627. db ? ;
  4628. db ? ;
  4629. ; char lpCaption[]
  4630. lpCaption dd ? ; DATA XREF: WinMain+1EFo WinMain+296r ...
  4631. align 10h
  4632. ; char byte_4036D0[192]
  4633. byte_4036D0 db 0C0h dup(?) ; DATA XREF: stringCopyStuff+25o
  4634. ; stringCopyStuff+46o ...
  4635. InstanceOfAssertVtable db ? ; ; DATA XREF: Assert__constructWithExceptBlock+16o
  4636. ; Assert__destructWithParam2+2o ...
  4637. db ? ;
  4638. db ? ;
  4639. db ? ;
  4640. dword_403794 dd ? ; DATA XREF: Assert__returnSomeGlobalDWORDr
  4641. dword_403798 dd ? ; DATA XREF: Assert__returnSomeGlobalDWORD_2r
  4642. align 10h
  4643. strangeAssertDWORD dd ? ; DATA XREF: Assert__internal1+8r
  4644. ; Assert__assert_abort_notify:loc_401AADr ...
  4645. applicationPathString db ? ; ; DATA XREF: Assert__copySomeString+8o
  4646. ; Assert__getAssertLogFilePath+7o
  4647. db ? ;
  4648. db ? ;
  4649. db ? ;
  4650. db ? ;
  4651. db ? ;
  4652. db ? ;
  4653. db ? ;
  4654. db ? ;
  4655. db ? ;
  4656. db ? ;
  4657. db ? ;
  4658. db ? ;
  4659. db ? ;
  4660. db ? ;
  4661. db ? ;
  4662. db ? ;
  4663. db ? ;
  4664. db ? ;
  4665. db ? ;
  4666. db ? ;
  4667. db ? ;
  4668. db ? ;
  4669. db ? ;
  4670. db ? ;
  4671. db ? ;
  4672. db ? ;
  4673. db ? ;
  4674. db ? ;
  4675. db ? ;
  4676. db ? ;
  4677. db ? ;
  4678. db ? ;
  4679. db ? ;
  4680. db ? ;
  4681. db ? ;
  4682. db ? ;
  4683. db ? ;
  4684. db ? ;
  4685. db ? ;
  4686. db ? ;
  4687. db ? ;
  4688. db ? ;
  4689. db ? ;
  4690. db ? ;
  4691. db ? ;
  4692. db ? ;
  4693. db ? ;
  4694. db ? ;
  4695. db ? ;
  4696. db ? ;
  4697. db ? ;
  4698. db ? ;
  4699. db ? ;
  4700. db ? ;
  4701. db ? ;
  4702. db ? ;
  4703. db ? ;
  4704. db ? ;
  4705. db ? ;
  4706. db ? ;
  4707. db ? ;
  4708. db ? ;
  4709. db ? ;
  4710. db ? ;
  4711. db ? ;
  4712. db ? ;
  4713. db ? ;
  4714. db ? ;
  4715. db ? ;
  4716. db ? ;
  4717. db ? ;
  4718. db ? ;
  4719. db ? ;
  4720. db ? ;
  4721. db ? ;
  4722. db ? ;
  4723. db ? ;
  4724. db ? ;
  4725. db ? ;
  4726. db ? ;
  4727. db ? ;
  4728. db ? ;
  4729. db ? ;
  4730. db ? ;
  4731. db ? ;
  4732. db ? ;
  4733. db ? ;
  4734. db ? ;
  4735. db ? ;
  4736. db ? ;
  4737. db ? ;
  4738. db ? ;
  4739. db ? ;
  4740. db ? ;
  4741. db ? ;
  4742. db ? ;
  4743. db ? ;
  4744. db ? ;
  4745. db ? ;
  4746. db ? ;
  4747. db ? ;
  4748. db ? ;
  4749. db ? ;
  4750. db ? ;
  4751. db ? ;
  4752. db ? ;
  4753. db ? ;
  4754. db ? ;
  4755. db ? ;
  4756. db ? ;
  4757. db ? ;
  4758. db ? ;
  4759. db ? ;
  4760. db ? ;
  4761. db ? ;
  4762. db ? ;
  4763. db ? ;
  4764. db ? ;
  4765. db ? ;
  4766. db ? ;
  4767. db ? ;
  4768. db ? ;
  4769. db ? ;
  4770. db ? ;
  4771. db ? ;
  4772. db ? ;
  4773. db ? ;
  4774. db ? ;
  4775. db ? ;
  4776. db ? ;
  4777. db ? ;
  4778. db ? ;
  4779. db ? ;
  4780. db ? ;
  4781. db ? ;
  4782. db ? ;
  4783. db ? ;
  4784. db ? ;
  4785. db ? ;
  4786. db ? ;
  4787. db ? ;
  4788. db ? ;
  4789. db ? ;
  4790. db ? ;
  4791. db ? ;
  4792. db ? ;
  4793. db ? ;
  4794. db ? ;
  4795. db ? ;
  4796. db ? ;
  4797. db ? ;
  4798. db ? ;
  4799. db ? ;
  4800. db ? ;
  4801. db ? ;
  4802. db ? ;
  4803. db ? ;
  4804. db ? ;
  4805. db ? ;
  4806. db ? ;
  4807. db ? ;
  4808. db ? ;
  4809. db ? ;
  4810. db ? ;
  4811. db ? ;
  4812. db ? ;
  4813. db ? ;
  4814. db ? ;
  4815. db ? ;
  4816. db ? ;
  4817. db ? ;
  4818. db ? ;
  4819. db ? ;
  4820. db ? ;
  4821. db ? ;
  4822. db ? ;
  4823. db ? ;
  4824. db ? ;
  4825. db ? ;
  4826. db ? ;
  4827. db ? ;
  4828. db ? ;
  4829. db ? ;
  4830. db ? ;
  4831. db ? ;
  4832. db ? ;
  4833. db ? ;
  4834. db ? ;
  4835. db ? ;
  4836. db ? ;
  4837. db ? ;
  4838. db ? ;
  4839. db ? ;
  4840. db ? ;
  4841. db ? ;
  4842. db ? ;
  4843. db ? ;
  4844. db ? ;
  4845. db ? ;
  4846. db ? ;
  4847. db ? ;
  4848. db ? ;
  4849. db ? ;
  4850. db ? ;
  4851. db ? ;
  4852. db ? ;
  4853. db ? ;
  4854. db ? ;
  4855. db ? ;
  4856. db ? ;
  4857. db ? ;
  4858. db ? ;
  4859. db ? ;
  4860. db ? ;
  4861. db ? ;
  4862. db ? ;
  4863. db ? ;
  4864. db ? ;
  4865. db ? ;
  4866. db ? ;
  4867. db ? ;
  4868. db ? ;
  4869. db ? ;
  4870. db ? ;
  4871. db ? ;
  4872. db ? ;
  4873. db ? ;
  4874. db ? ;
  4875. db ? ;
  4876. db ? ;
  4877. db ? ;
  4878. db ? ;
  4879. db ? ;
  4880. db ? ;
  4881. db ? ;
  4882. db ? ;
  4883. db ? ;
  4884. db ? ;
  4885. db ? ;
  4886. db ? ;
  4887. db ? ;
  4888. db ? ;
  4889. db ? ;
  4890. db ? ;
  4891. db ? ;
  4892. db ? ;
  4893. db ? ;
  4894. db ? ;
  4895. db ? ;
  4896. db ? ;
  4897. db ? ;
  4898. db ? ;
  4899. db ? ;
  4900. db ? ;
  4901. db ? ;
  4902. ; char dest[80]
  4903. dest db 50h dup(?) ; DATA XREF: Assert__getAssertLogFilePath+Co
  4904. ; Assert__getAssertLogFilePath+2Eo ...
  4905. errorCounter dd ? ; DATA XREF: Assert__act:loc_401D3Aw
  4906. classInstanceCounter dd ? ; DATA XREF: start+3Fw
  4907. ; Strings____construct+1Ar ...
  4908. unk_4038FC db ? ; ; DATA XREF: start+16o
  4909. db ? ;
  4910. db ? ;
  4911. db ? ;
  4912. db ? ;
  4913. db ? ;
  4914. db ? ;
  4915. db ? ;
  4916. db ? ;
  4917. db ? ;
  4918. db ? ;
  4919. db ? ;
  4920. db ? ;
  4921. db ? ;
  4922. db ? ;
  4923. db ? ;
  4924. db ? ;
  4925. db ? ;
  4926. db ? ;
  4927. db ? ;
  4928. db ? ;
  4929. db ? ;
  4930. db ? ;
  4931. db ? ;
  4932. db ? ;
  4933. db ? ;
  4934. db ? ;
  4935. db ? ;
  4936. db ? ;
  4937. db ? ;
  4938. db ? ;
  4939. db ? ;
  4940. db ? ;
  4941. db ? ;
  4942. db ? ;
  4943. db ? ;
  4944. db ? ;
  4945. db ? ;
  4946. db ? ;
  4947. db ? ;
  4948. db ? ;
  4949. db ? ;
  4950. db ? ;
  4951. db ? ;
  4952. db ? ;
  4953. db ? ;
  4954. db ? ;
  4955. db ? ;
  4956. db ? ;
  4957. db ? ;
  4958. db ? ;
  4959. db ? ;
  4960. db ? ;
  4961. db ? ;
  4962. db ? ;
  4963. db ? ;
  4964. db ? ;
  4965. db ? ;
  4966. db ? ;
  4967. db ? ;
  4968. db ? ;
  4969. db ? ;
  4970. db ? ;
  4971. db ? ;
  4972. db ? ;
  4973. db ? ;
  4974. db ? ;
  4975. db ? ;
  4976. db ? ;
  4977. db ? ;
  4978. db ? ;
  4979. db ? ;
  4980. db ? ;
  4981. db ? ;
  4982. db ? ;
  4983. db ? ;
  4984. db ? ;
  4985. db ? ;
  4986. db ? ;
  4987. db ? ;
  4988. db ? ;
  4989. db ? ;
  4990. db ? ;
  4991. db ? ;
  4992. db ? ;
  4993. db ? ;
  4994. db ? ;
  4995. db ? ;
  4996. db ? ;
  4997. db ? ;
  4998. db ? ;
  4999. db ? ;
  5000. db ? ;
  5001. db ? ;
  5002. db ? ;
  5003. db ? ;
  5004. db ? ;
  5005. db ? ;
  5006. db ? ;
  5007. db ? ;
  5008. db ? ;
  5009. db ? ;
  5010. db ? ;
  5011. db ? ;
  5012. db ? ;
  5013. db ? ;
  5014. db ? ;
  5015. db ? ;
  5016. db ? ;
  5017. db ? ;
  5018. db ? ;
  5019. db ? ;
  5020. db ? ;
  5021. db ? ;
  5022. db ? ;
  5023. db ? ;
  5024. db ? ;
  5025. db ? ;
  5026. db ? ;
  5027. db ? ;
  5028. db ? ;
  5029. db ? ;
  5030. db ? ;
  5031. db ? ;
  5032. db ? ;
  5033. db ? ;
  5034. db ? ;
  5035. db ? ;
  5036. db ? ;
  5037. db ? ;
  5038. db ? ;
  5039. db ? ;
  5040. db ? ;
  5041. db ? ;
  5042. db ? ;
  5043. db ? ;
  5044. db ? ;
  5045. db ? ;
  5046. db ? ;
  5047. db ? ;
  5048. db ? ;
  5049. db ? ;
  5050. db ? ;
  5051. db ? ;
  5052. db ? ;
  5053. db ? ;
  5054. db ? ;
  5055. db ? ;
  5056. db ? ;
  5057. db ? ;
  5058. db ? ;
  5059. db ? ;
  5060. db ? ;
  5061. db ? ;
  5062. db ? ;
  5063. db ? ;
  5064. db ? ;
  5065. db ? ;
  5066. db ? ;
  5067. db ? ;
  5068. db ? ;
  5069. db ? ;
  5070. db ? ;
  5071. db ? ;
  5072. db ? ;
  5073. db ? ;
  5074. db ? ;
  5075. db ? ;
  5076. db ? ;
  5077. db ? ;
  5078. db ? ;
  5079. db ? ;
  5080. db ? ;
  5081. db ? ;
  5082. db ? ;
  5083. db ? ;
  5084. db ? ;
  5085. db ? ;
  5086. db ? ;
  5087. db ? ;
  5088. db ? ;
  5089. db ? ;
  5090. db ? ;
  5091. db ? ;
  5092. db ? ;
  5093. db ? ;
  5094. db ? ;
  5095. db ? ;
  5096. db ? ;
  5097. db ? ;
  5098. db ? ;
  5099. db ? ;
  5100. db ? ;
  5101. db ? ;
  5102. db ? ;
  5103. db ? ;
  5104. db ? ;
  5105. db ? ;
  5106. db ? ;
  5107. db ? ;
  5108. db ? ;
  5109. db ? ;
  5110. db ? ;
  5111. db ? ;
  5112. db ? ;
  5113. db ? ;
  5114. db ? ;
  5115. db ? ;
  5116. db ? ;
  5117. db ? ;
  5118. db ? ;
  5119. db ? ;
  5120. db ? ;
  5121. db ? ;
  5122. db ? ;
  5123. db ? ;
  5124. db ? ;
  5125. db ? ;
  5126. db ? ;
  5127. db ? ;
  5128. db ? ;
  5129. db ? ;
  5130. db ? ;
  5131. db ? ;
  5132. db ? ;
  5133. db ? ;
  5134. db ? ;
  5135. db ? ;
  5136. db ? ;
  5137. db ? ;
  5138. db ? ;
  5139. db ? ;
  5140. db ? ;
  5141. db ? ;
  5142. db ? ;
  5143. db ? ;
  5144. db ? ;
  5145. db ? ;
  5146. db ? ;
  5147. db ? ;
  5148. db ? ;
  5149. db ? ;
  5150. db ? ;
  5151. db ? ;
  5152. db ? ;
  5153. db ? ;
  5154. db ? ;
  5155. db ? ;
  5156. db ? ;
  5157. db ? ;
  5158. db ? ;
  5159. db ? ;
  5160. db ? ;
  5161. db ? ;
  5162. db ? ;
  5163. db ? ;
  5164. db ? ;
  5165. db ? ;
  5166. db ? ;
  5167. db ? ;
  5168. db ? ;
  5169. db ? ;
  5170. db ? ;
  5171. db ? ;
  5172. db ? ;
  5173. db ? ;
  5174. db ? ;
  5175. db ? ;
  5176. db ? ;
  5177. db ? ;
  5178. db ? ;
  5179. db ? ;
  5180. db ? ;
  5181. db ? ;
  5182. db ? ;
  5183. db ? ;
  5184. db ? ;
  5185. db ? ;
  5186. db ? ;
  5187. db ? ;
  5188. db ? ;
  5189. db ? ;
  5190. db ? ;
  5191. db ? ;
  5192. db ? ;
  5193. db ? ;
  5194. db ? ;
  5195. db ? ;
  5196. db ? ;
  5197. db ? ;
  5198. db ? ;
  5199. db ? ;
  5200. db ? ;
  5201. db ? ;
  5202. db ? ;
  5203. db ? ;
  5204. db ? ;
  5205. db ? ;
  5206. db ? ;
  5207. db ? ;
  5208. db ? ;
  5209. db ? ;
  5210. db ? ;
  5211. db ? ;
  5212. db ? ;
  5213. db ? ;
  5214. db ? ;
  5215. db ? ;
  5216. db ? ;
  5217. db ? ;
  5218. db ? ;
  5219. db ? ;
  5220. db ? ;
  5221. db ? ;
  5222. db ? ;
  5223. db ? ;
  5224. db ? ;
  5225. db ? ;
  5226. db ? ;
  5227. db ? ;
  5228. db ? ;
  5229. db ? ;
  5230. db ? ;
  5231. db ? ;
  5232. db ? ;
  5233. db ? ;
  5234. db ? ;
  5235. db ? ;
  5236. db ? ;
  5237. db ? ;
  5238. db ? ;
  5239. db ? ;
  5240. db ? ;
  5241. db ? ;
  5242. db ? ;
  5243. db ? ;
  5244. db ? ;
  5245. db ? ;
  5246. db ? ;
  5247. db ? ;
  5248. db ? ;
  5249. db ? ;
  5250. db ? ;
  5251. db ? ;
  5252. db ? ;
  5253. db ? ;
  5254. db ? ;
  5255. db ? ;
  5256. db ? ;
  5257. db ? ;
  5258. db ? ;
  5259. db ? ;
  5260. db ? ;
  5261. db ? ;
  5262. db ? ;
  5263. db ? ;
  5264. db ? ;
  5265. db ? ;
  5266. db ? ;
  5267. db ? ;
  5268. db ? ;
  5269. db ? ;
  5270. db ? ;
  5271. db ? ;
  5272. db ? ;
  5273. db ? ;
  5274. db ? ;
  5275. db ? ;
  5276. db ? ;
  5277. db ? ;
  5278. db ? ;
  5279. db ? ;
  5280. db ? ;
  5281. db ? ;
  5282. db ? ;
  5283. db ? ;
  5284. db ? ;
  5285. db ? ;
  5286. db ? ;
  5287. db ? ;
  5288. db ? ;
  5289. db ? ;
  5290. db ? ;
  5291. db ? ;
  5292. db ? ;
  5293. db ? ;
  5294. db ? ;
  5295. db ? ;
  5296. db ? ;
  5297. db ? ;
  5298. db ? ;
  5299. db ? ;
  5300. db ? ;
  5301. db ? ;
  5302. db ? ;
  5303. db ? ;
  5304. db ? ;
  5305. db ? ;
  5306. db ? ;
  5307. db ? ;
  5308. db ? ;
  5309. db ? ;
  5310. db ? ;
  5311. db ? ;
  5312. db ? ;
  5313. db ? ;
  5314. db ? ;
  5315. db ? ;
  5316. db ? ;
  5317. db ? ;
  5318. db ? ;
  5319. db ? ;
  5320. db ? ;
  5321. db ? ;
  5322. db ? ;
  5323. db ? ;
  5324. db ? ;
  5325. db ? ;
  5326. db ? ;
  5327. db ? ;
  5328. db ? ;
  5329. db ? ;
  5330. db ? ;
  5331. db ? ;
  5332. db ? ;
  5333. db ? ;
  5334. db ? ;
  5335. db ? ;
  5336. db ? ;
  5337. db ? ;
  5338. db ? ;
  5339. db ? ;
  5340. db ? ;
  5341. db ? ;
  5342. db ? ;
  5343. db ? ;
  5344. db ? ;
  5345. db ? ;
  5346. db ? ;
  5347. db ? ;
  5348. db ? ;
  5349. db ? ;
  5350. db ? ;
  5351. db ? ;
  5352. db ? ;
  5353. db ? ;
  5354. db ? ;
  5355. db ? ;
  5356. db ? ;
  5357. db ? ;
  5358. db ? ;
  5359. db ? ;
  5360. db ? ;
  5361. db ? ;
  5362. db ? ;
  5363. db ? ;
  5364. db ? ;
  5365. db ? ;
  5366. db ? ;
  5367. db ? ;
  5368. db ? ;
  5369. db ? ;
  5370. db ? ;
  5371. db ? ;
  5372. db ? ;
  5373. db ? ;
  5374. db ? ;
  5375. db ? ;
  5376. db ? ;
  5377. db ? ;
  5378. db ? ;
  5379. db ? ;
  5380. db ? ;
  5381. db ? ;
  5382. db ? ;
  5383. db ? ;
  5384. db ? ;
  5385. db ? ;
  5386. db ? ;
  5387. db ? ;
  5388. db ? ;
  5389. db ? ;
  5390. db ? ;
  5391. db ? ;
  5392. db ? ;
  5393. db ? ;
  5394. db ? ;
  5395. db ? ;
  5396. db ? ;
  5397. db ? ;
  5398. db ? ;
  5399. db ? ;
  5400. db ? ;
  5401. db ? ;
  5402. db ? ;
  5403. db ? ;
  5404. db ? ;
  5405. db ? ;
  5406. db ? ;
  5407. db ? ;
  5408. db ? ;
  5409. db ? ;
  5410. db ? ;
  5411. db ? ;
  5412. db ? ;
  5413. db ? ;
  5414. db ? ;
  5415. db ? ;
  5416. db ? ;
  5417. db ? ;
  5418. db ? ;
  5419. db ? ;
  5420. db ? ;
  5421. db ? ;
  5422. db ? ;
  5423. db ? ;
  5424. db ? ;
  5425. db ? ;
  5426. db ? ;
  5427. db ? ;
  5428. db ? ;
  5429. db ? ;
  5430. db ? ;
  5431. db ? ;
  5432. db ? ;
  5433. db ? ;
  5434. db ? ;
  5435. db ? ;
  5436. db ? ;
  5437. db ? ;
  5438. db ? ;
  5439. db ? ;
  5440. db ? ;
  5441. db ? ;
  5442. db ? ;
  5443. db ? ;
  5444. db ? ;
  5445. db ? ;
  5446. db ? ;
  5447. db ? ;
  5448. db ? ;
  5449. db ? ;
  5450. db ? ;
  5451. db ? ;
  5452. db ? ;
  5453. db ? ;
  5454. db ? ;
  5455. db ? ;
  5456. db ? ;
  5457. db ? ;
  5458. db ? ;
  5459. db ? ;
  5460. db ? ;
  5461. db ? ;
  5462. db ? ;
  5463. db ? ;
  5464. db ? ;
  5465. db ? ;
  5466. db ? ;
  5467. db ? ;
  5468. db ? ;
  5469. db ? ;
  5470. db ? ;
  5471. db ? ;
  5472. db ? ;
  5473. db ? ;
  5474. db ? ;
  5475. db ? ;
  5476. db ? ;
  5477. db ? ;
  5478. db ? ;
  5479. db ? ;
  5480. db ? ;
  5481. db ? ;
  5482. db ? ;
  5483. db ? ;
  5484. db ? ;
  5485. db ? ;
  5486. db ? ;
  5487. db ? ;
  5488. db ? ;
  5489. db ? ;
  5490. db ? ;
  5491. db ? ;
  5492. db ? ;
  5493. db ? ;
  5494. db ? ;
  5495. db ? ;
  5496. db ? ;
  5497. db ? ;
  5498. db ? ;
  5499. db ? ;
  5500. db ? ;
  5501. db ? ;
  5502. db ? ;
  5503. db ? ;
  5504. db ? ;
  5505. db ? ;
  5506. db ? ;
  5507. db ? ;
  5508. db ? ;
  5509. db ? ;
  5510. db ? ;
  5511. db ? ;
  5512. db ? ;
  5513. db ? ;
  5514. db ? ;
  5515. db ? ;
  5516. db ? ;
  5517. db ? ;
  5518. db ? ;
  5519. db ? ;
  5520. db ? ;
  5521. db ? ;
  5522. db ? ;
  5523. db ? ;
  5524. db ? ;
  5525. db ? ;
  5526. db ? ;
  5527. db ? ;
  5528. db ? ;
  5529. db ? ;
  5530. db ? ;
  5531. db ? ;
  5532. db ? ;
  5533. db ? ;
  5534. db ? ;
  5535. db ? ;
  5536. db ? ;
  5537. db ? ;
  5538. db ? ;
  5539. db ? ;
  5540. db ? ;
  5541. db ? ;
  5542. db ? ;
  5543. db ? ;
  5544. db ? ;
  5545. db ? ;
  5546. db ? ;
  5547. db ? ;
  5548. db ? ;
  5549. db ? ;
  5550. db ? ;
  5551. db ? ;
  5552. db ? ;
  5553. db ? ;
  5554. db ? ;
  5555. db ? ;
  5556. db ? ;
  5557. db ? ;
  5558. db ? ;
  5559. db ? ;
  5560. db ? ;
  5561. db ? ;
  5562. db ? ;
  5563. db ? ;
  5564. db ? ;
  5565. db ? ;
  5566. db ? ;
  5567. db ? ;
  5568. db ? ;
  5569. db ? ;
  5570. db ? ;
  5571. db ? ;
  5572. db ? ;
  5573. db ? ;
  5574. db ? ;
  5575. db ? ;
  5576. db ? ;
  5577. db ? ;
  5578. db ? ;
  5579. db ? ;
  5580. db ? ;
  5581. db ? ;
  5582. db ? ;
  5583. db ? ;
  5584. db ? ;
  5585. db ? ;
  5586. db ? ;
  5587. db ? ;
  5588. db ? ;
  5589. db ? ;
  5590. db ? ;
  5591. db ? ;
  5592. db ? ;
  5593. db ? ;
  5594. db ? ;
  5595. db ? ;
  5596. db ? ;
  5597. db ? ;
  5598. db ? ;
  5599. db ? ;
  5600. db ? ;
  5601. db ? ;
  5602. db ? ;
  5603. db ? ;
  5604. db ? ;
  5605. db ? ;
  5606. db ? ;
  5607. db ? ;
  5608. db ? ;
  5609. db ? ;
  5610. db ? ;
  5611. db ? ;
  5612. db ? ;
  5613. db ? ;
  5614. db ? ;
  5615. db ? ;
  5616. db ? ;
  5617. db ? ;
  5618. db ? ;
  5619. db ? ;
  5620. db ? ;
  5621. db ? ;
  5622. db ? ;
  5623. db ? ;
  5624. db ? ;
  5625. db ? ;
  5626. db ? ;
  5627. db ? ;
  5628. db ? ;
  5629. db ? ;
  5630. db ? ;
  5631. db ? ;
  5632. db ? ;
  5633. db ? ;
  5634. db ? ;
  5635. db ? ;
  5636. db ? ;
  5637. db ? ;
  5638. db ? ;
  5639. db ? ;
  5640. db ? ;
  5641. db ? ;
  5642. db ? ;
  5643. db ? ;
  5644. db ? ;
  5645. db ? ;
  5646. db ? ;
  5647. db ? ;
  5648. db ? ;
  5649. db ? ;
  5650. db ? ;
  5651. db ? ;
  5652. db ? ;
  5653. db ? ;
  5654. db ? ;
  5655. db ? ;
  5656. db ? ;
  5657. db ? ;
  5658. db ? ;
  5659. db ? ;
  5660. db ? ;
  5661. db ? ;
  5662. db ? ;
  5663. db ? ;
  5664. db ? ;
  5665. db ? ;
  5666. db ? ;
  5667. db ? ;
  5668. db ? ;
  5669. db ? ;
  5670. db ? ;
  5671. db ? ;
  5672. db ? ;
  5673. db ? ;
  5674. db ? ;
  5675. db ? ;
  5676. db ? ;
  5677. db ? ;
  5678. db ? ;
  5679. db ? ;
  5680. db ? ;
  5681. db ? ;
  5682. db ? ;
  5683. db ? ;
  5684. db ? ;
  5685. db ? ;
  5686. db ? ;
  5687. db ? ;
  5688. db ? ;
  5689. db ? ;
  5690. db ? ;
  5691. db ? ;
  5692. db ? ;
  5693. db ? ;
  5694. db ? ;
  5695. db ? ;
  5696. db ? ;
  5697. db ? ;
  5698. db ? ;
  5699. db ? ;
  5700. db ? ;
  5701. db ? ;
  5702. db ? ;
  5703. db ? ;
  5704. db ? ;
  5705. db ? ;
  5706. db ? ;
  5707. db ? ;
  5708. db ? ;
  5709. db ? ;
  5710. db ? ;
  5711. db ? ;
  5712. db ? ;
  5713. db ? ;
  5714. db ? ;
  5715. db ? ;
  5716. db ? ;
  5717. db ? ;
  5718. db ? ;
  5719. db ? ;
  5720. db ? ;
  5721. db ? ;
  5722. db ? ;
  5723. db ? ;
  5724. db ? ;
  5725. db ? ;
  5726. db ? ;
  5727. db ? ;
  5728. db ? ;
  5729. db ? ;
  5730. db ? ;
  5731. db ? ;
  5732. db ? ;
  5733. db ? ;
  5734. db ? ;
  5735. db ? ;
  5736. db ? ;
  5737. db ? ;
  5738. db ? ;
  5739. db ? ;
  5740. db ? ;
  5741. db ? ;
  5742. db ? ;
  5743. db ? ;
  5744. db ? ;
  5745. db ? ;
  5746. db ? ;
  5747. db ? ;
  5748. db ? ;
  5749. db ? ;
  5750. db ? ;
  5751. db ? ;
  5752. db ? ;
  5753. db ? ;
  5754. db ? ;
  5755. db ? ;
  5756. db ? ;
  5757. db ? ;
  5758. db ? ;
  5759. db ? ;
  5760. db ? ;
  5761. db ? ;
  5762. db ? ;
  5763. db ? ;
  5764. db ? ;
  5765. db ? ;
  5766. db ? ;
  5767. db ? ;
  5768. db ? ;
  5769. db ? ;
  5770. db ? ;
  5771. db ? ;
  5772. db ? ;
  5773. db ? ;
  5774. db ? ;
  5775. db ? ;
  5776. db ? ;
  5777. db ? ;
  5778. db ? ;
  5779. db ? ;
  5780. db ? ;
  5781. db ? ;
  5782. db ? ;
  5783. db ? ;
  5784. db ? ;
  5785. db ? ;
  5786. db ? ;
  5787. db ? ;
  5788. db ? ;
  5789. db ? ;
  5790. db ? ;
  5791. db ? ;
  5792. db ? ;
  5793. db ? ;
  5794. db ? ;
  5795. db ? ;
  5796. db ? ;
  5797. db ? ;
  5798. db ? ;
  5799. db ? ;
  5800. db ? ;
  5801. db ? ;
  5802. db ? ;
  5803. db ? ;
  5804. db ? ;
  5805. db ? ;
  5806. db ? ;
  5807. db ? ;
  5808. db ? ;
  5809. db ? ;
  5810. db ? ;
  5811. db ? ;
  5812. db ? ;
  5813. db ? ;
  5814. db ? ;
  5815. db ? ;
  5816. db ? ;
  5817. db ? ;
  5818. db ? ;
  5819. db ? ;
  5820. db ? ;
  5821. db ? ;
  5822. db ? ;
  5823. db ? ;
  5824. db ? ;
  5825. db ? ;
  5826. db ? ;
  5827. db ? ;
  5828. db ? ;
  5829. db ? ;
  5830. db ? ;
  5831. db ? ;
  5832. db ? ;
  5833. db ? ;
  5834. db ? ;
  5835. db ? ;
  5836. db ? ;
  5837. db ? ;
  5838. db ? ;
  5839. db ? ;
  5840. db ? ;
  5841. db ? ;
  5842. db ? ;
  5843. db ? ;
  5844. db ? ;
  5845. db ? ;
  5846. db ? ;
  5847. db ? ;
  5848. db ? ;
  5849. db ? ;
  5850. db ? ;
  5851. db ? ;
  5852. db ? ;
  5853. db ? ;
  5854. db ? ;
  5855. db ? ;
  5856. db ? ;
  5857. db ? ;
  5858. db ? ;
  5859. db ? ;
  5860. db ? ;
  5861. db ? ;
  5862. db ? ;
  5863. db ? ;
  5864. db ? ;
  5865. db ? ;
  5866. db ? ;
  5867. db ? ;
  5868. db ? ;
  5869. db ? ;
  5870. db ? ;
  5871. db ? ;
  5872. db ? ;
  5873. db ? ;
  5874. db ? ;
  5875. db ? ;
  5876. db ? ;
  5877. db ? ;
  5878. db ? ;
  5879. db ? ;
  5880. db ? ;
  5881. db ? ;
  5882. db ? ;
  5883. db ? ;
  5884. db ? ;
  5885. db ? ;
  5886. db ? ;
  5887. db ? ;
  5888. db ? ;
  5889. db ? ;
  5890. db ? ;
  5891. db ? ;
  5892. db ? ;
  5893. db ? ;
  5894. db ? ;
  5895. db ? ;
  5896. db ? ;
  5897. db ? ;
  5898. db ? ;
  5899. db ? ;
  5900. db ? ;
  5901. db ? ;
  5902. db ? ;
  5903. db ? ;
  5904. db ? ;
  5905. db ? ;
  5906. db ? ;
  5907. db ? ;
  5908. db ? ;
  5909. db ? ;
  5910. db ? ;
  5911. db ? ;
  5912. db ? ;
  5913. db ? ;
  5914. db ? ;
  5915. db ? ;
  5916. db ? ;
  5917. db ? ;
  5918. db ? ;
  5919. db ? ;
  5920. db ? ;
  5921. db ? ;
  5922. db ? ;
  5923. db ? ;
  5924. db ? ;
  5925. db ? ;
  5926. db ? ;
  5927. db ? ;
  5928. db ? ;
  5929. db ? ;
  5930. db ? ;
  5931. db ? ;
  5932. db ? ;
  5933. db ? ;
  5934. db ? ;
  5935. db ? ;
  5936. db ? ;
  5937. db ? ;
  5938. db ? ;
  5939. db ? ;
  5940. db ? ;
  5941. db ? ;
  5942. db ? ;
  5943. db ? ;
  5944. db ? ;
  5945. db ? ;
  5946. db ? ;
  5947. db ? ;
  5948. db ? ;
  5949. db ? ;
  5950. db ? ;
  5951. db ? ;
  5952. db ? ;
  5953. db ? ;
  5954. db ? ;
  5955. db ? ;
  5956. db ? ;
  5957. db ? ;
  5958. db ? ;
  5959. db ? ;
  5960. db ? ;
  5961. db ? ;
  5962. db ? ;
  5963. db ? ;
  5964. db ? ;
  5965. db ? ;
  5966. db ? ;
  5967. db ? ;
  5968. db ? ;
  5969. db ? ;
  5970. db ? ;
  5971. db ? ;
  5972. db ? ;
  5973. db ? ;
  5974. db ? ;
  5975. db ? ;
  5976. db ? ;
  5977. db ? ;
  5978. db ? ;
  5979. db ? ;
  5980. db ? ;
  5981. db ? ;
  5982. db ? ;
  5983. db ? ;
  5984. db ? ;
  5985. db ? ;
  5986. db ? ;
  5987. db ? ;
  5988. db ? ;
  5989. db ? ;
  5990. db ? ;
  5991. db ? ;
  5992. db ? ;
  5993. db ? ;
  5994. db ? ;
  5995. db ? ;
  5996. db ? ;
  5997. db ? ;
  5998. db ? ;
  5999. db ? ;
  6000. db ? ;
  6001. db ? ;
  6002. db ? ;
  6003. db ? ;
  6004. db ? ;
  6005. db ? ;
  6006. db ? ;
  6007. db ? ;
  6008. db ? ;
  6009. db ? ;
  6010. db ? ;
  6011. db ? ;
  6012. db ? ;
  6013. db ? ;
  6014. db ? ;
  6015. db ? ;
  6016. db ? ;
  6017. db ? ;
  6018. db ? ;
  6019. db ? ;
  6020. db ? ;
  6021. db ? ;
  6022. db ? ;
  6023. db ? ;
  6024. db ? ;
  6025. db ? ;
  6026. db ? ;
  6027. db ? ;
  6028. db ? ;
  6029. db ? ;
  6030. db ? ;
  6031. db ? ;
  6032. db ? ;
  6033. db ? ;
  6034. db ? ;
  6035. db ? ;
  6036. db ? ;
  6037. db ? ;
  6038. db ? ;
  6039. db ? ;
  6040. db ? ;
  6041. db ? ;
  6042. db ? ;
  6043. db ? ;
  6044. db ? ;
  6045. db ? ;
  6046. db ? ;
  6047. db ? ;
  6048. db ? ;
  6049. db ? ;
  6050. db ? ;
  6051. db ? ;
  6052. db ? ;
  6053. db ? ;
  6054. db ? ;
  6055. db ? ;
  6056. db ? ;
  6057. db ? ;
  6058. db ? ;
  6059. db ? ;
  6060. db ? ;
  6061. db ? ;
  6062. db ? ;
  6063. db ? ;
  6064. db ? ;
  6065. db ? ;
  6066. db ? ;
  6067. db ? ;
  6068. db ? ;
  6069. db ? ;
  6070. db ? ;
  6071. db ? ;
  6072. db ? ;
  6073. db ? ;
  6074. db ? ;
  6075. db ? ;
  6076. db ? ;
  6077. db ? ;
  6078. db ? ;
  6079. db ? ;
  6080. db ? ;
  6081. db ? ;
  6082. db ? ;
  6083. db ? ;
  6084. db ? ;
  6085. db ? ;
  6086. db ? ;
  6087. db ? ;
  6088. db ? ;
  6089. db ? ;
  6090. db ? ;
  6091. db ? ;
  6092. db ? ;
  6093. db ? ;
  6094. db ? ;
  6095. db ? ;
  6096. db ? ;
  6097. db ? ;
  6098. db ? ;
  6099. db ? ;
  6100. db ? ;
  6101. db ? ;
  6102. db ? ;
  6103. db ? ;
  6104. db ? ;
  6105. db ? ;
  6106. db ? ;
  6107. db ? ;
  6108. db ? ;
  6109. db ? ;
  6110. db ? ;
  6111. db ? ;
  6112. db ? ;
  6113. db ? ;
  6114. db ? ;
  6115. db ? ;
  6116. db ? ;
  6117. db ? ;
  6118. db ? ;
  6119. db ? ;
  6120. db ? ;
  6121. db ? ;
  6122. db ? ;
  6123. db ? ;
  6124. db ? ;
  6125. db ? ;
  6126. db ? ;
  6127. db ? ;
  6128. db ? ;
  6129. db ? ;
  6130. db ? ;
  6131. db ? ;
  6132. db ? ;
  6133. db ? ;
  6134. db ? ;
  6135. db ? ;
  6136. db ? ;
  6137. db ? ;
  6138. db ? ;
  6139. db ? ;
  6140. db ? ;
  6141. db ? ;
  6142. db ? ;
  6143. db ? ;
  6144. db ? ;
  6145. db ? ;
  6146. db ? ;
  6147. db ? ;
  6148. db ? ;
  6149. db ? ;
  6150. db ? ;
  6151. db ? ;
  6152. db ? ;
  6153. db ? ;
  6154. db ? ;
  6155. db ? ;
  6156. db ? ;
  6157. db ? ;
  6158. db ? ;
  6159. db ? ;
  6160. db ? ;
  6161. db ? ;
  6162. db ? ;
  6163. db ? ;
  6164. db ? ;
  6165. db ? ;
  6166. db ? ;
  6167. db ? ;
  6168. db ? ;
  6169. db ? ;
  6170. db ? ;
  6171. db ? ;
  6172. db ? ;
  6173. db ? ;
  6174. db ? ;
  6175. db ? ;
  6176. db ? ;
  6177. db ? ;
  6178. db ? ;
  6179. db ? ;
  6180. db ? ;
  6181. db ? ;
  6182. db ? ;
  6183. db ? ;
  6184. db ? ;
  6185. db ? ;
  6186. db ? ;
  6187. db ? ;
  6188. db ? ;
  6189. db ? ;
  6190. db ? ;
  6191. db ? ;
  6192. db ? ;
  6193. db ? ;
  6194. db ? ;
  6195. db ? ;
  6196. db ? ;
  6197. db ? ;
  6198. db ? ;
  6199. db ? ;
  6200. db ? ;
  6201. db ? ;
  6202. db ? ;
  6203. db ? ;
  6204. db ? ;
  6205. db ? ;
  6206. db ? ;
  6207. db ? ;
  6208. db ? ;
  6209. db ? ;
  6210. db ? ;
  6211. db ? ;
  6212. db ? ;
  6213. db ? ;
  6214. db ? ;
  6215. db ? ;
  6216. db ? ;
  6217. db ? ;
  6218. db ? ;
  6219. db ? ;
  6220. db ? ;
  6221. db ? ;
  6222. db ? ;
  6223. db ? ;
  6224. db ? ;
  6225. db ? ;
  6226. db ? ;
  6227. db ? ;
  6228. db ? ;
  6229. db ? ;
  6230. db ? ;
  6231. db ? ;
  6232. db ? ;
  6233. db ? ;
  6234. db ? ;
  6235. db ? ;
  6236. db ? ;
  6237. db ? ;
  6238. db ? ;
  6239. db ? ;
  6240. db ? ;
  6241. db ? ;
  6242. db ? ;
  6243. db ? ;
  6244. db ? ;
  6245. db ? ;
  6246. db ? ;
  6247. db ? ;
  6248. db ? ;
  6249. db ? ;
  6250. db ? ;
  6251. db ? ;
  6252. db ? ;
  6253. db ? ;
  6254. db ? ;
  6255. db ? ;
  6256. db ? ;
  6257. db ? ;
  6258. db ? ;
  6259. db ? ;
  6260. db ? ;
  6261. db ? ;
  6262. db ? ;
  6263. db ? ;
  6264. db ? ;
  6265. db ? ;
  6266. db ? ;
  6267. db ? ;
  6268. db ? ;
  6269. db ? ;
  6270. db ? ;
  6271. db ? ;
  6272. db ? ;
  6273. db ? ;
  6274. db ? ;
  6275. db ? ;
  6276. db ? ;
  6277. db ? ;
  6278. db ? ;
  6279. db ? ;
  6280. db ? ;
  6281. db ? ;
  6282. db ? ;
  6283. db ? ;
  6284. db ? ;
  6285. db ? ;
  6286. db ? ;
  6287. db ? ;
  6288. db ? ;
  6289. db ? ;
  6290. db ? ;
  6291. db ? ;
  6292. db ? ;
  6293. db ? ;
  6294. db ? ;
  6295. db ? ;
  6296. db ? ;
  6297. db ? ;
  6298. db ? ;
  6299. db ? ;
  6300. db ? ;
  6301. db ? ;
  6302. db ? ;
  6303. db ? ;
  6304. db ? ;
  6305. db ? ;
  6306. db ? ;
  6307. db ? ;
  6308. db ? ;
  6309. db ? ;
  6310. db ? ;
  6311. db ? ;
  6312. db ? ;
  6313. db ? ;
  6314. db ? ;
  6315. db ? ;
  6316. db ? ;
  6317. db ? ;
  6318. db ? ;
  6319. db ? ;
  6320. db ? ;
  6321. db ? ;
  6322. db ? ;
  6323. db ? ;
  6324. db ? ;
  6325. db ? ;
  6326. db ? ;
  6327. db ? ;
  6328. db ? ;
  6329. db ? ;
  6330. db ? ;
  6331. db ? ;
  6332. db ? ;
  6333. db ? ;
  6334. db ? ;
  6335. db ? ;
  6336. db ? ;
  6337. db ? ;
  6338. db ? ;
  6339. db ? ;
  6340. db ? ;
  6341. db ? ;
  6342. db ? ;
  6343. db ? ;
  6344. db ? ;
  6345. db ? ;
  6346. db ? ;
  6347. db ? ;
  6348. db ? ;
  6349. db ? ;
  6350. db ? ;
  6351. db ? ;
  6352. db ? ;
  6353. db ? ;
  6354. db ? ;
  6355. db ? ;
  6356. db ? ;
  6357. db ? ;
  6358. db ? ;
  6359. db ? ;
  6360. db ? ;
  6361. db ? ;
  6362. db ? ;
  6363. db ? ;
  6364. db ? ;
  6365. db ? ;
  6366. db ? ;
  6367. db ? ;
  6368. db ? ;
  6369. db ? ;
  6370. db ? ;
  6371. db ? ;
  6372. db ? ;
  6373. db ? ;
  6374. db ? ;
  6375. db ? ;
  6376. db ? ;
  6377. db ? ;
  6378. db ? ;
  6379. db ? ;
  6380. db ? ;
  6381. db ? ;
  6382. db ? ;
  6383. db ? ;
  6384. db ? ;
  6385. db ? ;
  6386. db ? ;
  6387. db ? ;
  6388. db ? ;
  6389. db ? ;
  6390. db ? ;
  6391. db ? ;
  6392. db ? ;
  6393. db ? ;
  6394. db ? ;
  6395. db ? ;
  6396. db ? ;
  6397. db ? ;
  6398. db ? ;
  6399. db ? ;
  6400. db ? ;
  6401. db ? ;
  6402. db ? ;
  6403. db ? ;
  6404. db ? ;
  6405. db ? ;
  6406. db ? ;
  6407. db ? ;
  6408. db ? ;
  6409. db ? ;
  6410. db ? ;
  6411. db ? ;
  6412. db ? ;
  6413. db ? ;
  6414. db ? ;
  6415. db ? ;
  6416. db ? ;
  6417. db ? ;
  6418. db ? ;
  6419. db ? ;
  6420. db ? ;
  6421. db ? ;
  6422. db ? ;
  6423. db ? ;
  6424. db ? ;
  6425. db ? ;
  6426. db ? ;
  6427. db ? ;
  6428. db ? ;
  6429. db ? ;
  6430. db ? ;
  6431. db ? ;
  6432. db ? ;
  6433. db ? ;
  6434. db ? ;
  6435. db ? ;
  6436. db ? ;
  6437. db ? ;
  6438. db ? ;
  6439. db ? ;
  6440. db ? ;
  6441. db ? ;
  6442. db ? ;
  6443. db ? ;
  6444. db ? ;
  6445. db ? ;
  6446. db ? ;
  6447. db ? ;
  6448. db ? ;
  6449. db ? ;
  6450. db ? ;
  6451. db ? ;
  6452. db ? ;
  6453. db ? ;
  6454. db ? ;
  6455. db ? ;
  6456. db ? ;
  6457. db ? ;
  6458. db ? ;
  6459. db ? ;
  6460. db ? ;
  6461. db ? ;
  6462. db ? ;
  6463. db ? ;
  6464. db ? ;
  6465. db ? ;
  6466. db ? ;
  6467. db ? ;
  6468. db ? ;
  6469. db ? ;
  6470. db ? ;
  6471. db ? ;
  6472. db ? ;
  6473. db ? ;
  6474. db ? ;
  6475. db ? ;
  6476. db ? ;
  6477. db ? ;
  6478. db ? ;
  6479. db ? ;
  6480. db ? ;
  6481. db ? ;
  6482. db ? ;
  6483. db ? ;
  6484. db ? ;
  6485. db ? ;
  6486. db ? ;
  6487. db ? ;
  6488. db ? ;
  6489. db ? ;
  6490. db ? ;
  6491. db ? ;
  6492. db ? ;
  6493. db ? ;
  6494. db ? ;
  6495. db ? ;
  6496. db ? ;
  6497. db ? ;
  6498. db ? ;
  6499. db ? ;
  6500. db ? ;
  6501. db ? ;
  6502. db ? ;
  6503. db ? ;
  6504. db ? ;
  6505. db ? ;
  6506. db ? ;
  6507. db ? ;
  6508. db ? ;
  6509. db ? ;
  6510. db ? ;
  6511. db ? ;
  6512. db ? ;
  6513. db ? ;
  6514. db ? ;
  6515. db ? ;
  6516. db ? ;
  6517. db ? ;
  6518. db ? ;
  6519. db ? ;
  6520. db ? ;
  6521. db ? ;
  6522. db ? ;
  6523. db ? ;
  6524. db ? ;
  6525. db ? ;
  6526. db ? ;
  6527. db ? ;
  6528. db ? ;
  6529. db ? ;
  6530. db ? ;
  6531. db ? ;
  6532. db ? ;
  6533. db ? ;
  6534. db ? ;
  6535. db ? ;
  6536. db ? ;
  6537. db ? ;
  6538. db ? ;
  6539. db ? ;
  6540. db ? ;
  6541. db ? ;
  6542. db ? ;
  6543. db ? ;
  6544. db ? ;
  6545. db ? ;
  6546. db ? ;
  6547. db ? ;
  6548. db ? ;
  6549. db ? ;
  6550. db ? ;
  6551. db ? ;
  6552. db ? ;
  6553. db ? ;
  6554. db ? ;
  6555. db ? ;
  6556. db ? ;
  6557. db ? ;
  6558. db ? ;
  6559. db ? ;
  6560. db ? ;
  6561. db ? ;
  6562. db ? ;
  6563. db ? ;
  6564. db ? ;
  6565. db ? ;
  6566. db ? ;
  6567. db ? ;
  6568. db ? ;
  6569. db ? ;
  6570. db ? ;
  6571. db ? ;
  6572. db ? ;
  6573. db ? ;
  6574. db ? ;
  6575. db ? ;
  6576. db ? ;
  6577. db ? ;
  6578. db ? ;
  6579. db ? ;
  6580. db ? ;
  6581. db ? ;
  6582. db ? ;
  6583. db ? ;
  6584. db ? ;
  6585. db ? ;
  6586. db ? ;
  6587. db ? ;
  6588. db ? ;
  6589. db ? ;
  6590. db ? ;
  6591. db ? ;
  6592. db ? ;
  6593. db ? ;
  6594. db ? ;
  6595. db ? ;
  6596. db ? ;
  6597. db ? ;
  6598. db ? ;
  6599. db ? ;
  6600. db ? ;
  6601. db ? ;
  6602. db ? ;
  6603. db ? ;
  6604. db ? ;
  6605. db ? ;
  6606. db ? ;
  6607. db ? ;
  6608. db ? ;
  6609. db ? ;
  6610. db ? ;
  6611. db ? ;
  6612. db ? ;
  6613. db ? ;
  6614. db ? ;
  6615. db ? ;
  6616. db ? ;
  6617. db ? ;
  6618. db ? ;
  6619. db ? ;
  6620. db ? ;
  6621. db ? ;
  6622. db ? ;
  6623. db ? ;
  6624. db ? ;
  6625. db ? ;
  6626. db ? ;
  6627. db ? ;
  6628. db ? ;
  6629. db ? ;
  6630. db ? ;
  6631. db ? ;
  6632. db ? ;
  6633. db ? ;
  6634. db ? ;
  6635. db ? ;
  6636. db ? ;
  6637. db ? ;
  6638. db ? ;
  6639. db ? ;
  6640. db ? ;
  6641. db ? ;
  6642. db ? ;
  6643. db ? ;
  6644. db ? ;
  6645. db ? ;
  6646. db ? ;
  6647. db ? ;
  6648. db ? ;
  6649. db ? ;
  6650. db ? ;
  6651. db ? ;
  6652. db ? ;
  6653. db ? ;
  6654. db ? ;
  6655. db ? ;
  6656. db ? ;
  6657. db ? ;
  6658. db ? ;
  6659. db ? ;
  6660. db ? ;
  6661. db ? ;
  6662. db ? ;
  6663. db ? ;
  6664. db ? ;
  6665. db ? ;
  6666. db ? ;
  6667. db ? ;
  6668. db ? ;
  6669. db ? ;
  6670. db ? ;
  6671. db ? ;
  6672. db ? ;
  6673. db ? ;
  6674. db ? ;
  6675. db ? ;
  6676. db ? ;
  6677. db ? ;
  6678. db ? ;
  6679. db ? ;
  6680. db ? ;
  6681. db ? ;
  6682. db ? ;
  6683. db ? ;
  6684. db ? ;
  6685. db ? ;
  6686. db ? ;
  6687. db ? ;
  6688. db ? ;
  6689. db ? ;
  6690. db ? ;
  6691. db ? ;
  6692. db ? ;
  6693. db ? ;
  6694. db ? ;
  6695. db ? ;
  6696. db ? ;
  6697. db ? ;
  6698. db ? ;
  6699. db ? ;
  6700. db ? ;
  6701. db ? ;
  6702. db ? ;
  6703. db ? ;
  6704. DATA ends
  6705.  
  6706. ; Section 3. (virtual address 00004000)
  6707. ; Virtual size : 00001000 ( 4096.)
  6708. ; Section size in file : 00000400 ( 1024.)
  6709. ; Offset to raw data for section: 00002200
  6710. ; Flags C0000040: Data Readable Writable
  6711. ; Alignment : default
  6712. ; ===========================================================================
  6713.  
  6714. ; Segment type: Externs
  6715. ; _idata
  6716.  
  6717.  
  6718. ;
  6719. ; Imports from cw3220.DLL
  6720. ;
  6721. ; char *__cdecl _strchr(const char *s, int c)
  6722. extrn __imp__strchr:dword ; DATA XREF: _strchrr
  6723. ; int _sprintf(char *buffer, const char *format, ...)
  6724. extrn __imp__sprintf:dword ; DATA XREF: _sprintfr
  6725. ; int __cdecl _write(int handle, const void *buf, unsigned int len)
  6726. extrn __imp__write:dword ; DATA XREF: _writer
  6727. ; size_t __cdecl _strlen(const char *s)
  6728. extrn __imp__strlen:dword ; DATA XREF: _strlenr
  6729. ; char *__cdecl _strcat(char *dest, const char *src)
  6730. extrn __imp__strcat:dword ; DATA XREF: _strcatr
  6731. ; __declspec(dllimport) operator delete(void *)
  6732. extrn __imp_@$bdele$qpv:dword ; DATA XREF: operator delete(void *)r
  6733. ; __declspec(dllimport) operator delete[](void *)
  6734. extrn __imp_@$bdla$qpv:dword ; DATA XREF: operator delete[](void *)r
  6735. ; __declspec(dllimport) operator new(unsigned int)
  6736. extrn __imp_@$bnew$qui:dword ; DATA XREF: operator new(uint)r
  6737. ; __declspec(dllimport) operator new[](unsigned int)
  6738. extrn __imp_@$bnwa$qui:dword ; DATA XREF: operator new[](uint)r
  6739. ; __declspec(dllimport) _CatchCleanup(void)
  6740. extrn __imp_@_CatchCleanup$qv:dword ; DATA XREF: _CatchCleanup(void)r
  6741. extrn __imp___ExceptionHandler:dword ; DATA XREF: __ExceptionHandlerr
  6742. ; void __cdecl __exit(int status)
  6743. extrn __imp___exit:dword ; DATA XREF: __exitr
  6744. extrn __startup:dword ; DATA XREF: start:loc_40249Ar
  6745. ; FILE __streams[]
  6746. extrn __imp___streams:dword ; DATA XREF: __streamsr
  6747. ; void _abort(void)
  6748. extrn __imp__abort:dword ; DATA XREF: _abortr
  6749. ; __int32 __cdecl _atol(const char *s)
  6750. extrn __imp__atol:dword ; DATA XREF: _atolr
  6751. ; int __cdecl _close(int handle)
  6752. extrn __imp__close:dword ; DATA XREF: _closer
  6753. ; int _errno
  6754. extrn __imp__errno:dword ; DATA XREF: _errnor
  6755. ; int __cdecl _fclose(FILE *stream)
  6756. extrn __imp__fclose:dword ; DATA XREF: _fcloser
  6757. ; int _flushall(void)
  6758. extrn __imp__flushall:dword ; DATA XREF: _flushallr
  6759. ; FILE *__cdecl _fopen(const char *path, const char *mode)
  6760. extrn __imp__fopen:dword ; DATA XREF: _fopenr
  6761. ; int __cdecl _fputs(const char *s, FILE *stream)
  6762. extrn __imp__fputs:dword ; DATA XREF: _fputsr
  6763. ; size_t __cdecl _fread(void *ptr, size_t size, size_t n, FILE *stream)
  6764. extrn __imp__fread:dword ; DATA XREF: _freadr
  6765. ; char *__cdecl _itoa(int value, char *string, int radix)
  6766. extrn __imp__itoa:dword ; DATA XREF: _itoar
  6767. ; __int32 __cdecl _lseek(int handle, __int32 offset, int fromwhere)
  6768. extrn __imp__lseek:dword ; DATA XREF: _lseekr
  6769. ; int _open(const char *path, int access, ...)
  6770. extrn __imp__open:dword ; DATA XREF: _openr
  6771. ; int __cdecl _read(int handle, void *buf, unsigned int len)
  6772. extrn __imp__read:dword ; DATA XREF: _readr
  6773. ; int __cdecl _spawnv(int mode, const char *path, char *const *argv)
  6774. extrn __imp__spawnv:dword ; DATA XREF: _spawnvr
  6775.  
  6776. ;
  6777. ; Imports from KERNEL32.dll
  6778. ;
  6779. ; HGLOBAL __stdcall GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
  6780. extrn __imp_GlobalAlloc:dword ; DATA XREF: GlobalAllocr
  6781. ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
  6782. extrn __imp_GetModuleHandleA:dword ; DATA XREF: GetModuleHandleAr
  6783. ; void __stdcall GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
  6784. extrn __imp_GlobalMemoryStatus:dword ; DATA XREF: GlobalMemoryStatusr
  6785. ; HGLOBAL __stdcall GlobalFree(HGLOBAL hMem)
  6786. extrn __imp_GlobalFree:dword ; DATA XREF: GlobalFreer
  6787. ; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
  6788. extrn __imp_GetProcAddress:dword ; DATA XREF: GetProcAddressr
  6789.  
  6790. ;
  6791. ; Imports from USER32.dll
  6792. ;
  6793. ; int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
  6794. extrn __imp_MessageBoxA:dword ; DATA XREF: MessageBoxAr
  6795.  
  6796.  
  6797.  
  6798. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement