Home | History | Annotate | Download | only in client
      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 Ld0 dd 0.0
    236 Ld1 dd 0.0
    237 Lstack dd 0
    238 Lfp_near_clip dd 0.01
    239 Lceilv0 dd 0
    240 Lv dd 0
    241 Lu0 dd 0
    242 Lv0 dd 0
    243 Lzi0 dd 0
    244 _DATA ENDS
    245 _TEXT SEGMENT
    246  align 4
    247  public _R_ClipEdge
    248 _R_ClipEdge:
    249  push esi
    250  push edi
    251  push ebx
    252  mov ds:dword ptr[Lstack],esp
    253  mov ebx,ds:dword ptr[12+12+esp]
    254  mov esi,ds:dword ptr[4+12+esp]
    255  mov edx,ds:dword ptr[8+12+esp]
    256  test ebx,ebx
    257  jz Lemit
    258 Lcliploop:
    259  fld ds:dword ptr[0+0+esi]
    260  fmul ds:dword ptr[0+0+ebx]
    261  fld ds:dword ptr[0+4+esi]
    262  fmul ds:dword ptr[0+4+ebx]
    263  fld ds:dword ptr[0+8+esi]
    264  fmul ds:dword ptr[0+8+ebx]
    265  fxch st(1)
    266  faddp st(2),st(0)
    267  fld ds:dword ptr[0+0+edx]
    268  fmul ds:dword ptr[0+0+ebx]
    269  fld ds:dword ptr[0+4+edx]
    270  fmul ds:dword ptr[0+4+ebx]
    271  fld ds:dword ptr[0+8+edx]
    272  fmul ds:dword ptr[0+8+ebx]
    273  fxch st(1)
    274  faddp st(2),st(0)
    275  fxch st(3)
    276  faddp st(2),st(0)
    277  faddp st(2),st(0)
    278  fsub ds:dword ptr[12+ebx]
    279  fxch st(1)
    280  fsub ds:dword ptr[12+ebx]
    281  fxch st(1)
    282  fstp ds:dword ptr[Ld0]
    283  fstp ds:dword ptr[Ld1]
    284  mov eax,ds:dword ptr[Ld0]
    285  mov ecx,ds:dword ptr[Ld1]
    286  or ecx,eax
    287  js Lp2
    288 Lcontinue:
    289  mov ebx,ds:dword ptr[16+ebx]
    290  test ebx,ebx
    291  jnz Lcliploop
    292 Lemit:
    293  fldcw ds:word ptr[ceil_cw]
    294  cmp ds:dword ptr[_r_lastvertvalid],0
    295  jz LCalcFirst
    296  mov eax,ds:dword ptr[_r_lzi1]
    297  mov ecx,ds:dword ptr[_r_u1]
    298  mov ds:dword ptr[Lzi0],eax
    299  mov ds:dword ptr[Lu0],ecx
    300  mov ecx,ds:dword ptr[_r_v1]
    301  mov eax,ds:dword ptr[_r_ceilv1]
    302  mov ds:dword ptr[Lv0],ecx
    303  mov ds:dword ptr[Lceilv0],eax
    304  jmp LCalcSecond
    305 LCalcFirst:
    306  call near ptr LTransformAndProject
    307  fst ds:dword ptr[Lv0]
    308  fxch st(2)
    309  fstp ds:dword ptr[Lu0]
    310  fstp ds:dword ptr[Lzi0]
    311  fistp ds:dword ptr[Lceilv0]
    312 LCalcSecond:
    313  mov esi,edx
    314  call near ptr LTransformAndProject
    315  fld ds:dword ptr[Lu0]
    316  fxch st(3)
    317  fld ds:dword ptr[Lzi0]
    318  fxch st(3)
    319  fld ds:dword ptr[Lv0]
    320  fxch st(3)
    321  fist ds:dword ptr[_r_ceilv1]
    322  fldcw ds:word ptr[single_cw]
    323  fst ds:dword ptr[_r_v1]
    324  fxch st(4)
    325  fcom st(1)
    326  fnstsw ax
    327  test ah,1
    328  jz LP0
    329  fstp st(0)
    330  fld st(0)
    331 LP0:
    332  fxch st(1)
    333  fstp ds:dword ptr[_r_lzi1]
    334  fxch st(1)
    335  fst ds:dword ptr[_r_u1]
    336  fxch st(1)
    337  fcom ds:dword ptr[_r_nearzi]
    338  fnstsw ax
    339  test ah,045h
    340  jnz LP1
    341  fst ds:dword ptr[_r_nearzi]
    342 LP1:
    343  mov eax,ds:dword ptr[_r_nearzionly]
    344  test eax,eax
    345  jz LP2
    346 LPop5AndDone:
    347  mov eax,ds:dword ptr[_cacheoffset]
    348  mov edx,ds:dword ptr[_r_framecount]
    349  cmp eax,07FFFFFFFh
    350  jz LDoPop
    351  and edx,07FFFFFFFh
    352  or edx,080000000h
    353  mov ds:dword ptr[_cacheoffset],edx
    354 LDoPop:
    355  fstp st(0)
    356  fstp st(0)
    357  fstp st(0)
    358  fstp st(0)
    359  fstp st(0)
    360  jmp Ldone
    361 LP2:
    362  mov ebx,ds:dword ptr[Lceilv0]
    363  mov edi,ds:dword ptr[_edge_p]
    364  mov ecx,ds:dword ptr[_r_ceilv1]
    365  mov edx,edi
    366  mov esi,ds:dword ptr[_r_pedge]
    367  add edx,32
    368  cmp ebx,ecx
    369  jz LPop5AndDone
    370  mov eax,ds:dword ptr[_r_pedge]
    371  mov ds:dword ptr[28+edi],eax
    372  fstp ds:dword ptr[24+edi]
    373  jc LSide0
    374 LSide1:
    375  fsubp st(3),st(0)
    376  fsub st(0),st(1)
    377  fdivp st(2),st(0)
    378  mov ds:dword ptr[_r_emitted],1
    379  mov ds:dword ptr[_edge_p],edx
    380  mov eax,ds:dword ptr[edx]
    381  mov eax,ecx
    382  lea ecx,ds:dword ptr[-1+ebx]
    383  mov ebx,eax
    384  mov eax,ds:dword ptr[_surface_p]
    385  mov esi,ds:dword ptr[_surfaces]
    386  sub edx,edx
    387  sub eax,esi
    388  shr eax,6
    389  mov ds:dword ptr[16+edi],edx
    390  mov ds:dword ptr[16+2+edi],eax
    391  sub esi,esi
    392  mov ds:dword ptr[Lv],ebx
    393  fild ds:dword ptr[Lv]
    394  fsubrp st(1),st(0)
    395  fmul st(0),st(1)
    396  fadd ds:dword ptr[_r_u1]
    397  jmp LSideDone
    398 LSide0:
    399  fsub st(0),st(3)
    400  fxch st(2)
    401  fsub st(0),st(1)
    402  fdivp st(2),st(0)
    403  mov ds:dword ptr[_r_emitted],1
    404  mov ds:dword ptr[_edge_p],edx
    405  mov eax,ds:dword ptr[edx]
    406  dec ecx
    407  mov eax,ds:dword ptr[_surface_p]
    408  mov esi,ds:dword ptr[_surfaces]
    409  sub edx,edx
    410  sub eax,esi
    411  shr eax,6
    412  mov ds:dword ptr[16+2+edi],edx
    413  mov ds:dword ptr[16+edi],eax
    414  mov esi,1
    415  mov ds:dword ptr[Lv],ebx
    416  fild ds:dword ptr[Lv]
    417  fsubrp st(1),st(0)
    418  fmul st(0),st(1)
    419  faddp st(2),st(0)
    420  fxch st(1)
    421 LSideDone:
    422  fmul ds:dword ptr[fp_1m]
    423  fxch st(1)
    424  fmul ds:dword ptr[fp_1m]
    425  fxch st(1)
    426  fadd ds:dword ptr[fp_1m_minus_1]
    427  fxch st(1)
    428  fistp ds:dword ptr[4+edi]
    429  fistp ds:dword ptr[0+edi]
    430  mov eax,ds:dword ptr[0+edi]
    431  mov edx,ds:dword ptr[_r_refdef+76]
    432  cmp eax,edx
    433  jl LP4
    434  mov edx,ds:dword ptr[_r_refdef+80]
    435  cmp eax,edx
    436  jng LP5
    437 LP4:
    438  mov ds:dword ptr[0+edi],edx
    439  mov eax,edx
    440 LP5:
    441  add eax,esi
    442  mov esi,ds:dword ptr[_newedges+ebx*4]
    443  test esi,esi
    444  jz LDoFirst
    445  cmp ds:dword ptr[0+esi],eax
    446  jl LNotFirst
    447 LDoFirst:
    448  mov ds:dword ptr[12+edi],esi
    449  mov ds:dword ptr[_newedges+ebx*4],edi
    450  jmp LSetRemove
    451 LNotFirst:
    452 LFindInsertLoop:
    453  mov edx,esi
    454  mov esi,ds:dword ptr[12+esi]
    455  test esi,esi
    456  jz LInsertFound
    457  cmp ds:dword ptr[0+esi],eax
    458  jl LFindInsertLoop
    459 LInsertFound:
    460  mov ds:dword ptr[12+edi],esi
    461  mov ds:dword ptr[12+edx],edi
    462 LSetRemove:
    463  mov eax,ds:dword ptr[_removeedges+ecx*4]
    464  mov ds:dword ptr[_removeedges+ecx*4],edi
    465  mov ds:dword ptr[20+edi],eax
    466 Ldone:
    467  mov esp,ds:dword ptr[Lstack]
    468  pop ebx
    469  pop edi
    470  pop esi
    471  ret
    472 Lp2:
    473  test eax,eax
    474  jns Lp1
    475  mov eax,ds:dword ptr[Ld1]
    476  test eax,eax
    477  jns Lp3
    478  mov eax,ds:dword ptr[_r_leftclipped]
    479  mov ecx,ds:dword ptr[_r_pedge]
    480  test eax,eax
    481  jnz Ldone
    482  mov eax,ds:dword ptr[_r_framecount]
    483  and eax,07FFFFFFFh
    484  or eax,080000000h
    485  mov ds:dword ptr[_cacheoffset],eax
    486  jmp Ldone
    487 Lp1:
    488  fld ds:dword ptr[Ld0]
    489  fld ds:dword ptr[Ld1]
    490  fsubr st(0),st(1)
    491  mov ds:dword ptr[_cacheoffset],07FFFFFFFh
    492  fdivp st(1),st(0)
    493  sub esp,12
    494  fld ds:dword ptr[0+8+edx]
    495  fsub ds:dword ptr[0+8+esi]
    496  fld ds:dword ptr[0+4+edx]
    497  fsub ds:dword ptr[0+4+esi]
    498  fld ds:dword ptr[0+0+edx]
    499  fsub ds:dword ptr[0+0+esi]
    500  mov edx,esp
    501  mov eax,ds:dword ptr[20+ebx]
    502  test al,al
    503  fmul st(0),st(3)
    504  fxch st(1)
    505  fmul st(0),st(3)
    506  fxch st(2)
    507  fmulp st(3),st(0)
    508  fadd ds:dword ptr[0+0+esi]
    509  fxch st(1)
    510  fadd ds:dword ptr[0+4+esi]
    511  fxch st(2)
    512  fadd ds:dword ptr[0+8+esi]
    513  fxch st(1)
    514  fstp ds:dword ptr[0+0+esp]
    515  fstp ds:dword ptr[0+8+esp]
    516  fstp ds:dword ptr[0+4+esp]
    517  jz Ltestright
    518  mov ds:dword ptr[_r_leftclipped],1
    519  mov eax,ds:dword ptr[0+0+esp]
    520  mov ds:dword ptr[_r_leftexit+0+0],eax
    521  mov eax,ds:dword ptr[0+4+esp]
    522  mov ds:dword ptr[_r_leftexit+0+4],eax
    523  mov eax,ds:dword ptr[0+8+esp]
    524  mov ds:dword ptr[_r_leftexit+0+8],eax
    525  jmp Lcontinue
    526 Ltestright:
    527  test ah,ah
    528  jz Lcontinue
    529  mov ds:dword ptr[_r_rightclipped],1
    530  mov eax,ds:dword ptr[0+0+esp]
    531  mov ds:dword ptr[_r_rightexit+0+0],eax
    532  mov eax,ds:dword ptr[0+4+esp]
    533  mov ds:dword ptr[_r_rightexit+0+4],eax
    534  mov eax,ds:dword ptr[0+8+esp]
    535  mov ds:dword ptr[_r_rightexit+0+8],eax
    536  jmp Lcontinue
    537 Lp3:
    538  mov ds:dword ptr[_r_lastvertvalid],0
    539  fld ds:dword ptr[Ld0]
    540  fld ds:dword ptr[Ld1]
    541  fsubr st(0),st(1)
    542  mov ds:dword ptr[_cacheoffset],07FFFFFFFh
    543  fdivp st(1),st(0)
    544  sub esp,12
    545  fld ds:dword ptr[0+8+edx]
    546  fsub ds:dword ptr[0+8+esi]
    547  fld ds:dword ptr[0+4+edx]
    548  fsub ds:dword ptr[0+4+esi]
    549  fld ds:dword ptr[0+0+edx]
    550  fsub ds:dword ptr[0+0+esi]
    551  mov eax,ds:dword ptr[20+ebx]
    552  test al,al
    553  fmul st(0),st(3)
    554  fxch st(1)
    555  fmul st(0),st(3)
    556  fxch st(2)
    557  fmulp st(3),st(0)
    558  fadd ds:dword ptr[0+0+esi]
    559  fxch st(1)
    560  fadd ds:dword ptr[0+4+esi]
    561  fxch st(2)
    562  fadd ds:dword ptr[0+8+esi]
    563  fxch st(1)
    564  fstp ds:dword ptr[0+0+esp]
    565  fstp ds:dword ptr[0+8+esp]
    566  fstp ds:dword ptr[0+4+esp]
    567  mov esi,esp
    568  jz Ltestright2
    569  mov ds:dword ptr[_r_leftclipped],1
    570  mov eax,ds:dword ptr[0+0+esp]
    571  mov ds:dword ptr[_r_leftenter+0+0],eax
    572  mov eax,ds:dword ptr[0+4+esp]
    573  mov ds:dword ptr[_r_leftenter+0+4],eax
    574  mov eax,ds:dword ptr[0+8+esp]
    575  mov ds:dword ptr[_r_leftenter+0+8],eax
    576  jmp Lcontinue
    577 Ltestright2:
    578  test ah,ah
    579  jz Lcontinue
    580  mov ds:dword ptr[_r_rightclipped],1
    581  mov eax,ds:dword ptr[0+0+esp]
    582  mov ds:dword ptr[_r_rightenter+0+0],eax
    583  mov eax,ds:dword ptr[0+4+esp]
    584  mov ds:dword ptr[_r_rightenter+0+4],eax
    585  mov eax,ds:dword ptr[0+8+esp]
    586  mov ds:dword ptr[_r_rightenter+0+8],eax
    587  jmp Lcontinue
    588 LTransformAndProject:
    589  fld ds:dword ptr[0+0+esi]
    590  fsub ds:dword ptr[_modelorg+0]
    591  fld ds:dword ptr[0+4+esi]
    592  fsub ds:dword ptr[_modelorg+4]
    593  fld ds:dword ptr[0+8+esi]
    594  fsub ds:dword ptr[_modelorg+8]
    595  fxch st(2)
    596  fld st(0)
    597  fmul ds:dword ptr[_vpn+0]
    598  fld st(1)
    599  fmul ds:dword ptr[_vright+0]
    600  fxch st(2)
    601  fmul ds:dword ptr[_vup+0]
    602  fld st(3)
    603  fmul ds:dword ptr[_vpn+4]
    604  fld st(4)
    605  fmul ds:dword ptr[_vright+4]
    606  fxch st(5)
    607  fmul ds:dword ptr[_vup+4]
    608  fxch st(1)
    609  faddp st(3),st(0)
    610  fxch st(3)
    611  faddp st(4),st(0)
    612  faddp st(2),st(0)
    613  fld st(3)
    614  fmul ds:dword ptr[_vpn+8]
    615  fld st(4)
    616  fmul ds:dword ptr[_vright+8]
    617  fxch st(5)
    618  fmul ds:dword ptr[_vup+8]
    619  fxch st(1)
    620  faddp st(2),st(0)
    621  fxch st(4)
    622  faddp st(3),st(0)
    623  fxch st(1)
    624  faddp st(3),st(0)
    625  fcom ds:dword ptr[Lfp_near_clip]
    626  fnstsw ax
    627  test ah,1
    628  jz LNoClip
    629  fstp st(0)
    630  fld ds:dword ptr[Lfp_near_clip]
    631 LNoClip:
    632  fdivr ds:dword ptr[float_1]
    633  fxch st(1)
    634  fld ds:dword ptr[_xscale]
    635  fmul st(0),st(2)
    636  fmulp st(1),st(0)
    637  fadd ds:dword ptr[_xcenter]
    638  fcom ds:dword ptr[_r_refdef+68]
    639  fnstsw ax
    640  test ah,1
    641  jz LClampP0
    642  fstp st(0)
    643  fld ds:dword ptr[_r_refdef+68]
    644 LClampP0:
    645  fcom ds:dword ptr[_r_refdef+84]
    646  fnstsw ax
    647  test ah,045h
    648  jnz LClampP1
    649  fstp st(0)
    650  fld ds:dword ptr[_r_refdef+84]
    651 LClampP1:
    652  fld st(1)
    653  fmul ds:dword ptr[_yscale]
    654  fmulp st(3),st(0)
    655  fxch st(2)
    656  fsubr ds:dword ptr[_ycenter]
    657  fcom ds:dword ptr[_r_refdef+72]
    658  fnstsw ax
    659  test ah,1
    660  jz LClampP2
    661  fstp st(0)
    662  fld ds:dword ptr[_r_refdef+72]
    663 LClampP2:
    664  fcom ds:dword ptr[_r_refdef+88]
    665  fnstsw ax
    666  test ah,045h
    667  jnz LClampP3
    668  fstp st(0)
    669  fld ds:dword ptr[_r_refdef+88]
    670 LClampP3:
    671  ret
    672 _TEXT ENDS
    673  END
    674