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 235Ltemp dd 0 236float_1_div_0100000h dd 035800000h 237float_point_999 dd 0.999 238float_1_point_001 dd 1.001 239_DATA ENDS 240_TEXT SEGMENT 241 public _R_EdgeCodeStart 242_R_EdgeCodeStart: 243 public _R_InsertNewEdges 244_R_InsertNewEdges: 245 push edi 246 push esi 247 mov edx,ds:dword ptr[4+8+esp] 248 push ebx 249 mov ecx,ds:dword ptr[8+12+esp] 250LDoNextEdge: 251 mov eax,ds:dword ptr[0+edx] 252 mov edi,edx 253LContinueSearch: 254 mov ebx,ds:dword ptr[0+ecx] 255 mov esi,ds:dword ptr[12+ecx] 256 cmp eax,ebx 257 jle LAddedge 258 mov ebx,ds:dword ptr[0+esi] 259 mov ecx,ds:dword ptr[12+esi] 260 cmp eax,ebx 261 jle LAddedge2 262 mov ebx,ds:dword ptr[0+ecx] 263 mov esi,ds:dword ptr[12+ecx] 264 cmp eax,ebx 265 jle LAddedge 266 mov ebx,ds:dword ptr[0+esi] 267 mov ecx,ds:dword ptr[12+esi] 268 cmp eax,ebx 269 jg LContinueSearch 270LAddedge2: 271 mov edx,ds:dword ptr[12+edx] 272 mov ebx,ds:dword ptr[8+esi] 273 mov ds:dword ptr[12+edi],esi 274 mov ds:dword ptr[8+edi],ebx 275 mov ds:dword ptr[12+ebx],edi 276 mov ds:dword ptr[8+esi],edi 277 mov ecx,esi 278 cmp edx,0 279 jnz LDoNextEdge 280 jmp LDone 281 align 4 282LAddedge: 283 mov edx,ds:dword ptr[12+edx] 284 mov ebx,ds:dword ptr[8+ecx] 285 mov ds:dword ptr[12+edi],ecx 286 mov ds:dword ptr[8+edi],ebx 287 mov ds:dword ptr[12+ebx],edi 288 mov ds:dword ptr[8+ecx],edi 289 cmp edx,0 290 jnz LDoNextEdge 291LDone: 292 pop ebx 293 pop esi 294 pop edi 295 ret 296 public _R_RemoveEdges 297_R_RemoveEdges: 298 push ebx 299 mov eax,ds:dword ptr[4+4+esp] 300Lre_loop: 301 mov ecx,ds:dword ptr[12+eax] 302 mov ebx,ds:dword ptr[20+eax] 303 mov edx,ds:dword ptr[8+eax] 304 test ebx,ebx 305 mov ds:dword ptr[8+ecx],edx 306 jz Lre_done 307 mov ds:dword ptr[12+edx],ecx 308 mov ecx,ds:dword ptr[12+ebx] 309 mov edx,ds:dword ptr[8+ebx] 310 mov eax,ds:dword ptr[20+ebx] 311 mov ds:dword ptr[8+ecx],edx 312 test eax,eax 313 mov ds:dword ptr[12+edx],ecx 314 jnz Lre_loop 315 pop ebx 316 ret 317Lre_done: 318 mov ds:dword ptr[12+edx],ecx 319 pop ebx 320 ret 321 public _R_StepActiveU 322_R_StepActiveU: 323 push edi 324 mov edx,ds:dword ptr[4+4+esp] 325 push esi 326 push ebx 327 mov esi,ds:dword ptr[8+edx] 328LNewEdge: 329 mov edi,ds:dword ptr[0+esi] 330LNextEdge: 331 mov eax,ds:dword ptr[0+edx] 332 mov ebx,ds:dword ptr[4+edx] 333 add eax,ebx 334 mov esi,ds:dword ptr[12+edx] 335 mov ds:dword ptr[0+edx],eax 336 cmp eax,edi 337 jl LPushBack 338 mov edi,ds:dword ptr[0+esi] 339 mov ebx,ds:dword ptr[4+esi] 340 add edi,ebx 341 mov edx,ds:dword ptr[12+esi] 342 mov ds:dword ptr[0+esi],edi 343 cmp edi,eax 344 jl LPushBack2 345 mov eax,ds:dword ptr[0+edx] 346 mov ebx,ds:dword ptr[4+edx] 347 add eax,ebx 348 mov esi,ds:dword ptr[12+edx] 349 mov ds:dword ptr[0+edx],eax 350 cmp eax,edi 351 jl LPushBack 352 mov edi,ds:dword ptr[0+esi] 353 mov ebx,ds:dword ptr[4+esi] 354 add edi,ebx 355 mov edx,ds:dword ptr[12+esi] 356 mov ds:dword ptr[0+esi],edi 357 cmp edi,eax 358 jnl LNextEdge 359LPushBack2: 360 mov ebx,edx 361 mov eax,edi 362 mov edx,esi 363 mov esi,ebx 364LPushBack: 365 mov ecx,ds:dword ptr[8+edx] 366 mov ebx,ds:dword ptr[12+edx] 367 cmp edx,offset _edge_aftertail 368 jz LUDone 369 mov edi,ds:dword ptr[8+ecx] 370 mov ds:dword ptr[8+esi],ecx 371 mov ds:dword ptr[12+ecx],ebx 372LPushBackLoop: 373 mov ecx,ds:dword ptr[8+edi] 374 mov ebx,ds:dword ptr[0+edi] 375 cmp eax,ebx 376 jnl LPushBackFound 377 mov edi,ds:dword ptr[8+ecx] 378 mov ebx,ds:dword ptr[0+ecx] 379 cmp eax,ebx 380 jl LPushBackLoop 381 mov edi,ecx 382LPushBackFound: 383 mov ebx,ds:dword ptr[12+edi] 384 mov ds:dword ptr[8+edx],edi 385 mov ds:dword ptr[12+edx],ebx 386 mov ds:dword ptr[12+edi],edx 387 mov ds:dword ptr[8+ebx],edx 388 mov edx,esi 389 mov esi,ds:dword ptr[8+esi] 390 cmp edx,offset _edge_tail 391 jnz LNewEdge 392LUDone: 393 pop ebx 394 pop esi 395 pop edi 396 ret 397 align 4 398TrailingEdge: 399 mov eax,ds:dword ptr[20+esi] 400 dec eax 401 jnz LInverted 402 mov ds:dword ptr[20+esi],eax 403 mov ecx,ds:dword ptr[40+esi] 404 mov edx,ds:dword ptr[12345678h] 405LPatch0: 406 mov eax,ds:dword ptr[_r_bmodelactive] 407 sub eax,ecx 408 cmp edx,esi 409 mov ds:dword ptr[_r_bmodelactive],eax 410 jnz LNoEmit 411 mov eax,ds:dword ptr[0+ebx] 412 shr eax,20 413 mov edx,ds:dword ptr[16+esi] 414 mov ecx,ds:dword ptr[0+esi] 415 cmp eax,edx 416 jle LNoEmit2 417 mov ds:dword ptr[16+ecx],eax 418 sub eax,edx 419 mov ds:dword ptr[0+ebp],edx 420 mov ds:dword ptr[8+ebp],eax 421 mov eax,ds:dword ptr[_current_iv] 422 mov ds:dword ptr[4+ebp],eax 423 mov eax,ds:dword ptr[8+esi] 424 mov ds:dword ptr[12+ebp],eax 425 mov ds:dword ptr[8+esi],ebp 426 add ebp,16 427 mov edx,ds:dword ptr[0+esi] 428 mov esi,ds:dword ptr[4+esi] 429 mov ds:dword ptr[0+esi],edx 430 mov ds:dword ptr[4+edx],esi 431 ret 432LNoEmit2: 433 mov ds:dword ptr[16+ecx],eax 434 mov edx,ds:dword ptr[0+esi] 435 mov esi,ds:dword ptr[4+esi] 436 mov ds:dword ptr[0+esi],edx 437 mov ds:dword ptr[4+edx],esi 438 ret 439LNoEmit: 440 mov edx,ds:dword ptr[0+esi] 441 mov esi,ds:dword ptr[4+esi] 442 mov ds:dword ptr[0+esi],edx 443 mov ds:dword ptr[4+edx],esi 444 ret 445LInverted: 446 mov ds:dword ptr[20+esi],eax 447 ret 448Lgs_trailing: 449 push offset Lgs_nextedge 450 jmp TrailingEdge 451 public _R_GenerateSpans 452_R_GenerateSpans: 453 push ebp 454 push edi 455 push esi 456 push ebx 457 mov eax,ds:dword ptr[_surfaces] 458 mov edx,ds:dword ptr[_edge_head_u_shift20] 459 add eax,64 460 mov ebp,ds:dword ptr[_span_p] 461 mov ds:dword ptr[_r_bmodelactive],0 462 mov ds:dword ptr[0+eax],eax 463 mov ds:dword ptr[4+eax],eax 464 mov ds:dword ptr[16+eax],edx 465 mov ebx,ds:dword ptr[_edge_head+12] 466 cmp ebx,offset _edge_tail 467 jz Lgs_lastspan 468Lgs_edgeloop: 469 mov edi,ds:dword ptr[16+ebx] 470 mov eax,ds:dword ptr[_surfaces] 471 mov esi,edi 472 and edi,0FFFF0000h 473 and esi,0FFFFh 474 jz Lgs_leading 475 shl esi,6 476 add esi,eax 477 test edi,edi 478 jz Lgs_trailing 479 call near ptr TrailingEdge 480 mov eax,ds:dword ptr[_surfaces] 481Lgs_leading: 482 shr edi,16-6 483 mov eax,ds:dword ptr[_surfaces] 484 add edi,eax 485 mov esi,ds:dword ptr[12345678h] 486LPatch2: 487 mov edx,ds:dword ptr[20+edi] 488 mov eax,ds:dword ptr[40+edi] 489 test eax,eax 490 jnz Lbmodel_leading 491 test edx,edx 492 jnz Lxl_done 493 inc edx 494 mov eax,ds:dword ptr[12+edi] 495 mov ds:dword ptr[20+edi],edx 496 mov ecx,ds:dword ptr[12+esi] 497 cmp eax,ecx 498 jl Lnewtop 499Lsortloopnb: 500 mov esi,ds:dword ptr[0+esi] 501 mov ecx,ds:dword ptr[12+esi] 502 cmp eax,ecx 503 jge Lsortloopnb 504 jmp LInsertAndExit 505 align 4 506Lbmodel_leading: 507 test edx,edx 508 jnz Lxl_done 509 mov ecx,ds:dword ptr[_r_bmodelactive] 510 inc edx 511 inc ecx 512 mov ds:dword ptr[20+edi],edx 513 mov ds:dword ptr[_r_bmodelactive],ecx 514 mov eax,ds:dword ptr[12+edi] 515 mov ecx,ds:dword ptr[12+esi] 516 cmp eax,ecx 517 jl Lnewtop 518 jz Lzcheck_for_newtop 519Lsortloop: 520 mov esi,ds:dword ptr[0+esi] 521 mov ecx,ds:dword ptr[12+esi] 522 cmp eax,ecx 523 jg Lsortloop 524 jne LInsertAndExit 525 mov eax,ds:dword ptr[0+ebx] 526 sub eax,0FFFFFh 527 mov ds:dword ptr[Ltemp],eax 528 fild ds:dword ptr[Ltemp] 529 fmul ds:dword ptr[float_1_div_0100000h] 530 fld st(0) 531 fmul ds:dword ptr[48+edi] 532 fld ds:dword ptr[_fv] 533 fmul ds:dword ptr[52+edi] 534 fxch st(1) 535 fadd ds:dword ptr[44+edi] 536 fld ds:dword ptr[48+esi] 537 fmul st(0),st(3) 538 fxch st(1) 539 faddp st(2),st(0) 540 fld ds:dword ptr[_fv] 541 fmul ds:dword ptr[52+esi] 542 fld st(2) 543 fmul ds:dword ptr[float_point_999] 544 fxch st(2) 545 fadd ds:dword ptr[44+esi] 546 faddp st(1),st(0) 547 fxch st(1) 548 fcomp st(1) 549 fxch st(1) 550 fmul ds:dword ptr[float_1_point_001] 551 fxch st(1) 552 fnstsw ax 553 test ah,001h 554 jz Lgotposition_fpop3 555 fcomp st(1) 556 fnstsw ax 557 test ah,045h 558 jz Lsortloop_fpop2 559 fld ds:dword ptr[48+edi] 560 fcomp ds:dword ptr[48+esi] 561 fnstsw ax 562 test ah,001h 563 jz Lgotposition_fpop2 564 fstp st(0) 565 fstp st(0) 566 mov eax,ds:dword ptr[12+edi] 567 jmp Lsortloop 568Lgotposition_fpop3: 569 fstp st(0) 570Lgotposition_fpop2: 571 fstp st(0) 572 fstp st(0) 573 jmp LInsertAndExit 574Lnewtop_fpop3: 575 fstp st(0) 576Lnewtop_fpop2: 577 fstp st(0) 578 fstp st(0) 579 mov eax,ds:dword ptr[12+edi] 580Lnewtop: 581 mov eax,ds:dword ptr[0+ebx] 582 mov edx,ds:dword ptr[16+esi] 583 shr eax,20 584 mov ds:dword ptr[16+edi],eax 585 cmp eax,edx 586 jle LInsertAndExit 587 sub eax,edx 588 mov ds:dword ptr[0+ebp],edx 589 mov ds:dword ptr[8+ebp],eax 590 mov eax,ds:dword ptr[_current_iv] 591 mov ds:dword ptr[4+ebp],eax 592 mov eax,ds:dword ptr[8+esi] 593 mov ds:dword ptr[12+ebp],eax 594 mov ds:dword ptr[8+esi],ebp 595 add ebp,16 596LInsertAndExit: 597 mov ds:dword ptr[0+edi],esi 598 mov eax,ds:dword ptr[4+esi] 599 mov ds:dword ptr[4+edi],eax 600 mov ds:dword ptr[4+esi],edi 601 mov ds:dword ptr[0+eax],edi 602Lgs_nextedge: 603 mov ebx,ds:dword ptr[12+ebx] 604 cmp ebx,offset _edge_tail 605 jnz Lgs_edgeloop 606Lgs_lastspan: 607 mov esi,ds:dword ptr[12345678h] 608LPatch3: 609 mov eax,ds:dword ptr[_edge_tail_u_shift20] 610 xor ecx,ecx 611 mov edx,ds:dword ptr[16+esi] 612 sub eax,edx 613 jle Lgs_resetspanstate 614 mov ds:dword ptr[0+ebp],edx 615 mov ds:dword ptr[8+ebp],eax 616 mov eax,ds:dword ptr[_current_iv] 617 mov ds:dword ptr[4+ebp],eax 618 mov eax,ds:dword ptr[8+esi] 619 mov ds:dword ptr[12+ebp],eax 620 mov ds:dword ptr[8+esi],ebp 621 add ebp,16 622Lgs_resetspanstate: 623 mov ds:dword ptr[20+esi],ecx 624 mov esi,ds:dword ptr[0+esi] 625 cmp esi,012345678h 626LPatch4: 627 jnz Lgs_resetspanstate 628 mov ds:dword ptr[_span_p],ebp 629 pop ebx 630 pop esi 631 pop edi 632 pop ebp 633 ret 634 align 4 635Lxl_done: 636 inc edx 637 mov ds:dword ptr[20+edi],edx 638 jmp Lgs_nextedge 639 align 4 640Lzcheck_for_newtop: 641 mov eax,ds:dword ptr[0+ebx] 642 sub eax,0FFFFFh 643 mov ds:dword ptr[Ltemp],eax 644 fild ds:dword ptr[Ltemp] 645 fmul ds:dword ptr[float_1_div_0100000h] 646 fld st(0) 647 fmul ds:dword ptr[48+edi] 648 fld ds:dword ptr[_fv] 649 fmul ds:dword ptr[52+edi] 650 fxch st(1) 651 fadd ds:dword ptr[44+edi] 652 fld ds:dword ptr[48+esi] 653 fmul st(0),st(3) 654 fxch st(1) 655 faddp st(2),st(0) 656 fld ds:dword ptr[_fv] 657 fmul ds:dword ptr[52+esi] 658 fld st(2) 659 fmul ds:dword ptr[float_point_999] 660 fxch st(2) 661 fadd ds:dword ptr[44+esi] 662 faddp st(1),st(0) 663 fxch st(1) 664 fcomp st(1) 665 fxch st(1) 666 fmul ds:dword ptr[float_1_point_001] 667 fxch st(1) 668 fnstsw ax 669 test ah,001h 670 jz Lnewtop_fpop3 671 fcomp st(1) 672 fnstsw ax 673 test ah,045h 674 jz Lsortloop_fpop2 675 fld ds:dword ptr[48+edi] 676 fcomp ds:dword ptr[48+esi] 677 fnstsw ax 678 test ah,001h 679 jz Lnewtop_fpop2 680Lsortloop_fpop2: 681 fstp st(0) 682 fstp st(0) 683 mov eax,ds:dword ptr[12+edi] 684 jmp Lsortloop 685 public _R_EdgeCodeEnd 686_R_EdgeCodeEnd: 687 align 4 688 public _R_SurfacePatch 689_R_SurfacePatch: 690 mov eax,ds:dword ptr[_surfaces] 691 add eax,64 692 mov ds:dword ptr[LPatch4-4],eax 693 add eax,0 694 mov ds:dword ptr[LPatch0-4],eax 695 mov ds:dword ptr[LPatch2-4],eax 696 mov ds:dword ptr[LPatch3-4],eax 697 ret 698_TEXT ENDS 699 END 700