home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 14 / MA_Cover_14.iso / source / c / q1source_amy / qw / client / d_polysa.asm < prev    next >
Encoding:
Assembly Source File  |  1996-09-18  |  26.7 KB  |  1,121 lines

  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.  align 4
  236. p10_minus_p20 dd 0
  237. p01_minus_p21 dd 0
  238. temp0 dd 0
  239. temp1 dd 0
  240. Ltemp dd 0
  241. aff8entryvec_table dd LDraw8, LDraw7, LDraw6, LDraw5
  242.  dd LDraw4, LDraw3, LDraw2, LDraw1
  243. lzistepx dd 0
  244. _DATA ENDS
  245. _TEXT SEGMENT
  246.  externdef _D_PolysetSetEdgeTable:dword
  247.  externdef _D_RasterizeAliasPolySmooth:dword
  248.  public _D_PolysetCalcGradients
  249. _D_PolysetCalcGradients:
  250.  fild ds:dword ptr[_r_p0+0]
  251.  fild ds:dword ptr[_r_p2+0]
  252.  fild ds:dword ptr[_r_p0+4]
  253.  fild ds:dword ptr[_r_p2+4]
  254.  fild ds:dword ptr[_r_p1+0]
  255.  fild ds:dword ptr[_r_p1+4]
  256.  fxch st(3)
  257.  fsub st(0),st(2)
  258.  fxch st(1)
  259.  fsub st(0),st(4)
  260.  fxch st(5)
  261.  fsubrp st(4),st(0)
  262.  fxch st(2)
  263.  fsubrp st(1),st(0)
  264.  fxch st(1)
  265.  fld ds:dword ptr[_d_xdenom]
  266.  fxch st(4)
  267.  fstp ds:dword ptr[p10_minus_p20]
  268.  fstp ds:dword ptr[p01_minus_p21]
  269.  fxch st(2)
  270.  fild ds:dword ptr[_r_p2+16]
  271.  fild ds:dword ptr[_r_p0+16]
  272.  fild ds:dword ptr[_r_p1+16]
  273.  fxch st(2)
  274.  fld st(0)
  275.  fsubp st(2),st(0)
  276.  fsubp st(2),st(0)
  277.  fld st(0)
  278.  fmul st(0),st(5)
  279.  fxch st(2)
  280.  fld st(0)
  281.  fmul ds:dword ptr[p01_minus_p21]
  282.  fxch st(2)
  283.  fmul ds:dword ptr[p10_minus_p20]
  284.  fxch st(1)
  285.  fmul st(0),st(5)
  286.  fxch st(2)
  287.  fsubrp st(3),st(0)
  288.  fsubp st(1),st(0)
  289.  fld st(2)
  290.  fmul ds:dword ptr[float_minus_1]
  291.  fxch st(2)
  292.  fmul st(0),st(3)
  293.  fxch st(1)
  294.  fmul st(0),st(2)
  295.  fldcw ds:word ptr[ceil_cw]
  296.  fistp ds:dword ptr[_r_lstepy]
  297.  fistp ds:dword ptr[_r_lstepx]
  298.  fldcw ds:word ptr[single_cw]
  299.  fild ds:dword ptr[_r_p2+8]
  300.  fild ds:dword ptr[_r_p0+8]
  301.  fild ds:dword ptr[_r_p1+8]
  302.  fxch st(2)
  303.  fld st(0)
  304.  fsubp st(2),st(0)
  305.  fsubp st(2),st(0)
  306.  fld st(0)
  307.  fmul st(0),st(6)
  308.  fxch st(2)
  309.  fld st(0)
  310.  fmul ds:dword ptr[p01_minus_p21]
  311.  fxch st(2)
  312.  fmul ds:dword ptr[p10_minus_p20]
  313.  fxch st(1)
  314.  fmul st(0),st(6)
  315.  fxch st(2)
  316.  fsubrp st(3),st(0)
  317.  fsubp st(1),st(0)
  318.  fmul st(0),st(2)
  319.  fxch st(1)
  320.  fmul st(0),st(3)
  321.  fxch st(1)
  322.  fistp ds:dword ptr[_r_sstepy]
  323.  fistp ds:dword ptr[_r_sstepx]
  324.  fild ds:dword ptr[_r_p2+12]
  325.  fild ds:dword ptr[_r_p0+12]
  326.  fild ds:dword ptr[_r_p1+12]
  327.  fxch st(2)
  328.  fld st(0)
  329.  fsubp st(2),st(0)
  330.  fsubp st(2),st(0)
  331.  fld st(0)
  332.  fmul st(0),st(6)
  333.  fxch st(2)
  334.  fld st(0)
  335.  fmul ds:dword ptr[p01_minus_p21]
  336.  fxch st(2)
  337.  fmul ds:dword ptr[p10_minus_p20]
  338.  fxch st(1)
  339.  fmul st(0),st(6)
  340.  fxch st(2)
  341.  fsubrp st(3),st(0)
  342.  fsubp st(1),st(0)
  343.  fmul st(0),st(2)
  344.  fxch st(1)
  345.  fmul st(0),st(3)
  346.  fxch st(1)
  347.  fistp ds:dword ptr[_r_tstepy]
  348.  fistp ds:dword ptr[_r_tstepx]
  349.  fild ds:dword ptr[_r_p2+20]
  350.  fild ds:dword ptr[_r_p0+20]
  351.  fild ds:dword ptr[_r_p1+20]
  352.  fxch st(2)
  353.  fld st(0)
  354.  fsubp st(2),st(0)
  355.  fsubp st(2),st(0)
  356.  fld st(0)
  357.  fmulp st(6),st(0)
  358.  fxch st(1)
  359.  fld st(0)
  360.  fmul ds:dword ptr[p01_minus_p21]
  361.  fxch st(2)
  362.  fmul ds:dword ptr[p10_minus_p20]
  363.  fxch st(1)
  364.  fmulp st(5),st(0)
  365.  fxch st(5)
  366.  fsubp st(1),st(0)
  367.  fxch st(3)
  368.  fsubrp st(4),st(0)
  369.  fxch st(1)
  370.  fmulp st(2),st(0)
  371.  fmulp st(2),st(0)
  372.  fistp ds:dword ptr[_r_zistepx]
  373.  fistp ds:dword ptr[_r_zistepy]
  374.  mov eax,ds:dword ptr[_r_sstepx]
  375.  mov edx,ds:dword ptr[_r_tstepx]
  376.  shl eax,16
  377.  shl edx,16
  378.  mov ds:dword ptr[_a_sstepxfrac],eax
  379.  mov ds:dword ptr[_a_tstepxfrac],edx
  380.  mov ecx,ds:dword ptr[_r_sstepx]
  381.  mov eax,ds:dword ptr[_r_tstepx]
  382.  sar ecx,16
  383.  sar eax,16
  384.  imul ds:dword ptr[4+0+esp]
  385.  add eax,ecx
  386.  mov ds:dword ptr[_a_ststepxwhole],eax
  387.  ret
  388.  public _D_PolysetRecursiveTriangle
  389. _D_PolysetRecursiveTriangle:
  390.  push ebp
  391.  push esi
  392.  push edi
  393.  push ebx
  394.  mov esi,ds:dword ptr[8+16+esp]
  395.  mov ebx,ds:dword ptr[4+16+esp]
  396.  mov edi,ds:dword ptr[12+16+esp]
  397.  mov eax,ds:dword ptr[0+esi]
  398.  mov edx,ds:dword ptr[0+ebx]
  399.  mov ebp,ds:dword ptr[4+esi]
  400.  sub eax,edx
  401.  mov ecx,ds:dword ptr[4+ebx]
  402.  sub ebp,ecx
  403.  inc eax
  404.  cmp eax,2
  405.  ja LSplit
  406.  mov eax,ds:dword ptr[0+edi]
  407.  inc ebp
  408.  cmp ebp,2
  409.  ja LSplit
  410.  mov edx,ds:dword ptr[0+esi]
  411.  mov ebp,ds:dword ptr[4+edi]
  412.  sub eax,edx
  413.  mov ecx,ds:dword ptr[4+esi]
  414.  sub ebp,ecx
  415.  inc eax
  416.  cmp eax,2
  417.  ja LSplit2
  418.  mov eax,ds:dword ptr[0+ebx]
  419.  inc ebp
  420.  cmp ebp,2
  421.  ja LSplit2
  422.  mov edx,ds:dword ptr[0+edi]
  423.  mov ebp,ds:dword ptr[4+ebx]
  424.  sub eax,edx
  425.  mov ecx,ds:dword ptr[4+edi]
  426.  sub ebp,ecx
  427.  inc eax
  428.  inc ebp
  429.  mov edx,ebx
  430.  cmp eax,2
  431.  ja LSplit3
  432.  cmp ebp,2
  433.  jna LDone
  434. LSplit3:
  435.  mov ebx,edi
  436.  mov edi,esi
  437.  mov esi,edx
  438.  jmp LSplit
  439. LSplit2:
  440.  mov eax,ebx
  441.  mov ebx,esi
  442.  mov esi,edi
  443.  mov edi,eax
  444. LSplit:
  445.  sub esp,24
  446.  mov eax,ds:dword ptr[8+ebx]
  447.  mov edx,ds:dword ptr[8+esi]
  448.  mov ecx,ds:dword ptr[12+ebx]
  449.  add eax,edx
  450.  mov edx,ds:dword ptr[12+esi]
  451.  sar eax,1
  452.  add ecx,edx
  453.  mov ds:dword ptr[8+esp],eax
  454.  mov eax,ds:dword ptr[20+ebx]
  455.  sar ecx,1
  456.  mov edx,ds:dword ptr[20+esi]
  457.  mov ds:dword ptr[12+esp],ecx
  458.  add eax,edx
  459.  mov ecx,ds:dword ptr[0+ebx]
  460.  mov edx,ds:dword ptr[0+esi]
  461.  sar eax,1
  462.  add edx,ecx
  463.  mov ds:dword ptr[20+esp],eax
  464.  mov eax,ds:dword ptr[4+ebx]
  465.  sar edx,1
  466.  mov ebp,ds:dword ptr[4+esi]
  467.  mov ds:dword ptr[0+esp],edx
  468.  add ebp,eax
  469.  sar ebp,1
  470.  mov ds:dword ptr[4+esp],ebp
  471.  cmp ds:dword ptr[4+esi],eax
  472.  jg LNoDraw
  473.  mov edx,ds:dword ptr[0+esi]
  474.  jnz LDraw
  475.  cmp edx,ecx
  476.  jl LNoDraw
  477. LDraw:
  478.  mov edx,ds:dword ptr[20+esp]
  479.  mov ecx,ds:dword ptr[4+esp]
  480.  sar edx,16
  481.  mov ebp,ds:dword ptr[0+esp]
  482.  mov eax,ds:dword ptr[_zspantable+ecx*4]
  483.  cmp dx,ds:word ptr[eax+ebp*2]
  484.  jnge LNoDraw
  485.  mov ds:word ptr[eax+ebp*2],dx
  486.  mov eax,ds:dword ptr[12+esp]
  487.  sar eax,16
  488.  mov edx,ds:dword ptr[8+esp]
  489.  sar edx,16
  490.  sub ecx,ecx
  491.  mov eax,ds:dword ptr[_skintable+eax*4]
  492.  mov ebp,ds:dword ptr[4+esp]
  493.  mov cl,ds:byte ptr[eax+edx]
  494.  mov edx,ds:dword ptr[_d_pcolormap]
  495.  mov dl,ds:byte ptr[edx+ecx]
  496.  mov ecx,ds:dword ptr[0+esp]
  497.  mov eax,ds:dword ptr[_d_scantable+ebp*4]
  498.  add ecx,eax
  499.  mov eax,ds:dword ptr[_d_viewbuffer]
  500.  mov ds:byte ptr[eax+ecx*1],dl
  501. LNoDraw:
  502.  push esp
  503.  push ebx
  504.  push edi
  505.  call near ptr _D_PolysetRecursiveTriangle
  506.  mov ebx,esp
  507.  push esi
  508.  push ebx
  509.  push edi
  510.  call near ptr _D_PolysetRecursiveTriangle
  511.  add esp,24
  512. LDone:
  513.  pop ebx
  514.  pop edi
  515.  pop esi
  516.  pop ebp
  517.  ret 12
  518.  public _D_PolysetAff8Start
  519. _D_PolysetAff8Start:
  520.  public _D_PolysetDrawSpans8
  521. _D_PolysetDrawSpans8:
  522.  push esi
  523.  push ebx
  524.  mov esi,ds:dword ptr[4+8+esp]
  525.  mov ecx,ds:dword ptr[_r_zistepx]
  526.  push ebp
  527.  push edi
  528.  ror ecx,16
  529.  mov edx,ds:dword ptr[8+esi]
  530.  mov ds:dword ptr[lzistepx],ecx
  531. LSpanLoop:
  532.  mov eax,ds:dword ptr[_d_aspancount]
  533.  sub eax,edx
  534.  mov edx,ds:dword ptr[_erroradjustup]
  535.  mov ebx,ds:dword ptr[_errorterm]
  536.  add ebx,edx
  537.  js LNoTurnover
  538.  mov edx,ds:dword ptr[_erroradjustdown]
  539.  mov edi,ds:dword ptr[_d_countextrastep]
  540.  sub ebx,edx
  541.  mov ebp,ds:dword ptr[_d_aspancount]
  542.  mov ds:dword ptr[_errorterm],ebx
  543.  add ebp,edi
  544.  mov ds:dword ptr[_d_aspancount],ebp
  545.  jmp LRightEdgeStepped
  546. LNoTurnover:
  547.  mov edi,ds:dword ptr[_d_aspancount]
  548.  mov edx,ds:dword ptr[_ubasestep]
  549.  mov ds:dword ptr[_errorterm],ebx
  550.  add edi,edx
  551.  mov ds:dword ptr[_d_aspancount],edi
  552. LRightEdgeStepped:
  553.  cmp eax,1
  554.  jl LNextSpan
  555.  jz LExactlyOneLong
  556.  mov ecx,ds:dword ptr[_a_ststepxwhole]
  557.  mov edx,ds:dword ptr[_r_affinetridesc+8]
  558.  mov ds:dword ptr[advancetable+4],ecx
  559.  add ecx,edx
  560.  mov ds:dword ptr[advancetable],ecx
  561.  mov ecx,ds:dword ptr[_a_tstepxfrac]
  562.  mov cx,ds:word ptr[_r_lstepx]
  563.  mov edx,eax
  564.  mov ds:dword ptr[tstep],ecx
  565.  add edx,7
  566.  shr edx,3
  567.  mov ebx,ds:dword ptr[16+esi]
  568.  mov bx,dx
  569.  mov ecx,ds:dword ptr[4+esi]
  570.  neg eax
  571.  mov edi,ds:dword ptr[0+esi]
  572.  and eax,7
  573.  sub edi,eax
  574.  sub ecx,eax
  575.  sub ecx,eax
  576.  mov edx,ds:dword ptr[20+esi]
  577.  mov dx,ds:word ptr[24+esi]
  578.  mov ebp,ds:dword ptr[28+esi]
  579.  ror ebp,16
  580.  push esi
  581.  mov esi,ds:dword ptr[12+esi]
  582.  jmp dword ptr[aff8entryvec_table+eax*4]
  583. LDrawLoop:
  584. LDraw8:
  585.  cmp bp,ds:word ptr[ecx]
  586.  jl Lp1
  587.  xor eax,eax
  588.  mov ah,dh
  589.  mov al,ds:byte ptr[esi]
  590.  mov ds:word ptr[ecx],bp
  591.  mov al,ds:byte ptr[12345678h+eax]
  592. LPatch8:
  593.  mov ds:byte ptr[edi],al
  594. Lp1:
  595.  add edx,ds:dword ptr[tstep]
  596.  sbb eax,eax
  597.  add ebp,ds:dword ptr[lzistepx]
  598.  adc ebp,0
  599.  add ebx,ds:dword ptr[_a_sstepxfrac]
  600.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  601. LDraw7:
  602.  cmp bp,ds:word ptr[2+ecx]
  603.  jl Lp2
  604.  xor eax,eax
  605.  mov ah,dh
  606.  mov al,ds:byte ptr[esi]
  607.  mov ds:word ptr[2+ecx],bp
  608.  mov al,ds:byte ptr[12345678h+eax]
  609. LPatch7:
  610.  mov ds:byte ptr[1+edi],al
  611. Lp2:
  612.  add edx,ds:dword ptr[tstep]
  613.  sbb eax,eax
  614.  add ebp,ds:dword ptr[lzistepx]
  615.  adc ebp,0
  616.  add ebx,ds:dword ptr[_a_sstepxfrac]
  617.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  618. LDraw6:
  619.  cmp bp,ds:word ptr[4+ecx]
  620.  jl Lp3
  621.  xor eax,eax
  622.  mov ah,dh
  623.  mov al,ds:byte ptr[esi]
  624.  mov ds:word ptr[4+ecx],bp
  625.  mov al,ds:byte ptr[12345678h+eax]
  626. LPatch6:
  627.  mov ds:byte ptr[2+edi],al
  628. Lp3:
  629.  add edx,ds:dword ptr[tstep]
  630.  sbb eax,eax
  631.  add ebp,ds:dword ptr[lzistepx]
  632.  adc ebp,0
  633.  add ebx,ds:dword ptr[_a_sstepxfrac]
  634.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  635. LDraw5:
  636.  cmp bp,ds:word ptr[6+ecx]
  637.  jl Lp4
  638.  xor eax,eax
  639.  mov ah,dh
  640.  mov al,ds:byte ptr[esi]
  641.  mov ds:word ptr[6+ecx],bp
  642.  mov al,ds:byte ptr[12345678h+eax]
  643. LPatch5:
  644.  mov ds:byte ptr[3+edi],al
  645. Lp4:
  646.  add edx,ds:dword ptr[tstep]
  647.  sbb eax,eax
  648.  add ebp,ds:dword ptr[lzistepx]
  649.  adc ebp,0
  650.  add ebx,ds:dword ptr[_a_sstepxfrac]
  651.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  652. LDraw4:
  653.  cmp bp,ds:word ptr[8+ecx]
  654.  jl Lp5
  655.  xor eax,eax
  656.  mov ah,dh
  657.  mov al,ds:byte ptr[esi]
  658.  mov ds:word ptr[8+ecx],bp
  659.  mov al,ds:byte ptr[12345678h+eax]
  660. LPatch4:
  661.  mov ds:byte ptr[4+edi],al
  662. Lp5:
  663.  add edx,ds:dword ptr[tstep]
  664.  sbb eax,eax
  665.  add ebp,ds:dword ptr[lzistepx]
  666.  adc ebp,0
  667.  add ebx,ds:dword ptr[_a_sstepxfrac]
  668.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  669. LDraw3:
  670.  cmp bp,ds:word ptr[10+ecx]
  671.  jl Lp6
  672.  xor eax,eax
  673.  mov ah,dh
  674.  mov al,ds:byte ptr[esi]
  675.  mov ds:word ptr[10+ecx],bp
  676.  mov al,ds:byte ptr[12345678h+eax]
  677. LPatch3:
  678.  mov ds:byte ptr[5+edi],al
  679. Lp6:
  680.  add edx,ds:dword ptr[tstep]
  681.  sbb eax,eax
  682.  add ebp,ds:dword ptr[lzistepx]
  683.  adc ebp,0
  684.  add ebx,ds:dword ptr[_a_sstepxfrac]
  685.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  686. LDraw2:
  687.  cmp bp,ds:word ptr[12+ecx]
  688.  jl Lp7
  689.  xor eax,eax
  690.  mov ah,dh
  691.  mov al,ds:byte ptr[esi]
  692.  mov ds:word ptr[12+ecx],bp
  693.  mov al,ds:byte ptr[12345678h+eax]
  694. LPatch2:
  695.  mov ds:byte ptr[6+edi],al
  696. Lp7:
  697.  add edx,ds:dword ptr[tstep]
  698.  sbb eax,eax
  699.  add ebp,ds:dword ptr[lzistepx]
  700.  adc ebp,0
  701.  add ebx,ds:dword ptr[_a_sstepxfrac]
  702.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  703. LDraw1:
  704.  cmp bp,ds:word ptr[14+ecx]
  705.  jl Lp8
  706.  xor eax,eax
  707.  mov ah,dh
  708.  mov al,ds:byte ptr[esi]
  709.  mov ds:word ptr[14+ecx],bp
  710.  mov al,ds:byte ptr[12345678h+eax]
  711. LPatch1:
  712.  mov ds:byte ptr[7+edi],al
  713. Lp8:
  714.  add edx,ds:dword ptr[tstep]
  715.  sbb eax,eax
  716.  add ebp,ds:dword ptr[lzistepx]
  717.  adc ebp,0
  718.  add ebx,ds:dword ptr[_a_sstepxfrac]
  719.  adc esi,ds:dword ptr[advancetable+4+eax*4]
  720.  add edi,8
  721.  add ecx,16
  722.  dec bx
  723.  jnz LDrawLoop
  724.  pop esi
  725. LNextSpan:
  726.  add esi,32
  727. LNextSpanESISet:
  728.  mov edx,ds:dword ptr[8+esi]
  729.  cmp edx,offset -999999
  730.  jnz LSpanLoop
  731.  pop edi
  732.  pop ebp
  733.  pop ebx
  734.  pop esi
  735.  ret
  736. LExactlyOneLong:
  737.  mov ecx,ds:dword ptr[4+esi]
  738.  mov ebp,ds:dword ptr[28+esi]
  739.  ror ebp,16
  740.  mov ebx,ds:dword ptr[12+esi]
  741.  cmp bp,ds:word ptr[ecx]
  742.  jl LNextSpan
  743.  xor eax,eax
  744.  mov edi,ds:dword ptr[0+esi]
  745.  mov ah,ds:byte ptr[24+1+esi]
  746.  add esi,32
  747.  mov al,ds:byte ptr[ebx]
  748.  mov ds:word ptr[ecx],bp
  749.  mov al,ds:byte ptr[12345678h+eax]
  750. LPatch9:
  751.  mov ds:byte ptr[edi],al
  752.  jmp LNextSpanESISet
  753.  public _D_PolysetAff8End
  754. _D_PolysetAff8End:
  755.  public _D_Aff8Patch
  756. _D_Aff8Patch:
  757.  mov eax,ds:dword ptr[4+esp]
  758.  mov ds:dword ptr[LPatch1-4],eax
  759.  mov ds:dword ptr[LPatch2-4],eax
  760.  mov ds:dword ptr[LPatch3-4],eax
  761.  mov ds:dword ptr[LPatch4-4],eax
  762.  mov ds:dword ptr[LPatch5-4],eax
  763.  mov ds:dword ptr[LPatch6-4],eax
  764.  mov ds:dword ptr[LPatch7-4],eax
  765.  mov ds:dword ptr[LPatch8-4],eax
  766.  mov ds:dword ptr[LPatch9-4],eax
  767.  ret
  768.  public _D_PolysetDraw
  769. _D_PolysetDraw:
  770.  sub esp,offset (((1024+1 + 1 + ((32 - 1) / 32)) + 1) * 32)
  771.  mov eax,esp
  772.  add eax,32 - 1
  773.  and eax,offset not (32 - 1)
  774.  mov ds:dword ptr[_a_spans],eax
  775.  mov eax,ds:dword ptr[_r_affinetridesc+28]
  776.  test eax,eax
  777.  jz _D_DrawNonSubdiv
  778.  push ebp
  779.  mov ebp,ds:dword ptr[_r_affinetridesc+24]
  780.  push esi
  781.  shl ebp,4
  782.  push ebx
  783.  mov ebx,ds:dword ptr[_r_affinetridesc+16]
  784.  push edi
  785.  mov edi,ds:dword ptr[_r_affinetridesc+20]
  786. Llooptop:
  787.  mov ecx,ds:dword ptr[4-16+0+ebx+ebp]
  788.  mov esi,ds:dword ptr[4-16+4+ebx+ebp]
  789.  shl ecx,5
  790.  mov edx,ds:dword ptr[4-16+8+ebx+ebp]
  791.  shl esi,5
  792.  add ecx,edi
  793.  shl edx,5
  794.  add esi,edi
  795.  add edx,edi
  796.  fild ds:dword ptr[0+4+ecx]
  797.  fild ds:dword ptr[0+4+esi]
  798.  fild ds:dword ptr[0+0+ecx]
  799.  fild ds:dword ptr[0+0+edx]
  800.  fxch st(2)
  801.  fsubr st(0),st(3)
  802.  fild ds:dword ptr[0+0+esi]
  803.  fxch st(2)
  804.  fsubr st(3),st(0)
  805.  fild ds:dword ptr[0+4+edx]
  806.  fxch st(1)
  807.  fsubrp st(3),st(0)
  808.  fxch st(1)
  809.  fmulp st(3),st(0)
  810.  fsubp st(3),st(0)
  811.  mov eax,ds:dword ptr[0+16+ecx]
  812.  and eax,0FF00h
  813.  fmulp st(2),st(0)
  814.  add eax,ds:dword ptr[_acolormap]
  815.  fsubrp st(1),st(0)
  816.  mov ds:dword ptr[_d_pcolormap],eax
  817.  fstp ds:dword ptr[Ltemp]
  818.  mov eax,ds:dword ptr[Ltemp]
  819.  sub eax,080000001h
  820.  jc Lskip
  821.  mov eax,ds:dword ptr[0-16+ebx+ebp]
  822.  test eax,eax
  823.  jz Lfacesback
  824.  push edx
  825.  push esi
  826.  push ecx
  827.  call near ptr _D_PolysetRecursiveTriangle
  828.  sub ebp,16
  829.  jnz Llooptop
  830.  jmp Ldone2
  831. Lfacesback:
  832.  mov eax,ds:dword ptr[0+8+ecx]
  833.  push eax
  834.  mov eax,ds:dword ptr[0+8+esi]
  835.  push eax
  836.  mov eax,ds:dword ptr[0+8+edx]
  837.  push eax
  838.  push ecx
  839.  push edx
  840.  mov eax,ds:dword ptr[_r_affinetridesc+32]
  841.  test ds:dword ptr[24+ecx],00020h
  842.  jz Lp11
  843.  add ds:dword ptr[0+8+ecx],eax
  844. Lp11:
  845.  test ds:dword ptr[24+esi],00020h
  846.  jz Lp12
  847.  add ds:dword ptr[0+8+esi],eax
  848. Lp12:
  849.  test ds:dword ptr[24+edx],00020h
  850.  jz Lp13
  851.  add ds:dword ptr[0+8+edx],eax
  852. Lp13:
  853.  push edx
  854.  push esi
  855.  push ecx
  856.  call near ptr _D_PolysetRecursiveTriangle
  857.  pop edx
  858.  pop ecx
  859.  pop eax
  860.  mov ds:dword ptr[0+8+edx],eax
  861.  pop eax
  862.  mov ds:dword ptr[0+8+esi],eax
  863.  pop eax
  864.  mov ds:dword ptr[0+8+ecx],eax
  865. Lskip:
  866.  sub ebp,16
  867.  jnz Llooptop
  868. Ldone2:
  869.  pop edi
  870.  pop ebx
  871.  pop esi
  872.  pop ebp
  873.  add esp,offset (((1024+1 + 1 + ((32 - 1) / 32)) + 1) * 32)
  874.  ret
  875.  public _D_PolysetScanLeftEdge
  876. _D_PolysetScanLeftEdge:
  877.  push ebp
  878.  push esi
  879.  push edi
  880.  push ebx
  881.  mov eax,ds:dword ptr[4+16+esp]
  882.  mov ecx,ds:dword ptr[_d_sfrac]
  883.  and eax,0FFFFh
  884.  mov ebx,ds:dword ptr[_d_ptex]
  885.  or ecx,eax
  886.  mov esi,ds:dword ptr[_d_pedgespanpackage]
  887.  mov edx,ds:dword ptr[_d_tfrac]
  888.  mov edi,ds:dword ptr[_d_light]
  889.  mov ebp,ds:dword ptr[_d_zi]
  890. LScanLoop:
  891.  mov ds:dword ptr[12+esi],ebx
  892.  mov eax,ds:dword ptr[_d_pdest]
  893.  mov ds:dword ptr[0+esi],eax
  894.  mov eax,ds:dword ptr[_d_pz]
  895.  mov ds:dword ptr[4+esi],eax
  896.  mov eax,ds:dword ptr[_d_aspancount]
  897.  mov ds:dword ptr[8+esi],eax
  898.  mov ds:dword ptr[24+esi],edi
  899.  mov ds:dword ptr[28+esi],ebp
  900.  mov ds:dword ptr[16+esi],ecx
  901.  mov ds:dword ptr[20+esi],edx
  902.  mov al,ds:byte ptr[32+esi]
  903.  add esi,32
  904.  mov eax,ds:dword ptr[_erroradjustup]
  905.  mov ds:dword ptr[_d_pedgespanpackage],esi
  906.  mov esi,ds:dword ptr[_errorterm]
  907.  add esi,eax
  908.  mov eax,ds:dword ptr[_d_pdest]
  909.  js LNoLeftEdgeTurnover
  910.  sub esi,ds:dword ptr[_erroradjustdown]
  911.  add eax,ds:dword ptr[_d_pdestextrastep]
  912.  mov ds:dword ptr[_errorterm],esi
  913.  mov ds:dword ptr[_d_pdest],eax
  914.  mov eax,ds:dword ptr[_d_pz]
  915.  mov esi,ds:dword ptr[_d_aspancount]
  916.  add eax,ds:dword ptr[_d_pzextrastep]
  917.  add ecx,ds:dword ptr[_d_sfracextrastep]
  918.  adc ebx,ds:dword ptr[_d_ptexextrastep]
  919.  add esi,ds:dword ptr[_d_countextrastep]
  920.  mov ds:dword ptr[_d_pz],eax
  921.  mov eax,ds:dword ptr[_d_tfracextrastep]
  922.  mov ds:dword ptr[_d_aspancount],esi
  923.  add edx,eax
  924.  jnc LSkip1
  925.  add ebx,ds:dword ptr[_r_affinetridesc+8]
  926. LSkip1:
  927.  add edi,ds:dword ptr[_d_lightextrastep]
  928.  add ebp,ds:dword ptr[_d_ziextrastep]
  929.  mov esi,ds:dword ptr[_d_pedgespanpackage]
  930.  dec ecx
  931.  test ecx,0FFFFh
  932.  jnz LScanLoop
  933.  pop ebx
  934.  pop edi
  935.  pop esi
  936.  pop ebp
  937.  ret
  938. LNoLeftEdgeTurnover:
  939.  mov ds:dword ptr[_errorterm],esi
  940.  add eax,ds:dword ptr[_d_pdestbasestep]
  941.  mov ds:dword ptr[_d_pdest],eax
  942.  mov eax,ds:dword ptr[_d_pz]
  943.  mov esi,ds:dword ptr[_d_aspancount]
  944.  add eax,ds:dword ptr[_d_pzbasestep]
  945.  add ecx,ds:dword ptr[_d_sfracbasestep]
  946.  adc ebx,ds:dword ptr[_d_ptexbasestep]
  947.  add esi,ds:dword ptr[_ubasestep]
  948.  mov ds:dword ptr[_d_pz],eax
  949.  mov ds:dword ptr[_d_aspancount],esi
  950.  mov esi,ds:dword ptr[_d_tfracbasestep]
  951.  add edx,esi
  952.  jnc LSkip2
  953.  add ebx,ds:dword ptr[_r_affinetridesc+8]
  954. LSkip2:
  955.  add edi,ds:dword ptr[_d_lightbasestep]
  956.  add ebp,ds:dword ptr[_d_zibasestep]
  957.  mov esi,ds:dword ptr[_d_pedgespanpackage]
  958.  dec ecx
  959.  test ecx,0FFFFh
  960.  jnz LScanLoop
  961.  pop ebx
  962.  pop edi
  963.  pop esi
  964.  pop ebp
  965.  ret
  966.  public _D_PolysetDrawFinalVerts
  967. _D_PolysetDrawFinalVerts:
  968.  push ebp
  969.  push ebx
  970.  mov ecx,ds:dword ptr[8+8+esp]
  971.  mov ebx,ds:dword ptr[4+8+esp]
  972.  push esi
  973.  push edi
  974. LFVLoop:
  975.  mov eax,ds:dword ptr[0+0+ebx]
  976.  mov edx,ds:dword ptr[_r_refdef+40]
  977.  cmp eax,edx
  978.  jge LNextVert
  979.  mov esi,ds:dword ptr[0+4+ebx]
  980.  mov edx,ds:dword ptr[_r_refdef+44]
  981.  cmp esi,edx
  982.  jge LNextVert
  983.  mov edi,ds:dword ptr[_zspantable+esi*4]
  984.  mov edx,ds:dword ptr[0+20+ebx]
  985.  shr edx,16
  986.  cmp dx,ds:word ptr[edi+eax*2]
  987.  jl LNextVert
  988.  mov ds:word ptr[edi+eax*2],dx
  989.  mov edi,ds:dword ptr[0+12+ebx]
  990.  shr edi,16
  991.  mov edi,ds:dword ptr[_skintable+edi*4]
  992.  mov edx,ds:dword ptr[0+8+ebx]
  993.  shr edx,16
  994.  mov dl,ds:byte ptr[edi+edx]
  995.  mov edi,ds:dword ptr[0+16+ebx]
  996.  and edi,0FF00h
  997.  and edx,000FFh
  998.  add edi,edx
  999.  mov edx,ds:dword ptr[_acolormap]
  1000.  mov dl,ds:byte ptr[edx+edi*1]
  1001.  mov edi,ds:dword ptr[_d_scantable+esi*4]
  1002.  mov esi,ds:dword ptr[_d_viewbuffer]
  1003.  add edi,eax
  1004.  mov ds:byte ptr[esi+edi],dl
  1005. LNextVert:
  1006.  add ebx,32
  1007.  dec ecx
  1008.  jnz LFVLoop
  1009.  pop edi
  1010.  pop esi
  1011.  pop ebx
  1012.  pop ebp
  1013.  ret
  1014.  public _D_DrawNonSubdiv
  1015. _D_DrawNonSubdiv:
  1016.  push ebp
  1017.  mov ebp,ds:dword ptr[_r_affinetridesc+24]
  1018.  push ebx
  1019.  shl ebp,4
  1020.  push esi
  1021.  mov esi,ds:dword ptr[_r_affinetridesc+16]
  1022.  push edi
  1023. LNDLoop:
  1024.  mov edi,ds:dword ptr[_r_affinetridesc+20]
  1025.  mov ecx,ds:dword ptr[4+0-16+esi+ebp*1]
  1026.  shl ecx,5
  1027.  mov edx,ds:dword ptr[4+4-16+esi+ebp*1]
  1028.  shl edx,5
  1029.  mov ebx,ds:dword ptr[4+8-16+esi+ebp*1]
  1030.  shl ebx,5
  1031.  add ecx,edi
  1032.  add edx,edi
  1033.  add ebx,edi
  1034.  mov eax,ds:dword ptr[0+4+ecx]
  1035.  mov esi,ds:dword ptr[0+0+ecx]
  1036.  sub eax,ds:dword ptr[0+4+edx]
  1037.  sub esi,ds:dword ptr[0+0+ebx]
  1038.  imul eax,esi
  1039.  mov esi,ds:dword ptr[0+0+ecx]
  1040.  mov edi,ds:dword ptr[0+4+ecx]
  1041.  sub esi,ds:dword ptr[0+0+edx]
  1042.  sub edi,ds:dword ptr[0+4+ebx]
  1043.  imul edi,esi
  1044.  sub eax,edi
  1045.  jns LNextTri
  1046.  mov ds:dword ptr[_d_xdenom],eax
  1047.  fild ds:dword ptr[_d_xdenom]
  1048.  mov eax,ds:dword ptr[0+0+ecx]
  1049.  mov esi,ds:dword ptr[0+4+ecx]
  1050.  mov ds:dword ptr[_r_p0+0],eax
  1051.  mov ds:dword ptr[_r_p0+4],esi
  1052.  mov eax,ds:dword ptr[0+8+ecx]
  1053.  mov esi,ds:dword ptr[0+12+ecx]
  1054.  mov ds:dword ptr[_r_p0+8],eax
  1055.  mov ds:dword ptr[_r_p0+12],esi
  1056.  mov eax,ds:dword ptr[0+16+ecx]
  1057.  mov esi,ds:dword ptr[0+20+ecx]
  1058.  mov ds:dword ptr[_r_p0+16],eax
  1059.  mov ds:dword ptr[_r_p0+20],esi
  1060.  fdivr ds:dword ptr[float_1]
  1061.  mov eax,ds:dword ptr[0+0+edx]
  1062.  mov esi,ds:dword ptr[0+4+edx]
  1063.  mov ds:dword ptr[_r_p1+0],eax
  1064.  mov ds:dword ptr[_r_p1+4],esi
  1065.  mov eax,ds:dword ptr[0+8+edx]
  1066.  mov esi,ds:dword ptr[0+12+edx]
  1067.  mov ds:dword ptr[_r_p1+8],eax
  1068.  mov ds:dword ptr[_r_p1+12],esi
  1069.  mov eax,ds:dword ptr[0+16+edx]
  1070.  mov esi,ds:dword ptr[0+20+edx]
  1071.  mov ds:dword ptr[_r_p1+16],eax
  1072.  mov ds:dword ptr[_r_p1+20],esi
  1073.  mov eax,ds:dword ptr[0+0+ebx]
  1074.  mov esi,ds:dword ptr[0+4+ebx]
  1075.  mov ds:dword ptr[_r_p2+0],eax
  1076.  mov ds:dword ptr[_r_p2+4],esi
  1077.  mov eax,ds:dword ptr[0+8+ebx]
  1078.  mov esi,ds:dword ptr[0+12+ebx]
  1079.  mov ds:dword ptr[_r_p2+8],eax
  1080.  mov ds:dword ptr[_r_p2+12],esi
  1081.  mov eax,ds:dword ptr[0+16+ebx]
  1082.  mov esi,ds:dword ptr[0+20+ebx]
  1083.  mov ds:dword ptr[_r_p2+16],eax
  1084.  mov edi,ds:dword ptr[_r_affinetridesc+16]
  1085.  mov ds:dword ptr[_r_p2+20],esi
  1086.  mov eax,ds:dword ptr[0-16+edi+ebp*1]
  1087.  test eax,eax
  1088.  jnz LFacesFront
  1089.  mov eax,ds:dword ptr[24+ecx]
  1090.  mov esi,ds:dword ptr[24+edx]
  1091.  mov edi,ds:dword ptr[24+ebx]
  1092.  test eax,00020h
  1093.  mov eax,ds:dword ptr[_r_affinetridesc+32]
  1094.  jz LOnseamDone0
  1095.  add ds:dword ptr[_r_p0+8],eax
  1096. LOnseamDone0:
  1097.  test esi,00020h
  1098.  jz LOnseamDone1
  1099.  add ds:dword ptr[_r_p1+8],eax
  1100. LOnseamDone1:
  1101.  test edi,00020h
  1102.  jz LOnseamDone2
  1103.  add ds:dword ptr[_r_p2+8],eax
  1104. LOnseamDone2:
  1105. LFacesFront:
  1106.  fstp ds:dword ptr[_d_xdenom]
  1107.  call near ptr _D_PolysetSetEdgeTable
  1108.  call near ptr _D_RasterizeAliasPolySmooth
  1109. LNextTri:
  1110.  mov esi,ds:dword ptr[_r_affinetridesc+16]
  1111.  sub ebp,16
  1112.  jnz LNDLoop
  1113.  pop edi
  1114.  pop esi
  1115.  pop ebx
  1116.  pop ebp
  1117.  add esp,offset (((1024+1 + 1 + ((32 - 1) / 32)) + 1) * 32)
  1118.  ret
  1119. _TEXT ENDS
  1120.  END
  1121.