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

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

Pre initial hacking.

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