ans: Factor out refill_state

Change-Id: I648f4eb2954b2d138c2128bbf3f638eea31ec28f
diff --git a/aom_dsp/ansreader.h b/aom_dsp/ansreader.h
index e0343fd..05955a2 100644
--- a/aom_dsp/ansreader.h
+++ b/aom_dsp/ansreader.h
@@ -37,14 +37,19 @@
 #endif
 };
 
+static INLINE unsigned refill_state(struct AnsDecoder *const ans,
+                                    unsigned state) {
+  while (state < L_BASE && ans->buf_offset > 0) {
+    state = state * IO_BASE + ans->buf[--ans->buf_offset];
+  }
+  return state;
+}
+
 static INLINE int uabs_read(struct AnsDecoder *ans, AnsP8 p0) {
   AnsP8 p = ANS_P8_PRECISION - p0;
   int s;
   unsigned xp, sp;
-  unsigned state = ans->state;
-  while (state < L_BASE && ans->buf_offset > 0) {
-    state = state * IO_BASE + ans->buf[--ans->buf_offset];
-  }
+  unsigned state = refill_state(ans, ans->state);
   sp = state * p;
   xp = sp / ANS_P8_PRECISION;
   s = (sp & 0xFF) >= p0;
@@ -57,10 +62,7 @@
 
 static INLINE int uabs_read_bit(struct AnsDecoder *ans) {
   int s;
-  unsigned state = ans->state;
-  while (state < L_BASE && ans->buf_offset > 0) {
-    state = state * IO_BASE + ans->buf[--ans->buf_offset];
-  }
+  unsigned state = refill_state(ans, ans->state);
   s = (int)(state & 1);
   ans->state = state >> 1;
   return s;
@@ -90,9 +92,7 @@
   unsigned rem;
   unsigned quo;
   struct rans_dec_sym sym;
-  while (ans->state < L_BASE && ans->buf_offset > 0) {
-    ans->state = ans->state * IO_BASE + ans->buf[--ans->buf_offset];
-  }
+  ans->state = refill_state(ans, ans->state);
   quo = ans->state / RANS_PRECISION;
   rem = ans->state % RANS_PRECISION;
   fetch_sym(&sym, tab, rem);