mono_binary_search (const void * key, const void * array, size_t array_length, size_t member_size, int (*BinarySearchComparer) (const void *, const void *) comparer)
{
  unsigned int D.4964;
  unsigned int D.4965;
  void * D.4968;
  const char * base;
  size_t lim;
  int cmp;
  const void * p;

  base = array;
  lim = array_length;
  goto <D.4959>;
  <D.4958>:
  D.4964 = lim >> 1;
  D.4965 = D.4964 * member_size;
  p = base + D.4965;
  cmp = comparer (key, p);
  if (cmp == 0) goto <D.4966>; else goto <D.4967>;
  <D.4966>:
  D.4968 = p;
  return D.4968;
  <D.4967>:
  if (cmp > 0) goto <D.4969>; else goto <D.4970>;
  <D.4969>:
  base = p + member_size;
  lim = lim + 4294967295;
  <D.4970>:
  lim = lim >> 1;
  <D.4959>:
  if (lim != 0) goto <D.4958>; else goto <D.4960>;
  <D.4960>:
  D.4968 = 0B;
  return D.4968;
}


