extern void Physics_BounceReflect(int a, int b, int c);
extern int Object_Find(void);
extern int Physics_Bounce2(int a, int b, int c);
extern int Float_Copy(int x);
int Physics_CalcElasticity(int a, int b, int c)
{
  int qq;
  int d;
  int r;
  Physics_BounceReflect(a, b, c);
  qq = Object_Find();
  r = Physics_Bounce2(a, b, c);
  if (r == -1 || r == c) {
    r = Float_Copy(-1);
  } else {
    d = c - r;
    if (qq != 20) {
      register int sh __asm__("r1");
      register int base __asm__("r0") = 0x02001518;
      __asm__ volatile("" : "+r" (base));
      sh = qq << 3;
      base += 4;
      sh += base;
      *(int *)sh = *(int *)sh + d;
    }
    r = d;
  }
  return r;
}
