Changeset 8282 for trunk/tools/profilerfix/cppopa4.asm
- Timestamp:
- Apr 19, 2002, 2:09:12 AM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/profilerfix/cppopa4.asm
r8281 r8282 1 ; $Id: cppopa4.asm,v 1.2 2002-04-18 01:35:24 bird Exp $ 1 ; $Id: cppopa4.asm,v 1.3 2002-04-19 00:09:12 bird Exp $ 2 ; 3 4 ; 5 ; Copyright 1990-1998 IBM Corp. 6 ; 7 2 8 ; 3 9 ; File Name : G:\fun\cpppan40.obj\cpppan40.obj … … 12 18 .MODEL FLAT 13 19 14 large EQU 20 ; 21 ; Defined Constants And Macros 22 ; 23 24 ; 25 ; FS selector fixes. 26 ; 27 ;FS_FIXES_1 EQU 1 ; Level 1 - Load correct fs when ever it's accessed 28 ; And save it before calling Dos* and initAddr. 29 ;FS_FIXES_2 EQU 1 ; Level 2 - Save and load correct fs before every 30 ; indirect call. 31 FS_FIXES_3 EQU 1 ; Level 3 - Save and load correct fs upon entry. 32 ; 33 ifdef FS_FIXES_3 34 FS_FIXES_STACK EQU 4 35 else 36 FS_FIXES_STACK EQU 0 37 endif 38 39 40 large EQU ; workaround for IDA code. 41 42 15 43 16 44 ; … … 38 66 extrn DosQueryProcAddr:near 39 67 extrn DosUnwindException:near 68 ifdef FS_FIXES_1 69 extrn Dos32TIB:abs 70 elseifdef FS_FIXES_2 71 extrn Dos32TIB:abs 72 elseifdef FS_FIXES_3 73 extrn Dos32TIB:abs 74 endif 40 75 41 76 … … 78 113 proseg_logBufNext dd ? 79 114 proseg_logBufWrap dd ? 115 if 0 80 116 proseg_procAddrs dd 7 dup(?) 117 else 118 proseg_pfnINIT_PROSEG dd ? ; 00h + proseg_procAddrs 119 proseg_pfnINIT_IDT dd ? ; 04h + proseg_procAddrs 120 proseg_pfnINIT_ID4T dd ? ; 08h + proseg_procAddrs 121 proseg_pfnINIT_ID44 dd ? ; 0ch + proseg_procAddrs 122 proseg_pfnINIT_ID44T dd ? ; 10h + proseg_procAddrs 123 proseg_pfnUnknown1 dd ? ; 14h + proseg_procAddrs 124 proseg_pfnUnknown2 dd ? ; 18h + proseg_procAddrs 125 endif 81 126 proseg_maxTid dd ? 82 127 proseg_ptrCurTid dd ? … … 159 204 160 205 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 161 162 163 206 public _ProfileHook32 164 207 _ProfileHook32 proc near ; CODE XREF: $$PROFSETJMPp longjmpp … … 182 225 push edx 183 226 push eax 227 ifdef FS_FIXES_3 228 push fs 229 push Dos32TIB 230 pop fs 231 endif 184 232 mov esi, $$PROSEGPTR32 233 ASSUME esi:ptr PROSEG 185 234 or esi, esi 186 235 jnz short loc_6_4E … … 199 248 200 249 loc_6_4E: ; CODE XREF: $$PROFCALL32+Dj 201 mov ebx, large fs:0Ch 202 test dword ptr [esi], 10h 250 ifdef FS_FIXES_1 251 push fs 252 push Dos32TIB 253 pop fs 254 mov ebx, fs:tib_s.tib_ptib2 255 pop fs 256 else 257 mov ebx, fs:tib_s.tib_ptib2 258 endif 259 test dword ptr [esi.proseg_flags], 10h 203 260 jnz loc_6_FD 204 261 movzx ebx, word ptr [ebx] 205 262 dec ebx 206 cmp ebx, [esi +64h]263 cmp ebx, [esi.proseg_maxTid] 207 264 jnb loc_6_FD 208 mov eax, [esi +164h]265 mov eax, [esi.conditionalExit] 209 266 mov dword ptr [eax+ebx*4], 0FFFFFFFFh 210 mov eax, [esi +160h]267 mov eax, [esi.proseg_tidTrigger] 211 268 cmp dword ptr [eax+ebx*4], 0 212 jz shortloc_6_FD213 nop 214 nop 215 nop 216 nop 217 mov eax, [esi +158h]269 jz loc_6_FD 270 nop 271 nop 272 nop 273 nop 274 mov eax, [esi.proseg_tidDecNest] 218 275 dec dword ptr [eax+ebx*4] 219 js shortloc_6_104276 js loc_6_104 220 277 nop 221 278 nop … … 223 280 nop 224 281 push edi 225 lea eax, [esp+18h ]282 lea eax, [esp+18h + FS_FIXES_STACK] 226 283 call verifyStackFrame 227 284 or eax, eax 228 285 jnz short loc_6_103 229 mov eax, offset _ProfileHook32+0FFh230 xchg eax, [esp+18h+arg_0 ]286 mov eax, offset $$PROFRET32 287 xchg eax, [esp+18h+arg_0 + FS_FIXES_STACK] 231 288 mov edi, ebx 232 289 shl edi, 0Ch 233 add edi, [esi +154h]234 push eax 235 lea eax, [esp+1Ch ]290 add edi, [esi.proseg_retStacks] 291 push eax 292 lea eax, [esp+1Ch + FS_FIXES_STACK] 236 293 call checkForUnwindAtCall 237 294 pop eax … … 239 296 add edi, [edi] 240 297 mov [edi], eax 241 lea eax, [esp+18h ]298 lea eax, [esp+18h + FS_FIXES_STACK] 242 299 mov [edi+4], eax 243 300 mov eax, [eax] 244 test dword ptr [esi ], 20h301 test dword ptr [esi.proseg_flags], 20h 245 302 jz short loc_6_F4 246 303 nop … … 250 307 shl ebx, 10h 251 308 mov bl, 1 252 mov edx, [esp+18h+var_14] 253 call dword ptr [esi+58h] 309 mov edx, [esp+18h+var_14 + FS_FIXES_STACK] 310 ifdef FS_FIXES_2 311 push fs 312 push Dos32TIB 313 pop fs 314 call dword ptr [esi.proseg_pfnINIT_ID44T] 315 pop fs 316 else 317 call dword ptr [esi.proseg_pfnINIT_ID44T] 318 endif 254 319 jmp short loc_6_FC 255 320 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ … … 262 327 shl ebx, 10h 263 328 mov bl, 40h ; '@' 264 call dword ptr [esi+50h] 329 ifdef FS_FIXES_2 330 push fs 331 push Dos32TIB 332 pop fs 333 call dword ptr [esi.proseg_pfnINIT_ID4T] 334 pop fs 335 else 336 call dword ptr [esi.proseg_pfnINIT_ID4T] 337 endif 265 338 266 339 loc_6_FC: ; CODE XREF: $$PROFCALL32+DEj … … 269 342 loc_6_FD: ; CODE XREF: $$PROFCALL32+1Aj 270 343 ; $$PROFCALL32+37j ... 344 ifdef FS_FIXES_3 345 pop fs 346 endif 271 347 pop eax 272 348 pop edx … … 281 357 282 358 loc_6_104: ; CODE XREF: $$PROFCALL32+83j 283 mov eax, [esi +158h]359 mov eax, [esi.proseg_tidDecNest] 284 360 inc dword ptr [eax+ebx*4] 285 361 jmp short loc_6_FD … … 293 369 public $$PROFRET32 294 370 $$PROFRET32 proc near 371 ; assume esi:nothing 295 372 296 373 ;var_8 = byte ptr -8 … … 304 381 push esi 305 382 push edi 306 mov ebx, large fs:0Ch 383 ifdef FS_FIXES_3 384 push fs 385 push Dos32TIB 386 pop fs 387 endif 388 ifdef FS_FIXES_1 389 push fs 390 push Dos32TIB 391 pop fs 392 mov ebx, fs:tib_s.tib_ptib2 393 pop fs 394 else 395 mov ebx, fs:tib_s.tib_ptib2 396 endif 307 397 mov esi, $$PROSEGPTR32 308 398 movzx ebx, word ptr [ebx] 309 399 dec ebx 310 mov eax, [esi +158h]400 mov eax, [esi].proseg_tidDecNest 311 401 inc dword ptr [eax+ebx*4] 312 402 mov edi, ebx 313 403 shl edi, 0Ch 314 add edi, [esi +154h]315 push eax 316 lea eax, [esp+18h+var_4 ]404 add edi, [esi].proseg_retStacks 405 push eax 406 lea eax, [esp+18h+var_4 + FS_FIXES_STACK] 317 407 call checkForUnwindAtReturn 318 408 pop eax … … 320 410 add edi, [edi] 321 411 mov eax, [edi+8] 322 mov [esp+14h ], eax412 mov [esp+14h + FS_FIXES_STACK], eax 323 413 shl ebx, 10h 324 414 mov bl, 0 325 call dword ptr [esi+4Ch] 415 ifdef FS_FIXES_2 416 push fs 417 push Dos32TIB 418 pop fs 419 call dword ptr [esi.proseg_pfnINIT_IDT] 420 pop fs 421 else 422 call dword ptr [esi.proseg_pfnINIT_IDT] 423 endif 424 ifdef FS_FIXES_3 425 pop fs 426 endif 326 427 pop edi 327 428 pop esi … … 348 449 push edx 349 450 push eax 451 ifdef FS_FIXES_3 452 push fs 453 push Dos32TIB 454 pop fs 455 endif 350 456 mov esi, $$PROSEGPTR32 351 457 or esi, esi … … 365 471 366 472 loc_6_19F: ; CODE XREF: $$PROFTRIG32+Dj 367 test dword ptr [esi] , 10h473 test dword ptr [esi].proseg_flags, 10h 368 474 jnz loc_6_24A 369 mov ebx, large fs:0Ch 475 ifdef FS_FIXES_1 476 push fs 477 push Dos32TIB 478 pop fs 479 mov ebx, fs:tib_s.tib_ptib2 480 pop fs 481 else 482 mov ebx, fs:tib_s.tib_ptib2 483 endif 370 484 movzx ebx, word ptr [ebx] 371 485 dec ebx 372 cmp ebx, [esi +64h]486 cmp ebx, [esi].proseg_maxTid 373 487 jnb loc_6_24A 374 mov eax, [esi +164h]488 mov eax, [esi].conditionalExit 375 489 mov dword ptr [eax+ebx*4], 0FFFFFFFFh 376 mov eax, [esi +158h]490 mov eax, [esi].proseg_tidDecNest 377 491 dec dword ptr [eax+ebx*4] 378 js shortloc_6_251492 js loc_6_251 379 493 push edi 380 lea eax, [esp+18h ]494 lea eax, [esp+18h + FS_FIXES_STACK] 381 495 call verifyStackFrame 382 496 or eax, eax 383 jnz shortloc_6_250384 mov eax, offset _ProfileHook32+24Ch385 xchg eax, [esp+18h+arg_0 ]386 cmp eax, offset _ProfileHook32+24Ch497 jnz loc_6_250 498 mov eax, offset $$PROFTRIGRET32 499 xchg eax, [esp+18h+arg_0 + FS_FIXES_STACK] 500 cmp eax, offset $$PROFTRIGRET32 387 501 jz short loc_6_250 388 mov edi, [esi +160h]502 mov edi, [esi].proseg_tidTrigger 389 503 inc dword ptr [edi+ebx*4] 390 504 mov edi, ebx 391 505 shl edi, 0Ch 392 add edi, [esi +154h]393 push eax 394 lea eax, [esp+1Ch ]506 add edi, [esi].proseg_retStacks 507 push eax 508 lea eax, [esp+1Ch + FS_FIXES_STACK] 395 509 call checkForUnwindAtCall 396 510 pop eax … … 398 512 add edi, [edi] 399 513 mov [edi], eax 400 lea eax, [esp+18h ]514 lea eax, [esp+18h + FS_FIXES_STACK] 401 515 mov [edi+4], eax 402 516 mov eax, [eax] 403 test dword ptr [esi] , 20h517 test dword ptr [esi].proseg_flags, 20h 404 518 jz short loc_6_241 405 519 nop … … 409 523 shl ebx, 10h 410 524 mov bl, 1 411 mov edx, [esp+18h+var_14] 412 call dword ptr [esi+58h] 525 mov edx, [esp+18h+var_14 + FS_FIXES_STACK] 526 ifdef FS_FIXES_2 527 push fs 528 push Dos32TIB 529 pop fs 530 call dword ptr [esi.proseg_pfnINIT_ID44T] 531 pop fs 532 else 533 call dword ptr [esi.proseg_pfnINIT_ID44T] 534 endif 413 535 jmp short loc_6_249 414 536 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ … … 423 545 shl ebx, 10h 424 546 mov bl, 40h ; '@' 425 call dword ptr [esi+50h] 547 ifdef FS_FIXES_2 548 push fs 549 push Dos32TIB 550 pop fs 551 call dword ptr [esi.proseg_pfnINIT_ID4T] 552 pop fs 553 else 554 call dword ptr [esi.proseg_pfnINIT_ID4T] 555 endif 426 556 427 557 loc_6_249: ; CODE XREF: $$PROFTRIG32+DAj … … 430 560 loc_6_24A: ; CODE XREF: $$PROFTRIG32+1Aj 431 561 ; $$PROFTRIG32+37j ... 562 ifdef FS_FIXES_3 563 pop fs 564 endif 432 565 pop eax 433 566 pop edx … … 443 576 444 577 loc_6_251: ; CODE XREF: $$PROFTRIG32+73j 445 mov eax, [esi +158h]578 mov eax, [esi].proseg_tidDecNest 446 579 inc dword ptr [eax+ebx*4] 447 580 jmp short loc_6_24A … … 466 599 push esi 467 600 push edi 468 mov ebx, large fs:0Ch 601 ifdef FS_FIXES_3 602 push fs 603 push Dos32TIB 604 pop fs 605 endif 606 ifdef FS_FIXES_1 607 push fs 608 push Dos32TIB 609 pop fs 610 mov ebx, fs:tib_s.tib_ptib2 611 pop fs 612 else 613 mov ebx, fs:tib_s.tib_ptib2 614 endif 469 615 mov esi, $$PROSEGPTR32 470 616 movzx ebx, word ptr [ebx] 471 617 dec ebx 472 mov eax, [esi +158h]618 mov eax, [esi].proseg_tidDecNest 473 619 inc dword ptr [eax+ebx*4] 474 620 mov edi, ebx 475 621 shl edi, 0Ch 476 add edi, [esi +154h]477 push eax 478 lea eax, [esp+1Ch+var_8 ]622 add edi, [esi].proseg_retStacks 623 push eax 624 lea eax, [esp+1Ch+var_8 + FS_FIXES_STACK] 479 625 call checkForUnwindAtReturn 480 626 pop eax … … 482 628 add edi, [edi] 483 629 mov eax, [edi+8] 484 mov [esp+18h+var_4 ], eax485 mov eax, [esi +160h]630 mov [esp+18h+var_4 + FS_FIXES_STACK], eax 631 mov eax, [esi].proseg_tidTrigger 486 632 dec dword ptr [eax+ebx*4] 487 633 shl ebx, 10h 488 call dword ptr [esi+4Ch] 634 ifdef FS_FIXES_2 635 push fs 636 push Dos32TIB 637 pop fs 638 call dword ptr [esi.proseg_pfnINIT_IDT] 639 pop fs 640 else 641 call dword ptr [esi.proseg_pfnINIT_IDT] 642 endif 643 ifdef FS_FIXES_3 644 pop fs 645 endif 489 646 pop edi 490 647 pop esi … … 524 681 push edx 525 682 push eax 683 ifdef FS_FIXES_3 684 push fs 685 push Dos32TIB 686 pop fs 687 endif 526 688 mov esi, $$PROSEGPTR32 527 689 or esi, esi … … 541 703 542 704 loc_6_2F4: ; CODE XREF: $$PROFEYEC32+Dj 543 test dword ptr [esi] , 10h705 test dword ptr [esi].proseg_flags, 10h 544 706 jnz loc_6_40B 545 mov ebx, large fs:0Ch 707 ifdef FS_FIXES_1 708 push fs 709 push Dos32TIB 710 pop fs 711 mov ebx, fs:tib_s.tib_ptib2 712 pop fs 713 else 714 mov ebx, fs:tib_s.tib_ptib2 715 endif 546 716 movzx ebx, word ptr [ebx] 547 717 dec ebx 548 cmp ebx, [esi +64h]718 cmp ebx, [esi].proseg_maxTid 549 719 jnb loc_6_40B 550 mov eax, [esi +160h]720 mov eax, [esi].proseg_tidTrigger 551 721 cmp dword ptr [eax+ebx*4], 0 552 722 jz loc_6_40B 553 mov eax, [esi +158h]723 mov eax, [esi].proseg_tidDecNest 554 724 dec dword ptr [eax+ebx*4] 555 725 js loc_6_412 556 726 push edi 557 lea eax, [esp+18h ]727 lea eax, [esp+18h + FS_FIXES_STACK] 558 728 call verifyStackFrame 559 729 or eax, eax 560 730 jnz loc_6_411 561 mov eax, offset _ProfileHook32+0FFh562 xchg eax, [esp+18h+arg_0 ]563 cmp eax, offset _ProfileHook32+0FFh731 mov eax, offset $$PROFRET32 732 xchg eax, [esp+18h+arg_0 + FS_FIXES_STACK] 733 cmp eax, offset $$PROFRET32 564 734 jnz short loc_6_36A 565 735 mov eax, 0FFFFFFFDh 566 736 call PERF 567 inc dword ptr [esi +134h]737 inc dword ptr [esi._counterArray+14h] 568 738 jmp loc_6_411 569 739 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ … … 572 742 mov edi, ebx 573 743 shl edi, 0Ch 574 add edi, [esi +154h]575 push eax 576 lea eax, [esp+1Ch ]744 add edi, [esi].proseg_retStacks 745 push eax 746 lea eax, [esp+1Ch + FS_FIXES_STACK] 577 747 call checkForUnwindAtCall 578 748 pop eax … … 580 750 add edi, [edi] 581 751 mov [edi], eax 582 lea eax, [esp+18h ]752 lea eax, [esp+18h + FS_FIXES_STACK] 583 753 mov [edi+4], eax 584 754 mov eax, [eax] 585 755 push dword ptr [edi] 586 test dword ptr [esi] , 20h756 test dword ptr [esi].proseg_flags, 20h 587 757 jz short loc_6_3AF 588 758 nop … … 592 762 shl ebx, 10h 593 763 mov bl, 1 594 mov edx, [esp+1Ch+var_10] 595 call dword ptr [esi+58h] 764 mov edx, [esp+1Ch+var_10 + FS_FIXES_STACK] 765 ifdef FS_FIXES_2 766 push fs 767 push Dos32TIB 768 pop fs 769 call dword ptr [esi.proseg_pfnINIT_ID44T] 770 pop fs 771 else 772 call dword ptr [esi.proseg_pfnINIT_ID44T] 773 endif 596 774 jmp short loc_6_3B7 597 775 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ … … 605 783 shl ebx, 10h 606 784 mov bl, 40h ; '@' 607 call dword ptr [esi+50h] 785 ifdef FS_FIXES_2 786 push fs 787 push Dos32TIB 788 pop fs 789 call dword ptr [esi.proseg_pfnINIT_ID4T] 790 pop fs 791 else 792 call dword ptr [esi.proseg_pfnINIT_ID4T] 793 endif 608 794 609 795 loc_6_3B7: ; CODE XREF: $$PROFEYEC32+F3j … … 613 799 jnz short loc_6_40A 614 800 xor bl, bl 615 lea edi, [esp+18h+arg_4 ]616 mov eax, [esp+18h+var_14 ]617 mov esi, offset _ProfileHook32+3E1h801 lea edi, [esp+18h+arg_4 + FS_FIXES_STACK] 802 mov eax, [esp+18h+var_14 + FS_FIXES_STACK] 803 mov esi, offset jmpback_1 618 804 619 805 loc_6_3CE: ; CODE XREF: $$PROFEYEC32+124j … … 645 831 jmp esi 646 832 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 647 mov esi, offset _ProfileHook32+3EBh 833 jmpback_1: 834 mov esi, offset jmpback_2 648 835 mov [edi-4], eax 649 836 jmp short loc_6_3CE 650 837 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 651 mov esi, offset _ProfileHook32+3F5h 838 jmpback_2: 839 mov esi, offset jmpback_3 652 840 mov [edi-4], edx 653 841 jmp short loc_6_3CE 654 842 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 843 jmpback_3: 655 844 mov [edi-4], ecx 656 845 jmp short loc_6_3CE … … 663 852 loc_6_40B: ; CODE XREF: $$PROFEYEC32+1Aj 664 853 ; $$PROFEYEC32+37j ... 854 ifdef FS_FIXES_3 855 pop fs 856 endif 665 857 pop eax 666 858 pop edx … … 676 868 677 869 loc_6_412: ; CODE XREF: $$PROFEYEC32+76j 678 mov eax, [esi +158h]870 mov eax, [esi].proseg_tidDecNest 679 871 inc dword ptr [eax+ebx*4] 680 872 jmp short loc_6_40B … … 705 897 push ecx 706 898 push edx 899 ifdef FS_FIXES_3 900 push fs 901 push Dos32TIB 902 pop fs 903 endif 707 904 mov esi, $$PROSEGPTR32 708 905 or esi, esi … … 730 927 731 928 loc_6_45A: ; CODE XREF: PROFITCAL+Cj 732 test dword ptr [esi] , 10h929 test dword ptr [esi].proseg_flags, 10h 733 930 jnz short loc_6_494 734 931 nop … … 736 933 nop 737 934 nop 738 mov ebx, large fs:0Ch 935 ifdef FS_FIXES_1 936 push fs 937 push Dos32TIB 938 pop fs 939 mov ebx, fs:tib_s.tib_ptib2 940 pop fs 941 else 942 mov ebx, fs:tib_s.tib_ptib2 943 endif 739 944 movzx ebx, word ptr [ebx] 740 945 dec ebx 741 cmp ebx, [esi +64h]946 cmp ebx, [esi].proseg_maxTid 742 947 jnb short loc_6_494 743 mov edx, [esi +158h]948 mov edx, [esi].proseg_tidDecNest 744 949 mov edx, [edx+ebx*4] 745 mov ecx, [esi +15Ch]950 mov ecx, [esi].proseg_tidMaxNest 746 951 cmp edx, [ecx+ebx*4] 747 952 jz short loc_6_494 … … 749 954 shl ebx, 10h 750 955 mov bl, 20h ; ' ' 751 call dword ptr [esi+50h] 956 ifdef FS_FIXES_2 957 push fs 958 push Dos32TIB 959 pop fs 960 call dword ptr [esi.proseg_pfnINIT_ID4T] 961 pop fs 962 else 963 call dword ptr [esi.proseg_pfnINIT_ID4T] 964 endif 752 965 pop edi 753 966 754 967 loc_6_494: ; CODE XREF: PROFITCAL+19j 755 968 ; PROFITCAL+36j ... 969 ifdef FS_FIXES_3 970 pop fs 971 endif 756 972 pop edx 757 973 pop ecx … … 781 997 xor ecx, ecx 782 998 xor edx, edx 783 mov dx, [esi] 999 mov dx, [esi].proseg_flags 784 1000 mov cx, dx 785 1001 and dx, 10h 786 1002 xor cx, dx 787 mov [esi] , cx1003 mov [esi].proseg_flags, cx 788 1004 mov eax, 0FFFFFFFEh 789 1005 call PERF … … 819 1035 xor ecx, ecx 820 1036 xor edx, edx 821 mov cx, [esi] 1037 mov cx, [esi].proseg_flags 822 1038 or cx, 10h 823 mov [esi] , cx1039 mov [esi].proseg_flags, cx 824 1040 825 1041 loc_6_4F8: ; CODE XREF: PerfStop+Cj … … 848 1064 849 1065 call _ProfileHook32 1066 ifdef FS_FIXES_3 1067 push fs 1068 push Dos32TIB 1069 pop fs 1070 endif 850 1071 mov [eax+4], ecx 851 1072 mov [eax+0Ch], ebx … … 855 1076 lea edx, [esp+arg_0] 856 1077 mov [eax+8], edx 857 mov edx, large fs:0 1078 ifdef FS_FIXES_1 1079 push fs 1080 push Dos32TIB 1081 pop fs 1082 mov edx, fs:tib_s.tib_pexchain 1083 pop fs 1084 else 1085 mov edx, fs:tib_s.tib_pexchain 1086 endif 858 1087 mov [eax+18h], edx 859 1088 fstcw word ptr [eax+1Ch] 860 1089 xor eax, eax 861 retn 862 ;$$PROFSETJMP endp 1090 ifdef FS_FIXES_3 1091 pop fs 1092 endif 1093 retn 863 1094 setjmp endp 864 1095 … … 871 1102 longjmp proc near 872 1103 call _ProfileHook32 1104 ifdef FS_FIXES_3 1105 push fs 1106 push Dos32TIB 1107 pop fs 1108 endif 873 1109 push eax 874 1110 push edx 1111 ifdef FS_FIXES_1 1112 push fs 1113 endif 875 1114 push 0 876 push offset _ProfileHook32+53Bh1115 push offset unwind_callback 877 1116 push dword ptr [eax+18h] 878 1117 call DosUnwindException … … 881 1120 882 1121 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1122 unwind_callback: 883 1123 add esp, 0Ch 1124 ifdef FS_FIXES_1 1125 pop fs 1126 endif 884 1127 pop edx 885 1128 pop eax 1129 ifdef FS_FIXES_1 886 1130 mov ecx, $$PROSEGPTR32 887 jecxz short loc_6_5C2 888 mov ebx, large fs:0Ch 1131 jecxz @@jump 1132 jmp @@ok 1133 @@jump: 1134 jmp loc_6_5C2 1135 @@ok: 1136 push fs 1137 push Dos32TIB 1138 pop fs 1139 mov ebx, fs:tib_s.tib_ptib2 1140 pop fs 1141 else 1142 mov ecx, $$PROSEGPTR32 1143 jecxz loc_6_5C2 1144 mov ebx, fs:tib_s.tib_ptib2 1145 endif 889 1146 mov esi, ecx 890 1147 movzx ebx, word ptr [ebx] 891 1148 dec ebx 892 cmp ebx, [esi +64h]1149 cmp ebx, [esi].proseg_maxTid 893 1150 jnb short loc_6_5C2 894 1151 push eax … … 898 1155 mov edi, ebx 899 1156 shl edi, 0Ch 900 add edi, [esi +154h]1157 add edi, [esi].proseg_retStacks 901 1158 902 1159 loc_6_57C: ; CODE XREF: CODE32:000005B0j … … 908 1165 mov edx, [edi+edx+4] 909 1166 mov edx, [edx+4] 910 cmp edx, offset _ProfileHook32+24Ch1167 cmp edx, offset $$PROFTRIGRET32 911 1168 jnz short loc_6_5A2 912 1169 push eax 913 mov eax, [esi +160h]1170 mov eax, [esi].proseg_tidTrigger 914 1171 dec dword ptr [eax+ebx*4] 915 1172 pop eax … … 917 1174 loc_6_5A2: ; CODE XREF: CODE32:00000595j 918 1175 push eax 919 mov eax, [esi +158h]1176 mov eax, [esi].proseg_tidDecNest 920 1177 inc dword ptr [eax+ebx*4] 921 1178 pop eax … … 926 1183 ; CODE32:00000586j 927 1184 neg ecx 928 jz short loc_6_5DD1185 jz short bailout2 929 1186 mov eax, ecx 930 1187 shl ebx, 10h 931 1188 mov bl, 10h 932 call dword ptr [esi+50h] 1189 ifdef FS_FIXES_2 1190 push fs 1191 push Dos32TIB 1192 pop fs 1193 call dword ptr [esi.proseg_pfnINIT_ID4T] 1194 pop fs 1195 else 1196 call dword ptr [esi.proseg_pfnINIT_ID4T] 1197 endif 933 1198 pop edx 934 1199 pop eax … … 940 1205 wait 941 1206 fldcw word ptr [edx+1Ch] 1207 ifdef FS_FIXES_3 1208 pop fs 1209 endif 942 1210 mov ebx, [edx+0Ch] 943 1211 mov esi, [edx+14h] … … 946 1214 mov esp, [edx+8] 947 1215 or eax, eax 948 jnz short loc_6_5DD1216 jnz short bailout1 949 1217 inc eax 950 1218 951 loc_6_5DD:; CODE XREF: CODE32:000005B4j1219 bailout1: ; CODE XREF: CODE32:000005B4j 952 1220 ; CODE32:000005DAj 953 1221 jmp dword ptr [edx+4] 1222 1223 bailout2: 1224 ifdef FS_FIXES_3 1225 pop fs 1226 endif 1227 jmp dword ptr [edx+4] 1228 954 1229 longjmp endp 955 1230 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ … … 963 1238 _ProfileThrow32 proc near 964 1239 push eax 965 mov eax, offset _ProfileHook32+5D0h1240 mov eax, offset ExceptionThrownString 966 1241 call PERF 967 1242 pop eax … … 979 1254 push esi 980 1255 push edi 1256 ifdef FS_FIXES_3 1257 push fs 1258 push Dos32TIB 1259 pop fs 1260 endif 1261 981 1262 mov esi, $$PROSEGPTR32 982 1263 or esi, esi 983 1264 jz short loc_6_67A 984 mov ebx, large fs:0Ch 1265 ifdef FS_FIXES_1 1266 push fs 1267 push Dos32TIB 1268 pop fs 1269 mov ebx, fs:tib_s.tib_ptib2 1270 pop fs 1271 else 1272 mov ebx, fs:tib_s.tib_ptib2 1273 endif 985 1274 movzx ebx, word ptr [ebx] 986 1275 dec ebx 987 cmp ebx, [esi +64h]1276 cmp ebx, [esi].proseg_maxTid 988 1277 jnb short loc_6_67A 989 1278 xor ecx, ecx 990 1279 mov edi, ebx 991 1280 shl edi, 0Ch 992 add edi, [esi +154h]1281 add edi, [esi].proseg_retStacks 993 1282 994 1283 loc_6_636: ; CODE XREF: _ProfileUnwind32+5Ej … … 1000 1289 mov edx, [edi+edx+4] 1001 1290 mov edx, [edx+4] 1002 cmp edx, offset _ProfileHook32+24Ch1291 cmp edx, offset $$PROFTRIGRET32 1003 1292 jnz short loc_6_65C 1004 1293 push eax 1005 mov eax, [esi +160h]1294 mov eax, [esi].proseg_tidTrigger 1006 1295 dec dword ptr [eax+ebx*4] 1007 1296 pop eax … … 1009 1298 loc_6_65C: ; CODE XREF: _ProfileUnwind32+43j 1010 1299 push eax 1011 mov eax, [esi +158h]1300 mov eax, [esi].proseg_tidDecNest 1012 1301 inc dword ptr [eax+ebx*4] 1013 1302 pop eax … … 1022 1311 shl ebx, 10h 1023 1312 mov bl, 10h 1024 call dword ptr [esi+50h] 1313 ifdef FS_FIXES_2 1314 push fs 1315 push Dos32TIB 1316 pop fs 1317 call dword ptr [esi.proseg_pfnINIT_ID4T] 1318 pop fs 1319 else 1320 call dword ptr [esi.proseg_pfnINIT_ID4T] 1321 endif 1025 1322 1026 1323 loc_6_67A: ; CODE XREF: _ProfileUnwind32+Bj 1027 1324 ; _ProfileUnwind32+1Bj ... 1325 ifdef FS_FIXES_3 1326 pop fs 1327 endif 1028 1328 pop edi 1029 1329 pop esi … … 1041 1341 push esi 1042 1342 mov esi, $$PROSEGPTR32 1043 mov ecx, [esi +158h]1343 mov ecx, [esi].proseg_tidDecNest 1044 1344 dec dword ptr [ecx] 1045 1345 mov ecx, 8 1046 1346 1047 1347 loc_6_692: ; CODE XREF: CODE32:000006A7j 1048 push offset _ProfileHook32+696h1049 push offset _ProfileHook32+697h1050 push offset _ProfileHook32+11348 push offset eCal_arg2 1349 push offset eCal_arg1 1350 push offset $$PROFCALL32 1051 1351 jmp $$PROFCALL32 1052 1352 1053 1353 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1054 retn 1055 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1354 eCal_arg2: 1355 retn 1356 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1357 eCal_arg1: 1056 1358 loop loc_6_692 1057 1359 push eax 1058 mov eax, [esi +158h]1360 mov eax, [esi].proseg_tidDecNest 1059 1361 inc dword ptr [eax] 1060 1362 pop eax 1061 1363 pop esi 1062 1364 retn 1063 ; Type idx: 5131064 1365 eCal endp 1366 ; Type idx: 513 1065 1367 1066 1368 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ … … 1092 1394 public CrashAndBurn 1093 1395 CrashAndBurn proc near ; CODE XREF: longjmp+1Bj DoInit+1Fj ... 1094 mov [esi +4], edx1095 mov [esi +8], eax1396 mov [esi].proseg_rc, edx 1397 mov [esi].proseg_rcSys, eax 1096 1398 push eax 1097 1399 push 1 … … 1110 1412 ; $$PROFTRIG32+20p ... 1111 1413 pushad 1414 ifdef FS_FIXES_3 1415 push fs 1416 push Dos32TIB 1417 pop fs 1418 endif 1112 1419 xor ebx, ebx 1113 1420 push ebx 1114 1421 mov eax, esp 1422 ifdef FS_FIXES_1 1423 push fs 1424 endif 1115 1425 push eax 1116 1426 lea eax, logDllName ; "CPPPAN40" … … 1120 1430 call DosLoadModule 1121 1431 add esp, 10h 1432 ifdef FS_FIXES_1 1433 pop fs 1434 endif 1122 1435 mov edx, 0FAD8h 1123 1436 or eax, eax … … 1125 1438 pop edx 1126 1439 mov ecx, 7 1440 ifdef FS_FIXES_1 1441 push fs 1442 endif 1443 1127 1444 lea edi, initAdr 1128 1445 push edi … … 1133 1450 call DosQueryProcAddr 1134 1451 add esp, 10h 1452 ifdef FS_FIXES_1 1453 pop fs 1454 endif 1135 1455 mov edx, 0FB3Ch 1136 1456 or eax, eax 1137 1457 jnz short CrashAndBurn 1138 1458 xor ebx, ebx 1459 1139 1460 push ebx 1140 1461 push ebx 1141 1462 mov eax, esp 1142 mov edx, offset _ProfileHook32+66Eh 1143 mov ecx, offset _ProfileHook32+6A5h 1463 mov edx, offset eCal 1464 mov ecx, offset uCal 1465 ifdef FS_FIXES_1 1466 push fs 1467 endif 1144 1468 lea esi, $$PROSEGPTR32 1145 1469 push esi … … 1147 1471 call initAdr 1148 1472 add esp, 10h 1473 ifdef FS_FIXES_1 1474 pop fs 1475 endif 1149 1476 or eax, eax 1150 1477 pop edx 1151 1478 pop eax 1152 1479 jnz CrashAndBurn 1480 ifdef FS_FIXES_3 1481 pop fs 1482 endif 1153 1483 popad 1154 1484 mov esi, $$PROSEGPTR32 … … 1164 1494 checkForUnwindAtCall proc near ; CODE XREF: $$PROFCALL32+B0p 1165 1495 ; $$PROFTRIG32+ACp ... 1166 test word ptr [esi], 40h 1496 ifdef FS_FIXES_3 1497 push fs 1498 push Dos32TIB 1499 pop fs 1500 endif 1501 test word ptr [esi].proseg_flags, 40h 1167 1502 jz short locret_6_7D0 1168 test word ptr [esi] , 80h1503 test word ptr [esi].proseg_flags, 80h 1169 1504 jz short locret_6_7D0 1170 1505 push edx … … 1197 1532 mov bl, 10h 1198 1533 mov eax, ecx 1199 call dword ptr [esi+50h] 1534 ifdef FS_FIXES_2 1535 push fs 1536 push Dos32TIB 1537 pop fs 1538 call dword ptr [esi.proseg_pfnINIT_ID4T] 1539 pop fs 1540 else 1541 call dword ptr [esi.proseg_pfnINIT_ID4T] 1542 endif 1200 1543 pop edi 1201 1544 pop ebx … … 1207 1550 locret_6_7D0: ; CODE XREF: checkForUnwindAtCall+5j 1208 1551 ; checkForUnwindAtCall+Cj 1552 ifdef FS_FIXES_3 1553 pop fs 1554 endif 1209 1555 retn 1210 1556 checkForUnwindAtCall endp … … 1218 1564 checkForUnwindAtReturn proc near ; CODE XREF: $$PROFRET32+33p 1219 1565 ; $$PROFTRIGRET32+33p 1220 test word ptr [esi], 40h 1566 ifdef FS_FIXES_3 1567 push fs 1568 push Dos32TIB 1569 pop fs 1570 endif 1571 test word ptr [esi].proseg_flags, 40h 1221 1572 jz short locret_6_82F 1222 test word ptr [esi] , 80h1573 test word ptr [esi].proseg_flags, 80h 1223 1574 jz short locret_6_82F 1224 1575 cmp dword ptr [edi], 10h … … 1255 1606 mov bl, 10h 1256 1607 mov eax, ecx 1257 call dword ptr [esi+50h] 1608 ifdef FS_FIXES_2 1609 push fs 1610 push Dos32TIB 1611 pop fs 1612 call dword ptr [esi.proseg_pfnINIT_ID4T] 1613 pop fs 1614 else 1615 call dword ptr [esi.proseg_pfnINIT_ID4T] 1616 endif 1258 1617 pop edi 1259 1618 pop ebx … … 1265 1624 locret_6_82F: ; CODE XREF: checkForUnwindAtReturn+5j 1266 1625 ; checkForUnwindAtReturn+Cj ... 1626 ifdef FS_FIXES_3 1627 pop fs 1628 endif 1267 1629 retn 1268 1630 checkForUnwindAtReturn endp … … 1276 1638 verifyStackFrame proc near ; CODE XREF: $$PROFCALL32+8Ep 1277 1639 ; $$PROFTRIG32+7Ap ... 1640 ifdef FS_FIXES_3 1641 push fs 1642 push Dos32TIB 1643 pop fs 1644 endif 1278 1645 push edi 1279 test word ptr [esi] , 40h1646 test word ptr [esi].proseg_flags, 40h 1280 1647 jz short loc_6_85F 1281 test word ptr [esi] , 80h1648 test word ptr [esi].proseg_flags, 80h 1282 1649 jz short loc_6_85F 1283 1650 mov edi, ebx 1284 1651 shl edi, 0Ch 1285 add edi, [esi +154h]1652 add edi, [esi].proseg_retStacks 1286 1653 cmp dword ptr [edi], 0 1287 1654 jz short loc_6_85F … … 1316 1683 loc_6_879: ; CODE XREF: verifyStackFrame+31j 1317 1684 pop edi 1685 ifdef FS_FIXES_3 1686 pop fs 1687 endif 1318 1688 retn 1319 1689 verifyStackFrame endp … … 1330 1700 mov ebp, esp 1331 1701 pushfd 1702 ifdef FS_FIXES_3 1703 push fs 1704 push Dos32TIB 1705 pop fs 1706 endif 1332 1707 push esi 1333 1708 mov esi, $$PROSEGPTR32 1334 1709 or esi, esi 1710 jz loc_6_8EE 1711 test word ptr [esi].proseg_flags, 2 1335 1712 jz short loc_6_8EE 1336 test word ptr [esi], 2 1337 jz short loc_6_8EE 1338 test word ptr [esi], 10h 1713 test word ptr [esi].proseg_flags, 10h 1339 1714 jnz short loc_6_8EE 1340 1715 push edi 1341 1716 push ebx 1342 1717 push ecx 1343 mov ebx, large fs:0Ch 1718 ifdef FS_FIXES_1 1719 push fs 1720 push Dos32TIB 1721 pop fs 1722 mov ebx, fs:tib_s.tib_ptib2 1723 pop fs 1724 else 1725 mov ebx, fs:tib_s.tib_ptib2 1726 endif 1344 1727 mov ebx, [ebx] 1345 cmp ebx, [esi +64h]1728 cmp ebx, [esi].proseg_maxTid 1346 1729 ja short loc_6_8EB 1347 1730 dec ebx 1348 mov eax, [esi +160h]1731 mov eax, [esi].proseg_tidTrigger 1349 1732 cmp dword ptr [eax+ebx*4], 0 1350 1733 jz short loc_6_8EB … … 1353 1736 mov eax, [ebp+4] 1354 1737 push edx 1355 mov ecx, [esi +164h]1738 mov ecx, [esi].conditionalExit 1356 1739 mov edx, [ecx+edi*4] 1357 1740 cmp edx, 0FFFFFFFFh … … 1361 1744 push ebx 1362 1745 push edi 1363 call dword ptr [esi+58h] 1746 ifdef FS_FIXES_2 1747 push fs 1748 push Dos32TIB 1749 pop fs 1750 call dword ptr [esi.proseg_pfnINIT_ID44T] 1751 pop fs 1752 else 1753 call dword ptr [esi.proseg_pfnINIT_ID44T] 1754 endif 1364 1755 pop edi 1365 1756 pop ebx 1366 1757 pop eax 1367 mov ecx, [esi +164h]1758 mov ecx, [esi].conditionalExit 1368 1759 mov dword ptr [ecx+edi*4], 0FFFFFFFFh 1369 1760 … … 1371 1762 mov bl, 4 1372 1763 pop edx 1373 call dword ptr [esi+58h] 1764 ifdef FS_FIXES_2 1765 push fs 1766 push Dos32TIB 1767 pop fs 1768 call dword ptr [esi.proseg_pfnINIT_ID44T] 1769 pop fs 1770 else 1771 call dword ptr [esi.proseg_pfnINIT_ID44T] 1772 endif 1374 1773 1375 1774 loc_6_8EB: ; CODE XREF: _ProfileEnterParagraph32+2Cj … … 1382 1781 ; _ProfileEnterParagraph32+14j ... 1383 1782 pop esi 1783 ifdef FS_FIXES_3 1784 pop fs 1785 endif 1384 1786 popfd 1385 1787 pop ebp … … 1398 1800 mov ebp, esp 1399 1801 pushfd 1802 ifdef FS_FIXES_3 1803 push fs 1804 push Dos32TIB 1805 pop fs 1806 endif 1400 1807 push esi 1401 1808 mov esi, $$PROSEGPTR32 1402 1809 or esi, esi 1403 1810 jz short loc_6_939 1404 test word ptr [esi] , 21811 test word ptr [esi].proseg_flags, 2 1405 1812 jz short loc_6_939 1406 test word ptr [esi] , 10h1813 test word ptr [esi].proseg_flags, 10h 1407 1814 jnz short loc_6_939 1408 1815 push ebx 1409 mov ebx, large fs:0Ch 1816 ifdef FS_FIXES_1 1817 push fs 1818 push Dos32TIB 1819 pop fs 1820 mov ebx, fs:tib_s.tib_ptib2 1821 pop fs 1822 else 1823 mov ebx, fs:tib_s.tib_ptib2 1824 endif 1410 1825 mov ebx, [ebx] 1411 cmp ebx, [esi +64h]1826 cmp ebx, [esi].proseg_maxTid 1412 1827 ja short loc_6_938 1413 1828 dec ebx 1414 mov edx, [esi +160h]1829 mov edx, [esi].proseg_tidTrigger 1415 1830 cmp dword ptr [edx+ebx*4], 0 1416 1831 jz short loc_6_938 … … 1419 1834 shl ebx, 10h 1420 1835 mov bl, 5 1421 call dword ptr [esi+58h] 1836 ifdef FS_FIXES_2 1837 push fs 1838 push Dos32TIB 1839 pop fs 1840 call dword ptr [esi.proseg_pfnINIT_ID44T] 1841 pop fs 1842 else 1843 call dword ptr [esi.proseg_pfnINIT_ID44T] 1844 endif 1422 1845 1423 1846 loc_6_938: ; CODE XREF: _ProfileExitParagraph32+2Aj … … 1428 1851 ; _ProfileExitParagraph32+14j ... 1429 1852 pop esi 1853 ifdef FS_FIXES_3 1854 pop fs 1855 endif 1430 1856 popfd 1431 1857 pop ebp … … 1441 1867 _ProfileConditionalExit32 proc near 1442 1868 pushfd 1869 ifdef FS_FIXES_3 1870 push fs 1871 push Dos32TIB 1872 pop fs 1873 endif 1443 1874 push esi 1444 1875 mov esi, $$PROSEGPTR32 1445 1876 or esi, esi 1446 1877 jz short loc_6_973 1447 test word ptr [esi] , 21878 test word ptr [esi].proseg_flags, 2 1448 1879 jz short loc_6_973 1449 test word ptr [esi] , 10h1880 test word ptr [esi].proseg_flags, 10h 1450 1881 jnz short loc_6_973 1451 1882 push ebx 1452 1883 push ecx 1453 mov ebx, large fs:0Ch 1884 ifdef FS_FIXES_1 1885 push fs 1886 push Dos32TIB 1887 pop fs 1888 mov ebx, fs:tib_s.tib_ptib2 1889 pop fs 1890 else 1891 mov ebx, fs:tib_s.tib_ptib2 1892 endif 1454 1893 mov ebx, [ebx] 1455 cmp ebx, [esi +64h]1894 cmp ebx, [esi].proseg_maxTid 1456 1895 ja short loc_6_971 1457 1896 dec ebx 1458 mov ecx, [esi +164h]1897 mov ecx, [esi].conditionalExit 1459 1898 mov [ecx+ebx*4], eax 1460 1899 … … 1466 1905 ; _ProfileConditionalExit32+11j ... 1467 1906 pop esi 1907 ifdef FS_FIXES_3 1908 pop fs 1909 endif 1468 1910 popfd 1469 1911 retn … … 1478 1920 _ProfileCancelExit32 proc near 1479 1921 pushfd 1922 ifdef FS_FIXES_3 1923 push fs 1924 push Dos32TIB 1925 pop fs 1926 endif 1480 1927 push esi 1481 1928 mov esi, $$PROSEGPTR32 1482 1929 or esi, esi 1483 1930 jz short loc_6_9B0 1484 test word ptr [esi] , 21931 test word ptr [esi].proseg_flags, 2 1485 1932 jz short loc_6_9B0 1486 test word ptr [esi] , 10h1933 test word ptr [esi].proseg_flags, 10h 1487 1934 jnz short loc_6_9B0 1488 1935 push ebx 1489 1936 push ecx 1490 mov ebx, large fs:0Ch 1937 ifdef FS_FIXES_1 1938 push fs 1939 push Dos32TIB 1940 pop fs 1941 mov ebx, fs:tib_s.tib_ptib2 1942 pop fs 1943 else 1944 mov ebx, fs:tib_s.tib_ptib2 1945 endif 1491 1946 mov ebx, [ebx] 1492 cmp ebx, [esi +64h]1947 cmp ebx, [esi].proseg_maxTid 1493 1948 ja short loc_6_9AE 1494 1949 dec ebx 1495 mov ecx, [esi +164h]1950 mov ecx, [esi].conditionalExit 1496 1951 mov dword ptr [ecx+ebx*4], 0FFFFFFFFh 1497 1952 … … 1503 1958 ; _ProfileCancelExit32+11j ... 1504 1959 pop esi 1960 ifdef FS_FIXES_3 1961 pop fs 1962 endif 1505 1963 popfd 1506 1964 retn … … 1518 1976 mov ebp, esp 1519 1977 pushfd 1978 ifdef FS_FIXES_3 1979 push fs 1980 push Dos32TIB 1981 pop fs 1982 endif 1520 1983 push esi 1521 1984 mov esi, $$PROSEGPTR32 1522 1985 or esi, esi 1523 1986 jz short loc_6_A11 1524 test word ptr [esi] , 21987 test word ptr [esi].proseg_flags, 2 1525 1988 jz short loc_6_A11 1526 test word ptr [esi] , 10h1989 test word ptr [esi].proseg_flags, 10h 1527 1990 jnz short loc_6_A11 1528 1991 push ebx 1529 1992 push ecx 1530 mov ebx, large fs:0Ch 1993 ifdef FS_FIXES_1 1994 push fs 1995 push Dos32TIB 1996 pop fs 1997 mov ebx, fs:tib_s.tib_ptib2 1998 pop fs 1999 else 2000 mov ebx, fs:tib_s.tib_ptib2 2001 endif 1531 2002 mov ebx, [ebx] 1532 cmp ebx, [esi +64h]2003 cmp ebx, [esi].proseg_maxTid 1533 2004 ja short loc_6_A0F 1534 2005 dec ebx 1535 mov ecx, [esi +160h]2006 mov ecx, [esi].proseg_tidTrigger 1536 2007 cmp dword ptr [ecx+ebx*4], 0 1537 2008 jz short loc_6_A0F 1538 2009 mov ecx, [ebp+4] 1539 mov [esi +148h], ecx1540 mov [esi +14Ch], eax1541 mov [esi +150h], edx1542 mov dword ptr [esi +144h], 22010 mov [esi._parm ], ecx 2011 mov [esi._parm+4h], eax 2012 mov [esi._parm+8h], edx 2013 mov dword ptr [esi]._command, 2 1543 2014 int 3 ; Trap to Debugger 1544 2015 wait … … 1553 2024 ; _ProfileNameString32+14j ... 1554 2025 pop esi 2026 ifdef FS_FIXES_3 2027 pop fs 2028 endif 1555 2029 popfd 1556 2030 pop ebp
Note:
See TracChangeset
for help on using the changeset viewer.