1 .386P 2 .model FLAT 3 externdef _d_zistepu:dword 4 externdef _d_pzbuffer:dword 5 externdef _d_zistepv:dword 6 externdef _d_zrowbytes:dword 7 externdef _d_ziorigin:dword 8 externdef _r_turb_s:dword 9 externdef _r_turb_t:dword 10 externdef _r_turb_pdest:dword 11 externdef _r_turb_spancount:dword 12 externdef _r_turb_turb:dword 13 externdef _r_turb_pbase:dword 14 externdef _r_turb_sstep:dword 15 externdef _r_turb_tstep:dword 16 externdef _r_bmodelactive:dword 17 externdef _d_sdivzstepu:dword 18 externdef _d_tdivzstepu:dword 19 externdef _d_sdivzstepv:dword 20 externdef _d_tdivzstepv:dword 21 externdef _d_sdivzorigin:dword 22 externdef _d_tdivzorigin:dword 23 externdef _sadjust:dword 24 externdef _tadjust:dword 25 externdef _bbextents:dword 26 externdef _bbextentt:dword 27 externdef _cacheblock:dword 28 externdef _d_viewbuffer:dword 29 externdef _cachewidth:dword 30 externdef _d_pzbuffer:dword 31 externdef _d_zrowbytes:dword 32 externdef _d_zwidth:dword 33 externdef _d_scantable:dword 34 externdef _r_lightptr:dword 35 externdef _r_numvblocks:dword 36 externdef _prowdestbase:dword 37 externdef _pbasesource:dword 38 externdef _r_lightwidth:dword 39 externdef _lightright:dword 40 externdef _lightrightstep:dword 41 externdef _lightdeltastep:dword 42 externdef _lightdelta:dword 43 externdef _lightright:dword 44 externdef _lightdelta:dword 45 externdef _sourcetstep:dword 46 externdef _surfrowbytes:dword 47 externdef _lightrightstep:dword 48 externdef _lightdeltastep:dword 49 externdef _r_sourcemax:dword 50 externdef _r_stepback:dword 51 externdef _colormap:dword 52 externdef _blocksize:dword 53 externdef _sourcesstep:dword 54 externdef _lightleft:dword 55 externdef _blockdivshift:dword 56 externdef _blockdivmask:dword 57 externdef _lightleftstep:dword 58 externdef _r_origin:dword 59 externdef _r_ppn:dword 60 externdef _r_pup:dword 61 externdef _r_pright:dword 62 externdef _ycenter:dword 63 externdef _xcenter:dword 64 externdef _d_vrectbottom_particle:dword 65 externdef _d_vrectright_particle:dword 66 externdef _d_vrecty:dword 67 externdef _d_vrectx:dword 68 externdef _d_pix_shift:dword 69 externdef _d_pix_min:dword 70 externdef _d_pix_max:dword 71 externdef _d_y_aspect_shift:dword 72 externdef _screenwidth:dword 73 externdef _vright:dword 74 externdef _vup:dword 75 externdef _vpn:dword 76 externdef _BOPS_Error:dword 77 externdef _snd_scaletable:dword 78 externdef _paintbuffer:dword 79 externdef _snd_linear_count:dword 80 externdef _snd_p:dword 81 externdef _snd_vol:dword 82 externdef _snd_out:dword 83 externdef _r_leftclipped:dword 84 externdef _r_leftenter:dword 85 externdef _r_rightclipped:dword 86 externdef _r_rightenter:dword 87 externdef _modelorg:dword 88 externdef _xscale:dword 89 externdef _r_refdef:dword 90 externdef _yscale:dword 91 externdef _r_leftexit:dword 92 externdef _r_rightexit:dword 93 externdef _r_lastvertvalid:dword 94 externdef _cacheoffset:dword 95 externdef _newedges:dword 96 externdef _removeedges:dword 97 externdef _r_pedge:dword 98 externdef _r_framecount:dword 99 externdef _r_u1:dword 100 externdef _r_emitted:dword 101 externdef _edge_p:dword 102 externdef _surface_p:dword 103 externdef _surfaces:dword 104 externdef _r_lzi1:dword 105 externdef _r_v1:dword 106 externdef _r_ceilv1:dword 107 externdef _r_nearzi:dword 108 externdef _r_nearzionly:dword 109 externdef _edge_aftertail:dword 110 externdef _edge_tail:dword 111 externdef _current_iv:dword 112 externdef _edge_head_u_shift20:dword 113 externdef _span_p:dword 114 externdef _edge_head:dword 115 externdef _fv:dword 116 externdef _edge_tail_u_shift20:dword 117 externdef _r_apverts:dword 118 externdef _r_anumverts:dword 119 externdef _aliastransform:dword 120 externdef _r_avertexnormals:dword 121 externdef _r_plightvec:dword 122 externdef _r_ambientlight:dword 123 externdef _r_shadelight:dword 124 externdef _aliasxcenter:dword 125 externdef _aliasycenter:dword 126 externdef _a_sstepxfrac:dword 127 externdef _r_affinetridesc:dword 128 externdef _acolormap:dword 129 externdef _d_pcolormap:dword 130 externdef _r_affinetridesc:dword 131 externdef _d_sfrac:dword 132 externdef _d_ptex:dword 133 externdef _d_pedgespanpackage:dword 134 externdef _d_tfrac:dword 135 externdef _d_light:dword 136 externdef _d_zi:dword 137 externdef _d_pdest:dword 138 externdef _d_pz:dword 139 externdef _d_aspancount:dword 140 externdef _erroradjustup:dword 141 externdef _errorterm:dword 142 externdef _d_xdenom:dword 143 externdef _r_p0:dword 144 externdef _r_p1:dword 145 externdef _r_p2:dword 146 externdef _a_tstepxfrac:dword 147 externdef _r_sstepx:dword 148 externdef _r_tstepx:dword 149 externdef _a_ststepxwhole:dword 150 externdef _zspantable:dword 151 externdef _skintable:dword 152 externdef _r_zistepx:dword 153 externdef _erroradjustdown:dword 154 externdef _d_countextrastep:dword 155 externdef _ubasestep:dword 156 externdef _a_ststepxwhole:dword 157 externdef _a_tstepxfrac:dword 158 externdef _r_lstepx:dword 159 externdef _a_spans:dword 160 externdef _erroradjustdown:dword 161 externdef _d_pdestextrastep:dword 162 externdef _d_pzextrastep:dword 163 externdef _d_sfracextrastep:dword 164 externdef _d_ptexextrastep:dword 165 externdef _d_countextrastep:dword 166 externdef _d_tfracextrastep:dword 167 externdef _d_lightextrastep:dword 168 externdef _d_ziextrastep:dword 169 externdef _d_pdestbasestep:dword 170 externdef _d_pzbasestep:dword 171 externdef _d_sfracbasestep:dword 172 externdef _d_ptexbasestep:dword 173 externdef _ubasestep:dword 174 externdef _d_tfracbasestep:dword 175 externdef _d_lightbasestep:dword 176 externdef _d_zibasestep:dword 177 externdef _zspantable:dword 178 externdef _r_lstepy:dword 179 externdef _r_sstepy:dword 180 externdef _r_tstepy:dword 181 externdef _r_zistepy:dword 182 externdef _D_PolysetSetEdgeTable:dword 183 externdef _D_RasterizeAliasPolySmooth:dword 184 externdef float_point5:dword 185 externdef Float2ToThe31nd:dword 186 externdef izistep:dword 187 externdef izi:dword 188 externdef FloatMinus2ToThe31nd:dword 189 externdef float_1:dword 190 externdef float_particle_z_clip:dword 191 externdef float_minus_1:dword 192 externdef float_0:dword 193 externdef fp_16:dword 194 externdef fp_64k:dword 195 externdef fp_1m:dword 196 externdef fp_1m_minus_1:dword 197 externdef fp_8:dword 198 externdef entryvec_table:dword 199 externdef advancetable:dword 200 externdef sstep:dword 201 externdef tstep:dword 202 externdef pspantemp:dword 203 externdef counttemp:dword 204 externdef jumptemp:dword 205 externdef reciprocal_table:dword 206 externdef DP_Count:dword 207 externdef DP_u:dword 208 externdef DP_v:dword 209 externdef DP_32768:dword 210 externdef DP_Color:dword 211 externdef DP_Pix:dword 212 externdef DP_EntryTable:dword 213 externdef pbase:dword 214 externdef s:dword 215 externdef t:dword 216 externdef sfracf:dword 217 externdef tfracf:dword 218 externdef snext:dword 219 externdef tnext:dword 220 externdef spancountminus1:dword 221 externdef zi16stepu:dword 222 externdef sdivz16stepu:dword 223 externdef tdivz16stepu:dword 224 externdef zi8stepu:dword 225 externdef sdivz8stepu:dword 226 externdef tdivz8stepu:dword 227 externdef reciprocal_table_16:dword 228 externdef entryvec_table_16:dword 229 externdef ceil_cw:dword 230 externdef single_cw:dword 231 externdef fp_64kx64k:dword 232 externdef pz:dword 233 externdef spr8entryvec_table:dword 234_TEXT SEGMENT 235LClampHigh0: 236 mov esi,ds:dword ptr[_bbextents] 237 jmp LClampReentry0 238LClampHighOrLow0: 239 jg LClampHigh0 240 xor esi,esi 241 jmp LClampReentry0 242LClampHigh1: 243 mov edx,ds:dword ptr[_bbextentt] 244 jmp LClampReentry1 245LClampHighOrLow1: 246 jg LClampHigh1 247 xor edx,edx 248 jmp LClampReentry1 249LClampLow2: 250 mov ebp,2048 251 jmp LClampReentry2 252LClampHigh2: 253 mov ebp,ds:dword ptr[_bbextents] 254 jmp LClampReentry2 255LClampLow3: 256 mov ecx,2048 257 jmp LClampReentry3 258LClampHigh3: 259 mov ecx,ds:dword ptr[_bbextentt] 260 jmp LClampReentry3 261LClampLow4: 262 mov eax,2048 263 jmp LClampReentry4 264LClampHigh4: 265 mov eax,ds:dword ptr[_bbextents] 266 jmp LClampReentry4 267LClampLow5: 268 mov ebx,2048 269 jmp LClampReentry5 270LClampHigh5: 271 mov ebx,ds:dword ptr[_bbextentt] 272 jmp LClampReentry5 273 align 4 274 public _D_SpriteDrawSpans 275_D_SpriteDrawSpans: 276 push ebp 277 push edi 278 push esi 279 push ebx 280 fld ds:dword ptr[_d_sdivzstepu] 281 fmul ds:dword ptr[fp_8] 282 mov edx,ds:dword ptr[_cacheblock] 283 fld ds:dword ptr[_d_tdivzstepu] 284 fmul ds:dword ptr[fp_8] 285 mov ebx,ds:dword ptr[4+16+esp] 286 fld ds:dword ptr[_d_zistepu] 287 fmul ds:dword ptr[fp_8] 288 mov ds:dword ptr[pbase],edx 289 fld ds:dword ptr[_d_zistepu] 290 fmul ds:dword ptr[fp_64kx64k] 291 fxch st(3) 292 fstp ds:dword ptr[sdivz8stepu] 293 fstp ds:dword ptr[zi8stepu] 294 fstp ds:dword ptr[tdivz8stepu] 295 fistp ds:dword ptr[izistep] 296 mov eax,ds:dword ptr[izistep] 297 ror eax,16 298 mov ecx,ds:dword ptr[8+ebx] 299 mov ds:dword ptr[izistep],eax 300 cmp ecx,0 301 jle LNextSpan 302LSpanLoop: 303 fild ds:dword ptr[4+ebx] 304 fild ds:dword ptr[0+ebx] 305 fld st(1) 306 fmul ds:dword ptr[_d_sdivzstepv] 307 fld st(1) 308 fmul ds:dword ptr[_d_sdivzstepu] 309 fld st(2) 310 fmul ds:dword ptr[_d_tdivzstepu] 311 fxch st(1) 312 faddp st(2),st(0) 313 fxch st(1) 314 fld st(3) 315 fmul ds:dword ptr[_d_tdivzstepv] 316 fxch st(1) 317 fadd ds:dword ptr[_d_sdivzorigin] 318 fxch st(4) 319 fmul ds:dword ptr[_d_zistepv] 320 fxch st(1) 321 faddp st(2),st(0) 322 fxch st(2) 323 fmul ds:dword ptr[_d_zistepu] 324 fxch st(1) 325 fadd ds:dword ptr[_d_tdivzorigin] 326 fxch st(2) 327 faddp st(1),st(0) 328 fld ds:dword ptr[fp_64k] 329 fxch st(1) 330 fadd ds:dword ptr[_d_ziorigin] 331 fld st(0) 332 fmul ds:dword ptr[fp_64kx64k] 333 fxch st(1) 334 fdiv st(2),st(0) 335 fxch st(1) 336 fistp ds:dword ptr[izi] 337 mov ebp,ds:dword ptr[izi] 338 ror ebp,16 339 mov eax,ds:dword ptr[4+ebx] 340 mov ds:dword ptr[izi],ebp 341 mov ebp,ds:dword ptr[0+ebx] 342 imul ds:dword ptr[_d_zrowbytes] 343 shl ebp,1 344 add eax,ds:dword ptr[_d_pzbuffer] 345 add eax,ebp 346 mov ds:dword ptr[pz],eax 347 mov ebp,ds:dword ptr[_d_viewbuffer] 348 mov eax,ds:dword ptr[4+ebx] 349 push ebx 350 mov edx,ds:dword ptr[_tadjust] 351 mov esi,ds:dword ptr[_sadjust] 352 mov edi,ds:dword ptr[_d_scantable+eax*4] 353 add edi,ebp 354 mov ebp,ds:dword ptr[0+ebx] 355 add edi,ebp 356 cmp ecx,8 357 ja LSetupNotLast1 358 dec ecx 359 jz LCleanup1 360 mov ds:dword ptr[spancountminus1],ecx 361 fxch st(1) 362 fld st(0) 363 fmul st(0),st(4) 364 fxch st(1) 365 fmul st(0),st(3) 366 fxch st(1) 367 fistp ds:dword ptr[s] 368 fistp ds:dword ptr[t] 369 fild ds:dword ptr[spancountminus1] 370 fld ds:dword ptr[_d_tdivzstepu] 371 fld ds:dword ptr[_d_zistepu] 372 fmul st(0),st(2) 373 fxch st(1) 374 fmul st(0),st(2) 375 fxch st(2) 376 fmul ds:dword ptr[_d_sdivzstepu] 377 fxch st(1) 378 faddp st(3),st(0) 379 fxch st(1) 380 faddp st(3),st(0) 381 faddp st(3),st(0) 382 fld ds:dword ptr[fp_64k] 383 fdiv st(0),st(1) 384 jmp LFDIVInFlight1 385LCleanup1: 386 fxch st(1) 387 fld st(0) 388 fmul st(0),st(4) 389 fxch st(1) 390 fmul st(0),st(3) 391 fxch st(1) 392 fistp ds:dword ptr[s] 393 fistp ds:dword ptr[t] 394 jmp LFDIVInFlight1 395 align 4 396LSetupNotLast1: 397 fxch st(1) 398 fld st(0) 399 fmul st(0),st(4) 400 fxch st(1) 401 fmul st(0),st(3) 402 fxch st(1) 403 fistp ds:dword ptr[s] 404 fistp ds:dword ptr[t] 405 fadd ds:dword ptr[zi8stepu] 406 fxch st(2) 407 fadd ds:dword ptr[sdivz8stepu] 408 fxch st(2) 409 fld ds:dword ptr[tdivz8stepu] 410 faddp st(2),st(0) 411 fld ds:dword ptr[fp_64k] 412 fdiv st(0),st(1) 413LFDIVInFlight1: 414 add esi,ds:dword ptr[s] 415 add edx,ds:dword ptr[t] 416 mov ebx,ds:dword ptr[_bbextents] 417 mov ebp,ds:dword ptr[_bbextentt] 418 cmp esi,ebx 419 ja LClampHighOrLow0 420LClampReentry0: 421 mov ds:dword ptr[s],esi 422 mov ebx,ds:dword ptr[pbase] 423 shl esi,16 424 cmp edx,ebp 425 mov ds:dword ptr[sfracf],esi 426 ja LClampHighOrLow1 427LClampReentry1: 428 mov ds:dword ptr[t],edx 429 mov esi,ds:dword ptr[s] 430 shl edx,16 431 mov eax,ds:dword ptr[t] 432 sar esi,16 433 mov ds:dword ptr[tfracf],edx 434 sar eax,16 435 add esi,ebx 436 imul eax,ds:dword ptr[_cachewidth] 437 add esi,eax 438 cmp ecx,8 439 jna LLastSegment 440LNotLastSegment: 441 fld st(0) 442 fmul st(0),st(4) 443 fxch st(1) 444 fmul st(0),st(3) 445 fxch st(1) 446 fistp ds:dword ptr[snext] 447 fistp ds:dword ptr[tnext] 448 mov eax,ds:dword ptr[snext] 449 mov edx,ds:dword ptr[tnext] 450 sub ecx,8 451 mov ebp,ds:dword ptr[_sadjust] 452 push ecx 453 mov ecx,ds:dword ptr[_tadjust] 454 add ebp,eax 455 add ecx,edx 456 mov eax,ds:dword ptr[_bbextents] 457 mov edx,ds:dword ptr[_bbextentt] 458 cmp ebp,2048 459 jl LClampLow2 460 cmp ebp,eax 461 ja LClampHigh2 462LClampReentry2: 463 cmp ecx,2048 464 jl LClampLow3 465 cmp ecx,edx 466 ja LClampHigh3 467LClampReentry3: 468 mov ds:dword ptr[snext],ebp 469 mov ds:dword ptr[tnext],ecx 470 sub ebp,ds:dword ptr[s] 471 sub ecx,ds:dword ptr[t] 472 mov eax,ecx 473 mov edx,ebp 474 sar edx,19 475 mov ebx,ds:dword ptr[_cachewidth] 476 sar eax,19 477 jz LIsZero 478 imul eax,ebx 479LIsZero: 480 add eax,edx 481 mov edx,ds:dword ptr[tfracf] 482 mov ds:dword ptr[advancetable+4],eax 483 add eax,ebx 484 shl ebp,13 485 mov ds:dword ptr[sstep],ebp 486 mov ebx,ds:dword ptr[sfracf] 487 shl ecx,13 488 mov ds:dword ptr[advancetable],eax 489 mov ds:dword ptr[tstep],ecx 490 mov ecx,ds:dword ptr[pz] 491 mov ebp,ds:dword ptr[izi] 492 cmp bp,ds:word ptr[ecx] 493 jl Lp1 494 mov al,ds:byte ptr[esi] 495 cmp al,255 496 jz Lp1 497 mov ds:word ptr[ecx],bp 498 mov ds:byte ptr[edi],al 499Lp1: 500 add ebp,ds:dword ptr[izistep] 501 adc ebp,0 502 add edx,ds:dword ptr[tstep] 503 sbb eax,eax 504 add ebx,ds:dword ptr[sstep] 505 adc esi,ds:dword ptr[advancetable+4+eax*4] 506 cmp bp,ds:word ptr[2+ecx] 507 jl Lp2 508 mov al,ds:byte ptr[esi] 509 cmp al,255 510 jz Lp2 511 mov ds:word ptr[2+ecx],bp 512 mov ds:byte ptr[1+edi],al 513Lp2: 514 add ebp,ds:dword ptr[izistep] 515 adc ebp,0 516 add edx,ds:dword ptr[tstep] 517 sbb eax,eax 518 add ebx,ds:dword ptr[sstep] 519 adc esi,ds:dword ptr[advancetable+4+eax*4] 520 cmp bp,ds:word ptr[4+ecx] 521 jl Lp3 522 mov al,ds:byte ptr[esi] 523 cmp al,255 524 jz Lp3 525 mov ds:word ptr[4+ecx],bp 526 mov ds:byte ptr[2+edi],al 527Lp3: 528 add ebp,ds:dword ptr[izistep] 529 adc ebp,0 530 add edx,ds:dword ptr[tstep] 531 sbb eax,eax 532 add ebx,ds:dword ptr[sstep] 533 adc esi,ds:dword ptr[advancetable+4+eax*4] 534 cmp bp,ds:word ptr[6+ecx] 535 jl Lp4 536 mov al,ds:byte ptr[esi] 537 cmp al,255 538 jz Lp4 539 mov ds:word ptr[6+ecx],bp 540 mov ds:byte ptr[3+edi],al 541Lp4: 542 add ebp,ds:dword ptr[izistep] 543 adc ebp,0 544 add edx,ds:dword ptr[tstep] 545 sbb eax,eax 546 add ebx,ds:dword ptr[sstep] 547 adc esi,ds:dword ptr[advancetable+4+eax*4] 548 cmp bp,ds:word ptr[8+ecx] 549 jl Lp5 550 mov al,ds:byte ptr[esi] 551 cmp al,255 552 jz Lp5 553 mov ds:word ptr[8+ecx],bp 554 mov ds:byte ptr[4+edi],al 555Lp5: 556 add ebp,ds:dword ptr[izistep] 557 adc ebp,0 558 add edx,ds:dword ptr[tstep] 559 sbb eax,eax 560 add ebx,ds:dword ptr[sstep] 561 adc esi,ds:dword ptr[advancetable+4+eax*4] 562 pop eax 563 cmp eax,8 564 ja LSetupNotLast2 565 dec eax 566 jz LFDIVInFlight2 567 mov ds:dword ptr[spancountminus1],eax 568 fild ds:dword ptr[spancountminus1] 569 fld ds:dword ptr[_d_zistepu] 570 fmul st(0),st(1) 571 fld ds:dword ptr[_d_tdivzstepu] 572 fmul st(0),st(2) 573 fxch st(1) 574 faddp st(3),st(0) 575 fxch st(1) 576 fmul ds:dword ptr[_d_sdivzstepu] 577 fxch st(1) 578 faddp st(3),st(0) 579 fld ds:dword ptr[fp_64k] 580 fxch st(1) 581 faddp st(4),st(0) 582 fdiv st(0),st(1) 583 jmp LFDIVInFlight2 584 align 4 585LSetupNotLast2: 586 fadd ds:dword ptr[zi8stepu] 587 fxch st(2) 588 fadd ds:dword ptr[sdivz8stepu] 589 fxch st(2) 590 fld ds:dword ptr[tdivz8stepu] 591 faddp st(2),st(0) 592 fld ds:dword ptr[fp_64k] 593 fdiv st(0),st(1) 594LFDIVInFlight2: 595 push eax 596 cmp bp,ds:word ptr[10+ecx] 597 jl Lp6 598 mov al,ds:byte ptr[esi] 599 cmp al,255 600 jz Lp6 601 mov ds:word ptr[10+ecx],bp 602 mov ds:byte ptr[5+edi],al 603Lp6: 604 add ebp,ds:dword ptr[izistep] 605 adc ebp,0 606 add edx,ds:dword ptr[tstep] 607 sbb eax,eax 608 add ebx,ds:dword ptr[sstep] 609 adc esi,ds:dword ptr[advancetable+4+eax*4] 610 cmp bp,ds:word ptr[12+ecx] 611 jl Lp7 612 mov al,ds:byte ptr[esi] 613 cmp al,255 614 jz Lp7 615 mov ds:word ptr[12+ecx],bp 616 mov ds:byte ptr[6+edi],al 617Lp7: 618 add ebp,ds:dword ptr[izistep] 619 adc ebp,0 620 add edx,ds:dword ptr[tstep] 621 sbb eax,eax 622 add ebx,ds:dword ptr[sstep] 623 adc esi,ds:dword ptr[advancetable+4+eax*4] 624 cmp bp,ds:word ptr[14+ecx] 625 jl Lp8 626 mov al,ds:byte ptr[esi] 627 cmp al,255 628 jz Lp8 629 mov ds:word ptr[14+ecx],bp 630 mov ds:byte ptr[7+edi],al 631Lp8: 632 add ebp,ds:dword ptr[izistep] 633 adc ebp,0 634 add edx,ds:dword ptr[tstep] 635 sbb eax,eax 636 add ebx,ds:dword ptr[sstep] 637 adc esi,ds:dword ptr[advancetable+4+eax*4] 638 add edi,8 639 add ecx,16 640 mov ds:dword ptr[tfracf],edx 641 mov edx,ds:dword ptr[snext] 642 mov ds:dword ptr[sfracf],ebx 643 mov ebx,ds:dword ptr[tnext] 644 mov ds:dword ptr[s],edx 645 mov ds:dword ptr[t],ebx 646 mov ds:dword ptr[pz],ecx 647 mov ds:dword ptr[izi],ebp 648 pop ecx 649 cmp ecx,8 650 ja LNotLastSegment 651LLastSegment: 652 test ecx,ecx 653 jz LNoSteps 654 fld st(0) 655 fmul st(0),st(4) 656 fxch st(1) 657 fmul st(0),st(3) 658 fxch st(1) 659 fistp ds:dword ptr[snext] 660 fistp ds:dword ptr[tnext] 661 mov ebx,ds:dword ptr[_tadjust] 662 mov eax,ds:dword ptr[_sadjust] 663 add eax,ds:dword ptr[snext] 664 add ebx,ds:dword ptr[tnext] 665 mov ebp,ds:dword ptr[_bbextents] 666 mov edx,ds:dword ptr[_bbextentt] 667 cmp eax,2048 668 jl LClampLow4 669 cmp eax,ebp 670 ja LClampHigh4 671LClampReentry4: 672 mov ds:dword ptr[snext],eax 673 cmp ebx,2048 674 jl LClampLow5 675 cmp ebx,edx 676 ja LClampHigh5 677LClampReentry5: 678 cmp ecx,1 679 je LOnlyOneStep 680 sub eax,ds:dword ptr[s] 681 sub ebx,ds:dword ptr[t] 682 add eax,eax 683 add ebx,ebx 684 imul ds:dword ptr[reciprocal_table-8+ecx*4] 685 mov ebp,edx 686 mov eax,ebx 687 imul ds:dword ptr[reciprocal_table-8+ecx*4] 688LSetEntryvec: 689 mov ebx,ds:dword ptr[spr8entryvec_table+ecx*4] 690 mov eax,edx 691 push ebx 692 mov ecx,ebp 693 sar ecx,16 694 mov ebx,ds:dword ptr[_cachewidth] 695 sar edx,16 696 jz LIsZeroLast 697 imul edx,ebx 698LIsZeroLast: 699 add edx,ecx 700 mov ecx,ds:dword ptr[tfracf] 701 mov ds:dword ptr[advancetable+4],edx 702 add edx,ebx 703 shl ebp,16 704 mov ebx,ds:dword ptr[sfracf] 705 shl eax,16 706 mov ds:dword ptr[advancetable],edx 707 mov ds:dword ptr[tstep],eax 708 mov ds:dword ptr[sstep],ebp 709 mov edx,ecx 710 mov ecx,ds:dword ptr[pz] 711 mov ebp,ds:dword ptr[izi] 712 ret 713LNoSteps: 714 mov ecx,ds:dword ptr[pz] 715 sub edi,7 716 sub ecx,14 717 jmp LEndSpan 718LOnlyOneStep: 719 sub eax,ds:dword ptr[s] 720 sub ebx,ds:dword ptr[t] 721 mov ebp,eax 722 mov edx,ebx 723 jmp LSetEntryvec 724 public Spr8Entry2_8 725Spr8Entry2_8: 726 sub edi,6 727 sub ecx,12 728 mov al,ds:byte ptr[esi] 729 jmp LLEntry2_8 730 public Spr8Entry3_8 731Spr8Entry3_8: 732 sub edi,5 733 sub ecx,10 734 jmp LLEntry3_8 735 public Spr8Entry4_8 736Spr8Entry4_8: 737 sub edi,4 738 sub ecx,8 739 jmp LLEntry4_8 740 public Spr8Entry5_8 741Spr8Entry5_8: 742 sub edi,3 743 sub ecx,6 744 jmp LLEntry5_8 745 public Spr8Entry6_8 746Spr8Entry6_8: 747 sub edi,2 748 sub ecx,4 749 jmp LLEntry6_8 750 public Spr8Entry7_8 751Spr8Entry7_8: 752 dec edi 753 sub ecx,2 754 jmp LLEntry7_8 755 public Spr8Entry8_8 756Spr8Entry8_8: 757 cmp bp,ds:word ptr[ecx] 758 jl Lp9 759 mov al,ds:byte ptr[esi] 760 cmp al,255 761 jz Lp9 762 mov ds:word ptr[ecx],bp 763 mov ds:byte ptr[edi],al 764Lp9: 765 add ebp,ds:dword ptr[izistep] 766 adc ebp,0 767 add edx,ds:dword ptr[tstep] 768 sbb eax,eax 769 add ebx,ds:dword ptr[sstep] 770 adc esi,ds:dword ptr[advancetable+4+eax*4] 771LLEntry7_8: 772 cmp bp,ds:word ptr[2+ecx] 773 jl Lp10 774 mov al,ds:byte ptr[esi] 775 cmp al,255 776 jz Lp10 777 mov ds:word ptr[2+ecx],bp 778 mov ds:byte ptr[1+edi],al 779Lp10: 780 add ebp,ds:dword ptr[izistep] 781 adc ebp,0 782 add edx,ds:dword ptr[tstep] 783 sbb eax,eax 784 add ebx,ds:dword ptr[sstep] 785 adc esi,ds:dword ptr[advancetable+4+eax*4] 786LLEntry6_8: 787 cmp bp,ds:word ptr[4+ecx] 788 jl Lp11 789 mov al,ds:byte ptr[esi] 790 cmp al,255 791 jz Lp11 792 mov ds:word ptr[4+ecx],bp 793 mov ds:byte ptr[2+edi],al 794Lp11: 795 add ebp,ds:dword ptr[izistep] 796 adc ebp,0 797 add edx,ds:dword ptr[tstep] 798 sbb eax,eax 799 add ebx,ds:dword ptr[sstep] 800 adc esi,ds:dword ptr[advancetable+4+eax*4] 801LLEntry5_8: 802 cmp bp,ds:word ptr[6+ecx] 803 jl Lp12 804 mov al,ds:byte ptr[esi] 805 cmp al,255 806 jz Lp12 807 mov ds:word ptr[6+ecx],bp 808 mov ds:byte ptr[3+edi],al 809Lp12: 810 add ebp,ds:dword ptr[izistep] 811 adc ebp,0 812 add edx,ds:dword ptr[tstep] 813 sbb eax,eax 814 add ebx,ds:dword ptr[sstep] 815 adc esi,ds:dword ptr[advancetable+4+eax*4] 816LLEntry4_8: 817 cmp bp,ds:word ptr[8+ecx] 818 jl Lp13 819 mov al,ds:byte ptr[esi] 820 cmp al,255 821 jz Lp13 822 mov ds:word ptr[8+ecx],bp 823 mov ds:byte ptr[4+edi],al 824Lp13: 825 add ebp,ds:dword ptr[izistep] 826 adc ebp,0 827 add edx,ds:dword ptr[tstep] 828 sbb eax,eax 829 add ebx,ds:dword ptr[sstep] 830 adc esi,ds:dword ptr[advancetable+4+eax*4] 831LLEntry3_8: 832 cmp bp,ds:word ptr[10+ecx] 833 jl Lp14 834 mov al,ds:byte ptr[esi] 835 cmp al,255 836 jz Lp14 837 mov ds:word ptr[10+ecx],bp 838 mov ds:byte ptr[5+edi],al 839Lp14: 840 add ebp,ds:dword ptr[izistep] 841 adc ebp,0 842 add edx,ds:dword ptr[tstep] 843 sbb eax,eax 844 add ebx,ds:dword ptr[sstep] 845 adc esi,ds:dword ptr[advancetable+4+eax*4] 846LLEntry2_8: 847 cmp bp,ds:word ptr[12+ecx] 848 jl Lp15 849 mov al,ds:byte ptr[esi] 850 cmp al,255 851 jz Lp15 852 mov ds:word ptr[12+ecx],bp 853 mov ds:byte ptr[6+edi],al 854Lp15: 855 add ebp,ds:dword ptr[izistep] 856 adc ebp,0 857 add edx,ds:dword ptr[tstep] 858 sbb eax,eax 859 add ebx,ds:dword ptr[sstep] 860 adc esi,ds:dword ptr[advancetable+4+eax*4] 861LEndSpan: 862 cmp bp,ds:word ptr[14+ecx] 863 jl Lp16 864 mov al,ds:byte ptr[esi] 865 cmp al,255 866 jz Lp16 867 mov ds:word ptr[14+ecx],bp 868 mov ds:byte ptr[7+edi],al 869Lp16: 870 fstp st(0) 871 fstp st(0) 872 fstp st(0) 873 pop ebx 874LNextSpan: 875 add ebx,12 876 mov ecx,ds:dword ptr[8+ebx] 877 cmp ecx,0 878 jg LSpanLoop 879 jz LNextSpan 880 pop ebx 881 pop esi 882 pop edi 883 pop ebp 884 ret 885_TEXT ENDS 886 END 887