136c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm#include <libunwind.h> 236c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm 336c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidmunw_word_t 436c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm_ReadULEB (unsigned char **dpp) 536c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm{ 636c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm unsigned shift = 0; 736c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm unw_word_t byte, result = 0; 836c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm unsigned char *bp = *dpp; 936c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm 1036c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm while (1) 1136c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm { 1236c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm byte = *bp++; 1336c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm result |= (byte & 0x7f) << shift; 1436c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm if ((byte & 0x80) == 0) 1536c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm break; 1636c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm shift += 7; 1736c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm } 1836c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm *dpp = bp; 1936c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm return result; 2036c7442db32c9c9d37fc4bb5999623a2fd443a0bhp.com!davidm} 21