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_DATA SEGMENT 235_DATA ENDS 236_TEXT SEGMENT 237LClampHigh0: 238 mov esi,ds:dword ptr[_bbextents] 239 jmp LClampReentry0 240LClampHighOrLow0: 241 jg LClampHigh0 242 xor esi,esi 243 jmp LClampReentry0 244LClampHigh1: 245 mov edx,ds:dword ptr[_bbextentt] 246 jmp LClampReentry1 247LClampHighOrLow1: 248 jg LClampHigh1 249 xor edx,edx 250 jmp LClampReentry1 251LClampLow2: 252 mov ebp,4096 253 jmp LClampReentry2 254LClampHigh2: 255 mov ebp,ds:dword ptr[_bbextents] 256 jmp LClampReentry2 257LClampLow3: 258 mov ecx,4096 259 jmp LClampReentry3 260LClampHigh3: 261 mov ecx,ds:dword ptr[_bbextentt] 262 jmp LClampReentry3 263LClampLow4: 264 mov eax,4096 265 jmp LClampReentry4 266LClampHigh4: 267 mov eax,ds:dword ptr[_bbextents] 268 jmp LClampReentry4 269LClampLow5: 270 mov ebx,4096 271 jmp LClampReentry5 272LClampHigh5: 273 mov ebx,ds:dword ptr[_bbextentt] 274 jmp LClampReentry5 275 align 4 276 public _D_DrawSpans16 277_D_DrawSpans16: 278 push ebp 279 push edi 280 push esi 281 push ebx 282 fld ds:dword ptr[_d_sdivzstepu] 283 fmul ds:dword ptr[fp_16] 284 mov edx,ds:dword ptr[_cacheblock] 285 fld ds:dword ptr[_d_tdivzstepu] 286 fmul ds:dword ptr[fp_16] 287 mov ebx,ds:dword ptr[4+16+esp] 288 fld ds:dword ptr[_d_zistepu] 289 fmul ds:dword ptr[fp_16] 290 mov ds:dword ptr[pbase],edx 291 fstp ds:dword ptr[zi16stepu] 292 fstp ds:dword ptr[tdivz16stepu] 293 fstp ds:dword ptr[sdivz16stepu] 294LSpanLoop: 295 fild ds:dword ptr[4+ebx] 296 fild ds:dword ptr[0+ebx] 297 fld st(1) 298 fmul ds:dword ptr[_d_sdivzstepv] 299 fld st(1) 300 fmul ds:dword ptr[_d_sdivzstepu] 301 fld st(2) 302 fmul ds:dword ptr[_d_tdivzstepu] 303 fxch st(1) 304 faddp st(2),st(0) 305 fxch st(1) 306 fld st(3) 307 fmul ds:dword ptr[_d_tdivzstepv] 308 fxch st(1) 309 fadd ds:dword ptr[_d_sdivzorigin] 310 fxch st(4) 311 fmul ds:dword ptr[_d_zistepv] 312 fxch st(1) 313 faddp st(2),st(0) 314 fxch st(2) 315 fmul ds:dword ptr[_d_zistepu] 316 fxch st(1) 317 fadd ds:dword ptr[_d_tdivzorigin] 318 fxch st(2) 319 faddp st(1),st(0) 320 fld ds:dword ptr[fp_64k] 321 fxch st(1) 322 fadd ds:dword ptr[_d_ziorigin] 323 fdiv st(1),st(0) 324 mov ecx,ds:dword ptr[_d_viewbuffer] 325 mov eax,ds:dword ptr[4+ebx] 326 mov ds:dword ptr[pspantemp],ebx 327 mov edx,ds:dword ptr[_tadjust] 328 mov esi,ds:dword ptr[_sadjust] 329 mov edi,ds:dword ptr[_d_scantable+eax*4] 330 add edi,ecx 331 mov ecx,ds:dword ptr[0+ebx] 332 add edi,ecx 333 mov ecx,ds:dword ptr[8+ebx] 334 cmp ecx,16 335 ja LSetupNotLast1 336 dec ecx 337 jz LCleanup1 338 mov ds:dword ptr[spancountminus1],ecx 339 fxch st(1) 340 fld st(0) 341 fmul st(0),st(4) 342 fxch st(1) 343 fmul st(0),st(3) 344 fxch st(1) 345 fistp ds:dword ptr[s] 346 fistp ds:dword ptr[t] 347 fild ds:dword ptr[spancountminus1] 348 fld ds:dword ptr[_d_tdivzstepu] 349 fld ds:dword ptr[_d_zistepu] 350 fmul st(0),st(2) 351 fxch st(1) 352 fmul st(0),st(2) 353 fxch st(2) 354 fmul ds:dword ptr[_d_sdivzstepu] 355 fxch st(1) 356 faddp st(3),st(0) 357 fxch st(1) 358 faddp st(3),st(0) 359 faddp st(3),st(0) 360 fld ds:dword ptr[fp_64k] 361 fdiv st(0),st(1) 362 jmp LFDIVInFlight1 363LCleanup1: 364 fxch st(1) 365 fld st(0) 366 fmul st(0),st(4) 367 fxch st(1) 368 fmul st(0),st(3) 369 fxch st(1) 370 fistp ds:dword ptr[s] 371 fistp ds:dword ptr[t] 372 jmp LFDIVInFlight1 373 align 4 374LSetupNotLast1: 375 fxch st(1) 376 fld st(0) 377 fmul st(0),st(4) 378 fxch st(1) 379 fmul st(0),st(3) 380 fxch st(1) 381 fistp ds:dword ptr[s] 382 fistp ds:dword ptr[t] 383 fadd ds:dword ptr[zi16stepu] 384 fxch st(2) 385 fadd ds:dword ptr[sdivz16stepu] 386 fxch st(2) 387 fld ds:dword ptr[tdivz16stepu] 388 faddp st(2),st(0) 389 fld ds:dword ptr[fp_64k] 390 fdiv st(0),st(1) 391LFDIVInFlight1: 392 add esi,ds:dword ptr[s] 393 add edx,ds:dword ptr[t] 394 mov ebx,ds:dword ptr[_bbextents] 395 mov ebp,ds:dword ptr[_bbextentt] 396 cmp esi,ebx 397 ja LClampHighOrLow0 398LClampReentry0: 399 mov ds:dword ptr[s],esi 400 mov ebx,ds:dword ptr[pbase] 401 shl esi,16 402 cmp edx,ebp 403 mov ds:dword ptr[sfracf],esi 404 ja LClampHighOrLow1 405LClampReentry1: 406 mov ds:dword ptr[t],edx 407 mov esi,ds:dword ptr[s] 408 shl edx,16 409 mov eax,ds:dword ptr[t] 410 sar esi,16 411 mov ds:dword ptr[tfracf],edx 412 sar eax,16 413 mov edx,ds:dword ptr[_cachewidth] 414 imul eax,edx 415 add esi,ebx 416 add esi,eax 417 cmp ecx,16 418 jna LLastSegment 419LNotLastSegment: 420 fld st(0) 421 fmul st(0),st(4) 422 fxch st(1) 423 fmul st(0),st(3) 424 fxch st(1) 425 fistp ds:dword ptr[snext] 426 fistp ds:dword ptr[tnext] 427 mov eax,ds:dword ptr[snext] 428 mov edx,ds:dword ptr[tnext] 429 mov bl,ds:byte ptr[esi] 430 sub ecx,16 431 mov ebp,ds:dword ptr[_sadjust] 432 mov ds:dword ptr[counttemp],ecx 433 mov ecx,ds:dword ptr[_tadjust] 434 mov ds:byte ptr[edi],bl 435 add ebp,eax 436 add ecx,edx 437 mov eax,ds:dword ptr[_bbextents] 438 mov edx,ds:dword ptr[_bbextentt] 439 cmp ebp,4096 440 jl LClampLow2 441 cmp ebp,eax 442 ja LClampHigh2 443LClampReentry2: 444 cmp ecx,4096 445 jl LClampLow3 446 cmp ecx,edx 447 ja LClampHigh3 448LClampReentry3: 449 mov ds:dword ptr[snext],ebp 450 mov ds:dword ptr[tnext],ecx 451 sub ebp,ds:dword ptr[s] 452 sub ecx,ds:dword ptr[t] 453 mov eax,ecx 454 mov edx,ebp 455 sar eax,20 456 jz LZero 457 sar edx,20 458 mov ebx,ds:dword ptr[_cachewidth] 459 imul eax,ebx 460 jmp LSetUp1 461LZero: 462 sar edx,20 463 mov ebx,ds:dword ptr[_cachewidth] 464LSetUp1: 465 add eax,edx 466 mov edx,ds:dword ptr[tfracf] 467 mov ds:dword ptr[advancetable+4],eax 468 add eax,ebx 469 shl ebp,12 470 mov ebx,ds:dword ptr[sfracf] 471 shl ecx,12 472 mov ds:dword ptr[advancetable],eax 473 mov ds:dword ptr[tstep],ecx 474 add edx,ecx 475 sbb ecx,ecx 476 add ebx,ebp 477 adc esi,ds:dword ptr[advancetable+4+ecx*4] 478 add edx,ds:dword ptr[tstep] 479 sbb ecx,ecx 480 mov al,ds:byte ptr[esi] 481 add ebx,ebp 482 mov ds:byte ptr[1+edi],al 483 adc esi,ds:dword ptr[advancetable+4+ecx*4] 484 add edx,ds:dword ptr[tstep] 485 sbb ecx,ecx 486 add ebx,ebp 487 mov al,ds:byte ptr[esi] 488 adc esi,ds:dword ptr[advancetable+4+ecx*4] 489 add edx,ds:dword ptr[tstep] 490 sbb ecx,ecx 491 mov ds:byte ptr[2+edi],al 492 add ebx,ebp 493 mov al,ds:byte ptr[esi] 494 adc esi,ds:dword ptr[advancetable+4+ecx*4] 495 add edx,ds:dword ptr[tstep] 496 sbb ecx,ecx 497 mov ds:byte ptr[3+edi],al 498 add ebx,ebp 499 mov al,ds:byte ptr[esi] 500 adc esi,ds:dword ptr[advancetable+4+ecx*4] 501 add edx,ds:dword ptr[tstep] 502 sbb ecx,ecx 503 mov ds:byte ptr[4+edi],al 504 add ebx,ebp 505 mov al,ds:byte ptr[esi] 506 adc esi,ds:dword ptr[advancetable+4+ecx*4] 507 add edx,ds:dword ptr[tstep] 508 sbb ecx,ecx 509 mov ds:byte ptr[5+edi],al 510 add ebx,ebp 511 mov al,ds:byte ptr[esi] 512 adc esi,ds:dword ptr[advancetable+4+ecx*4] 513 add edx,ds:dword ptr[tstep] 514 sbb ecx,ecx 515 mov ds:byte ptr[6+edi],al 516 add ebx,ebp 517 mov al,ds:byte ptr[esi] 518 adc esi,ds:dword ptr[advancetable+4+ecx*4] 519 add edx,ds:dword ptr[tstep] 520 sbb ecx,ecx 521 mov ds:byte ptr[7+edi],al 522 add ebx,ebp 523 mov al,ds:byte ptr[esi] 524 adc esi,ds:dword ptr[advancetable+4+ecx*4] 525 mov ecx,ds:dword ptr[counttemp] 526 cmp ecx,16 527 ja LSetupNotLast2 528 dec ecx 529 jz LFDIVInFlight2 530 mov ds:dword ptr[spancountminus1],ecx 531 fild ds:dword ptr[spancountminus1] 532 fld ds:dword ptr[_d_zistepu] 533 fmul st(0),st(1) 534 fld ds:dword ptr[_d_tdivzstepu] 535 fmul st(0),st(2) 536 fxch st(1) 537 faddp st(3),st(0) 538 fxch st(1) 539 fmul ds:dword ptr[_d_sdivzstepu] 540 fxch st(1) 541 faddp st(3),st(0) 542 fld ds:dword ptr[fp_64k] 543 fxch st(1) 544 faddp st(4),st(0) 545 fdiv st(0),st(1) 546 jmp LFDIVInFlight2 547 align 4 548LSetupNotLast2: 549 fadd ds:dword ptr[zi16stepu] 550 fxch st(2) 551 fadd ds:dword ptr[sdivz16stepu] 552 fxch st(2) 553 fld ds:dword ptr[tdivz16stepu] 554 faddp st(2),st(0) 555 fld ds:dword ptr[fp_64k] 556 fdiv st(0),st(1) 557LFDIVInFlight2: 558 mov ds:dword ptr[counttemp],ecx 559 add edx,ds:dword ptr[tstep] 560 sbb ecx,ecx 561 mov ds:byte ptr[8+edi],al 562 add ebx,ebp 563 mov al,ds:byte ptr[esi] 564 adc esi,ds:dword ptr[advancetable+4+ecx*4] 565 add edx,ds:dword ptr[tstep] 566 sbb ecx,ecx 567 mov ds:byte ptr[9+edi],al 568 add ebx,ebp 569 mov al,ds:byte ptr[esi] 570 adc esi,ds:dword ptr[advancetable+4+ecx*4] 571 add edx,ds:dword ptr[tstep] 572 sbb ecx,ecx 573 mov ds:byte ptr[10+edi],al 574 add ebx,ebp 575 mov al,ds:byte ptr[esi] 576 adc esi,ds:dword ptr[advancetable+4+ecx*4] 577 add edx,ds:dword ptr[tstep] 578 sbb ecx,ecx 579 mov ds:byte ptr[11+edi],al 580 add ebx,ebp 581 mov al,ds:byte ptr[esi] 582 adc esi,ds:dword ptr[advancetable+4+ecx*4] 583 add edx,ds:dword ptr[tstep] 584 sbb ecx,ecx 585 mov ds:byte ptr[12+edi],al 586 add ebx,ebp 587 mov al,ds:byte ptr[esi] 588 adc esi,ds:dword ptr[advancetable+4+ecx*4] 589 add edx,ds:dword ptr[tstep] 590 sbb ecx,ecx 591 mov ds:byte ptr[13+edi],al 592 add ebx,ebp 593 mov al,ds:byte ptr[esi] 594 adc esi,ds:dword ptr[advancetable+4+ecx*4] 595 add edx,ds:dword ptr[tstep] 596 sbb ecx,ecx 597 mov ds:byte ptr[14+edi],al 598 add ebx,ebp 599 mov al,ds:byte ptr[esi] 600 adc esi,ds:dword ptr[advancetable+4+ecx*4] 601 add edi,16 602 mov ds:dword ptr[tfracf],edx 603 mov edx,ds:dword ptr[snext] 604 mov ds:dword ptr[sfracf],ebx 605 mov ebx,ds:dword ptr[tnext] 606 mov ds:dword ptr[s],edx 607 mov ds:dword ptr[t],ebx 608 mov ecx,ds:dword ptr[counttemp] 609 cmp ecx,16 610 mov ds:byte ptr[-1+edi],al 611 ja LNotLastSegment 612LLastSegment: 613 test ecx,ecx 614 jz LNoSteps 615 fld st(0) 616 fmul st(0),st(4) 617 fxch st(1) 618 fmul st(0),st(3) 619 fxch st(1) 620 fistp ds:dword ptr[snext] 621 fistp ds:dword ptr[tnext] 622 mov al,ds:byte ptr[esi] 623 mov ebx,ds:dword ptr[_tadjust] 624 mov ds:byte ptr[edi],al 625 mov eax,ds:dword ptr[_sadjust] 626 add eax,ds:dword ptr[snext] 627 add ebx,ds:dword ptr[tnext] 628 mov ebp,ds:dword ptr[_bbextents] 629 mov edx,ds:dword ptr[_bbextentt] 630 cmp eax,4096 631 jl LClampLow4 632 cmp eax,ebp 633 ja LClampHigh4 634LClampReentry4: 635 mov ds:dword ptr[snext],eax 636 cmp ebx,4096 637 jl LClampLow5 638 cmp ebx,edx 639 ja LClampHigh5 640LClampReentry5: 641 cmp ecx,1 642 je LOnlyOneStep 643 sub eax,ds:dword ptr[s] 644 sub ebx,ds:dword ptr[t] 645 add eax,eax 646 add ebx,ebx 647 imul ds:dword ptr[reciprocal_table_16-8+ecx*4] 648 mov ebp,edx 649 mov eax,ebx 650 imul ds:dword ptr[reciprocal_table_16-8+ecx*4] 651LSetEntryvec: 652 mov ebx,ds:dword ptr[entryvec_table_16+ecx*4] 653 mov eax,edx 654 mov ds:dword ptr[jumptemp],ebx 655 mov ecx,ebp 656 sar edx,16 657 mov ebx,ds:dword ptr[_cachewidth] 658 sar ecx,16 659 imul edx,ebx 660 add edx,ecx 661 mov ecx,ds:dword ptr[tfracf] 662 mov ds:dword ptr[advancetable+4],edx 663 add edx,ebx 664 shl ebp,16 665 mov ebx,ds:dword ptr[sfracf] 666 shl eax,16 667 mov ds:dword ptr[advancetable],edx 668 mov ds:dword ptr[tstep],eax 669 mov edx,ecx 670 add edx,eax 671 sbb ecx,ecx 672 add ebx,ebp 673 adc esi,ds:dword ptr[advancetable+4+ecx*4] 674 jmp dword ptr[jumptemp] 675LNoSteps: 676 mov al,ds:byte ptr[esi] 677 sub edi,15 678 jmp LEndSpan 679LOnlyOneStep: 680 sub eax,ds:dword ptr[s] 681 sub ebx,ds:dword ptr[t] 682 mov ebp,eax 683 mov edx,ebx 684 jmp LSetEntryvec 685 public Entry2_16, Entry3_16, Entry4_16, Entry5_16 686 public Entry6_16, Entry7_16, Entry8_16, Entry9_16 687 public Entry10_16, Entry11_16, Entry12_16, Entry13_16 688 public Entry14_16, Entry15_16, Entry16_16 689Entry2_16: 690 sub edi,14 691 mov al,ds:byte ptr[esi] 692 jmp LEntry2_16 693Entry3_16: 694 sub edi,13 695 add edx,eax 696 mov al,ds:byte ptr[esi] 697 sbb ecx,ecx 698 add ebx,ebp 699 adc esi,ds:dword ptr[advancetable+4+ecx*4] 700 jmp LEntry3_16 701Entry4_16: 702 sub edi,12 703 add edx,eax 704 mov al,ds:byte ptr[esi] 705 sbb ecx,ecx 706 add ebx,ebp 707 adc esi,ds:dword ptr[advancetable+4+ecx*4] 708 add edx,ds:dword ptr[tstep] 709 jmp LEntry4_16 710Entry5_16: 711 sub edi,11 712 add edx,eax 713 mov al,ds:byte ptr[esi] 714 sbb ecx,ecx 715 add ebx,ebp 716 adc esi,ds:dword ptr[advancetable+4+ecx*4] 717 add edx,ds:dword ptr[tstep] 718 jmp LEntry5_16 719Entry6_16: 720 sub edi,10 721 add edx,eax 722 mov al,ds:byte ptr[esi] 723 sbb ecx,ecx 724 add ebx,ebp 725 adc esi,ds:dword ptr[advancetable+4+ecx*4] 726 add edx,ds:dword ptr[tstep] 727 jmp LEntry6_16 728Entry7_16: 729 sub edi,9 730 add edx,eax 731 mov al,ds:byte ptr[esi] 732 sbb ecx,ecx 733 add ebx,ebp 734 adc esi,ds:dword ptr[advancetable+4+ecx*4] 735 add edx,ds:dword ptr[tstep] 736 jmp LEntry7_16 737Entry8_16: 738 sub edi,8 739 add edx,eax 740 mov al,ds:byte ptr[esi] 741 sbb ecx,ecx 742 add ebx,ebp 743 adc esi,ds:dword ptr[advancetable+4+ecx*4] 744 add edx,ds:dword ptr[tstep] 745 jmp LEntry8_16 746Entry9_16: 747 sub edi,7 748 add edx,eax 749 mov al,ds:byte ptr[esi] 750 sbb ecx,ecx 751 add ebx,ebp 752 adc esi,ds:dword ptr[advancetable+4+ecx*4] 753 add edx,ds:dword ptr[tstep] 754 jmp LEntry9_16 755Entry10_16: 756 sub edi,6 757 add edx,eax 758 mov al,ds:byte ptr[esi] 759 sbb ecx,ecx 760 add ebx,ebp 761 adc esi,ds:dword ptr[advancetable+4+ecx*4] 762 add edx,ds:dword ptr[tstep] 763 jmp LEntry10_16 764Entry11_16: 765 sub edi,5 766 add edx,eax 767 mov al,ds:byte ptr[esi] 768 sbb ecx,ecx 769 add ebx,ebp 770 adc esi,ds:dword ptr[advancetable+4+ecx*4] 771 add edx,ds:dword ptr[tstep] 772 jmp LEntry11_16 773Entry12_16: 774 sub edi,4 775 add edx,eax 776 mov al,ds:byte ptr[esi] 777 sbb ecx,ecx 778 add ebx,ebp 779 adc esi,ds:dword ptr[advancetable+4+ecx*4] 780 add edx,ds:dword ptr[tstep] 781 jmp LEntry12_16 782Entry13_16: 783 sub edi,3 784 add edx,eax 785 mov al,ds:byte ptr[esi] 786 sbb ecx,ecx 787 add ebx,ebp 788 adc esi,ds:dword ptr[advancetable+4+ecx*4] 789 add edx,ds:dword ptr[tstep] 790 jmp LEntry13_16 791Entry14_16: 792 sub edi,2 793 add edx,eax 794 mov al,ds:byte ptr[esi] 795 sbb ecx,ecx 796 add ebx,ebp 797 adc esi,ds:dword ptr[advancetable+4+ecx*4] 798 add edx,ds:dword ptr[tstep] 799 jmp LEntry14_16 800Entry15_16: 801 dec edi 802 add edx,eax 803 mov al,ds:byte ptr[esi] 804 sbb ecx,ecx 805 add ebx,ebp 806 adc esi,ds:dword ptr[advancetable+4+ecx*4] 807 add edx,ds:dword ptr[tstep] 808 jmp LEntry15_16 809Entry16_16: 810 add edx,eax 811 mov al,ds:byte ptr[esi] 812 sbb ecx,ecx 813 add ebx,ebp 814 adc esi,ds:dword ptr[advancetable+4+ecx*4] 815 add edx,ds:dword ptr[tstep] 816 sbb ecx,ecx 817 mov ds:byte ptr[1+edi],al 818 add ebx,ebp 819 mov al,ds:byte ptr[esi] 820 adc esi,ds:dword ptr[advancetable+4+ecx*4] 821 add edx,ds:dword ptr[tstep] 822LEntry15_16: 823 sbb ecx,ecx 824 mov ds:byte ptr[2+edi],al 825 add ebx,ebp 826 mov al,ds:byte ptr[esi] 827 adc esi,ds:dword ptr[advancetable+4+ecx*4] 828 add edx,ds:dword ptr[tstep] 829LEntry14_16: 830 sbb ecx,ecx 831 mov ds:byte ptr[3+edi],al 832 add ebx,ebp 833 mov al,ds:byte ptr[esi] 834 adc esi,ds:dword ptr[advancetable+4+ecx*4] 835 add edx,ds:dword ptr[tstep] 836LEntry13_16: 837 sbb ecx,ecx 838 mov ds:byte ptr[4+edi],al 839 add ebx,ebp 840 mov al,ds:byte ptr[esi] 841 adc esi,ds:dword ptr[advancetable+4+ecx*4] 842 add edx,ds:dword ptr[tstep] 843LEntry12_16: 844 sbb ecx,ecx 845 mov ds:byte ptr[5+edi],al 846 add ebx,ebp 847 mov al,ds:byte ptr[esi] 848 adc esi,ds:dword ptr[advancetable+4+ecx*4] 849 add edx,ds:dword ptr[tstep] 850LEntry11_16: 851 sbb ecx,ecx 852 mov ds:byte ptr[6+edi],al 853 add ebx,ebp 854 mov al,ds:byte ptr[esi] 855 adc esi,ds:dword ptr[advancetable+4+ecx*4] 856 add edx,ds:dword ptr[tstep] 857LEntry10_16: 858 sbb ecx,ecx 859 mov ds:byte ptr[7+edi],al 860 add ebx,ebp 861 mov al,ds:byte ptr[esi] 862 adc esi,ds:dword ptr[advancetable+4+ecx*4] 863 add edx,ds:dword ptr[tstep] 864LEntry9_16: 865 sbb ecx,ecx 866 mov ds:byte ptr[8+edi],al 867 add ebx,ebp 868 mov al,ds:byte ptr[esi] 869 adc esi,ds:dword ptr[advancetable+4+ecx*4] 870 add edx,ds:dword ptr[tstep] 871LEntry8_16: 872 sbb ecx,ecx 873 mov ds:byte ptr[9+edi],al 874 add ebx,ebp 875 mov al,ds:byte ptr[esi] 876 adc esi,ds:dword ptr[advancetable+4+ecx*4] 877 add edx,ds:dword ptr[tstep] 878LEntry7_16: 879 sbb ecx,ecx 880 mov ds:byte ptr[10+edi],al 881 add ebx,ebp 882 mov al,ds:byte ptr[esi] 883 adc esi,ds:dword ptr[advancetable+4+ecx*4] 884 add edx,ds:dword ptr[tstep] 885LEntry6_16: 886 sbb ecx,ecx 887 mov ds:byte ptr[11+edi],al 888 add ebx,ebp 889 mov al,ds:byte ptr[esi] 890 adc esi,ds:dword ptr[advancetable+4+ecx*4] 891 add edx,ds:dword ptr[tstep] 892LEntry5_16: 893 sbb ecx,ecx 894 mov ds:byte ptr[12+edi],al 895 add ebx,ebp 896 mov al,ds:byte ptr[esi] 897 adc esi,ds:dword ptr[advancetable+4+ecx*4] 898 add edx,ds:dword ptr[tstep] 899LEntry4_16: 900 sbb ecx,ecx 901 mov ds:byte ptr[13+edi],al 902 add ebx,ebp 903 mov al,ds:byte ptr[esi] 904 adc esi,ds:dword ptr[advancetable+4+ecx*4] 905LEntry3_16: 906 mov ds:byte ptr[14+edi],al 907 mov al,ds:byte ptr[esi] 908LEntry2_16: 909LEndSpan: 910 fstp st(0) 911 fstp st(0) 912 fstp st(0) 913 mov ebx,ds:dword ptr[pspantemp] 914 mov ebx,ds:dword ptr[12+ebx] 915 test ebx,ebx 916 mov ds:byte ptr[15+edi],al 917 jnz LSpanLoop 918 pop ebx 919 pop esi 920 pop edi 921 pop ebp 922 ret 923_TEXT ENDS 924 END 925