This function was reversed from Halo CE 1.08 using OllyDbg, IDA Pro, Hexrays and my brain.

This function clears a surface that can be a render target, a stencil buffer, or a depth buffer. Refer to IDirect3DDevice9 interface documentation on MSDN for more information on the Direct3d functions.

Note: pDevice should be the global device, defined outside of this function, but for no-compile error sake, I just threw it in there.
Code:
//----- (00530170) --------------------------------------------------------
HRESULT ClearSurface(WORD SurfaceIndex, D3DCOLOR Color, bool bClear)
{
 IDirect3DDevice9* pDevice = NULL;
 IDirect3DSurface9* pSurface = NULL;
 D3DSURFACE_DESC* pDesc;
 D3DVIEWPORT9 vp;
 
 if(SurfaceIndex < 9)
 {
   if(SurfaceIndex >= 0)
     pSurface = (IDirect3DSurface9*)((20 * SurfaceIndex) + (int)0x00638A2C);
 }
 
 pDevice->SetRenderTarget(0, pSurface);
 *(short*)0x00638A18 = SurfaceIndex;
 
 if(SurfaceIndex == 1)
 {
   vp.X = *(WORD*)0x0075C176;
   vp.Y = *(WORD*)0x0075C174;
   vp.Width = *(WORD*)0x0075C17A - *(WORD*)0x0075C176;
   vp.Height = *(WORD*)0x0075C178 - *(WORD*)0x0075C174;
 }
 else
 {
   pSurface->GetDesc(pDesc);
   vp.X = 0;
   vp.Y = 0;
   vp.Width = pDesc->Width;
   vp.Height = pDesc->Height;
 }
 
 vp.MinZ = 0.0f;
 vp.MaxZ = 1.0f;
 pDevice->SetViewport(&vp);
 
 if(bClear)
 {
   DWORD Flags = D3DCLEAR_TARGET;
   if(SurfaceIndex == 1 || SurfaceIndex == 2)
     Flags = D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL;
 
   return pDevice->Clear(0, NULL, Flags, Color, 1.0f, 0);
 }
 return bClear;
}