[8367] | 1 | ; $Id: cppopa4.asm,v 1.4 2002-05-02 23:15:38 bird Exp $
|
---|
[8280] | 2 | ;
|
---|
[8282] | 3 |
|
---|
| 4 | ;
|
---|
| 5 | ; Copyright 1990-1998 IBM Corp.
|
---|
| 6 | ;
|
---|
| 7 |
|
---|
| 8 | ;
|
---|
[8281] | 9 | ; File Name : G:\fun\cpppan40.obj\cpppan40.obj
|
---|
| 10 | ; Format : Object Module Format (OMF/IBM)
|
---|
| 11 | ; Module name : cppopa4.asm
|
---|
| 12 | ; Translator : ALP: Assembly Language Processor Ver 4.00.002
|
---|
| 13 | ; Debug info type : Unknown
|
---|
[8280] | 14 |
|
---|
| 15 |
|
---|
| 16 |
|
---|
| 17 | .586
|
---|
[8281] | 18 | .MODEL FLAT
|
---|
[8280] | 19 |
|
---|
[8282] | 20 | ;
|
---|
| 21 | ; Defined Constants And Macros
|
---|
| 22 | ;
|
---|
[8280] | 23 |
|
---|
[8281] | 24 | ;
|
---|
[8282] | 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 |
|
---|
| 43 |
|
---|
| 44 | ;
|
---|
[8281] | 45 | ; Segment definitionas.
|
---|
| 46 | ;
|
---|
| 47 | DATA32 segment dword public 'DATA' use32
|
---|
| 48 | DATA32 ends
|
---|
| 49 | CONST32 segment dword public 'DATA' use32
|
---|
| 50 | CONST32 ends
|
---|
| 51 | BSS32 segment dword public 'DATA' use32
|
---|
| 52 | BSS32 ends
|
---|
[8280] | 53 |
|
---|
[8281] | 54 | DGROUP group DATA32, CONST32, BSS32
|
---|
[8280] | 55 |
|
---|
[8281] | 56 | CODE32 segment dword public 'CODE' use32
|
---|
| 57 | CODE32 ends
|
---|
[8280] | 58 |
|
---|
| 59 |
|
---|
[8281] | 60 | ;
|
---|
| 61 | ; Externals
|
---|
| 62 | ;
|
---|
| 63 | extrn DosExit:near
|
---|
[8280] | 64 | extrn DosSleep:far
|
---|
[8281] | 65 | extrn DosLoadModule:near
|
---|
| 66 | extrn DosQueryProcAddr:near
|
---|
| 67 | extrn DosUnwindException:near
|
---|
[8282] | 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
|
---|
[8280] | 75 |
|
---|
| 76 |
|
---|
[8281] | 77 | ;
|
---|
| 78 | ; Global Variables
|
---|
| 79 | ;
|
---|
| 80 | DATA32 segment
|
---|
[8280] | 81 | ; assume cs:DATA32
|
---|
| 82 | public $$PROSEGPTR32
|
---|
[8281] | 83 | $$PROSEGPTR32 dd 0 ; DATA XREF: $$PROFCALL32+5r
|
---|
| 84 | ; $$PROFCALL32+2Fr ...
|
---|
| 85 | initAdr dd 0 ; DATA XREF: DoInit+27o
|
---|
| 86 | ; DoInit+63r
|
---|
| 87 | alreadyTriedInit dd 0 ; DATA XREF: $$PROFCALL32+13r
|
---|
| 88 | ; $$PROFCALL32+25w ...
|
---|
[8280] | 89 | DATA32 ends
|
---|
| 90 |
|
---|
| 91 |
|
---|
| 92 | ;
|
---|
| 93 | ; Structures and Typedefs
|
---|
| 94 | ;
|
---|
[8281] | 95 | PROSEG struc
|
---|
| 96 | proseg_flags dw ?
|
---|
| 97 | proseg_unused dw ?
|
---|
| 98 | proseg_rc dd ?
|
---|
| 99 | proseg_rcSys dd ?
|
---|
| 100 | proseg_clkIntCtr dd ?
|
---|
| 101 | proseg_initTics_low dd ?
|
---|
| 102 | proseg_initTics_high dd ?
|
---|
| 103 | proseg_exitTics_low dd ?
|
---|
| 104 | proseg_exitTics_high dd ?
|
---|
| 105 | proseg_preTics_low dd ?
|
---|
| 106 | proseg_preTics_high dd ?
|
---|
| 107 | proseg_postTics_low dd ?
|
---|
| 108 | proseg_postTics_high dd ?
|
---|
[8280] | 109 | proseg_clockFrequency_low dd ?
|
---|
| 110 | proseg_clockFrequency_high dd ?
|
---|
[8281] | 111 | proseg_logBuf1st dd ?
|
---|
| 112 | proseg_logBufMax dd ?
|
---|
| 113 | proseg_logBufNext dd ?
|
---|
| 114 | proseg_logBufWrap dd ?
|
---|
[8282] | 115 | if 0
|
---|
[8281] | 116 | proseg_procAddrs dd 7 dup(?)
|
---|
[8282] | 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
|
---|
[8281] | 126 | proseg_maxTid dd ?
|
---|
| 127 | proseg_ptrCurTid dd ?
|
---|
| 128 | proseg_maxSuffixBytes dd ?
|
---|
| 129 | proseg_usedSuffixBytes dd ?
|
---|
| 130 | proseg_ptrSuffixBytes dd ?
|
---|
| 131 | proseg_ticsEntry dd ?
|
---|
| 132 | proseg_ticsExit dd ?
|
---|
| 133 | proseg_ticsUser dd ?
|
---|
| 134 | proseg_curTidNum dd ?
|
---|
| 135 | proseg_extraDDH dd ?
|
---|
| 136 | proseg_appDDH dd ?
|
---|
| 137 | proseg_logDev db 16 dup(?)
|
---|
| 138 | proseg_logDLL db 16 dup(?)
|
---|
| 139 | proseg_procNames db 112 dup(?)
|
---|
| 140 | _counterArray dd 9 dup(?)
|
---|
| 141 | _command dd ?
|
---|
| 142 | _parm dd 3 dup(?)
|
---|
| 143 | proseg_retStacks dd ?
|
---|
| 144 | proseg_tidDecNest dd ?
|
---|
| 145 | proseg_tidMaxNest dd ?
|
---|
| 146 | proseg_tidTrigger dd ?
|
---|
| 147 | conditionalExit dd ?
|
---|
| 148 | _cpuType dd ?
|
---|
| 149 | _lockFlag dd ?
|
---|
| 150 | proseg_reserved dd 2 dup(?)
|
---|
| 151 | PROSEG ends
|
---|
[8280] | 152 |
|
---|
[8281] | 153 | TVersionId struc
|
---|
[8280] | 154 | _versionNumber dd ?
|
---|
| 155 | _releaseNumber dd ?
|
---|
| 156 | _modificationLevel dd ?
|
---|
| 157 | _prosegSize dd ?
|
---|
[8281] | 158 | TVersionId ends
|
---|
[8280] | 159 |
|
---|
[8281] | 160 | TStackHeader struc
|
---|
[8280] | 161 | _offsetOfTop dd ?
|
---|
[8281] | 162 | TStackHeader ends
|
---|
[8280] | 163 |
|
---|
[8281] | 164 | TStackEntry struc
|
---|
[8280] | 165 | _returnAddr dd ?
|
---|
| 166 | _frameAddr dd ?
|
---|
[8281] | 167 | TStackEntry ends
|
---|
[8280] | 168 |
|
---|
[8281] | 169 | tib2_s struc
|
---|
[8280] | 170 | tib2_ultid dd ?
|
---|
| 171 | tib2_ulpri dd ?
|
---|
| 172 | tib2_version dd ?
|
---|
| 173 | tib2_usMCCount dw ?
|
---|
| 174 | tib2_fMCForceFlag dw ?
|
---|
[8281] | 175 | tib2_s ends
|
---|
[8280] | 176 |
|
---|
[8281] | 177 | tib_s struc
|
---|
[8280] | 178 | tib_pexchain dd ?
|
---|
| 179 | tib_pstack dd ?
|
---|
| 180 | tib_pstacklimit dd ?
|
---|
| 181 | tib_ptib2 dd ?
|
---|
| 182 | tib_version dd ?
|
---|
| 183 | tib_arbpointer dd ?
|
---|
[8281] | 184 | tib_s ends
|
---|
[8280] | 185 |
|
---|
[8281] | 186 | pib_s struc
|
---|
[8280] | 187 | pib_ulpid dd ?
|
---|
| 188 | pib_ulppid dd ?
|
---|
| 189 | pib_hmte dd ?
|
---|
| 190 | pib_pchcmd dd ?
|
---|
| 191 | pib_pchenv dd ?
|
---|
| 192 | pib_flstatus dd ?
|
---|
| 193 | pib_ultype dd ?
|
---|
[8281] | 194 | pib_s ends
|
---|
[8280] | 195 |
|
---|
| 196 |
|
---|
[8281] | 197 | ;
|
---|
| 198 | ; Code!
|
---|
| 199 | ;
|
---|
| 200 | CODE32 segment
|
---|
| 201 | ; assume cs:CODE32
|
---|
| 202 | ; assume cs:FLAT
|
---|
| 203 | assume es:nothing, ss:nothing, ds:FLAT, fs:nothing, gs:nothing
|
---|
[8280] | 204 |
|
---|
| 205 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 206 | public _ProfileHook32
|
---|
| 207 | _ProfileHook32 proc near ; CODE XREF: $$PROFSETJMPp longjmpp
|
---|
| 208 | ; DATA XREF: ...
|
---|
| 209 | retn
|
---|
| 210 | _ProfileHook32 endp
|
---|
| 211 |
|
---|
| 212 |
|
---|
[8281] | 213 | ;
|
---|
[8280] | 214 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
[8281] | 215 | ;
|
---|
[8280] | 216 | public $$PROFCALL32
|
---|
| 217 | $$PROFCALL32 proc near ; CODE XREF: eCal+23j uCal+5p
|
---|
| 218 |
|
---|
| 219 | var_14 = dword ptr -14h
|
---|
| 220 | arg_0 = dword ptr 4
|
---|
| 221 |
|
---|
| 222 | pushfd
|
---|
| 223 | push ebx
|
---|
| 224 | push esi
|
---|
| 225 | push edx
|
---|
| 226 | push eax
|
---|
[8282] | 227 | ifdef FS_FIXES_3
|
---|
| 228 | push fs
|
---|
| 229 | push Dos32TIB
|
---|
| 230 | pop fs
|
---|
| 231 | endif
|
---|
[8280] | 232 | mov esi, $$PROSEGPTR32
|
---|
[8282] | 233 | ASSUME esi:ptr PROSEG
|
---|
[8280] | 234 | or esi, esi
|
---|
| 235 | jnz short loc_6_4E
|
---|
| 236 | nop
|
---|
| 237 | nop
|
---|
| 238 | nop
|
---|
| 239 | nop
|
---|
| 240 | mov eax, alreadyTriedInit
|
---|
| 241 | or eax, eax
|
---|
| 242 | jnz loc_6_FD
|
---|
| 243 | call DoInit
|
---|
| 244 | mov alreadyTriedInit, 1
|
---|
| 245 | mov esi, $$PROSEGPTR32
|
---|
| 246 | or esi, esi
|
---|
| 247 | jz loc_6_FD
|
---|
| 248 |
|
---|
| 249 | loc_6_4E: ; CODE XREF: $$PROFCALL32+Dj
|
---|
[8282] | 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
|
---|
[8280] | 260 | jnz loc_6_FD
|
---|
| 261 | movzx ebx, word ptr [ebx]
|
---|
| 262 | dec ebx
|
---|
[8282] | 263 | cmp ebx, [esi.proseg_maxTid]
|
---|
[8280] | 264 | jnb loc_6_FD
|
---|
[8282] | 265 | mov eax, [esi.conditionalExit]
|
---|
[8280] | 266 | mov dword ptr [eax+ebx*4], 0FFFFFFFFh
|
---|
[8282] | 267 | mov eax, [esi.proseg_tidTrigger]
|
---|
[8280] | 268 | cmp dword ptr [eax+ebx*4], 0
|
---|
[8282] | 269 | jz loc_6_FD
|
---|
[8280] | 270 | nop
|
---|
| 271 | nop
|
---|
| 272 | nop
|
---|
| 273 | nop
|
---|
[8282] | 274 | mov eax, [esi.proseg_tidDecNest]
|
---|
[8280] | 275 | dec dword ptr [eax+ebx*4]
|
---|
[8282] | 276 | js loc_6_104
|
---|
[8280] | 277 | nop
|
---|
| 278 | nop
|
---|
| 279 | nop
|
---|
| 280 | nop
|
---|
| 281 | push edi
|
---|
[8282] | 282 | lea eax, [esp+18h + FS_FIXES_STACK]
|
---|
[8280] | 283 | call verifyStackFrame
|
---|
| 284 | or eax, eax
|
---|
| 285 | jnz short loc_6_103
|
---|
[8282] | 286 | mov eax, offset $$PROFRET32
|
---|
| 287 | xchg eax, [esp+18h+arg_0 + FS_FIXES_STACK]
|
---|
[8280] | 288 | mov edi, ebx
|
---|
| 289 | shl edi, 0Ch
|
---|
[8282] | 290 | add edi, [esi.proseg_retStacks]
|
---|
[8280] | 291 | push eax
|
---|
[8282] | 292 | lea eax, [esp+1Ch + FS_FIXES_STACK]
|
---|
[8280] | 293 | call checkForUnwindAtCall
|
---|
| 294 | pop eax
|
---|
| 295 | add dword ptr [edi], 8
|
---|
| 296 | add edi, [edi]
|
---|
| 297 | mov [edi], eax
|
---|
[8282] | 298 | lea eax, [esp+18h + FS_FIXES_STACK]
|
---|
[8280] | 299 | mov [edi+4], eax
|
---|
| 300 | mov eax, [eax]
|
---|
[8282] | 301 | test dword ptr [esi.proseg_flags], 20h
|
---|
[8280] | 302 | jz short loc_6_F4
|
---|
| 303 | nop
|
---|
| 304 | nop
|
---|
| 305 | nop
|
---|
| 306 | nop
|
---|
| 307 | shl ebx, 10h
|
---|
| 308 | mov bl, 1
|
---|
[8282] | 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
|
---|
[8280] | 319 | jmp short loc_6_FC
|
---|
| 320 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8281] | 321 | ; align 4
|
---|
| 322 | nop
|
---|
| 323 | nop
|
---|
| 324 | nop
|
---|
[8280] | 325 |
|
---|
| 326 | loc_6_F4: ; CODE XREF: $$PROFCALL32+CCj
|
---|
| 327 | shl ebx, 10h
|
---|
| 328 | mov bl, 40h ; '@'
|
---|
[8282] | 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
|
---|
[8280] | 338 |
|
---|
| 339 | loc_6_FC: ; CODE XREF: $$PROFCALL32+DEj
|
---|
| 340 | pop edi
|
---|
| 341 |
|
---|
| 342 | loc_6_FD: ; CODE XREF: $$PROFCALL32+1Aj
|
---|
| 343 | ; $$PROFCALL32+37j ...
|
---|
[8282] | 344 | ifdef FS_FIXES_3
|
---|
| 345 | pop fs
|
---|
| 346 | endif
|
---|
[8280] | 347 | pop eax
|
---|
| 348 | pop edx
|
---|
| 349 | pop esi
|
---|
| 350 | pop ebx
|
---|
| 351 | popfd
|
---|
| 352 | retn
|
---|
| 353 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 354 |
|
---|
| 355 | loc_6_103: ; CODE XREF: $$PROFCALL32+95j
|
---|
| 356 | pop edi
|
---|
| 357 |
|
---|
| 358 | loc_6_104: ; CODE XREF: $$PROFCALL32+83j
|
---|
[8282] | 359 | mov eax, [esi.proseg_tidDecNest]
|
---|
[8280] | 360 | inc dword ptr [eax+ebx*4]
|
---|
| 361 | jmp short loc_6_FD
|
---|
| 362 | $$PROFCALL32 endp
|
---|
| 363 |
|
---|
| 364 | ; Type idx: 513
|
---|
| 365 |
|
---|
| 366 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 367 |
|
---|
| 368 |
|
---|
| 369 | public $$PROFRET32
|
---|
| 370 | $$PROFRET32 proc near
|
---|
[8282] | 371 | ; assume esi:nothing
|
---|
[8280] | 372 |
|
---|
| 373 | ;var_8 = byte ptr -8
|
---|
| 374 | var_8 = dword ptr -8
|
---|
| 375 | var_4 = dword ptr -4
|
---|
| 376 |
|
---|
| 377 | lea esp, [esp-4]
|
---|
| 378 | pushfd
|
---|
| 379 | push eax
|
---|
| 380 | push ebx
|
---|
| 381 | push esi
|
---|
| 382 | push edi
|
---|
[8282] | 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
|
---|
[8280] | 397 | mov esi, $$PROSEGPTR32
|
---|
| 398 | movzx ebx, word ptr [ebx]
|
---|
| 399 | dec ebx
|
---|
[8282] | 400 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 401 | inc dword ptr [eax+ebx*4]
|
---|
| 402 | mov edi, ebx
|
---|
| 403 | shl edi, 0Ch
|
---|
[8282] | 404 | add edi, [esi].proseg_retStacks
|
---|
[8280] | 405 | push eax
|
---|
[8282] | 406 | lea eax, [esp+18h+var_4 + FS_FIXES_STACK]
|
---|
[8280] | 407 | call checkForUnwindAtReturn
|
---|
| 408 | pop eax
|
---|
| 409 | sub dword ptr [edi], 8
|
---|
| 410 | add edi, [edi]
|
---|
| 411 | mov eax, [edi+8]
|
---|
[8282] | 412 | mov [esp+14h + FS_FIXES_STACK], eax
|
---|
[8280] | 413 | shl ebx, 10h
|
---|
| 414 | mov bl, 0
|
---|
[8282] | 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
|
---|
[8280] | 427 | pop edi
|
---|
| 428 | pop esi
|
---|
| 429 | pop ebx
|
---|
| 430 | pop eax
|
---|
| 431 | popfd
|
---|
| 432 | retn
|
---|
| 433 | $$PROFRET32 endp
|
---|
| 434 |
|
---|
| 435 | ; Type idx: 513
|
---|
| 436 |
|
---|
| 437 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 438 |
|
---|
| 439 |
|
---|
| 440 | public $$PROFTRIG32
|
---|
| 441 | $$PROFTRIG32 proc near
|
---|
| 442 |
|
---|
| 443 | var_14 = dword ptr -14h
|
---|
| 444 | arg_0 = dword ptr 4
|
---|
| 445 |
|
---|
| 446 | pushfd
|
---|
| 447 | push ebx
|
---|
| 448 | push esi
|
---|
| 449 | push edx
|
---|
| 450 | push eax
|
---|
[8282] | 451 | ifdef FS_FIXES_3
|
---|
| 452 | push fs
|
---|
| 453 | push Dos32TIB
|
---|
| 454 | pop fs
|
---|
| 455 | endif
|
---|
[8280] | 456 | mov esi, $$PROSEGPTR32
|
---|
| 457 | or esi, esi
|
---|
| 458 | jnz short loc_6_19F
|
---|
| 459 | nop
|
---|
| 460 | nop
|
---|
| 461 | nop
|
---|
| 462 | nop
|
---|
| 463 | mov eax, alreadyTriedInit
|
---|
| 464 | or eax, eax
|
---|
| 465 | jnz loc_6_24A
|
---|
| 466 | call DoInit
|
---|
| 467 | mov alreadyTriedInit, 1
|
---|
| 468 | mov esi, $$PROSEGPTR32
|
---|
| 469 | or esi, esi
|
---|
| 470 | jz loc_6_24A
|
---|
| 471 |
|
---|
| 472 | loc_6_19F: ; CODE XREF: $$PROFTRIG32+Dj
|
---|
[8282] | 473 | test dword ptr [esi].proseg_flags, 10h
|
---|
[8280] | 474 | jnz loc_6_24A
|
---|
[8282] | 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
|
---|
[8280] | 484 | movzx ebx, word ptr [ebx]
|
---|
| 485 | dec ebx
|
---|
[8282] | 486 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 487 | jnb loc_6_24A
|
---|
[8282] | 488 | mov eax, [esi].conditionalExit
|
---|
[8280] | 489 | mov dword ptr [eax+ebx*4], 0FFFFFFFFh
|
---|
[8282] | 490 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 491 | dec dword ptr [eax+ebx*4]
|
---|
[8282] | 492 | js loc_6_251
|
---|
[8280] | 493 | push edi
|
---|
[8282] | 494 | lea eax, [esp+18h + FS_FIXES_STACK]
|
---|
[8280] | 495 | call verifyStackFrame
|
---|
| 496 | or eax, eax
|
---|
[8282] | 497 | jnz loc_6_250
|
---|
| 498 | mov eax, offset $$PROFTRIGRET32
|
---|
| 499 | xchg eax, [esp+18h+arg_0 + FS_FIXES_STACK]
|
---|
| 500 | cmp eax, offset $$PROFTRIGRET32
|
---|
[8280] | 501 | jz short loc_6_250
|
---|
[8282] | 502 | mov edi, [esi].proseg_tidTrigger
|
---|
[8280] | 503 | inc dword ptr [edi+ebx*4]
|
---|
| 504 | mov edi, ebx
|
---|
| 505 | shl edi, 0Ch
|
---|
[8282] | 506 | add edi, [esi].proseg_retStacks
|
---|
[8280] | 507 | push eax
|
---|
[8282] | 508 | lea eax, [esp+1Ch + FS_FIXES_STACK]
|
---|
[8280] | 509 | call checkForUnwindAtCall
|
---|
| 510 | pop eax
|
---|
| 511 | add dword ptr [edi], 8
|
---|
| 512 | add edi, [edi]
|
---|
| 513 | mov [edi], eax
|
---|
[8282] | 514 | lea eax, [esp+18h + FS_FIXES_STACK]
|
---|
[8280] | 515 | mov [edi+4], eax
|
---|
| 516 | mov eax, [eax]
|
---|
[8282] | 517 | test dword ptr [esi].proseg_flags, 20h
|
---|
[8280] | 518 | jz short loc_6_241
|
---|
| 519 | nop
|
---|
| 520 | nop
|
---|
| 521 | nop
|
---|
| 522 | nop
|
---|
| 523 | shl ebx, 10h
|
---|
| 524 | mov bl, 1
|
---|
[8282] | 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
|
---|
[8280] | 535 | jmp short loc_6_249
|
---|
| 536 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8281] | 537 | ; align 4 ??
|
---|
| 538 | nop
|
---|
| 539 | nop
|
---|
| 540 | nop
|
---|
| 541 |
|
---|
[8280] | 542 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 543 |
|
---|
| 544 | loc_6_241: ; CODE XREF: $$PROFTRIG32+C8j
|
---|
| 545 | shl ebx, 10h
|
---|
| 546 | mov bl, 40h ; '@'
|
---|
[8282] | 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
|
---|
[8280] | 556 |
|
---|
| 557 | loc_6_249: ; CODE XREF: $$PROFTRIG32+DAj
|
---|
| 558 | pop edi
|
---|
| 559 |
|
---|
| 560 | loc_6_24A: ; CODE XREF: $$PROFTRIG32+1Aj
|
---|
| 561 | ; $$PROFTRIG32+37j ...
|
---|
[8282] | 562 | ifdef FS_FIXES_3
|
---|
| 563 | pop fs
|
---|
| 564 | endif
|
---|
[8280] | 565 | pop eax
|
---|
| 566 | pop edx
|
---|
| 567 | pop esi
|
---|
| 568 | pop ebx
|
---|
| 569 | popfd
|
---|
| 570 | retn
|
---|
| 571 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 572 |
|
---|
| 573 | loc_6_250: ; CODE XREF: $$PROFTRIG32+81j
|
---|
| 574 | ; $$PROFTRIG32+91j
|
---|
| 575 | pop edi
|
---|
| 576 |
|
---|
| 577 | loc_6_251: ; CODE XREF: $$PROFTRIG32+73j
|
---|
[8282] | 578 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 579 | inc dword ptr [eax+ebx*4]
|
---|
| 580 | jmp short loc_6_24A
|
---|
| 581 | $$PROFTRIG32 endp
|
---|
| 582 |
|
---|
| 583 | ; Type idx: 513
|
---|
| 584 |
|
---|
| 585 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 586 |
|
---|
| 587 |
|
---|
| 588 | public $$PROFTRIGRET32
|
---|
| 589 | $$PROFTRIGRET32 proc near
|
---|
| 590 |
|
---|
| 591 | ;var_8 = byte ptr -8
|
---|
| 592 | var_8 = dword ptr -8
|
---|
| 593 | var_4 = dword ptr -4
|
---|
| 594 |
|
---|
| 595 | lea esp, [esp-4]
|
---|
| 596 | pushfd
|
---|
| 597 | push eax
|
---|
| 598 | push ebx
|
---|
| 599 | push esi
|
---|
| 600 | push edi
|
---|
[8282] | 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
|
---|
[8280] | 615 | mov esi, $$PROSEGPTR32
|
---|
| 616 | movzx ebx, word ptr [ebx]
|
---|
| 617 | dec ebx
|
---|
[8282] | 618 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 619 | inc dword ptr [eax+ebx*4]
|
---|
| 620 | mov edi, ebx
|
---|
| 621 | shl edi, 0Ch
|
---|
[8282] | 622 | add edi, [esi].proseg_retStacks
|
---|
[8280] | 623 | push eax
|
---|
[8282] | 624 | lea eax, [esp+1Ch+var_8 + FS_FIXES_STACK]
|
---|
[8280] | 625 | call checkForUnwindAtReturn
|
---|
| 626 | pop eax
|
---|
| 627 | sub dword ptr [edi], 8
|
---|
| 628 | add edi, [edi]
|
---|
| 629 | mov eax, [edi+8]
|
---|
[8282] | 630 | mov [esp+18h+var_4 + FS_FIXES_STACK], eax
|
---|
| 631 | mov eax, [esi].proseg_tidTrigger
|
---|
[8280] | 632 | dec dword ptr [eax+ebx*4]
|
---|
| 633 | shl ebx, 10h
|
---|
[8282] | 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
|
---|
[8280] | 646 | pop edi
|
---|
| 647 | pop esi
|
---|
| 648 | pop ebx
|
---|
| 649 | pop eax
|
---|
| 650 | popfd
|
---|
| 651 | retn
|
---|
| 652 | $$PROFTRIGRET32 endp ; sp = -4
|
---|
| 653 |
|
---|
| 654 | ; Type idx: 513
|
---|
| 655 |
|
---|
| 656 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 657 |
|
---|
| 658 |
|
---|
| 659 | public _ProfileHookVAOptlink32
|
---|
| 660 | _ProfileHookVAOptlink32 proc near
|
---|
| 661 | retn
|
---|
| 662 | _ProfileHookVAOptlink32 endp
|
---|
| 663 |
|
---|
| 664 | ; Type idx: 513
|
---|
| 665 |
|
---|
| 666 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 667 |
|
---|
| 668 |
|
---|
| 669 | public $$PROFEYEC32
|
---|
| 670 | $$PROFEYEC32 proc near
|
---|
| 671 |
|
---|
| 672 | var_14 = dword ptr -14h
|
---|
| 673 | var_10 = dword ptr -10h
|
---|
| 674 | arg_0 = dword ptr 4
|
---|
| 675 | ;arg_4 = byte ptr 8
|
---|
| 676 | arg_4 = dword ptr 8
|
---|
| 677 |
|
---|
| 678 | pushfd
|
---|
| 679 | push ebx
|
---|
| 680 | push esi
|
---|
| 681 | push edx
|
---|
| 682 | push eax
|
---|
[8282] | 683 | ifdef FS_FIXES_3
|
---|
| 684 | push fs
|
---|
| 685 | push Dos32TIB
|
---|
| 686 | pop fs
|
---|
| 687 | endif
|
---|
[8280] | 688 | mov esi, $$PROSEGPTR32
|
---|
| 689 | or esi, esi
|
---|
| 690 | jnz short loc_6_2F4
|
---|
| 691 | nop
|
---|
| 692 | nop
|
---|
| 693 | nop
|
---|
| 694 | nop
|
---|
| 695 | mov eax, alreadyTriedInit
|
---|
| 696 | or eax, eax
|
---|
| 697 | jnz loc_6_40B
|
---|
| 698 | call DoInit
|
---|
| 699 | mov alreadyTriedInit, 1
|
---|
| 700 | mov esi, $$PROSEGPTR32
|
---|
| 701 | or esi, esi
|
---|
| 702 | jz loc_6_40B
|
---|
| 703 |
|
---|
| 704 | loc_6_2F4: ; CODE XREF: $$PROFEYEC32+Dj
|
---|
[8282] | 705 | test dword ptr [esi].proseg_flags, 10h
|
---|
[8280] | 706 | jnz loc_6_40B
|
---|
[8282] | 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
|
---|
[8280] | 716 | movzx ebx, word ptr [ebx]
|
---|
| 717 | dec ebx
|
---|
[8282] | 718 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 719 | jnb loc_6_40B
|
---|
[8282] | 720 | mov eax, [esi].proseg_tidTrigger
|
---|
[8280] | 721 | cmp dword ptr [eax+ebx*4], 0
|
---|
| 722 | jz loc_6_40B
|
---|
[8282] | 723 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 724 | dec dword ptr [eax+ebx*4]
|
---|
| 725 | js loc_6_412
|
---|
| 726 | push edi
|
---|
[8282] | 727 | lea eax, [esp+18h + FS_FIXES_STACK]
|
---|
[8280] | 728 | call verifyStackFrame
|
---|
| 729 | or eax, eax
|
---|
| 730 | jnz loc_6_411
|
---|
[8282] | 731 | mov eax, offset $$PROFRET32
|
---|
| 732 | xchg eax, [esp+18h+arg_0 + FS_FIXES_STACK]
|
---|
| 733 | cmp eax, offset $$PROFRET32
|
---|
[8280] | 734 | jnz short loc_6_36A
|
---|
| 735 | mov eax, 0FFFFFFFDh
|
---|
| 736 | call PERF
|
---|
[8282] | 737 | inc dword ptr [esi._counterArray+14h]
|
---|
[8280] | 738 | jmp loc_6_411
|
---|
| 739 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 740 |
|
---|
| 741 | loc_6_36A: ; CODE XREF: $$PROFEYEC32+9Cj
|
---|
| 742 | mov edi, ebx
|
---|
| 743 | shl edi, 0Ch
|
---|
[8282] | 744 | add edi, [esi].proseg_retStacks
|
---|
[8280] | 745 | push eax
|
---|
[8282] | 746 | lea eax, [esp+1Ch + FS_FIXES_STACK]
|
---|
[8280] | 747 | call checkForUnwindAtCall
|
---|
| 748 | pop eax
|
---|
| 749 | add dword ptr [edi], 8
|
---|
| 750 | add edi, [edi]
|
---|
| 751 | mov [edi], eax
|
---|
[8282] | 752 | lea eax, [esp+18h + FS_FIXES_STACK]
|
---|
[8280] | 753 | mov [edi+4], eax
|
---|
| 754 | mov eax, [eax]
|
---|
| 755 | push dword ptr [edi]
|
---|
[8282] | 756 | test dword ptr [esi].proseg_flags, 20h
|
---|
[8280] | 757 | jz short loc_6_3AF
|
---|
| 758 | nop
|
---|
| 759 | nop
|
---|
| 760 | nop
|
---|
| 761 | nop
|
---|
| 762 | shl ebx, 10h
|
---|
| 763 | mov bl, 1
|
---|
[8282] | 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
|
---|
[8280] | 774 | jmp short loc_6_3B7
|
---|
| 775 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8281] | 776 | ; align 4 ??
|
---|
| 777 | nop
|
---|
| 778 | nop
|
---|
| 779 | nop
|
---|
[8280] | 780 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 781 |
|
---|
| 782 | loc_6_3AF: ; CODE XREF: $$PROFEYEC32+E1j
|
---|
| 783 | shl ebx, 10h
|
---|
| 784 | mov bl, 40h ; '@'
|
---|
[8282] | 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
|
---|
[8280] | 794 |
|
---|
| 795 | loc_6_3B7: ; CODE XREF: $$PROFEYEC32+F3j
|
---|
| 796 | pop ebx
|
---|
| 797 | mov ebx, [ebx]
|
---|
| 798 | cmp bl, 0A9h ; '©'
|
---|
| 799 | jnz short loc_6_40A
|
---|
| 800 | xor bl, bl
|
---|
[8282] | 801 | 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
|
---|
[8280] | 804 |
|
---|
| 805 | loc_6_3CE: ; CODE XREF: $$PROFEYEC32+124j
|
---|
| 806 | ; $$PROFEYEC32+12Fj ...
|
---|
| 807 | shl ebx, 1
|
---|
| 808 | jb short loc_6_3DD
|
---|
| 809 | add edi, 4
|
---|
| 810 | shl ebx, 1
|
---|
| 811 | jb short loc_6_3EF
|
---|
| 812 | jz short loc_6_40A
|
---|
| 813 | jmp short loc_6_3CE
|
---|
| 814 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 815 |
|
---|
| 816 | loc_6_3DD: ; CODE XREF: $$PROFEYEC32+119j
|
---|
| 817 | shl ebx, 1
|
---|
| 818 | jb short loc_6_3E8
|
---|
| 819 | fstp qword ptr [edi]
|
---|
| 820 | add edi, 8
|
---|
| 821 | jmp short loc_6_3CE
|
---|
| 822 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 823 |
|
---|
| 824 | loc_6_3E8: ; CODE XREF: $$PROFEYEC32+128j
|
---|
| 825 | fstp tbyte ptr [edi]
|
---|
| 826 | add edi, 10h
|
---|
| 827 | jmp short loc_6_3CE
|
---|
| 828 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 829 |
|
---|
| 830 | loc_6_3EF: ; CODE XREF: $$PROFEYEC32+120j
|
---|
| 831 | jmp esi
|
---|
| 832 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8282] | 833 | jmpback_1:
|
---|
| 834 | mov esi, offset jmpback_2
|
---|
[8280] | 835 | mov [edi-4], eax
|
---|
| 836 | jmp short loc_6_3CE
|
---|
| 837 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8282] | 838 | jmpback_2:
|
---|
| 839 | mov esi, offset jmpback_3
|
---|
[8280] | 840 | mov [edi-4], edx
|
---|
| 841 | jmp short loc_6_3CE
|
---|
| 842 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8282] | 843 | jmpback_3:
|
---|
[8280] | 844 | mov [edi-4], ecx
|
---|
| 845 | jmp short loc_6_3CE
|
---|
| 846 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 847 |
|
---|
| 848 | loc_6_40A: ; CODE XREF: $$PROFEYEC32+106j
|
---|
| 849 | ; $$PROFEYEC32+122j
|
---|
| 850 | pop edi
|
---|
| 851 |
|
---|
| 852 | loc_6_40B: ; CODE XREF: $$PROFEYEC32+1Aj
|
---|
| 853 | ; $$PROFEYEC32+37j ...
|
---|
[8282] | 854 | ifdef FS_FIXES_3
|
---|
| 855 | pop fs
|
---|
| 856 | endif
|
---|
[8280] | 857 | pop eax
|
---|
| 858 | pop edx
|
---|
| 859 | pop esi
|
---|
| 860 | pop ebx
|
---|
| 861 | popfd
|
---|
| 862 | retn
|
---|
| 863 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 864 |
|
---|
| 865 | loc_6_411: ; CODE XREF: $$PROFEYEC32+88j
|
---|
| 866 | ; $$PROFEYEC32+AEj
|
---|
| 867 | pop edi
|
---|
| 868 |
|
---|
| 869 | loc_6_412: ; CODE XREF: $$PROFEYEC32+76j
|
---|
[8282] | 870 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 871 | inc dword ptr [eax+ebx*4]
|
---|
| 872 | jmp short loc_6_40B
|
---|
| 873 | $$PROFEYEC32 endp
|
---|
| 874 |
|
---|
| 875 | ; Type idx: 513
|
---|
| 876 | ; Type idx: 183
|
---|
| 877 |
|
---|
| 878 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 879 |
|
---|
| 880 |
|
---|
| 881 | public PERF
|
---|
| 882 | public $$PROFUSER32
|
---|
| 883 | $$PROFUSER32 proc near
|
---|
| 884 | PERF label near: ; CODE XREF: $$PROFEYEC32+A3p
|
---|
| 885 | ; PerfStart+2Bp ...
|
---|
| 886 | retn ; $$PROFUSER32
|
---|
| 887 |
|
---|
| 888 | ; Type idx: 183
|
---|
| 889 |
|
---|
| 890 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 891 |
|
---|
| 892 |
|
---|
| 893 | public PROFITCAL
|
---|
| 894 | PROFITCAL label near ; CODE XREF: uCal+17p uCal+1Cp
|
---|
| 895 | push ebx
|
---|
| 896 | push esi
|
---|
| 897 | push ecx
|
---|
| 898 | push edx
|
---|
[8282] | 899 | ifdef FS_FIXES_3
|
---|
| 900 | push fs
|
---|
| 901 | push Dos32TIB
|
---|
| 902 | pop fs
|
---|
| 903 | endif
|
---|
[8280] | 904 | mov esi, $$PROSEGPTR32
|
---|
| 905 | or esi, esi
|
---|
| 906 | jnz short loc_6_45A
|
---|
| 907 | nop
|
---|
| 908 | nop
|
---|
| 909 | nop
|
---|
| 910 | nop
|
---|
| 911 | mov eax, alreadyTriedInit
|
---|
| 912 | or eax, eax
|
---|
| 913 | jnz short loc_6_494
|
---|
| 914 | nop
|
---|
| 915 | nop
|
---|
| 916 | nop
|
---|
| 917 | nop
|
---|
| 918 | call DoInit
|
---|
| 919 | mov alreadyTriedInit, 1
|
---|
| 920 | mov esi, $$PROSEGPTR32
|
---|
| 921 | or esi, esi
|
---|
| 922 | jz short loc_6_494
|
---|
| 923 | nop
|
---|
| 924 | nop
|
---|
| 925 | nop
|
---|
| 926 | nop
|
---|
| 927 |
|
---|
| 928 | loc_6_45A: ; CODE XREF: PROFITCAL+Cj
|
---|
[8282] | 929 | test dword ptr [esi].proseg_flags, 10h
|
---|
[8280] | 930 | jnz short loc_6_494
|
---|
| 931 | nop
|
---|
| 932 | nop
|
---|
| 933 | nop
|
---|
| 934 | nop
|
---|
[8282] | 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
|
---|
[8280] | 944 | movzx ebx, word ptr [ebx]
|
---|
| 945 | dec ebx
|
---|
[8282] | 946 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 947 | jnb short loc_6_494
|
---|
[8282] | 948 | mov edx, [esi].proseg_tidDecNest
|
---|
[8280] | 949 | mov edx, [edx+ebx*4]
|
---|
[8282] | 950 | mov ecx, [esi].proseg_tidMaxNest
|
---|
[8280] | 951 | cmp edx, [ecx+ebx*4]
|
---|
| 952 | jz short loc_6_494
|
---|
| 953 | push edi
|
---|
| 954 | shl ebx, 10h
|
---|
| 955 | mov bl, 20h ; ' '
|
---|
[8282] | 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
|
---|
[8280] | 965 | pop edi
|
---|
| 966 |
|
---|
| 967 | loc_6_494: ; CODE XREF: PROFITCAL+19j
|
---|
| 968 | ; PROFITCAL+36j ...
|
---|
[8282] | 969 | ifdef FS_FIXES_3
|
---|
| 970 | pop fs
|
---|
| 971 | endif
|
---|
[8280] | 972 | pop edx
|
---|
| 973 | pop ecx
|
---|
| 974 | pop esi
|
---|
| 975 | pop ebx
|
---|
| 976 | retn
|
---|
| 977 | $$PROFUSER32 endp
|
---|
| 978 |
|
---|
| 979 | ; Type idx: 513
|
---|
| 980 |
|
---|
| 981 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 982 |
|
---|
| 983 |
|
---|
| 984 | public PerfStart
|
---|
| 985 | PerfStart proc near
|
---|
| 986 | push eax
|
---|
| 987 | push esi
|
---|
| 988 | push ecx
|
---|
| 989 | push edx
|
---|
| 990 | mov esi, $$PROSEGPTR32
|
---|
| 991 | or esi, esi
|
---|
| 992 | jz short loc_6_4C9
|
---|
| 993 | nop
|
---|
| 994 | nop
|
---|
| 995 | nop
|
---|
| 996 | nop
|
---|
| 997 | xor ecx, ecx
|
---|
| 998 | xor edx, edx
|
---|
[8282] | 999 | mov dx, [esi].proseg_flags
|
---|
[8280] | 1000 | mov cx, dx
|
---|
| 1001 | and dx, 10h
|
---|
| 1002 | xor cx, dx
|
---|
[8282] | 1003 | mov [esi].proseg_flags, cx
|
---|
[8280] | 1004 | mov eax, 0FFFFFFFEh
|
---|
| 1005 | call PERF
|
---|
| 1006 |
|
---|
| 1007 | loc_6_4C9: ; CODE XREF: PerfStart+Cj
|
---|
| 1008 | pop edx
|
---|
| 1009 | pop ecx
|
---|
| 1010 | pop esi
|
---|
| 1011 | pop eax
|
---|
| 1012 | retn
|
---|
| 1013 | PerfStart endp
|
---|
| 1014 |
|
---|
| 1015 | ; Type idx: 513
|
---|
| 1016 |
|
---|
| 1017 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1018 |
|
---|
| 1019 |
|
---|
| 1020 | public PerfStop
|
---|
| 1021 | PerfStop proc near
|
---|
| 1022 | push eax
|
---|
| 1023 | push esi
|
---|
| 1024 | push ecx
|
---|
| 1025 | push edx
|
---|
| 1026 | mov esi, $$PROSEGPTR32
|
---|
| 1027 | or esi, esi
|
---|
| 1028 | jz short loc_6_4F8
|
---|
| 1029 | nop
|
---|
| 1030 | nop
|
---|
| 1031 | nop
|
---|
| 1032 | nop
|
---|
| 1033 | mov eax, 0FFFFFFFFh
|
---|
| 1034 | call PERF
|
---|
| 1035 | xor ecx, ecx
|
---|
| 1036 | xor edx, edx
|
---|
[8282] | 1037 | mov cx, [esi].proseg_flags
|
---|
[8280] | 1038 | or cx, 10h
|
---|
[8282] | 1039 | mov [esi].proseg_flags, cx
|
---|
[8280] | 1040 |
|
---|
| 1041 | loc_6_4F8: ; CODE XREF: PerfStop+Cj
|
---|
| 1042 | pop edx
|
---|
| 1043 | pop ecx
|
---|
| 1044 | pop esi
|
---|
| 1045 | pop eax
|
---|
| 1046 | retn
|
---|
| 1047 | PerfStop endp
|
---|
| 1048 |
|
---|
| 1049 | ; Type idx: 513
|
---|
| 1050 |
|
---|
| 1051 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1052 |
|
---|
| 1053 |
|
---|
| 1054 | public setjmp
|
---|
| 1055 | setjmp proc near
|
---|
| 1056 | ;arg_0 = byte ptr 4
|
---|
| 1057 | arg_0 = dword ptr 4
|
---|
| 1058 | mov ecx, [esp+0]
|
---|
| 1059 |
|
---|
| 1060 | ; Type idx: 183
|
---|
| 1061 |
|
---|
| 1062 | public $$PROFSETJMP
|
---|
| 1063 | $$PROFSETJMP label near
|
---|
| 1064 |
|
---|
| 1065 | call _ProfileHook32
|
---|
[8282] | 1066 | ifdef FS_FIXES_3
|
---|
| 1067 | push fs
|
---|
| 1068 | push Dos32TIB
|
---|
| 1069 | pop fs
|
---|
| 1070 | endif
|
---|
[8280] | 1071 | mov [eax+4], ecx
|
---|
| 1072 | mov [eax+0Ch], ebx
|
---|
| 1073 | mov [eax+14h], esi
|
---|
| 1074 | mov [eax+10h], edi
|
---|
| 1075 | mov [eax], ebp
|
---|
| 1076 | lea edx, [esp+arg_0]
|
---|
| 1077 | mov [eax+8], edx
|
---|
[8282] | 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
|
---|
[8280] | 1087 | mov [eax+18h], edx
|
---|
| 1088 | fstcw word ptr [eax+1Ch]
|
---|
| 1089 | xor eax, eax
|
---|
[8282] | 1090 | ifdef FS_FIXES_3
|
---|
| 1091 | pop fs
|
---|
| 1092 | endif
|
---|
[8280] | 1093 | retn
|
---|
| 1094 | setjmp endp
|
---|
| 1095 |
|
---|
| 1096 | ; Type idx: 513
|
---|
| 1097 |
|
---|
| 1098 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1099 |
|
---|
| 1100 |
|
---|
| 1101 | public longjmp
|
---|
| 1102 | longjmp proc near
|
---|
| 1103 | call _ProfileHook32
|
---|
[8282] | 1104 | ifdef FS_FIXES_3
|
---|
| 1105 | push fs
|
---|
| 1106 | push Dos32TIB
|
---|
| 1107 | pop fs
|
---|
| 1108 | endif
|
---|
[8280] | 1109 | push eax
|
---|
| 1110 | push edx
|
---|
[8282] | 1111 | ifdef FS_FIXES_1
|
---|
| 1112 | push fs
|
---|
| 1113 | endif
|
---|
[8280] | 1114 | push 0
|
---|
[8282] | 1115 | push offset unwind_callback
|
---|
[8280] | 1116 | push dword ptr [eax+18h]
|
---|
| 1117 | call DosUnwindException
|
---|
| 1118 | mov edx, 0FCCCh
|
---|
| 1119 | jmp CrashAndBurn
|
---|
| 1120 |
|
---|
| 1121 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8282] | 1122 | unwind_callback:
|
---|
[8280] | 1123 | add esp, 0Ch
|
---|
[8282] | 1124 | ifdef FS_FIXES_1
|
---|
| 1125 | pop fs
|
---|
| 1126 | endif
|
---|
[8280] | 1127 | pop edx
|
---|
| 1128 | pop eax
|
---|
[8282] | 1129 | ifdef FS_FIXES_1
|
---|
[8280] | 1130 | mov ecx, $$PROSEGPTR32
|
---|
[8282] | 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
|
---|
[8280] | 1146 | mov esi, ecx
|
---|
| 1147 | movzx ebx, word ptr [ebx]
|
---|
| 1148 | dec ebx
|
---|
[8282] | 1149 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 1150 | jnb short loc_6_5C2
|
---|
| 1151 | push eax
|
---|
| 1152 | push edx
|
---|
| 1153 | mov eax, [eax+8]
|
---|
| 1154 | xor ecx, ecx
|
---|
| 1155 | mov edi, ebx
|
---|
| 1156 | shl edi, 0Ch
|
---|
[8282] | 1157 | add edi, [esi].proseg_retStacks
|
---|
[8280] | 1158 |
|
---|
| 1159 | loc_6_57C: ; CODE XREF: CODE32:000005B0j
|
---|
| 1160 | mov edx, [edi]
|
---|
| 1161 | or edx, edx
|
---|
| 1162 | jz short loc_6_5B2
|
---|
| 1163 | cmp eax, [edi+edx+4]
|
---|
| 1164 | jbe short loc_6_5B2
|
---|
| 1165 | mov edx, [edi+edx+4]
|
---|
| 1166 | mov edx, [edx+4]
|
---|
[8282] | 1167 | cmp edx, offset $$PROFTRIGRET32
|
---|
[8280] | 1168 | jnz short loc_6_5A2
|
---|
| 1169 | push eax
|
---|
[8282] | 1170 | mov eax, [esi].proseg_tidTrigger
|
---|
[8280] | 1171 | dec dword ptr [eax+ebx*4]
|
---|
| 1172 | pop eax
|
---|
| 1173 |
|
---|
| 1174 | loc_6_5A2: ; CODE XREF: CODE32:00000595j
|
---|
| 1175 | push eax
|
---|
[8282] | 1176 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 1177 | inc dword ptr [eax+ebx*4]
|
---|
| 1178 | pop eax
|
---|
| 1179 | sub dword ptr [edi], 8
|
---|
| 1180 | loop loc_6_57C
|
---|
| 1181 |
|
---|
| 1182 | loc_6_5B2: ; CODE XREF: CODE32:00000580j
|
---|
| 1183 | ; CODE32:00000586j
|
---|
| 1184 | neg ecx
|
---|
[8282] | 1185 | jz short bailout2
|
---|
[8280] | 1186 | mov eax, ecx
|
---|
| 1187 | shl ebx, 10h
|
---|
| 1188 | mov bl, 10h
|
---|
[8282] | 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
|
---|
[8280] | 1198 | pop edx
|
---|
| 1199 | pop eax
|
---|
| 1200 |
|
---|
| 1201 | loc_6_5C2: ; CODE XREF: CODE32:00000556j
|
---|
| 1202 | ; CODE32:00000568j
|
---|
| 1203 | xchg eax, edx
|
---|
| 1204 | finit
|
---|
| 1205 | wait
|
---|
| 1206 | fldcw word ptr [edx+1Ch]
|
---|
[8282] | 1207 | ifdef FS_FIXES_3
|
---|
| 1208 | pop fs
|
---|
| 1209 | endif
|
---|
[8280] | 1210 | mov ebx, [edx+0Ch]
|
---|
| 1211 | mov esi, [edx+14h]
|
---|
| 1212 | mov edi, [edx+10h]
|
---|
| 1213 | mov ebp, [edx]
|
---|
| 1214 | mov esp, [edx+8]
|
---|
| 1215 | or eax, eax
|
---|
[8282] | 1216 | jnz short bailout1
|
---|
[8280] | 1217 | inc eax
|
---|
| 1218 |
|
---|
[8282] | 1219 | bailout1: ; CODE XREF: CODE32:000005B4j
|
---|
[8280] | 1220 | ; CODE32:000005DAj
|
---|
| 1221 | jmp dword ptr [edx+4]
|
---|
[8282] | 1222 |
|
---|
| 1223 | bailout2:
|
---|
| 1224 | ifdef FS_FIXES_3
|
---|
| 1225 | pop fs
|
---|
| 1226 | endif
|
---|
| 1227 | jmp dword ptr [edx+4]
|
---|
| 1228 |
|
---|
[8280] | 1229 | longjmp endp
|
---|
| 1230 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 1231 | ExceptionThrownString db 'C++ exception thrown here:',0
|
---|
| 1232 | ; Type idx: 513
|
---|
| 1233 |
|
---|
| 1234 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1235 |
|
---|
| 1236 |
|
---|
| 1237 | public _ProfileThrow32
|
---|
| 1238 | _ProfileThrow32 proc near
|
---|
| 1239 | push eax
|
---|
[8282] | 1240 | mov eax, offset ExceptionThrownString
|
---|
[8280] | 1241 | call PERF
|
---|
| 1242 | pop eax
|
---|
| 1243 | jmp PERF
|
---|
| 1244 | _ProfileThrow32 endp
|
---|
| 1245 |
|
---|
| 1246 | ; Type idx: 513
|
---|
| 1247 |
|
---|
| 1248 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1249 |
|
---|
| 1250 |
|
---|
| 1251 | public _ProfileUnwind32
|
---|
| 1252 | _ProfileUnwind32 proc near
|
---|
| 1253 | push ebx
|
---|
| 1254 | push esi
|
---|
| 1255 | push edi
|
---|
[8282] | 1256 | ifdef FS_FIXES_3
|
---|
| 1257 | push fs
|
---|
| 1258 | push Dos32TIB
|
---|
| 1259 | pop fs
|
---|
| 1260 | endif
|
---|
| 1261 |
|
---|
[8280] | 1262 | mov esi, $$PROSEGPTR32
|
---|
| 1263 | or esi, esi
|
---|
| 1264 | jz short loc_6_67A
|
---|
[8282] | 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
|
---|
[8280] | 1274 | movzx ebx, word ptr [ebx]
|
---|
| 1275 | dec ebx
|
---|
[8282] | 1276 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 1277 | jnb short loc_6_67A
|
---|
| 1278 | xor ecx, ecx
|
---|
| 1279 | mov edi, ebx
|
---|
| 1280 | shl edi, 0Ch
|
---|
[8282] | 1281 | add edi, [esi].proseg_retStacks
|
---|
[8280] | 1282 |
|
---|
| 1283 | loc_6_636: ; CODE XREF: _ProfileUnwind32+5Ej
|
---|
| 1284 | mov edx, [edi]
|
---|
| 1285 | or edx, edx
|
---|
| 1286 | jz short loc_6_66C
|
---|
| 1287 | cmp eax, [edi+edx+4]
|
---|
| 1288 | jbe short loc_6_66C
|
---|
| 1289 | mov edx, [edi+edx+4]
|
---|
| 1290 | mov edx, [edx+4]
|
---|
[8282] | 1291 | cmp edx, offset $$PROFTRIGRET32
|
---|
[8280] | 1292 | jnz short loc_6_65C
|
---|
| 1293 | push eax
|
---|
[8282] | 1294 | mov eax, [esi].proseg_tidTrigger
|
---|
[8280] | 1295 | dec dword ptr [eax+ebx*4]
|
---|
| 1296 | pop eax
|
---|
| 1297 |
|
---|
| 1298 | loc_6_65C: ; CODE XREF: _ProfileUnwind32+43j
|
---|
| 1299 | push eax
|
---|
[8282] | 1300 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 1301 | inc dword ptr [eax+ebx*4]
|
---|
| 1302 | pop eax
|
---|
| 1303 | sub dword ptr [edi], 8
|
---|
| 1304 | loop loc_6_636
|
---|
| 1305 |
|
---|
| 1306 | loc_6_66C: ; CODE XREF: _ProfileUnwind32+2Ej
|
---|
| 1307 | ; _ProfileUnwind32+34j
|
---|
| 1308 | neg ecx
|
---|
| 1309 | jz short loc_6_67A
|
---|
| 1310 | mov eax, ecx
|
---|
| 1311 | shl ebx, 10h
|
---|
| 1312 | mov bl, 10h
|
---|
[8282] | 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
|
---|
[8280] | 1322 |
|
---|
| 1323 | loc_6_67A: ; CODE XREF: _ProfileUnwind32+Bj
|
---|
| 1324 | ; _ProfileUnwind32+1Bj ...
|
---|
[8282] | 1325 | ifdef FS_FIXES_3
|
---|
| 1326 | pop fs
|
---|
| 1327 | endif
|
---|
[8280] | 1328 | pop edi
|
---|
| 1329 | pop esi
|
---|
| 1330 | pop ebx
|
---|
| 1331 | retn
|
---|
| 1332 | _ProfileUnwind32 endp
|
---|
| 1333 |
|
---|
| 1334 | ; Type idx: 513
|
---|
| 1335 |
|
---|
| 1336 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1337 |
|
---|
| 1338 |
|
---|
| 1339 | public eCal
|
---|
| 1340 | eCal proc near
|
---|
| 1341 | push esi
|
---|
| 1342 | mov esi, $$PROSEGPTR32
|
---|
[8282] | 1343 | mov ecx, [esi].proseg_tidDecNest
|
---|
[8280] | 1344 | dec dword ptr [ecx]
|
---|
| 1345 | mov ecx, 8
|
---|
| 1346 |
|
---|
| 1347 | loc_6_692: ; CODE XREF: CODE32:000006A7j
|
---|
[8282] | 1348 | push offset eCal_arg2
|
---|
| 1349 | push offset eCal_arg1
|
---|
| 1350 | push offset $$PROFCALL32
|
---|
[8280] | 1351 | jmp $$PROFCALL32
|
---|
| 1352 |
|
---|
| 1353 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8282] | 1354 | eCal_arg2:
|
---|
[8280] | 1355 | retn
|
---|
| 1356 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
[8282] | 1357 | eCal_arg1:
|
---|
[8280] | 1358 | loop loc_6_692
|
---|
| 1359 | push eax
|
---|
[8282] | 1360 | mov eax, [esi].proseg_tidDecNest
|
---|
[8280] | 1361 | inc dword ptr [eax]
|
---|
| 1362 | pop eax
|
---|
| 1363 | pop esi
|
---|
| 1364 | retn
|
---|
[8282] | 1365 | eCal endp
|
---|
[8280] | 1366 | ; Type idx: 513
|
---|
| 1367 |
|
---|
| 1368 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1369 |
|
---|
| 1370 |
|
---|
| 1371 | public uCal
|
---|
| 1372 | uCal proc near
|
---|
| 1373 | mov $$PROSEGPTR32, eax
|
---|
| 1374 | call $$PROFCALL32
|
---|
| 1375 | push esi
|
---|
| 1376 | mov esi, $$PROSEGPTR32
|
---|
| 1377 | mov ecx, 8
|
---|
| 1378 |
|
---|
| 1379 | loc_6_6CB: ; CODE XREF: uCal+22j
|
---|
| 1380 | push ecx
|
---|
| 1381 | call PROFITCAL
|
---|
| 1382 | call PROFITCAL
|
---|
| 1383 | pop ecx
|
---|
| 1384 | loop loc_6_6CB
|
---|
| 1385 | pop esi
|
---|
| 1386 | retn
|
---|
| 1387 | uCal endp
|
---|
| 1388 |
|
---|
| 1389 | ; Type idx: 513
|
---|
| 1390 |
|
---|
| 1391 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1392 |
|
---|
| 1393 |
|
---|
| 1394 | public CrashAndBurn
|
---|
| 1395 | CrashAndBurn proc near ; CODE XREF: longjmp+1Bj DoInit+1Fj ...
|
---|
[8282] | 1396 | mov [esi].proseg_rc, edx
|
---|
| 1397 | mov [esi].proseg_rcSys, eax
|
---|
[8280] | 1398 | push eax
|
---|
| 1399 | push 1
|
---|
| 1400 | call DosExit
|
---|
| 1401 | CrashAndBurn endp
|
---|
| 1402 |
|
---|
| 1403 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 1404 | initName db 'INIT_PROSEG',0 ; DATA XREF: DoInit+2Eo
|
---|
| 1405 | logDllName db 'CPPPAN40',0 ; DATA XREF: DoInit+7o
|
---|
| 1406 | ; Type idx: 513
|
---|
| 1407 |
|
---|
| 1408 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1409 |
|
---|
| 1410 | public DoInit
|
---|
| 1411 | DoInit proc near ; CODE XREF: $$PROFCALL32+20p
|
---|
| 1412 | ; $$PROFTRIG32+20p ...
|
---|
| 1413 | pushad
|
---|
[8282] | 1414 | ifdef FS_FIXES_3
|
---|
| 1415 | push fs
|
---|
| 1416 | push Dos32TIB
|
---|
| 1417 | pop fs
|
---|
| 1418 | endif
|
---|
[8280] | 1419 | xor ebx, ebx
|
---|
| 1420 | push ebx
|
---|
| 1421 | mov eax, esp
|
---|
[8282] | 1422 | ifdef FS_FIXES_1
|
---|
| 1423 | push fs
|
---|
| 1424 | endif
|
---|
[8280] | 1425 | push eax
|
---|
| 1426 | lea eax, logDllName ; "CPPPAN40"
|
---|
| 1427 | push eax
|
---|
| 1428 | push ebx
|
---|
| 1429 | push ebx
|
---|
| 1430 | call DosLoadModule
|
---|
| 1431 | add esp, 10h
|
---|
[8282] | 1432 | ifdef FS_FIXES_1
|
---|
| 1433 | pop fs
|
---|
| 1434 | endif
|
---|
[8280] | 1435 | mov edx, 0FAD8h
|
---|
| 1436 | or eax, eax
|
---|
| 1437 | jnz short CrashAndBurn
|
---|
| 1438 | pop edx
|
---|
| 1439 | mov ecx, 7
|
---|
[8282] | 1440 | ifdef FS_FIXES_1
|
---|
| 1441 | push fs
|
---|
| 1442 | endif
|
---|
| 1443 |
|
---|
[8280] | 1444 | lea edi, initAdr
|
---|
| 1445 | push edi
|
---|
| 1446 | lea ebx, initName ; "INIT_PROSEG"
|
---|
| 1447 | push ebx
|
---|
| 1448 | push 0
|
---|
| 1449 | push edx
|
---|
| 1450 | call DosQueryProcAddr
|
---|
| 1451 | add esp, 10h
|
---|
[8282] | 1452 | ifdef FS_FIXES_1
|
---|
| 1453 | pop fs
|
---|
| 1454 | endif
|
---|
[8280] | 1455 | mov edx, 0FB3Ch
|
---|
| 1456 | or eax, eax
|
---|
| 1457 | jnz short CrashAndBurn
|
---|
| 1458 | xor ebx, ebx
|
---|
[8282] | 1459 |
|
---|
[8280] | 1460 | push ebx
|
---|
| 1461 | push ebx
|
---|
| 1462 | mov eax, esp
|
---|
[8282] | 1463 | mov edx, offset eCal
|
---|
| 1464 | mov ecx, offset uCal
|
---|
| 1465 | ifdef FS_FIXES_1
|
---|
| 1466 | push fs
|
---|
| 1467 | endif
|
---|
[8280] | 1468 | lea esi, $$PROSEGPTR32
|
---|
| 1469 | push esi
|
---|
| 1470 | sub esp, 0Ch
|
---|
| 1471 | call initAdr
|
---|
| 1472 | add esp, 10h
|
---|
[8282] | 1473 | ifdef FS_FIXES_1
|
---|
| 1474 | pop fs
|
---|
| 1475 | endif
|
---|
[8280] | 1476 | or eax, eax
|
---|
| 1477 | pop edx
|
---|
| 1478 | pop eax
|
---|
| 1479 | jnz CrashAndBurn
|
---|
[8282] | 1480 | ifdef FS_FIXES_3
|
---|
| 1481 | pop fs
|
---|
| 1482 | endif
|
---|
[8280] | 1483 | popad
|
---|
| 1484 | mov esi, $$PROSEGPTR32
|
---|
| 1485 | retn
|
---|
| 1486 | DoInit endp
|
---|
| 1487 |
|
---|
| 1488 | ; Type idx: 513
|
---|
| 1489 |
|
---|
| 1490 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1491 |
|
---|
| 1492 |
|
---|
| 1493 | public checkForUnwindAtCall
|
---|
| 1494 | checkForUnwindAtCall proc near ; CODE XREF: $$PROFCALL32+B0p
|
---|
| 1495 | ; $$PROFTRIG32+ACp ...
|
---|
[8282] | 1496 | ifdef FS_FIXES_3
|
---|
| 1497 | push fs
|
---|
| 1498 | push Dos32TIB
|
---|
| 1499 | pop fs
|
---|
| 1500 | endif
|
---|
| 1501 | test word ptr [esi].proseg_flags, 40h
|
---|
[8280] | 1502 | jz short locret_6_7D0
|
---|
[8282] | 1503 | test word ptr [esi].proseg_flags, 80h
|
---|
[8280] | 1504 | jz short locret_6_7D0
|
---|
| 1505 | push edx
|
---|
| 1506 | push ecx
|
---|
| 1507 | mov edx, edi
|
---|
| 1508 | add edx, [edx]
|
---|
| 1509 | xor ecx, ecx
|
---|
| 1510 |
|
---|
| 1511 | loc_6_792: ; CODE XREF: checkForUnwindAtCall+25j
|
---|
| 1512 | cmp edx, edi
|
---|
| 1513 | jbe short loc_6_7AB
|
---|
| 1514 | cmp [edx+4], eax
|
---|
| 1515 | ja short loc_6_7AB
|
---|
| 1516 | sub edx, 8
|
---|
| 1517 | sub dword ptr [edi], 8
|
---|
| 1518 | loop loc_6_792
|
---|
| 1519 | xor eax, eax
|
---|
| 1520 | mov dword ptr [eax], 0
|
---|
| 1521 |
|
---|
| 1522 | loc_6_7AB: ; CODE XREF: checkForUnwindAtCall+18j
|
---|
| 1523 | ; checkForUnwindAtCall+1Dj
|
---|
| 1524 | neg ecx
|
---|
| 1525 | jz short loc_6_7CE
|
---|
[8367] | 1526 | add dword ptr [esi+ebx*4+158h], ecx
|
---|
[8280] | 1527 | mov eax, 0FFFFFFFCh
|
---|
| 1528 | call PERF
|
---|
| 1529 | push ebx
|
---|
| 1530 | push edi
|
---|
| 1531 | shl ebx, 10h
|
---|
| 1532 | mov bl, 10h
|
---|
| 1533 | mov eax, ecx
|
---|
[8282] | 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
|
---|
[8280] | 1543 | pop edi
|
---|
| 1544 | pop ebx
|
---|
| 1545 |
|
---|
| 1546 | loc_6_7CE: ; CODE XREF: checkForUnwindAtCall+31j
|
---|
| 1547 | pop ecx
|
---|
| 1548 | pop edx
|
---|
| 1549 |
|
---|
| 1550 | locret_6_7D0: ; CODE XREF: checkForUnwindAtCall+5j
|
---|
| 1551 | ; checkForUnwindAtCall+Cj
|
---|
[8282] | 1552 | ifdef FS_FIXES_3
|
---|
| 1553 | pop fs
|
---|
| 1554 | endif
|
---|
[8280] | 1555 | retn
|
---|
| 1556 | checkForUnwindAtCall endp
|
---|
| 1557 |
|
---|
| 1558 | ; Type idx: 513
|
---|
| 1559 |
|
---|
| 1560 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1561 |
|
---|
| 1562 |
|
---|
| 1563 | public checkForUnwindAtReturn
|
---|
| 1564 | checkForUnwindAtReturn proc near ; CODE XREF: $$PROFRET32+33p
|
---|
| 1565 | ; $$PROFTRIGRET32+33p
|
---|
[8282] | 1566 | ifdef FS_FIXES_3
|
---|
| 1567 | push fs
|
---|
| 1568 | push Dos32TIB
|
---|
| 1569 | pop fs
|
---|
| 1570 | endif
|
---|
| 1571 | test word ptr [esi].proseg_flags, 40h
|
---|
[8280] | 1572 | jz short locret_6_82F
|
---|
[8282] | 1573 | test word ptr [esi].proseg_flags, 80h
|
---|
[8280] | 1574 | jz short locret_6_82F
|
---|
| 1575 | cmp dword ptr [edi], 10h
|
---|
| 1576 | jb short locret_6_82F
|
---|
| 1577 | push edx
|
---|
| 1578 | push ecx
|
---|
| 1579 | mov edx, edi
|
---|
| 1580 | add edx, [edx]
|
---|
| 1581 | xor ecx, ecx
|
---|
| 1582 |
|
---|
| 1583 | loc_6_7EC: ; CODE XREF: checkForUnwindAtReturn+2Fj
|
---|
| 1584 | cmp [edx+4], eax
|
---|
| 1585 | jnb short loc_6_80A
|
---|
| 1586 | sub edx, 8
|
---|
| 1587 | cmp edx, edi
|
---|
| 1588 | jbe short loc_6_80A
|
---|
| 1589 | cmp [edx+4], eax
|
---|
| 1590 | ja short loc_6_80A
|
---|
| 1591 | sub dword ptr [edi], 8
|
---|
| 1592 | loop loc_6_7EC
|
---|
| 1593 | xor eax, eax
|
---|
| 1594 | mov dword ptr [eax], 0
|
---|
| 1595 |
|
---|
| 1596 | loc_6_80A: ; CODE XREF: checkForUnwindAtReturn+1Ej
|
---|
| 1597 | ; checkForUnwindAtReturn+25j ...
|
---|
| 1598 | neg ecx
|
---|
| 1599 | jz short loc_6_82D
|
---|
[8367] | 1600 | add dword ptr [esi+ebx*4+158h], ecx
|
---|
[8280] | 1601 | mov eax, 0FFFFFFFBh
|
---|
| 1602 | call PERF
|
---|
| 1603 | push ebx
|
---|
| 1604 | push edi
|
---|
| 1605 | shl ebx, 10h
|
---|
| 1606 | mov bl, 10h
|
---|
| 1607 | mov eax, ecx
|
---|
[8282] | 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
|
---|
[8280] | 1617 | pop edi
|
---|
| 1618 | pop ebx
|
---|
| 1619 |
|
---|
| 1620 | loc_6_82D: ; CODE XREF: checkForUnwindAtReturn+3Bj
|
---|
| 1621 | pop ecx
|
---|
| 1622 | pop edx
|
---|
| 1623 |
|
---|
| 1624 | locret_6_82F: ; CODE XREF: checkForUnwindAtReturn+5j
|
---|
| 1625 | ; checkForUnwindAtReturn+Cj ...
|
---|
[8282] | 1626 | ifdef FS_FIXES_3
|
---|
| 1627 | pop fs
|
---|
| 1628 | endif
|
---|
[8280] | 1629 | retn
|
---|
| 1630 | checkForUnwindAtReturn endp
|
---|
| 1631 |
|
---|
| 1632 | ; Type idx: 513
|
---|
| 1633 |
|
---|
| 1634 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1635 |
|
---|
| 1636 |
|
---|
| 1637 | public verifyStackFrame
|
---|
| 1638 | verifyStackFrame proc near ; CODE XREF: $$PROFCALL32+8Ep
|
---|
| 1639 | ; $$PROFTRIG32+7Ap ...
|
---|
[8282] | 1640 | ifdef FS_FIXES_3
|
---|
| 1641 | push fs
|
---|
| 1642 | push Dos32TIB
|
---|
| 1643 | pop fs
|
---|
| 1644 | endif
|
---|
[8280] | 1645 | push edi
|
---|
[8282] | 1646 | test word ptr [esi].proseg_flags, 40h
|
---|
[8280] | 1647 | jz short loc_6_85F
|
---|
[8282] | 1648 | test word ptr [esi].proseg_flags, 80h
|
---|
[8280] | 1649 | jz short loc_6_85F
|
---|
| 1650 | mov edi, ebx
|
---|
| 1651 | shl edi, 0Ch
|
---|
[8282] | 1652 | add edi, [esi].proseg_retStacks
|
---|
[8280] | 1653 | cmp dword ptr [edi], 0
|
---|
| 1654 | jz short loc_6_85F
|
---|
| 1655 | nop
|
---|
| 1656 | nop
|
---|
| 1657 | nop
|
---|
| 1658 | nop
|
---|
| 1659 | cmp eax, [edi+0Ch]
|
---|
| 1660 | ja short loc_6_863
|
---|
| 1661 | add edi, [edi]
|
---|
| 1662 | cmp eax, [edi+4]
|
---|
| 1663 | jz short loc_6_86A
|
---|
| 1664 |
|
---|
| 1665 | loc_6_85F: ; CODE XREF: verifyStackFrame+6j
|
---|
| 1666 | ; verifyStackFrame+Dj ...
|
---|
| 1667 | xor eax, eax
|
---|
| 1668 | jmp short loc_6_879
|
---|
| 1669 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 1670 |
|
---|
| 1671 | loc_6_863: ; CODE XREF: verifyStackFrame+26j
|
---|
| 1672 | mov eax, 0FFFFFFF9h
|
---|
| 1673 | jmp short loc_6_86F
|
---|
| 1674 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 1675 |
|
---|
| 1676 | loc_6_86A: ; CODE XREF: verifyStackFrame+2Dj
|
---|
| 1677 | mov eax, 0FFFFFFFDh
|
---|
| 1678 |
|
---|
| 1679 | loc_6_86F: ; CODE XREF: verifyStackFrame+38j
|
---|
| 1680 | call PERF
|
---|
| 1681 | mov eax, 1
|
---|
| 1682 |
|
---|
| 1683 | loc_6_879: ; CODE XREF: verifyStackFrame+31j
|
---|
| 1684 | pop edi
|
---|
[8282] | 1685 | ifdef FS_FIXES_3
|
---|
| 1686 | pop fs
|
---|
| 1687 | endif
|
---|
[8280] | 1688 | retn
|
---|
| 1689 | verifyStackFrame endp
|
---|
| 1690 |
|
---|
| 1691 | ; Type idx: 513
|
---|
| 1692 |
|
---|
| 1693 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1694 |
|
---|
| 1695 | ; Attributes: bp-based frame
|
---|
| 1696 |
|
---|
| 1697 | public _ProfileEnterParagraph32
|
---|
| 1698 | _ProfileEnterParagraph32 proc near
|
---|
| 1699 | push ebp
|
---|
| 1700 | mov ebp, esp
|
---|
| 1701 | pushfd
|
---|
[8282] | 1702 | ifdef FS_FIXES_3
|
---|
| 1703 | push fs
|
---|
| 1704 | push Dos32TIB
|
---|
| 1705 | pop fs
|
---|
| 1706 | endif
|
---|
[8280] | 1707 | push esi
|
---|
| 1708 | mov esi, $$PROSEGPTR32
|
---|
| 1709 | or esi, esi
|
---|
[8282] | 1710 | jz loc_6_8EE
|
---|
| 1711 | test word ptr [esi].proseg_flags, 2
|
---|
[8280] | 1712 | jz short loc_6_8EE
|
---|
[8282] | 1713 | test word ptr [esi].proseg_flags, 10h
|
---|
[8280] | 1714 | jnz short loc_6_8EE
|
---|
| 1715 | push edi
|
---|
| 1716 | push ebx
|
---|
| 1717 | push ecx
|
---|
[8282] | 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
|
---|
[8280] | 1727 | mov ebx, [ebx]
|
---|
[8282] | 1728 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 1729 | ja short loc_6_8EB
|
---|
| 1730 | dec ebx
|
---|
[8282] | 1731 | mov eax, [esi].proseg_tidTrigger
|
---|
[8280] | 1732 | cmp dword ptr [eax+ebx*4], 0
|
---|
| 1733 | jz short loc_6_8EB
|
---|
| 1734 | mov edi, ebx
|
---|
| 1735 | shl ebx, 10h
|
---|
| 1736 | mov eax, [ebp+4]
|
---|
| 1737 | push edx
|
---|
[8282] | 1738 | mov ecx, [esi].conditionalExit
|
---|
[8280] | 1739 | mov edx, [ecx+edi*4]
|
---|
| 1740 | cmp edx, 0FFFFFFFFh
|
---|
| 1741 | jz short loc_6_8E5
|
---|
| 1742 | mov bl, 5
|
---|
| 1743 | push eax
|
---|
| 1744 | push ebx
|
---|
| 1745 | push edi
|
---|
[8282] | 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
|
---|
[8280] | 1755 | pop edi
|
---|
| 1756 | pop ebx
|
---|
| 1757 | pop eax
|
---|
[8282] | 1758 | mov ecx, [esi].conditionalExit
|
---|
[8280] | 1759 | mov dword ptr [ecx+edi*4], 0FFFFFFFFh
|
---|
| 1760 |
|
---|
| 1761 | loc_6_8E5: ; CODE XREF: _ProfileEnterParagraph32+50j
|
---|
| 1762 | mov bl, 4
|
---|
| 1763 | pop edx
|
---|
[8282] | 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
|
---|
[8280] | 1773 |
|
---|
| 1774 | loc_6_8EB: ; CODE XREF: _ProfileEnterParagraph32+2Cj
|
---|
| 1775 | ; _ProfileEnterParagraph32+39j
|
---|
| 1776 | pop ecx
|
---|
| 1777 | pop ebx
|
---|
| 1778 | pop edi
|
---|
| 1779 |
|
---|
| 1780 | loc_6_8EE: ; CODE XREF: _ProfileEnterParagraph32+Dj
|
---|
| 1781 | ; _ProfileEnterParagraph32+14j ...
|
---|
| 1782 | pop esi
|
---|
[8282] | 1783 | ifdef FS_FIXES_3
|
---|
| 1784 | pop fs
|
---|
| 1785 | endif
|
---|
[8280] | 1786 | popfd
|
---|
| 1787 | pop ebp
|
---|
| 1788 | retn
|
---|
| 1789 | _ProfileEnterParagraph32 endp
|
---|
| 1790 |
|
---|
| 1791 | ; Type idx: 513
|
---|
| 1792 |
|
---|
| 1793 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1794 |
|
---|
| 1795 | ; Attributes: bp-based frame
|
---|
| 1796 |
|
---|
| 1797 | public _ProfileExitParagraph32
|
---|
| 1798 | _ProfileExitParagraph32 proc near
|
---|
| 1799 | push ebp
|
---|
| 1800 | mov ebp, esp
|
---|
| 1801 | pushfd
|
---|
[8282] | 1802 | ifdef FS_FIXES_3
|
---|
| 1803 | push fs
|
---|
| 1804 | push Dos32TIB
|
---|
| 1805 | pop fs
|
---|
| 1806 | endif
|
---|
[8280] | 1807 | push esi
|
---|
| 1808 | mov esi, $$PROSEGPTR32
|
---|
| 1809 | or esi, esi
|
---|
| 1810 | jz short loc_6_939
|
---|
[8282] | 1811 | test word ptr [esi].proseg_flags, 2
|
---|
[8280] | 1812 | jz short loc_6_939
|
---|
[8282] | 1813 | test word ptr [esi].proseg_flags, 10h
|
---|
[8280] | 1814 | jnz short loc_6_939
|
---|
| 1815 | push ebx
|
---|
[8282] | 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
|
---|
[8280] | 1825 | mov ebx, [ebx]
|
---|
[8282] | 1826 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 1827 | ja short loc_6_938
|
---|
| 1828 | dec ebx
|
---|
[8282] | 1829 | mov edx, [esi].proseg_tidTrigger
|
---|
[8280] | 1830 | cmp dword ptr [edx+ebx*4], 0
|
---|
| 1831 | jz short loc_6_938
|
---|
| 1832 | mov edx, eax
|
---|
| 1833 | mov eax, [ebp+4]
|
---|
| 1834 | shl ebx, 10h
|
---|
| 1835 | mov bl, 5
|
---|
[8282] | 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
|
---|
[8280] | 1845 |
|
---|
| 1846 | loc_6_938: ; CODE XREF: _ProfileExitParagraph32+2Aj
|
---|
| 1847 | ; _ProfileExitParagraph32+37j
|
---|
| 1848 | pop ebx
|
---|
| 1849 |
|
---|
| 1850 | loc_6_939: ; CODE XREF: _ProfileExitParagraph32+Dj
|
---|
| 1851 | ; _ProfileExitParagraph32+14j ...
|
---|
| 1852 | pop esi
|
---|
[8282] | 1853 | ifdef FS_FIXES_3
|
---|
| 1854 | pop fs
|
---|
| 1855 | endif
|
---|
[8280] | 1856 | popfd
|
---|
| 1857 | pop ebp
|
---|
| 1858 | retn
|
---|
| 1859 | _ProfileExitParagraph32 endp
|
---|
| 1860 |
|
---|
| 1861 | ; Type idx: 513
|
---|
| 1862 |
|
---|
| 1863 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1864 |
|
---|
| 1865 |
|
---|
| 1866 | public _ProfileConditionalExit32
|
---|
| 1867 | _ProfileConditionalExit32 proc near
|
---|
| 1868 | pushfd
|
---|
[8282] | 1869 | ifdef FS_FIXES_3
|
---|
| 1870 | push fs
|
---|
| 1871 | push Dos32TIB
|
---|
| 1872 | pop fs
|
---|
| 1873 | endif
|
---|
[8280] | 1874 | push esi
|
---|
| 1875 | mov esi, $$PROSEGPTR32
|
---|
| 1876 | or esi, esi
|
---|
| 1877 | jz short loc_6_973
|
---|
[8282] | 1878 | test word ptr [esi].proseg_flags, 2
|
---|
[8280] | 1879 | jz short loc_6_973
|
---|
[8282] | 1880 | test word ptr [esi].proseg_flags, 10h
|
---|
[8280] | 1881 | jnz short loc_6_973
|
---|
| 1882 | push ebx
|
---|
| 1883 | push ecx
|
---|
[8282] | 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
|
---|
[8280] | 1893 | mov ebx, [ebx]
|
---|
[8282] | 1894 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 1895 | ja short loc_6_971
|
---|
| 1896 | dec ebx
|
---|
[8282] | 1897 | mov ecx, [esi].conditionalExit
|
---|
[8280] | 1898 | mov [ecx+ebx*4], eax
|
---|
| 1899 |
|
---|
| 1900 | loc_6_971: ; CODE XREF: _ProfileConditionalExit32+28j
|
---|
| 1901 | pop ecx
|
---|
| 1902 | pop ebx
|
---|
| 1903 |
|
---|
| 1904 | loc_6_973: ; CODE XREF: _ProfileConditionalExit32+Aj
|
---|
| 1905 | ; _ProfileConditionalExit32+11j ...
|
---|
| 1906 | pop esi
|
---|
[8282] | 1907 | ifdef FS_FIXES_3
|
---|
| 1908 | pop fs
|
---|
| 1909 | endif
|
---|
[8280] | 1910 | popfd
|
---|
| 1911 | retn
|
---|
| 1912 | _ProfileConditionalExit32 endp
|
---|
| 1913 |
|
---|
| 1914 | ; Type idx: 513
|
---|
| 1915 |
|
---|
| 1916 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1917 |
|
---|
| 1918 |
|
---|
| 1919 | public _ProfileCancelExit32
|
---|
| 1920 | _ProfileCancelExit32 proc near
|
---|
| 1921 | pushfd
|
---|
[8282] | 1922 | ifdef FS_FIXES_3
|
---|
| 1923 | push fs
|
---|
| 1924 | push Dos32TIB
|
---|
| 1925 | pop fs
|
---|
| 1926 | endif
|
---|
[8280] | 1927 | push esi
|
---|
| 1928 | mov esi, $$PROSEGPTR32
|
---|
| 1929 | or esi, esi
|
---|
| 1930 | jz short loc_6_9B0
|
---|
[8282] | 1931 | test word ptr [esi].proseg_flags, 2
|
---|
[8280] | 1932 | jz short loc_6_9B0
|
---|
[8282] | 1933 | test word ptr [esi].proseg_flags, 10h
|
---|
[8280] | 1934 | jnz short loc_6_9B0
|
---|
| 1935 | push ebx
|
---|
| 1936 | push ecx
|
---|
[8282] | 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
|
---|
[8280] | 1946 | mov ebx, [ebx]
|
---|
[8282] | 1947 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 1948 | ja short loc_6_9AE
|
---|
| 1949 | dec ebx
|
---|
[8282] | 1950 | mov ecx, [esi].conditionalExit
|
---|
[8280] | 1951 | mov dword ptr [ecx+ebx*4], 0FFFFFFFFh
|
---|
| 1952 |
|
---|
| 1953 | loc_6_9AE: ; CODE XREF: _ProfileCancelExit32+28j
|
---|
| 1954 | pop ecx
|
---|
| 1955 | pop ebx
|
---|
| 1956 |
|
---|
| 1957 | loc_6_9B0: ; CODE XREF: _ProfileCancelExit32+Aj
|
---|
| 1958 | ; _ProfileCancelExit32+11j ...
|
---|
| 1959 | pop esi
|
---|
[8282] | 1960 | ifdef FS_FIXES_3
|
---|
| 1961 | pop fs
|
---|
| 1962 | endif
|
---|
[8280] | 1963 | popfd
|
---|
| 1964 | retn
|
---|
| 1965 | _ProfileCancelExit32 endp
|
---|
| 1966 |
|
---|
| 1967 | ; Type idx: 513
|
---|
| 1968 |
|
---|
| 1969 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
---|
| 1970 |
|
---|
| 1971 | ; Attributes: bp-based frame
|
---|
| 1972 |
|
---|
| 1973 | public _ProfileNameString32
|
---|
| 1974 | _ProfileNameString32 proc near
|
---|
| 1975 | push ebp
|
---|
| 1976 | mov ebp, esp
|
---|
| 1977 | pushfd
|
---|
[8282] | 1978 | ifdef FS_FIXES_3
|
---|
| 1979 | push fs
|
---|
| 1980 | push Dos32TIB
|
---|
| 1981 | pop fs
|
---|
| 1982 | endif
|
---|
[8280] | 1983 | push esi
|
---|
| 1984 | mov esi, $$PROSEGPTR32
|
---|
| 1985 | or esi, esi
|
---|
| 1986 | jz short loc_6_A11
|
---|
[8282] | 1987 | test word ptr [esi].proseg_flags, 2
|
---|
[8280] | 1988 | jz short loc_6_A11
|
---|
[8282] | 1989 | test word ptr [esi].proseg_flags, 10h
|
---|
[8280] | 1990 | jnz short loc_6_A11
|
---|
| 1991 | push ebx
|
---|
| 1992 | push ecx
|
---|
[8282] | 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
|
---|
[8280] | 2002 | mov ebx, [ebx]
|
---|
[8282] | 2003 | cmp ebx, [esi].proseg_maxTid
|
---|
[8280] | 2004 | ja short loc_6_A0F
|
---|
| 2005 | dec ebx
|
---|
[8282] | 2006 | mov ecx, [esi].proseg_tidTrigger
|
---|
[8280] | 2007 | cmp dword ptr [ecx+ebx*4], 0
|
---|
| 2008 | jz short loc_6_A0F
|
---|
| 2009 | mov ecx, [ebp+4]
|
---|
[8282] | 2010 | mov [esi._parm ], ecx
|
---|
| 2011 | mov [esi._parm+4h], eax
|
---|
| 2012 | mov [esi._parm+8h], edx
|
---|
| 2013 | mov dword ptr [esi]._command, 2
|
---|
[8280] | 2014 | int 3 ; Trap to Debugger
|
---|
| 2015 | wait
|
---|
| 2016 | int 3 ; Trap to Debugger
|
---|
| 2017 |
|
---|
| 2018 | loc_6_A0F: ; CODE XREF: _ProfileNameString32+2Bj
|
---|
| 2019 | ; _ProfileNameString32+38j
|
---|
| 2020 | pop ecx
|
---|
| 2021 | pop ebx
|
---|
| 2022 |
|
---|
| 2023 | loc_6_A11: ; CODE XREF: _ProfileNameString32+Dj
|
---|
| 2024 | ; _ProfileNameString32+14j ...
|
---|
| 2025 | pop esi
|
---|
[8282] | 2026 | ifdef FS_FIXES_3
|
---|
| 2027 | pop fs
|
---|
| 2028 | endif
|
---|
[8280] | 2029 | popfd
|
---|
| 2030 | pop ebp
|
---|
| 2031 | retn
|
---|
| 2032 | _ProfileNameString32 endp
|
---|
| 2033 |
|
---|
| 2034 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
---|
| 2035 | ; Type idx: 520
|
---|
| 2036 |
|
---|
| 2037 | public _ProfileVersionId32
|
---|
| 2038 | _ProfileVersionId32 TVersionId <4, 0, 2, 178h>
|
---|
| 2039 | CODE32 ends
|
---|
| 2040 |
|
---|
| 2041 | end
|
---|