190 {
191 int8_t result;
192#if !defined(__AVR__)
193 result = (hash & (1<<bitnumber)) ? a : b;
194#else
195 asm volatile(
196 "mov %[result],%[a] \n\t"
197 "sbrs %[hash],%[bitnumber] \n\t"
198 "mov %[result],%[b] \n\t"
199 : [result] "=r" (result)
200 : [hash] "r" (hash),
201 [bitnumber] "M" (bitnumber),
202 [a] "r" (a),
203 [b] "r" (b)
204 );
205#endif
206 return result;
207}