source: trunk/tools/profilerfix/cppopa4.asm@ 8281

Last change on this file since 8281 was 8281, checked in by bird, 23 years ago

Identical enough.

File size: 50.4 KB
Line 
1; $Id: cppopa4.asm,v 1.2 2002-04-18 01:35:24 bird Exp $
2;
3; File Name : G:\fun\cpppan40.obj\cpppan40.obj
4; Format : Object Module Format (OMF/IBM)
5; Module name : cppopa4.asm
6; Translator : ALP: Assembly Language Processor Ver 4.00.002
7; Debug info type : Unknown
8
9
10
11 .586
12 .MODEL FLAT
13
14 large EQU
15
16;
17; Segment definitionas.
18;
19DATA32 segment dword public 'DATA' use32
20DATA32 ends
21CONST32 segment dword public 'DATA' use32
22CONST32 ends
23BSS32 segment dword public 'DATA' use32
24BSS32 ends
25
26DGROUP group DATA32, CONST32, BSS32
27
28CODE32 segment dword public 'CODE' use32
29CODE32 ends
30
31
32;
33; Externals
34;
35 extrn DosExit:near
36 extrn DosSleep:far
37 extrn DosLoadModule:near
38 extrn DosQueryProcAddr:near
39 extrn DosUnwindException:near
40
41
42;
43; Global Variables
44;
45DATA32 segment
46; assume cs:DATA32
47 public $$PROSEGPTR32
48$$PROSEGPTR32 dd 0 ; DATA XREF: $$PROFCALL32+5r
49 ; $$PROFCALL32+2Fr ...
50initAdr dd 0 ; DATA XREF: DoInit+27o
51 ; DoInit+63r
52alreadyTriedInit dd 0 ; DATA XREF: $$PROFCALL32+13r
53 ; $$PROFCALL32+25w ...
54DATA32 ends
55
56
57;
58; Structures and Typedefs
59;
60PROSEG struc
61 proseg_flags dw ?
62 proseg_unused dw ?
63 proseg_rc dd ?
64 proseg_rcSys dd ?
65 proseg_clkIntCtr dd ?
66 proseg_initTics_low dd ?
67 proseg_initTics_high dd ?
68 proseg_exitTics_low dd ?
69 proseg_exitTics_high dd ?
70 proseg_preTics_low dd ?
71 proseg_preTics_high dd ?
72 proseg_postTics_low dd ?
73 proseg_postTics_high dd ?
74 proseg_clockFrequency_low dd ?
75 proseg_clockFrequency_high dd ?
76 proseg_logBuf1st dd ?
77 proseg_logBufMax dd ?
78 proseg_logBufNext dd ?
79 proseg_logBufWrap dd ?
80 proseg_procAddrs dd 7 dup(?)
81 proseg_maxTid dd ?
82 proseg_ptrCurTid dd ?
83 proseg_maxSuffixBytes dd ?
84 proseg_usedSuffixBytes dd ?
85 proseg_ptrSuffixBytes dd ?
86 proseg_ticsEntry dd ?
87 proseg_ticsExit dd ?
88 proseg_ticsUser dd ?
89 proseg_curTidNum dd ?
90 proseg_extraDDH dd ?
91 proseg_appDDH dd ?
92 proseg_logDev db 16 dup(?)
93 proseg_logDLL db 16 dup(?)
94 proseg_procNames db 112 dup(?)
95 _counterArray dd 9 dup(?)
96 _command dd ?
97 _parm dd 3 dup(?)
98 proseg_retStacks dd ?
99 proseg_tidDecNest dd ?
100 proseg_tidMaxNest dd ?
101 proseg_tidTrigger dd ?
102 conditionalExit dd ?
103 _cpuType dd ?
104 _lockFlag dd ?
105 proseg_reserved dd 2 dup(?)
106PROSEG ends
107
108TVersionId struc
109 _versionNumber dd ?
110 _releaseNumber dd ?
111 _modificationLevel dd ?
112 _prosegSize dd ?
113TVersionId ends
114
115TStackHeader struc
116 _offsetOfTop dd ?
117TStackHeader ends
118
119TStackEntry struc
120 _returnAddr dd ?
121 _frameAddr dd ?
122TStackEntry ends
123
124tib2_s struc
125 tib2_ultid dd ?
126 tib2_ulpri dd ?
127 tib2_version dd ?
128 tib2_usMCCount dw ?
129 tib2_fMCForceFlag dw ?
130tib2_s ends
131
132tib_s struc
133 tib_pexchain dd ?
134 tib_pstack dd ?
135 tib_pstacklimit dd ?
136 tib_ptib2 dd ?
137 tib_version dd ?
138 tib_arbpointer dd ?
139tib_s ends
140
141pib_s struc
142 pib_ulpid dd ?
143 pib_ulppid dd ?
144 pib_hmte dd ?
145 pib_pchcmd dd ?
146 pib_pchenv dd ?
147 pib_flstatus dd ?
148 pib_ultype dd ?
149pib_s ends
150
151
152;
153; Code!
154;
155CODE32 segment
156; assume cs:CODE32
157; assume cs:FLAT
158 assume es:nothing, ss:nothing, ds:FLAT, fs:nothing, gs:nothing
159
160; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
161
162
163 public _ProfileHook32
164_ProfileHook32 proc near ; CODE XREF: $$PROFSETJMPp longjmpp
165 ; DATA XREF: ...
166 retn
167_ProfileHook32 endp
168
169
170;
171; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
172;
173 public $$PROFCALL32
174$$PROFCALL32 proc near ; CODE XREF: eCal+23j uCal+5p
175
176var_14 = dword ptr -14h
177arg_0 = dword ptr 4
178
179 pushfd
180 push ebx
181 push esi
182 push edx
183 push eax
184 mov esi, $$PROSEGPTR32
185 or esi, esi
186 jnz short loc_6_4E
187 nop
188 nop
189 nop
190 nop
191 mov eax, alreadyTriedInit
192 or eax, eax
193 jnz loc_6_FD
194 call DoInit
195 mov alreadyTriedInit, 1
196 mov esi, $$PROSEGPTR32
197 or esi, esi
198 jz loc_6_FD
199
200loc_6_4E: ; CODE XREF: $$PROFCALL32+Dj
201 mov ebx, large fs:0Ch
202 test dword ptr [esi], 10h
203 jnz loc_6_FD
204 movzx ebx, word ptr [ebx]
205 dec ebx
206 cmp ebx, [esi+64h]
207 jnb loc_6_FD
208 mov eax, [esi+164h]
209 mov dword ptr [eax+ebx*4], 0FFFFFFFFh
210 mov eax, [esi+160h]
211 cmp dword ptr [eax+ebx*4], 0
212 jz short loc_6_FD
213 nop
214 nop
215 nop
216 nop
217 mov eax, [esi+158h]
218 dec dword ptr [eax+ebx*4]
219 js short loc_6_104
220 nop
221 nop
222 nop
223 nop
224 push edi
225 lea eax, [esp+18h]
226 call verifyStackFrame
227 or eax, eax
228 jnz short loc_6_103
229 mov eax, offset _ProfileHook32+0FFh
230 xchg eax, [esp+18h+arg_0]
231 mov edi, ebx
232 shl edi, 0Ch
233 add edi, [esi+154h]
234 push eax
235 lea eax, [esp+1Ch]
236 call checkForUnwindAtCall
237 pop eax
238 add dword ptr [edi], 8
239 add edi, [edi]
240 mov [edi], eax
241 lea eax, [esp+18h]
242 mov [edi+4], eax
243 mov eax, [eax]
244 test dword ptr [esi], 20h
245 jz short loc_6_F4
246 nop
247 nop
248 nop
249 nop
250 shl ebx, 10h
251 mov bl, 1
252 mov edx, [esp+18h+var_14]
253 call dword ptr [esi+58h]
254 jmp short loc_6_FC
255; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
256; align 4
257 nop
258 nop
259 nop
260
261loc_6_F4: ; CODE XREF: $$PROFCALL32+CCj
262 shl ebx, 10h
263 mov bl, 40h ; '@'
264 call dword ptr [esi+50h]
265
266loc_6_FC: ; CODE XREF: $$PROFCALL32+DEj
267 pop edi
268
269loc_6_FD: ; CODE XREF: $$PROFCALL32+1Aj
270 ; $$PROFCALL32+37j ...
271 pop eax
272 pop edx
273 pop esi
274 pop ebx
275 popfd
276 retn
277; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
278
279loc_6_103: ; CODE XREF: $$PROFCALL32+95j
280 pop edi
281
282loc_6_104: ; CODE XREF: $$PROFCALL32+83j
283 mov eax, [esi+158h]
284 inc dword ptr [eax+ebx*4]
285 jmp short loc_6_FD
286$$PROFCALL32 endp
287
288; Type idx: 513
289
290; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
291
292
293 public $$PROFRET32
294$$PROFRET32 proc near
295
296;var_8 = byte ptr -8
297var_8 = dword ptr -8
298var_4 = dword ptr -4
299
300 lea esp, [esp-4]
301 pushfd
302 push eax
303 push ebx
304 push esi
305 push edi
306 mov ebx, large fs:0Ch
307 mov esi, $$PROSEGPTR32
308 movzx ebx, word ptr [ebx]
309 dec ebx
310 mov eax, [esi+158h]
311 inc dword ptr [eax+ebx*4]
312 mov edi, ebx
313 shl edi, 0Ch
314 add edi, [esi+154h]
315 push eax
316 lea eax, [esp+18h+var_4]
317 call checkForUnwindAtReturn
318 pop eax
319 sub dword ptr [edi], 8
320 add edi, [edi]
321 mov eax, [edi+8]
322 mov [esp+14h], eax
323 shl ebx, 10h
324 mov bl, 0
325 call dword ptr [esi+4Ch]
326 pop edi
327 pop esi
328 pop ebx
329 pop eax
330 popfd
331 retn
332$$PROFRET32 endp
333
334; Type idx: 513
335
336; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
337
338
339 public $$PROFTRIG32
340$$PROFTRIG32 proc near
341
342var_14 = dword ptr -14h
343arg_0 = dword ptr 4
344
345 pushfd
346 push ebx
347 push esi
348 push edx
349 push eax
350 mov esi, $$PROSEGPTR32
351 or esi, esi
352 jnz short loc_6_19F
353 nop
354 nop
355 nop
356 nop
357 mov eax, alreadyTriedInit
358 or eax, eax
359 jnz loc_6_24A
360 call DoInit
361 mov alreadyTriedInit, 1
362 mov esi, $$PROSEGPTR32
363 or esi, esi
364 jz loc_6_24A
365
366loc_6_19F: ; CODE XREF: $$PROFTRIG32+Dj
367 test dword ptr [esi], 10h
368 jnz loc_6_24A
369 mov ebx, large fs:0Ch
370 movzx ebx, word ptr [ebx]
371 dec ebx
372 cmp ebx, [esi+64h]
373 jnb loc_6_24A
374 mov eax, [esi+164h]
375 mov dword ptr [eax+ebx*4], 0FFFFFFFFh
376 mov eax, [esi+158h]
377 dec dword ptr [eax+ebx*4]
378 js short loc_6_251
379 push edi
380 lea eax, [esp+18h]
381 call verifyStackFrame
382 or eax, eax
383 jnz short loc_6_250
384 mov eax, offset _ProfileHook32+24Ch
385 xchg eax, [esp+18h+arg_0]
386 cmp eax, offset _ProfileHook32+24Ch
387 jz short loc_6_250
388 mov edi, [esi+160h]
389 inc dword ptr [edi+ebx*4]
390 mov edi, ebx
391 shl edi, 0Ch
392 add edi, [esi+154h]
393 push eax
394 lea eax, [esp+1Ch]
395 call checkForUnwindAtCall
396 pop eax
397 add dword ptr [edi], 8
398 add edi, [edi]
399 mov [edi], eax
400 lea eax, [esp+18h]
401 mov [edi+4], eax
402 mov eax, [eax]
403 test dword ptr [esi], 20h
404 jz short loc_6_241
405 nop
406 nop
407 nop
408 nop
409 shl ebx, 10h
410 mov bl, 1
411 mov edx, [esp+18h+var_14]
412 call dword ptr [esi+58h]
413 jmp short loc_6_249
414; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
415 ; align 4 ??
416 nop
417 nop
418 nop
419
420; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
421
422loc_6_241: ; CODE XREF: $$PROFTRIG32+C8j
423 shl ebx, 10h
424 mov bl, 40h ; '@'
425 call dword ptr [esi+50h]
426
427loc_6_249: ; CODE XREF: $$PROFTRIG32+DAj
428 pop edi
429
430loc_6_24A: ; CODE XREF: $$PROFTRIG32+1Aj
431 ; $$PROFTRIG32+37j ...
432 pop eax
433 pop edx
434 pop esi
435 pop ebx
436 popfd
437 retn
438; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
439
440loc_6_250: ; CODE XREF: $$PROFTRIG32+81j
441 ; $$PROFTRIG32+91j
442 pop edi
443
444loc_6_251: ; CODE XREF: $$PROFTRIG32+73j
445 mov eax, [esi+158h]
446 inc dword ptr [eax+ebx*4]
447 jmp short loc_6_24A
448$$PROFTRIG32 endp
449
450; Type idx: 513
451
452; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
453
454
455 public $$PROFTRIGRET32
456$$PROFTRIGRET32 proc near
457
458;var_8 = byte ptr -8
459var_8 = dword ptr -8
460var_4 = dword ptr -4
461
462 lea esp, [esp-4]
463 pushfd
464 push eax
465 push ebx
466 push esi
467 push edi
468 mov ebx, large fs:0Ch
469 mov esi, $$PROSEGPTR32
470 movzx ebx, word ptr [ebx]
471 dec ebx
472 mov eax, [esi+158h]
473 inc dword ptr [eax+ebx*4]
474 mov edi, ebx
475 shl edi, 0Ch
476 add edi, [esi+154h]
477 push eax
478 lea eax, [esp+1Ch+var_8]
479 call checkForUnwindAtReturn
480 pop eax
481 sub dword ptr [edi], 8
482 add edi, [edi]
483 mov eax, [edi+8]
484 mov [esp+18h+var_4], eax
485 mov eax, [esi+160h]
486 dec dword ptr [eax+ebx*4]
487 shl ebx, 10h
488 call dword ptr [esi+4Ch]
489 pop edi
490 pop esi
491 pop ebx
492 pop eax
493 popfd
494 retn
495$$PROFTRIGRET32 endp ; sp = -4
496
497; Type idx: 513
498
499; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
500
501
502 public _ProfileHookVAOptlink32
503_ProfileHookVAOptlink32 proc near
504 retn
505_ProfileHookVAOptlink32 endp
506
507; Type idx: 513
508
509; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
510
511
512 public $$PROFEYEC32
513$$PROFEYEC32 proc near
514
515var_14 = dword ptr -14h
516var_10 = dword ptr -10h
517arg_0 = dword ptr 4
518;arg_4 = byte ptr 8
519arg_4 = dword ptr 8
520
521 pushfd
522 push ebx
523 push esi
524 push edx
525 push eax
526 mov esi, $$PROSEGPTR32
527 or esi, esi
528 jnz short loc_6_2F4
529 nop
530 nop
531 nop
532 nop
533 mov eax, alreadyTriedInit
534 or eax, eax
535 jnz loc_6_40B
536 call DoInit
537 mov alreadyTriedInit, 1
538 mov esi, $$PROSEGPTR32
539 or esi, esi
540 jz loc_6_40B
541
542loc_6_2F4: ; CODE XREF: $$PROFEYEC32+Dj
543 test dword ptr [esi], 10h
544 jnz loc_6_40B
545 mov ebx, large fs:0Ch
546 movzx ebx, word ptr [ebx]
547 dec ebx
548 cmp ebx, [esi+64h]
549 jnb loc_6_40B
550 mov eax, [esi+160h]
551 cmp dword ptr [eax+ebx*4], 0
552 jz loc_6_40B
553 mov eax, [esi+158h]
554 dec dword ptr [eax+ebx*4]
555 js loc_6_412
556 push edi
557 lea eax, [esp+18h]
558 call verifyStackFrame
559 or eax, eax
560 jnz loc_6_411
561 mov eax, offset _ProfileHook32+0FFh
562 xchg eax, [esp+18h+arg_0]
563 cmp eax, offset _ProfileHook32+0FFh
564 jnz short loc_6_36A
565 mov eax, 0FFFFFFFDh
566 call PERF
567 inc dword ptr [esi+134h]
568 jmp loc_6_411
569; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
570
571loc_6_36A: ; CODE XREF: $$PROFEYEC32+9Cj
572 mov edi, ebx
573 shl edi, 0Ch
574 add edi, [esi+154h]
575 push eax
576 lea eax, [esp+1Ch]
577 call checkForUnwindAtCall
578 pop eax
579 add dword ptr [edi], 8
580 add edi, [edi]
581 mov [edi], eax
582 lea eax, [esp+18h]
583 mov [edi+4], eax
584 mov eax, [eax]
585 push dword ptr [edi]
586 test dword ptr [esi], 20h
587 jz short loc_6_3AF
588 nop
589 nop
590 nop
591 nop
592 shl ebx, 10h
593 mov bl, 1
594 mov edx, [esp+1Ch+var_10]
595 call dword ptr [esi+58h]
596 jmp short loc_6_3B7
597; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
598 ; align 4 ??
599 nop
600 nop
601 nop
602; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
603
604loc_6_3AF: ; CODE XREF: $$PROFEYEC32+E1j
605 shl ebx, 10h
606 mov bl, 40h ; '@'
607 call dword ptr [esi+50h]
608
609loc_6_3B7: ; CODE XREF: $$PROFEYEC32+F3j
610 pop ebx
611 mov ebx, [ebx]
612 cmp bl, 0A9h ; '©'
613 jnz short loc_6_40A
614 xor bl, bl
615 lea edi, [esp+18h+arg_4]
616 mov eax, [esp+18h+var_14]
617 mov esi, offset _ProfileHook32+3E1h
618
619loc_6_3CE: ; CODE XREF: $$PROFEYEC32+124j
620 ; $$PROFEYEC32+12Fj ...
621 shl ebx, 1
622 jb short loc_6_3DD
623 add edi, 4
624 shl ebx, 1
625 jb short loc_6_3EF
626 jz short loc_6_40A
627 jmp short loc_6_3CE
628; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
629
630loc_6_3DD: ; CODE XREF: $$PROFEYEC32+119j
631 shl ebx, 1
632 jb short loc_6_3E8
633 fstp qword ptr [edi]
634 add edi, 8
635 jmp short loc_6_3CE
636; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
637
638loc_6_3E8: ; CODE XREF: $$PROFEYEC32+128j
639 fstp tbyte ptr [edi]
640 add edi, 10h
641 jmp short loc_6_3CE
642; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
643
644loc_6_3EF: ; CODE XREF: $$PROFEYEC32+120j
645 jmp esi
646; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
647 mov esi, offset _ProfileHook32+3EBh
648 mov [edi-4], eax
649 jmp short loc_6_3CE
650; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
651 mov esi, offset _ProfileHook32+3F5h
652 mov [edi-4], edx
653 jmp short loc_6_3CE
654; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
655 mov [edi-4], ecx
656 jmp short loc_6_3CE
657; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
658
659loc_6_40A: ; CODE XREF: $$PROFEYEC32+106j
660 ; $$PROFEYEC32+122j
661 pop edi
662
663loc_6_40B: ; CODE XREF: $$PROFEYEC32+1Aj
664 ; $$PROFEYEC32+37j ...
665 pop eax
666 pop edx
667 pop esi
668 pop ebx
669 popfd
670 retn
671; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
672
673loc_6_411: ; CODE XREF: $$PROFEYEC32+88j
674 ; $$PROFEYEC32+AEj
675 pop edi
676
677loc_6_412: ; CODE XREF: $$PROFEYEC32+76j
678 mov eax, [esi+158h]
679 inc dword ptr [eax+ebx*4]
680 jmp short loc_6_40B
681$$PROFEYEC32 endp
682
683; Type idx: 513
684; Type idx: 183
685
686; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
687
688
689 public PERF
690 public $$PROFUSER32
691$$PROFUSER32 proc near
692PERF label near: ; CODE XREF: $$PROFEYEC32+A3p
693 ; PerfStart+2Bp ...
694 retn ; $$PROFUSER32
695
696; Type idx: 183
697
698; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
699
700
701 public PROFITCAL
702PROFITCAL label near ; CODE XREF: uCal+17p uCal+1Cp
703 push ebx
704 push esi
705 push ecx
706 push edx
707 mov esi, $$PROSEGPTR32
708 or esi, esi
709 jnz short loc_6_45A
710 nop
711 nop
712 nop
713 nop
714 mov eax, alreadyTriedInit
715 or eax, eax
716 jnz short loc_6_494
717 nop
718 nop
719 nop
720 nop
721 call DoInit
722 mov alreadyTriedInit, 1
723 mov esi, $$PROSEGPTR32
724 or esi, esi
725 jz short loc_6_494
726 nop
727 nop
728 nop
729 nop
730
731loc_6_45A: ; CODE XREF: PROFITCAL+Cj
732 test dword ptr [esi], 10h
733 jnz short loc_6_494
734 nop
735 nop
736 nop
737 nop
738 mov ebx, large fs:0Ch
739 movzx ebx, word ptr [ebx]
740 dec ebx
741 cmp ebx, [esi+64h]
742 jnb short loc_6_494
743 mov edx, [esi+158h]
744 mov edx, [edx+ebx*4]
745 mov ecx, [esi+15Ch]
746 cmp edx, [ecx+ebx*4]
747 jz short loc_6_494
748 push edi
749 shl ebx, 10h
750 mov bl, 20h ; ' '
751 call dword ptr [esi+50h]
752 pop edi
753
754loc_6_494: ; CODE XREF: PROFITCAL+19j
755 ; PROFITCAL+36j ...
756 pop edx
757 pop ecx
758 pop esi
759 pop ebx
760 retn
761$$PROFUSER32 endp
762
763; Type idx: 513
764
765; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
766
767
768 public PerfStart
769PerfStart proc near
770 push eax
771 push esi
772 push ecx
773 push edx
774 mov esi, $$PROSEGPTR32
775 or esi, esi
776 jz short loc_6_4C9
777 nop
778 nop
779 nop
780 nop
781 xor ecx, ecx
782 xor edx, edx
783 mov dx, [esi]
784 mov cx, dx
785 and dx, 10h
786 xor cx, dx
787 mov [esi], cx
788 mov eax, 0FFFFFFFEh
789 call PERF
790
791loc_6_4C9: ; CODE XREF: PerfStart+Cj
792 pop edx
793 pop ecx
794 pop esi
795 pop eax
796 retn
797PerfStart endp
798
799; Type idx: 513
800
801; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
802
803
804 public PerfStop
805PerfStop proc near
806 push eax
807 push esi
808 push ecx
809 push edx
810 mov esi, $$PROSEGPTR32
811 or esi, esi
812 jz short loc_6_4F8
813 nop
814 nop
815 nop
816 nop
817 mov eax, 0FFFFFFFFh
818 call PERF
819 xor ecx, ecx
820 xor edx, edx
821 mov cx, [esi]
822 or cx, 10h
823 mov [esi], cx
824
825loc_6_4F8: ; CODE XREF: PerfStop+Cj
826 pop edx
827 pop ecx
828 pop esi
829 pop eax
830 retn
831PerfStop endp
832
833; Type idx: 513
834
835; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
836
837
838 public setjmp
839setjmp proc near
840;arg_0 = byte ptr 4
841arg_0 = dword ptr 4
842 mov ecx, [esp+0]
843
844; Type idx: 183
845
846 public $$PROFSETJMP
847$$PROFSETJMP label near
848
849 call _ProfileHook32
850 mov [eax+4], ecx
851 mov [eax+0Ch], ebx
852 mov [eax+14h], esi
853 mov [eax+10h], edi
854 mov [eax], ebp
855 lea edx, [esp+arg_0]
856 mov [eax+8], edx
857 mov edx, large fs:0
858 mov [eax+18h], edx
859 fstcw word ptr [eax+1Ch]
860 xor eax, eax
861 retn
862;$$PROFSETJMP endp
863setjmp endp
864
865; Type idx: 513
866
867; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
868
869
870 public longjmp
871longjmp proc near
872 call _ProfileHook32
873 push eax
874 push edx
875 push 0
876 push offset _ProfileHook32+53Bh
877 push dword ptr [eax+18h]
878 call DosUnwindException
879 mov edx, 0FCCCh
880 jmp CrashAndBurn
881
882; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
883 add esp, 0Ch
884 pop edx
885 pop eax
886 mov ecx, $$PROSEGPTR32
887 jecxz short loc_6_5C2
888 mov ebx, large fs:0Ch
889 mov esi, ecx
890 movzx ebx, word ptr [ebx]
891 dec ebx
892 cmp ebx, [esi+64h]
893 jnb short loc_6_5C2
894 push eax
895 push edx
896 mov eax, [eax+8]
897 xor ecx, ecx
898 mov edi, ebx
899 shl edi, 0Ch
900 add edi, [esi+154h]
901
902loc_6_57C: ; CODE XREF: CODE32:000005B0j
903 mov edx, [edi]
904 or edx, edx
905 jz short loc_6_5B2
906 cmp eax, [edi+edx+4]
907 jbe short loc_6_5B2
908 mov edx, [edi+edx+4]
909 mov edx, [edx+4]
910 cmp edx, offset _ProfileHook32+24Ch
911 jnz short loc_6_5A2
912 push eax
913 mov eax, [esi+160h]
914 dec dword ptr [eax+ebx*4]
915 pop eax
916
917loc_6_5A2: ; CODE XREF: CODE32:00000595j
918 push eax
919 mov eax, [esi+158h]
920 inc dword ptr [eax+ebx*4]
921 pop eax
922 sub dword ptr [edi], 8
923 loop loc_6_57C
924
925loc_6_5B2: ; CODE XREF: CODE32:00000580j
926 ; CODE32:00000586j
927 neg ecx
928 jz short loc_6_5DD
929 mov eax, ecx
930 shl ebx, 10h
931 mov bl, 10h
932 call dword ptr [esi+50h]
933 pop edx
934 pop eax
935
936loc_6_5C2: ; CODE XREF: CODE32:00000556j
937 ; CODE32:00000568j
938 xchg eax, edx
939 finit
940 wait
941 fldcw word ptr [edx+1Ch]
942 mov ebx, [edx+0Ch]
943 mov esi, [edx+14h]
944 mov edi, [edx+10h]
945 mov ebp, [edx]
946 mov esp, [edx+8]
947 or eax, eax
948 jnz short loc_6_5DD
949 inc eax
950
951loc_6_5DD: ; CODE XREF: CODE32:000005B4j
952 ; CODE32:000005DAj
953 jmp dword ptr [edx+4]
954longjmp endp
955; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
956ExceptionThrownString db 'C++ exception thrown here:',0
957; Type idx: 513
958
959; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
960
961
962 public _ProfileThrow32
963_ProfileThrow32 proc near
964 push eax
965 mov eax, offset _ProfileHook32+5D0h
966 call PERF
967 pop eax
968 jmp PERF
969_ProfileThrow32 endp
970
971; Type idx: 513
972
973; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
974
975
976 public _ProfileUnwind32
977_ProfileUnwind32 proc near
978 push ebx
979 push esi
980 push edi
981 mov esi, $$PROSEGPTR32
982 or esi, esi
983 jz short loc_6_67A
984 mov ebx, large fs:0Ch
985 movzx ebx, word ptr [ebx]
986 dec ebx
987 cmp ebx, [esi+64h]
988 jnb short loc_6_67A
989 xor ecx, ecx
990 mov edi, ebx
991 shl edi, 0Ch
992 add edi, [esi+154h]
993
994loc_6_636: ; CODE XREF: _ProfileUnwind32+5Ej
995 mov edx, [edi]
996 or edx, edx
997 jz short loc_6_66C
998 cmp eax, [edi+edx+4]
999 jbe short loc_6_66C
1000 mov edx, [edi+edx+4]
1001 mov edx, [edx+4]
1002 cmp edx, offset _ProfileHook32+24Ch
1003 jnz short loc_6_65C
1004 push eax
1005 mov eax, [esi+160h]
1006 dec dword ptr [eax+ebx*4]
1007 pop eax
1008
1009loc_6_65C: ; CODE XREF: _ProfileUnwind32+43j
1010 push eax
1011 mov eax, [esi+158h]
1012 inc dword ptr [eax+ebx*4]
1013 pop eax
1014 sub dword ptr [edi], 8
1015 loop loc_6_636
1016
1017loc_6_66C: ; CODE XREF: _ProfileUnwind32+2Ej
1018 ; _ProfileUnwind32+34j
1019 neg ecx
1020 jz short loc_6_67A
1021 mov eax, ecx
1022 shl ebx, 10h
1023 mov bl, 10h
1024 call dword ptr [esi+50h]
1025
1026loc_6_67A: ; CODE XREF: _ProfileUnwind32+Bj
1027 ; _ProfileUnwind32+1Bj ...
1028 pop edi
1029 pop esi
1030 pop ebx
1031 retn
1032_ProfileUnwind32 endp
1033
1034; Type idx: 513
1035
1036; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1037
1038
1039 public eCal
1040eCal proc near
1041 push esi
1042 mov esi, $$PROSEGPTR32
1043 mov ecx, [esi+158h]
1044 dec dword ptr [ecx]
1045 mov ecx, 8
1046
1047loc_6_692: ; CODE XREF: CODE32:000006A7j
1048 push offset _ProfileHook32+696h
1049 push offset _ProfileHook32+697h
1050 push offset _ProfileHook32+1
1051 jmp $$PROFCALL32
1052
1053; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1054 retn
1055; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1056 loop loc_6_692
1057 push eax
1058 mov eax, [esi+158h]
1059 inc dword ptr [eax]
1060 pop eax
1061 pop esi
1062 retn
1063; Type idx: 513
1064eCal endp
1065
1066; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1067
1068
1069 public uCal
1070uCal proc near
1071 mov $$PROSEGPTR32, eax
1072 call $$PROFCALL32
1073 push esi
1074 mov esi, $$PROSEGPTR32
1075 mov ecx, 8
1076
1077loc_6_6CB: ; CODE XREF: uCal+22j
1078 push ecx
1079 call PROFITCAL
1080 call PROFITCAL
1081 pop ecx
1082 loop loc_6_6CB
1083 pop esi
1084 retn
1085uCal endp
1086
1087; Type idx: 513
1088
1089; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1090
1091
1092 public CrashAndBurn
1093CrashAndBurn proc near ; CODE XREF: longjmp+1Bj DoInit+1Fj ...
1094 mov [esi+4], edx
1095 mov [esi+8], eax
1096 push eax
1097 push 1
1098 call DosExit
1099CrashAndBurn endp
1100
1101; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1102initName db 'INIT_PROSEG',0 ; DATA XREF: DoInit+2Eo
1103logDllName db 'CPPPAN40',0 ; DATA XREF: DoInit+7o
1104; Type idx: 513
1105
1106; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1107
1108public DoInit
1109DoInit proc near ; CODE XREF: $$PROFCALL32+20p
1110 ; $$PROFTRIG32+20p ...
1111 pushad
1112 xor ebx, ebx
1113 push ebx
1114 mov eax, esp
1115 push eax
1116 lea eax, logDllName ; "CPPPAN40"
1117 push eax
1118 push ebx
1119 push ebx
1120 call DosLoadModule
1121 add esp, 10h
1122 mov edx, 0FAD8h
1123 or eax, eax
1124 jnz short CrashAndBurn
1125 pop edx
1126 mov ecx, 7
1127 lea edi, initAdr
1128 push edi
1129 lea ebx, initName ; "INIT_PROSEG"
1130 push ebx
1131 push 0
1132 push edx
1133 call DosQueryProcAddr
1134 add esp, 10h
1135 mov edx, 0FB3Ch
1136 or eax, eax
1137 jnz short CrashAndBurn
1138 xor ebx, ebx
1139 push ebx
1140 push ebx
1141 mov eax, esp
1142 mov edx, offset _ProfileHook32+66Eh
1143 mov ecx, offset _ProfileHook32+6A5h
1144 lea esi, $$PROSEGPTR32
1145 push esi
1146 sub esp, 0Ch
1147 call initAdr
1148 add esp, 10h
1149 or eax, eax
1150 pop edx
1151 pop eax
1152 jnz CrashAndBurn
1153 popad
1154 mov esi, $$PROSEGPTR32
1155 retn
1156DoInit endp
1157
1158; Type idx: 513
1159
1160; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1161
1162
1163 public checkForUnwindAtCall
1164checkForUnwindAtCall proc near ; CODE XREF: $$PROFCALL32+B0p
1165 ; $$PROFTRIG32+ACp ...
1166 test word ptr [esi], 40h
1167 jz short locret_6_7D0
1168 test word ptr [esi], 80h
1169 jz short locret_6_7D0
1170 push edx
1171 push ecx
1172 mov edx, edi
1173 add edx, [edx]
1174 xor ecx, ecx
1175
1176loc_6_792: ; CODE XREF: checkForUnwindAtCall+25j
1177 cmp edx, edi
1178 jbe short loc_6_7AB
1179 cmp [edx+4], eax
1180 ja short loc_6_7AB
1181 sub edx, 8
1182 sub dword ptr [edi], 8
1183 loop loc_6_792
1184 xor eax, eax
1185 mov dword ptr [eax], 0
1186
1187loc_6_7AB: ; CODE XREF: checkForUnwindAtCall+18j
1188 ; checkForUnwindAtCall+1Dj
1189 neg ecx
1190 jz short loc_6_7CE
1191 add [esi+ebx*4+158h], ecx
1192 mov eax, 0FFFFFFFCh
1193 call PERF
1194 push ebx
1195 push edi
1196 shl ebx, 10h
1197 mov bl, 10h
1198 mov eax, ecx
1199 call dword ptr [esi+50h]
1200 pop edi
1201 pop ebx
1202
1203loc_6_7CE: ; CODE XREF: checkForUnwindAtCall+31j
1204 pop ecx
1205 pop edx
1206
1207locret_6_7D0: ; CODE XREF: checkForUnwindAtCall+5j
1208 ; checkForUnwindAtCall+Cj
1209 retn
1210checkForUnwindAtCall endp
1211
1212; Type idx: 513
1213
1214; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1215
1216
1217 public checkForUnwindAtReturn
1218checkForUnwindAtReturn proc near ; CODE XREF: $$PROFRET32+33p
1219 ; $$PROFTRIGRET32+33p
1220 test word ptr [esi], 40h
1221 jz short locret_6_82F
1222 test word ptr [esi], 80h
1223 jz short locret_6_82F
1224 cmp dword ptr [edi], 10h
1225 jb short locret_6_82F
1226 push edx
1227 push ecx
1228 mov edx, edi
1229 add edx, [edx]
1230 xor ecx, ecx
1231
1232loc_6_7EC: ; CODE XREF: checkForUnwindAtReturn+2Fj
1233 cmp [edx+4], eax
1234 jnb short loc_6_80A
1235 sub edx, 8
1236 cmp edx, edi
1237 jbe short loc_6_80A
1238 cmp [edx+4], eax
1239 ja short loc_6_80A
1240 sub dword ptr [edi], 8
1241 loop loc_6_7EC
1242 xor eax, eax
1243 mov dword ptr [eax], 0
1244
1245loc_6_80A: ; CODE XREF: checkForUnwindAtReturn+1Ej
1246 ; checkForUnwindAtReturn+25j ...
1247 neg ecx
1248 jz short loc_6_82D
1249 add [esi+ebx*4+158h], ecx
1250 mov eax, 0FFFFFFFBh
1251 call PERF
1252 push ebx
1253 push edi
1254 shl ebx, 10h
1255 mov bl, 10h
1256 mov eax, ecx
1257 call dword ptr [esi+50h]
1258 pop edi
1259 pop ebx
1260
1261loc_6_82D: ; CODE XREF: checkForUnwindAtReturn+3Bj
1262 pop ecx
1263 pop edx
1264
1265locret_6_82F: ; CODE XREF: checkForUnwindAtReturn+5j
1266 ; checkForUnwindAtReturn+Cj ...
1267 retn
1268checkForUnwindAtReturn endp
1269
1270; Type idx: 513
1271
1272; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1273
1274
1275 public verifyStackFrame
1276verifyStackFrame proc near ; CODE XREF: $$PROFCALL32+8Ep
1277 ; $$PROFTRIG32+7Ap ...
1278 push edi
1279 test word ptr [esi], 40h
1280 jz short loc_6_85F
1281 test word ptr [esi], 80h
1282 jz short loc_6_85F
1283 mov edi, ebx
1284 shl edi, 0Ch
1285 add edi, [esi+154h]
1286 cmp dword ptr [edi], 0
1287 jz short loc_6_85F
1288 nop
1289 nop
1290 nop
1291 nop
1292 cmp eax, [edi+0Ch]
1293 ja short loc_6_863
1294 add edi, [edi]
1295 cmp eax, [edi+4]
1296 jz short loc_6_86A
1297
1298loc_6_85F: ; CODE XREF: verifyStackFrame+6j
1299 ; verifyStackFrame+Dj ...
1300 xor eax, eax
1301 jmp short loc_6_879
1302; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1303
1304loc_6_863: ; CODE XREF: verifyStackFrame+26j
1305 mov eax, 0FFFFFFF9h
1306 jmp short loc_6_86F
1307; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1308
1309loc_6_86A: ; CODE XREF: verifyStackFrame+2Dj
1310 mov eax, 0FFFFFFFDh
1311
1312loc_6_86F: ; CODE XREF: verifyStackFrame+38j
1313 call PERF
1314 mov eax, 1
1315
1316loc_6_879: ; CODE XREF: verifyStackFrame+31j
1317 pop edi
1318 retn
1319verifyStackFrame endp
1320
1321; Type idx: 513
1322
1323; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1324
1325; Attributes: bp-based frame
1326
1327 public _ProfileEnterParagraph32
1328_ProfileEnterParagraph32 proc near
1329 push ebp
1330 mov ebp, esp
1331 pushfd
1332 push esi
1333 mov esi, $$PROSEGPTR32
1334 or esi, esi
1335 jz short loc_6_8EE
1336 test word ptr [esi], 2
1337 jz short loc_6_8EE
1338 test word ptr [esi], 10h
1339 jnz short loc_6_8EE
1340 push edi
1341 push ebx
1342 push ecx
1343 mov ebx, large fs:0Ch
1344 mov ebx, [ebx]
1345 cmp ebx, [esi+64h]
1346 ja short loc_6_8EB
1347 dec ebx
1348 mov eax, [esi+160h]
1349 cmp dword ptr [eax+ebx*4], 0
1350 jz short loc_6_8EB
1351 mov edi, ebx
1352 shl ebx, 10h
1353 mov eax, [ebp+4]
1354 push edx
1355 mov ecx, [esi+164h]
1356 mov edx, [ecx+edi*4]
1357 cmp edx, 0FFFFFFFFh
1358 jz short loc_6_8E5
1359 mov bl, 5
1360 push eax
1361 push ebx
1362 push edi
1363 call dword ptr [esi+58h]
1364 pop edi
1365 pop ebx
1366 pop eax
1367 mov ecx, [esi+164h]
1368 mov dword ptr [ecx+edi*4], 0FFFFFFFFh
1369
1370loc_6_8E5: ; CODE XREF: _ProfileEnterParagraph32+50j
1371 mov bl, 4
1372 pop edx
1373 call dword ptr [esi+58h]
1374
1375loc_6_8EB: ; CODE XREF: _ProfileEnterParagraph32+2Cj
1376 ; _ProfileEnterParagraph32+39j
1377 pop ecx
1378 pop ebx
1379 pop edi
1380
1381loc_6_8EE: ; CODE XREF: _ProfileEnterParagraph32+Dj
1382 ; _ProfileEnterParagraph32+14j ...
1383 pop esi
1384 popfd
1385 pop ebp
1386 retn
1387_ProfileEnterParagraph32 endp
1388
1389; Type idx: 513
1390
1391; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1392
1393; Attributes: bp-based frame
1394
1395 public _ProfileExitParagraph32
1396_ProfileExitParagraph32 proc near
1397 push ebp
1398 mov ebp, esp
1399 pushfd
1400 push esi
1401 mov esi, $$PROSEGPTR32
1402 or esi, esi
1403 jz short loc_6_939
1404 test word ptr [esi], 2
1405 jz short loc_6_939
1406 test word ptr [esi], 10h
1407 jnz short loc_6_939
1408 push ebx
1409 mov ebx, large fs:0Ch
1410 mov ebx, [ebx]
1411 cmp ebx, [esi+64h]
1412 ja short loc_6_938
1413 dec ebx
1414 mov edx, [esi+160h]
1415 cmp dword ptr [edx+ebx*4], 0
1416 jz short loc_6_938
1417 mov edx, eax
1418 mov eax, [ebp+4]
1419 shl ebx, 10h
1420 mov bl, 5
1421 call dword ptr [esi+58h]
1422
1423loc_6_938: ; CODE XREF: _ProfileExitParagraph32+2Aj
1424 ; _ProfileExitParagraph32+37j
1425 pop ebx
1426
1427loc_6_939: ; CODE XREF: _ProfileExitParagraph32+Dj
1428 ; _ProfileExitParagraph32+14j ...
1429 pop esi
1430 popfd
1431 pop ebp
1432 retn
1433_ProfileExitParagraph32 endp
1434
1435; Type idx: 513
1436
1437; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1438
1439
1440 public _ProfileConditionalExit32
1441_ProfileConditionalExit32 proc near
1442 pushfd
1443 push esi
1444 mov esi, $$PROSEGPTR32
1445 or esi, esi
1446 jz short loc_6_973
1447 test word ptr [esi], 2
1448 jz short loc_6_973
1449 test word ptr [esi], 10h
1450 jnz short loc_6_973
1451 push ebx
1452 push ecx
1453 mov ebx, large fs:0Ch
1454 mov ebx, [ebx]
1455 cmp ebx, [esi+64h]
1456 ja short loc_6_971
1457 dec ebx
1458 mov ecx, [esi+164h]
1459 mov [ecx+ebx*4], eax
1460
1461loc_6_971: ; CODE XREF: _ProfileConditionalExit32+28j
1462 pop ecx
1463 pop ebx
1464
1465loc_6_973: ; CODE XREF: _ProfileConditionalExit32+Aj
1466 ; _ProfileConditionalExit32+11j ...
1467 pop esi
1468 popfd
1469 retn
1470_ProfileConditionalExit32 endp
1471
1472; Type idx: 513
1473
1474; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1475
1476
1477 public _ProfileCancelExit32
1478_ProfileCancelExit32 proc near
1479 pushfd
1480 push esi
1481 mov esi, $$PROSEGPTR32
1482 or esi, esi
1483 jz short loc_6_9B0
1484 test word ptr [esi], 2
1485 jz short loc_6_9B0
1486 test word ptr [esi], 10h
1487 jnz short loc_6_9B0
1488 push ebx
1489 push ecx
1490 mov ebx, large fs:0Ch
1491 mov ebx, [ebx]
1492 cmp ebx, [esi+64h]
1493 ja short loc_6_9AE
1494 dec ebx
1495 mov ecx, [esi+164h]
1496 mov dword ptr [ecx+ebx*4], 0FFFFFFFFh
1497
1498loc_6_9AE: ; CODE XREF: _ProfileCancelExit32+28j
1499 pop ecx
1500 pop ebx
1501
1502loc_6_9B0: ; CODE XREF: _ProfileCancelExit32+Aj
1503 ; _ProfileCancelExit32+11j ...
1504 pop esi
1505 popfd
1506 retn
1507_ProfileCancelExit32 endp
1508
1509; Type idx: 513
1510
1511; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
1512
1513; Attributes: bp-based frame
1514
1515 public _ProfileNameString32
1516_ProfileNameString32 proc near
1517 push ebp
1518 mov ebp, esp
1519 pushfd
1520 push esi
1521 mov esi, $$PROSEGPTR32
1522 or esi, esi
1523 jz short loc_6_A11
1524 test word ptr [esi], 2
1525 jz short loc_6_A11
1526 test word ptr [esi], 10h
1527 jnz short loc_6_A11
1528 push ebx
1529 push ecx
1530 mov ebx, large fs:0Ch
1531 mov ebx, [ebx]
1532 cmp ebx, [esi+64h]
1533 ja short loc_6_A0F
1534 dec ebx
1535 mov ecx, [esi+160h]
1536 cmp dword ptr [ecx+ebx*4], 0
1537 jz short loc_6_A0F
1538 mov ecx, [ebp+4]
1539 mov [esi+148h], ecx
1540 mov [esi+14Ch], eax
1541 mov [esi+150h], edx
1542 mov dword ptr [esi+144h], 2
1543 int 3 ; Trap to Debugger
1544 wait
1545 int 3 ; Trap to Debugger
1546
1547loc_6_A0F: ; CODE XREF: _ProfileNameString32+2Bj
1548 ; _ProfileNameString32+38j
1549 pop ecx
1550 pop ebx
1551
1552loc_6_A11: ; CODE XREF: _ProfileNameString32+Dj
1553 ; _ProfileNameString32+14j ...
1554 pop esi
1555 popfd
1556 pop ebp
1557 retn
1558_ProfileNameString32 endp
1559
1560; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1561; Type idx: 520
1562
1563 public _ProfileVersionId32
1564_ProfileVersionId32 TVersionId <4, 0, 2, 178h>
1565CODE32 ends
1566
1567 end
Note: See TracBrowser for help on using the repository browser.