extern int Camera_CalcRenderDist(int *p);
void Player_UpdateWithText(unsigned *p)
{
  register unsigned *pp __asm__("r4") = p;
  register int st __asm__("r0");
  int v;
  int c;
  if (pp[11] <= (150 << 1))
    goto end;
  if ((Camera_CalcRenderDist(pp) << 24) == 0)
    goto end;
  st = pp[24];
  v = st;
  if (st == 2)
    goto s2;
  if (st > 2)
    goto hi;
  if (st == 1)
    goto s1;
  goto end;
hi:
  if (v == 3)
    goto s3;
  goto end;
s1:
  v = 0x080056C1;
test:
  c = pp[3];
  if (c == 0)
    goto zero;
  goto store;
s2:
  v = 0x08005841;
  goto test;
s3:
  v = 0x080059B1;
  c = pp[3];
  if (c != 0)
    goto store;
zero:
  pp[3] = v;
  pp[11] = c;
  goto end;
store:
  pp[5] = v;
end: ;
}
