// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00002054 (int r0, int r1) {
    loc_0x00002054:
        // CALL XREFS from sym.mm_v4l2_capture_image @ 0x779e(x), 0x780e(x), 0x7916(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x00002058:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002054 @ 0x2054(r)
        pc = [ip + 0x570]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.0000212c (int r0, int r1) {
    loc_0x0000212c:
        // CALL XREF from sym.mm_v4l2_start_capture @ 0x744e(x)
        // CALL XREF from sym.mm_v4l2_stop_capture @ 0x75b2(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x00002130:
        add ip, ip, 16, 20
        // DATA XREF from fcn.0000212c @ 0x212c(r)
        pc = [ip + 0x4e0]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.__errno_location (int r0, int r1) {
    loc_0x00001fa4:
        // ICOD XREF from fcn.00001f9c @ 0x1f9c(r)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7aa4(r)
        pc = [ip + 0x5ec]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002138 (int r0, int r1) {
    loc_0x00002138:
        // CALL XREF from sym.mm_v4l2_create @ 0x6532(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x0000213c:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002138 @ 0x2138(r)
        pc = [ip + 0x4d8]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002078 (int r0, int r1) {
    loc_0x00002078:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6d96(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x0000207c:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002078 @ 0x2078(r)
        pc = [ip + 0x558]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002144 (int r0, int r1) {
    loc_0x00002144:
        // CALL XREF from sym._mmv4l2_construct_attribute @ 0x273c(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x00002148:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002144 @ 0x2144(r)
        // DATA XREF from sym._mmv4l2_create @ 0x5ee0(r)
        pc = [ip + 0x4d0]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002084 (int r0, int r1) {
    loc_0x00002084:
        // XREFS(295)
        add ip, pc, 0, 12
        // chop
        
    loc_0x00002088:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002084 @ 0x2084(r)
        pc = [ip + 0x550]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.__sprintf_chk (int r0, int r1) {
    loc_0x00001fc8:
        // ICOD XREF from fcn.00001fc0 @ 0x1fc0(r)
        pc = [ip + 0x5d4]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int entry0 (int r0, int r1) {
    loc_0x00001edc:
        // CODE XREF from entry0 @ 0x2180(x)
        add ip, pc, 0, 12 // sym.imp.open
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001ee4:
        pc = [ip + 0x66c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.000020a8 (int r0, int r1) {
    loc_0x000020a8:
        // CALL XREF from sym._mmv4l2_free_buffers @ 0x458e(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x000020ac:
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020a8 @ 0x20a8(r)
        pc = [ip + 0x538]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
void * memset (void *s, int c, size_t n) {
    loc_0x00001fec:
        // ICOD XREF from fcn.00001fe4 @ 0x1fe4(r)
        pc = [ip + 0x5bc]!
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
int fcn.00003ba2 (int r0, int r1) {
    loc_0x00003ba2:
        // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a16(r)
        pop (r4, r5, r6, r7, r8, sb, sl, pc)
        return r0;
}

// callconv: r0 arm32 (r0, r1, r2, stack);
size_t strlen (const char *s) {
    loc_0x00001f2c:
        // ICOD XREF from fcn.00001f24 @ 0x1f24(r)
        pc = [ip + 0x63c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
ssize_t write (int fd, const char *ptr, size_t nbytes) {
    loc_0x00001ff8:
        // ICOD XREF from fcn.00001ff0 @ 0x1ff0(r)
        pc = [ip + 0x5b4]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mm_attrs_get_string_by_name (int r0, int r1) {
    loc_0x00001f38:
        // ICOD XREF from fcn.00001f30 @ 0x1f30(r)
        pc = [ip + 0x634]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001cf0 (int r0, int r1) {
    loc_0x00001cf0:
        // XREFS(72)
        [sp - 4]! = lr // [10] -r-x section size 1144 named .plt
        lr = [0x00001cfc] // [0x1d00:4]=0x107a8
        lr = pc + lr  // section..got
        pc = [lr + 8]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.g_mutex_free (int r0, int r1) {
    loc_0x00001f44:
        // ICOD XREF from fcn.00001f3c @ 0x1f3c(r)
        pc = [ip + 0x62c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.gettimeofday (int r0, int r1) {
    loc_0x00001e84:
        // CODE XREF from sym.mmv4l2_get_time @ 0x63b2(x)
        bx pc         // arg1
        // CODE XREF from sym.imp.gettimeofday @ 0x1e84(x)
        ldm r2!, (r4) // 0x188 // U"uZ9TLR$Y\x80i"
        // sym._mmv4l2_set_attribute+0x6
        0xffaa6a0c () // fcn.00001e94 // 0xffaa6a0c(0x0, 0x0, 0x18c, 0x0)
        return r0;
}

// callconv: r0 arm32 (r0, r1, r2, stack);
void* mmap (void*addr, size_t length, int prot, int flags, int fd, size_t offset) {
    loc_0x00001f5c:
        // ICOD XREF from fcn.00001f54 @ 0x1f54(r)
        pc = [ip + 0x61c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
void * malloc (size_t size) {
    loc_0x00001e9c:
        // ICOD XREF from fcn.00001e94 @ 0x1e94(r)
        pc = [ip + 0x69c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.000020f0 (int r0, int r1) {
    loc_0x000020f0:
        // CALL XREF from sym._mmv4l2_get_control @ 0x3286(x)
        // CALL XREF from sym._mmv4l2_print_control @ 0x4bac(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x000020f4:
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020f0 @ 0x20f0(r)
        pc = [ip + 0x508]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
char * strchr (const char *s, int c) {
    loc_0x00001f68:
        // ICOD XREF from fcn.00001f60 @ 0x1f60(r)
        pc = [ip + 0x614]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mm_attrs_get_valist (int r0, int r1) {
    loc_0x00001ea8:
        // ICOD XREF from fcn.00001ea0 @ 0x1ea0(r)
        pc = [ip + 0x694]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.0000203c (int r0, int r1) {
    loc_0x0000203c:
        // CALL XREF from sym._mmv4l2_alloc_buffers @ 0x4370(x)
        add ip, pc, 0, 12
        // chop
        
    loc_0x00002040:
        add ip, ip, 16, 20
        // DATA XREF from fcn.0000203c @ 0x203c(r)
        pc = [ip + 0x580]!
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
int entry.init0 (int r0, int r1) {
    loc_0x000021c8:
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7880(r)
        r0 = [0x000021cc] // [0x21e0:4]=0x1011c
        push (r3, lr)
        r0 += pc      // 0x122ec // section..jcr
        [19] -rw- section size 4 named .jcr
        // DATA XREF from sym._mmv4l2_create @ 0x5ec0(r)
        r3 = [0x000021d0] // [0x21e4:4]=0x102d2
        r2 = [r0]     // 0x122ec // section..jcr
        [19] -rw- section size 4 named .jcr
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        if (!r2) goto 0x21de // likely
        goto loc_0x000021d6;
    loc_0x000021de:
        // CODE XREFS from entry.init0 @ 0x21d4(x), 0x21da(x)
        pop (r3, pc)
        goto loc_0x000021dc;
        return r0;
    loc_0x000021dc:
        r3 ()         // 0xffffffff(0x0, 0x0, 0x188, 0x0)
}

// callconv: r0 arm32 (r0, r1, r2, stack);
char * strerror (int errnum) {
    loc_0x00001eb4:
        // ICOD XREF from fcn.00001eac @ 0x1eac(r)
        pc = [ip + 0x68c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.getpagesize (int r0, int r1) {
    loc_0x00001f80:
        // ICOD XREF from fcn.00001f78 @ 0x1f78(r)
        pc = [ip + 0x604]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.posix_memalign (int r0, int r1) {
    loc_0x00001f8c:
        // ICOD XREF from fcn.00001f84 @ 0x1f84(r)
        pc = [ip + 0x5fc]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.fsync (int r0, int r1) {
    loc_0x00001d10:
        // CALL XREF from sym.mmv4l2_save_file @ 0x628a(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.fsync @ 0x1d10(r)
        pc = [ip + 0x7a0]! // 0x124b8 // reloc.fsync // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mm_attrs_get_info_by_name (int r0, int r1) {
    loc_0x00001d28:
        // CALL XREF from sym._mmv4l2_get_attributes_info @ 0x2546(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.mm_attrs_get_info_by_name @ 0x1d28(r)
        pc = [ip + 0x790]! // 0x124c0 // reloc.mm_attrs_get_info_by_name // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.__cxa_finalize (int r0, int r1) {
    loc_0x00001d34:
        // CALL XREF from entry.fini0 @ 0x21a6(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.__cxa_finalize @ 0x1d34(r)
        // DATA XREF from sym.mm_v4l2_set_control @ 0x7dcc(r)
        pc = [ip + 0x788]! // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.g_malloc (int r0, int r1) {
    loc_0x00001d40:
        // CALL XREF from sym.__mmv4l2_get_control @ 0x3150(x)
        // CALL XREF from sym._mmv4l2_alloc_buffers @ 0x4238(x)
        // CALL XREF from sym.mm_v4l2_capture_image @ 0x7748(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.g_malloc @ 0x1d40(r)
        pc = [ip + 0x780]! // 0x124c8 // reloc.g_malloc // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.g_free (int r0, int r1) {
    loc_0x00001d58:
        // XREFS: CALL 0x0000270c  CALL 0x000040ee  CALL 0x00004550  CALL 0x00004cba  CALL 0x00005f5e  CALL 0x000065a8
        // XREFS: CALL 0x000066d6  CALL 0x0000784e
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.g_free @ 0x1d58(r)
        pc = [ip + 0x770]! // 0x124d0 // reloc.g_free // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.g_mutex_unlock (int r0, int r1) {
    loc_0x00001d64:
        // XREFS: CALL 0x00006564  CALL 0x000065bc  CALL 0x000066b6  CALL 0x000067fc  CALL 0x00006982  CALL 0x00006cce
        // XREFS: CALL 0x00006ff4  CALL 0x00007370  CALL 0x00007490  CALL 0x000075c6  CALL 0x00007856  CALL 0x00007d4a
        // XREFS: CALL 0x00007e80
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.g_mutex_unlock @ 0x1d64(r)
        pc = [ip + 0x768]! // 0x124d4 // reloc.g_mutex_unlock // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
void free (void *ptr) {
    loc_0x00001d88:
        // CALL XREF from sym.mmv4l2_save_file @ 0x61b2(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.free @ 0x1d88(r)
        // DATA XREF from sym.mmv4l2_save_file @ 0x6274(r)
        pc = [ip + 0x750]! // 0x124e0 // reloc.free // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mmf_attrs_free (int r0, int r1) {
    loc_0x00001d94:
        // CALL XREF from sym._mmv4l2_deconstruct_attribute @ 0x2878(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.mmf_attrs_free @ 0x1d94(r)
        pc = [ip + 0x748]! // 0x124e4 // reloc.mmf_attrs_free // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
void * memcpy (void *s1, const void *s2, size_t n) {
    loc_0x00001da0:
        // CALL XREF from sym._mmv4l2_construct_attribute @ 0x26b8(x)
        // CALL XREFS from sym.mm_v4l2_capture_image @ 0x796a(x), 0x7ae6(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.memcpy @ 0x1da0(r)
        pc = [ip + 0x740]! // 0x124e8 // reloc.memcpy // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mmf_attrs_commit (int r0, int r1) {
    loc_0x00001db8:
        // CALL XREF from sym._mmv4l2_construct_attribute @ 0x276a(x)
        // DATA XREF from sym.mm_v4l2_stop_capture @ 0x757e(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.mmf_attrs_commit @ 0x1db8(r)
        pc = [ip + 0x730]! // 0x124f0 // reloc.mmf_attrs_commit // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) {
    loc_0x00001dc4:
        // CALL XREF from sym.mmv4l2_wait_frame @ 0x632c(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.select @ 0x1dc4(r)
        pc = [ip + 0x728]! // 0x124f4 // reloc.select // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.__stack_chk_fail (int r0, int r1) {
    loc_0x00001ddc:
        // XREFS: CALL 0x00002e2a  CALL 0x0000343a  CALL 0x000036d0  CALL 0x0000388c  CALL 0x00003a28  CALL 0x00003c42
        // XREFS: CALL 0x00004424  CALL 0x000047f4  CALL 0x00004e64  CALL 0x000058ce  CALL 0x00005a98  CALL 0x00005e4c
        // XREFS: CALL 0x00007bf8
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.__stack_chk_fail @ 0x1ddc(r)
        pc = [ip + 0x718]! // 0x124fc // reloc.__stack_chk_fail // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int strcasecmp (const char *s1, const char *s2) {
    loc_0x00001df4:
        // CALL XREF from sym.__mmv4l2_get_format_by_name @ 0x2984(x)
        // CALL XREF from sym.__mmv4l2_field_from_string @ 0x29b8(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.strcasecmp @ 0x1df4(r)
        pc = [ip + 0x708]! // 0x12504 // reloc.strcasecmp // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mm_attrs_get_int_by_name (int r0, int r1) {
    loc_0x00001e30:
        // XREFS: CALL 0x000067a2  CALL 0x000067ee  CALL 0x00006810  CALL 0x0000681e  CALL 0x00006ac8  CALL 0x00006adc
        // XREFS: CALL 0x00006b0c  CALL 0x00006b54  CALL 0x00006b6e  CALL 0x00006b88  CALL 0x00006ba2  CALL 0x00006bc0
        // XREFS: CALL 0x00006c1a  CALL 0x00006c2c  CALL 0x00006c38  CALL 0x00006cee  CALL 0x00006d8e  CALL 0x0000733a
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.mm_attrs_get_int_by_name @ 0x1e30(r)
        pc = [ip + 0x6e0]! // 0x12518 // reloc.mm_attrs_get_int_by_name // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int ioctl (int fd, unsigned long request) {
    loc_0x00001e48:
        // XREFS(27)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.ioctl @ 0x1e48(r)
        pc = [ip + 0x6d0]! // 0x12520 // reloc.ioctl // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int usleep (int s) {
    loc_0x00001e54:
        // CALL XREF from sym.mm_v4l2_capture_image @ 0x79b8(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.usleep @ 0x1e54(r)
        pc = [ip + 0x6c8]! // 0x12524 // reloc.usleep // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mmf_attrs_new_from_data (int r0, int r1) {
    loc_0x00001e6c:
        // CALL XREF from sym._mmv4l2_construct_attribute @ 0x2704(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.mmf_attrs_new_from_data @ 0x1e6c(r)
        pc = [ip + 0x6b8]! // 0x1252c // reloc.mmf_attrs_new_from_data // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
char * strcpy (char *dest, const char *src) {
    loc_0x00001e78:
        // CALL XREF from sym.mmv4l2_save_file @ 0x62a0(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from sym.imp.strcpy @ 0x1e78(r)
        pc = [ip + 0x6b0]! // 0x12530 // reloc.strcpy // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int open (const char *path, int oflag) {
    loc_0x00001ee4:
        pc = [ip + 0x66c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.g_mutex_lock (int r0, int r1) {
    loc_0x00002040:
        add ip, ip, 16, 20
        // DATA XREF from fcn.0000203c @ 0x203c(r)
        pc = [ip + 0x580]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int munmap (void*addr, size_t length) {
    loc_0x00002058:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002054 @ 0x2054(r)
        pc = [ip + 0x570]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.__dlog_print (int r0, int r1) {
    loc_0x0000207c:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002078 @ 0x2078(r)
        pc = [ip + 0x558]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mm_attrs_set_valist (int r0, int r1) {
    loc_0x00002088:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002084 @ 0x2084(r)
        pc = [ip + 0x550]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.g_malloc0 (int r0, int r1) {
    loc_0x000020ac:
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020a8 @ 0x20a8(r)
        pc = [ip + 0x538]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mmf_attrs_set_valid_range (int r0, int r1) {
    loc_0x000020f4:
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020f0 @ 0x20f0(r)
        pc = [ip + 0x508]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.g_mutex_new (int r0, int r1) {
    loc_0x00002130:
        add ip, ip, 16, 20
        // DATA XREF from fcn.0000212c @ 0x212c(r)
        pc = [ip + 0x4e0]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym.imp.mmf_attrs_set_valid_type (int r0, int r1) {
    loc_0x0000213c:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002138 @ 0x2138(r)
        pc = [ip + 0x4d8]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int close (int fildes) {
    loc_0x00002148:
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002144 @ 0x2144(r)
        // DATA XREF from sym._mmv4l2_create @ 0x5ee0(r)
        pc = [ip + 0x4d0]!
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym.__mmv4l2_field_from_string (int16_t arg1) {
    loc_0x000029a0:
        push (r3, r4, r5, r6, r7, lr)
        r4 = 0
        // DATA XREFS from sym.mm_v4l2_start_capture @ 0x7366(r), 0x736c(r), 0x745a(r)
        r5 = [0x000029a8] // [0x29d0:4]=0xf944
        r6 = r0       // arg1
        r5 += pc      // 0x122f0 // "\t" // section..data.rel.ro
        
    loc_0x000029aa:
        // CODE XREF from sym.__mmv4l2_field_from_string @ 0x29c0(x)
        r3 = r5 + 0x50
        r1 = r6       // const char *s2
        // DATA XREF from sym.mm_v4l2_start_capture @ 0x742c(r)
        r7 = r4 << 3
        ldr.w r0, [r3, r4, lsl 3] // const char *s1
        r4 += 1
        sym.imp.strcasecmp () // int strcasecmp("\x01\x01\x01", 0)
        // DATA XREFS from sym.mm_v4l2_start_capture @ 0x7472(r), 0x748c(r)
        if (!r0) goto 0x29c8 // unlikely
        goto loc_0x000029be;
        return r0;
    loc_0x000029be:
        (a, b) = compare (r4, 0xa)
        bne 0x29aa    // likely
        goto loc_0x000029c2;
    loc_0x000029c2:
        // DATA XREF from sym.mm_v4l2_set_attribute @ 0x707e(r)
        mov.w r0, -1
        // DATA XREF from sym._mmv4l2_set_input @ 0x5bf2(r)
        pop (r3, r4, r5, r6, r7, pc)
        return r0;
    loc_0x000029c8: // orphan
         // CODE XREF from sym.__mmv4l2_field_from_string @ 0x29bc(x)
         r5 += r7                 // 0x122f0 // "\t"
         r0 = [r5 + 0x54]
         pop (r3, r4, r5, r6, r7, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_get_buf_type_name (uint32_t arg1) {
    loc_0x000028d4:
        r3 = [0x000028d8] // [0x2904:4]=0xfa12
        r2 = 0
        push (r4)
        r3 += pc      // 0x122f0 // "\t" // section..data.rel.ro
        
    loc_0x000028dc:
        // CODE XREF from sym.__mmv4l2_get_buf_type_name @ 0x28e8(x)
        r1 = r2 << 4
        r2 += 1
        r4 = [r1 + r3] // 0x122f0 // "\t"
        (a, b) = compare (r4, r0) // arg1
        je 0x28fc     // unlikely
        goto loc_0x000028e6;
        return r0;
    loc_0x000028e6:
        (a, b) = compare (r2, 5)
        bne 0x28dc    // likely
        goto loc_0x000028ea;
    loc_0x000028ea:
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x598e(r)
        r3 = r0 << 0x18 // arg1
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5988(r)
        bmi 0x28f6    // unlikely
        goto loc_0x000028ee;
    loc_0x000028f6:
        // CODE XREF from sym.__mmv4l2_get_buf_type_name @ 0x28ec(x)
        r0 = [0x000028f8] // [0x290c:4]=0x5c98
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x570a(r)
        r0 += pc      // 0x8594 // "Private" // str.Private
        // DATA XREF from sym.mm_v4l2_get_attribute @ 0x7146(r)
        goto 0x28f2
        
    loc_0x000028f2:
        // CODE XREFS from sym.__mmv4l2_get_buf_type_name @ 0x28fa(x), 0x2900(x)
        pop (r4)
        bx lr
        return r0;
    loc_0x000028ee: // orphan
         r0 = [0x000028f0]        // [0x2908:4]=0x5ca8
         r0 += pc                 // 0x859c // "Unknown" // str.Unknown

    loc_0x000028f2: // orphan
         // CODE XREFS from sym.__mmv4l2_get_buf_type_name @ 0x28fa(x), 0x2900(x)
         pop (r4)
         bx lr

        return r0;
    loc_0x000028fc: // orphan
         // CODE XREF from sym.__mmv4l2_get_buf_type_name @ 0x28e4(x) // DATA XREF from sym._mmv4l2_enum_formats @ 0x58a8(x)
         r3 += r1                 // 0x122f0 // "\t"
         r0 = [r3 + 8]            // 0x94dc // "Video capture mplanes"
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_get_format (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00006924:
        push (r4, r5, r6, r7, r8, sb, sl, lr)
        sp -= 0x10
        r7 = [0x0000692c] // [0x69f8:4]=0x16d4
        r4 = r0       // arg1
        r8 = [0x00006934] // [0x69fc:4]=0x2fee
        sb = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00006938] // [0x6a00:4]=0x29fc
        r6 = [0x0000693c] // [0x6a04:4]=0x310a
        r8 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        sl = r2       // arg3
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r6 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r8 += 0x34    // 0x9960 // "mm_v4l2_get_format" // str.mm_v4l2_get_format
        r5 = 0xd8
        stm.w sp, (r6, r8)
        [var_8h] = r5
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x69a8     // likely
        goto loc_0x0000695c;
    loc_0x000069a8:
        // CODE XREF from sym.mm_v4l2_get_format @ 0x695a(x)
        r3 = [0x000069ac] // [0x6a0c:4]=0x1684
        r2 = r7
        lr = [0x000069b4] // [0x6a10:4]=0x17f6
        r0 = 2
        r1 = 5        // (pstr 0x00000101) "NU"
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0xda
        [sp] = r6
        r5 = 0x1001   // "og_status"
        str.w r8, [sp, 4]
        r5 |= 0x8000 << 16
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x6986
        
    loc_0x00006986:
        // CODE XREFS from sym.mm_v4l2_get_format @ 0x69d2(x), 0x69f4(x)
        r0 = r5
        sp += 0x10
        pop (r4, r5, r6, r7, r8, sb, sl, pc)
        goto loc_0x00006964;
        return r0;
    loc_0x00006964:
        fcn.00002048 ()
        r0 = r4
        fcn.000020c0 ()
        r5 = r0
        if (r0) goto 0x698e // unlikely
        goto loc_0x00006972;
    loc_0x0000698e:
        // CODE XREF from sym.mm_v4l2_get_format @ 0x6970(x)
        r3 = [0x00006990] // [0x6a08:4]=0x321a
        r2 = r7
        r0 = 2
        r1 = 6
        r3 += pc      // 0x9bb4 // "%s: %s(%d) > set format error\n" // str._s:__s__d____set_format_error_n
        [sp] = r6
        str.w r8, [sp, 4]
        r6 = 0xe1
        [var_8h] = r6
        fcn.00002084 ()
        goto 0x697e
        
    loc_0x0000697e:
        // CODE XREF from sym.mm_v4l2_get_format @ 0x69a6(x)
        r0 = [r4 + 0xd4]
        sym.imp.g_mutex_unlock ()
        return r0;
    loc_0x00006972: // orphan
         r3 = [r4 + 0x1c]         // elf_phdr
         str.w r3, [sb]
         r3 = [r4 + 0x20]         // elf_shdr
         str.w r3, [sl]           // 0x188 // U"uZ9TLR$Y\x80i"

    loc_0x0000697e: // orphan
         // CODE XREF from sym.mm_v4l2_get_format @ 0x69a6(x)
         r0 = [r4 + 0xd4]
         sym.imp.g_mutex_unlock ()

    loc_0x00006986: // orphan
         // CODE XREFS from sym.mm_v4l2_get_format @ 0x69d2(x), 0x69f4(x)
         r0 = r5
         sp += 0x10
         pop (r4, r5, r6, r7, r8, sb, sl, pc)

        return r0;
    loc_0x000069d4: // orphan
         // CODE XREF from sym.mm_v4l2_get_format @ 0x6962(x)
         r3 = [0x000069d8]        // [0x6a14:4]=0x3134
         r2 = r7
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
         r4 = 0xdc
         [sp] = r6
         r5 = 0x1001              // "og_status"
         str.w r8, [sp, 4]
         r5 |= 0x8000 << 16
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00002048 (int r0, int r1) {
    loc_0x00002048:
        // XREFS: CALL 0x0000653e  CALL 0x000066a0  CALL 0x00006790  CALL 0x00006964  CALL 0x00006a68  CALL 0x00006fe6
        // XREFS: DATA 0x000072ee  CALL 0x00007328  CALL 0x000075aa  CALL 0x00007738  CALL 0x00007d32  CALL 0x00007e6a
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002048 @ 0x2048(r)
        pc = [ip + 0x578]! // 0x125c8 // reloc.g_mutex_lock // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.000020c0 (int r0, int r1) {
    loc_0x000020c0:
        // CALL XREF from sym.mm_v4l2_get_format @ 0x696a(x)
        // CALL XREF from sym.mm_v4l2_realize @ 0x6cdc(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020c0 @ 0x20c0(r)
        pc = [ip + 0x528]! // 0x125f0 // reloc._mmv4l2_get_format // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_set_format (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4, int16_t arg_128h, int16_t arg_12ch) {
    loc_0x000038c8:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        // DATA XREF from sym._mmv4l2_get_format @ +0x194(r)
        r4 = r0       // arg1
        lr = [0x000038d4] // [0x3a2c:4]=0xebcc
        fp = r3       // arg4
        r0 = [0x000038d8] // [0x3a30:4]=388
        sp -= 0x104
        lr += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        r7 = [0x000038dc] // [0x3a34:4]=0x4724 // "$G"
        r5 = [0x000038e0] // [0x3a38:4]=0x4994
        sb = r1       // arg2
        r8 = [lr + r0] // 0x1262c // reloc.__stack_chk_guard
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x000038e8] // [0x3a3c:4]=0x4718
        sl = r2       // arg3
        r6 = [0x000038ec] // [0x3a40:4]=0x4cc8
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        ip = [r8]     // elf_shdr
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += 0xcc    // 0x8350 // "_mmv4l2_set_format" // str._mmv4l2_set_format
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        [var_28h] = r5
        lr = 0x2e3
        [sp] = r6
        [var_4h] = r5
        str.w ip, [sp, 0xfc]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x39fc     // likely
        goto loc_0x00003918;
    loc_0x000039fc:
        // CODE XREF from sym._mmv4l2_set_format @ 0x3916(x)
        r3 = [0x00003a00] // [0x3a50:4]=0x4630 // "0F"
        r2 = r7
        lr = [0x00003a08] // [0x3a54:4]=0x47a2
        r0 = 2
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x45fe(r)
        r1 = 5        // (pstr 0x00000101) "NU"
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x2e5
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4614(r)
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x39b6
        
    loc_0x000039b6:
        // CODE XREFS from sym._mmv4l2_set_format @ 0x39fa(x), 0x3a26(x)
        r2 = [var_fch]
        r3 = [r8]     // elf_shdr
        (a, b) = compare (r2, r3)
        bne 0x3a28    // likely
        goto loc_0x000039c0;
        goto loc_0x0000394e;
        return r0;
    loc_0x0000394e:
        r0 = [var_3ch] // int16_t arg1 // r13
        fcn.00002940 () // fcn.00002940(0x178000)
        r5 = [var_44h]
        sb = [var_3ch] // r13
        sl = [var_34h]
        fp = [var_38h]
        r4 = r0       // r13
        r0 = [var_40h]
        rsym.__mmv4l2_get_field_name ()
        lr = [var_48h]
        [var_1ch] = r5
        r1 = 3
        r5 = [var_28h]
        r2 = r7
        r3 = [0x00003978] // [0x3a44:4]=0x503e // ">P"
        [var_ch] = r4
        mov.w r4, 0x2fc
        r3 += pc      // 0x89c0 // "%s: %s(%d) > Video format set: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n" // str._s:__s__d____Video_format_set:__s___08x___ux_u__stride__u__field__s_buffer_size__u_n
        str.w lr, [sp, 0x24]
        [var_8h] = r4
        str.w sb, [sp, 0x10]
        str.w sl, [sp, 0x14]
        str.w fp, [sp, 0x18]
        [sp] = r6
        [var_4h] = r5
        [var_20h] = r0
        // DATA XREF from sym._mmv4l2_set_control @ +0x258(r)
        // DATA XREF from sym._mmv4l2_get_format @ +0x180(r)
        r0 = 2
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x59aa(r)
        fcn.00002084 ()
        r3 = [0x000039a0] // [0x3a48:4]=0x46f2
        r0 = 2
        r2 = r7
        r1 = 3
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x59d4(r)
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        r4 += r0
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0
    loc_0x000039b6: // orphan
         // CODE XREFS from sym._mmv4l2_set_format @ 0x39fa(x), 0x3a26(x)
         r2 = [var_fch]
         r3 = [r8]                // elf_shdr
         (a, b) = compare (r2, r3)
         bne 0x3a28               // likely

         goto loc_0x000039c0
    loc_0x000039c0: // orphan
         sp += 0x104
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x000039c6: // orphan
         // CODE XREF from sym._mmv4l2_set_format @ 0x394c(x)
         fcn.00001fa8 ()
         r4 = r0
         r0 = [r0]                // elf_shdr // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x48a8(r)
         fcn.00001eb8 ()
         r5 = [var_28h]
         [sp] = r6 // DATA XREF from sym._mmv4l2_queue_buffer @ 0x47ce(r)
         mov.w r3, 0x2f4
         [var_8h] = r3
         r2 = r7
         [var_4h] = r5
         r1 = 6
         r3 = [0x000039e4]        // [0x3a4c:4]=0x4f9c
         r3 += pc                 // 0x8984 // "%s: %s(%d) > Unable to set format(VIDIOC_S_FMT): %s (%d).\n" // str._s:__s__d____Unable_to_set_format_VIDIOC_S_FMT_:__s___d_._n
         [var_ch] = r0
         r0 = 2
         r4 = [r4]                // elf_shdr // DATA XREF from sym._mmv4l2_set_control @ +0x24c(r) // DATA XREF from sym._mmv4l2_get_format @ +0x18c(r)
         [var_10h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
    loc_0x00003a28: // orphan
         // CODE XREF from sym._mmv4l2_set_format @ 0x39be(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_create (int16_t arg1) {
    loc_0x00005e84:
        push (r4, r5, r6, r7, lr)
        sp -= 0x14
        r7 = [0x00005e8c] // [0x5f0c:4]=0x2178 // "x!"
        r4 = r0       // arg1
        r5 = [0x00005e90] // [0x5f10:4]=0x23ea
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00005e94] // [0x5f14:4]=0x2174
        r6 = [0x00005e98] // [0x5f18:4]=0x2726
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x2f0   // 0x8574 // "_mmv4l2_create" // str._mmv4l2_create
        lr = 0x6db
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        if (!r4) goto 0x5ee0 // likely
        goto loc_0x00005eb6;
    loc_0x00005ee0:
        // CODE XREF from sym._mmv4l2_create @ 0x5eb4(x)
        r3 = [0x00005ee4] // [0x5f20:4]=0x214c // "L!"
        r2 = r7
        lr = [0x00005eec] // [0x5f24:4]=0x22be
        r0 = 2
        r1 = 5        // (pstr 0x00000101) "NU"
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x6dd
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5edc
        
    loc_0x00005edc:
        // CODE XREF from sym._mmv4l2_create @ 0x5f0a(x)
        sp += 0x14
        pop (r4, r5, r6, r7, pc) // r13
        return r0;
    loc_0x00005edc: // orphan
         // CODE XREF from sym._mmv4l2_create @ 0x5f0a(x)
         sp += 0x14
         pop (r4, r5, r6, r7, pc) // r13

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_destroy (int16_t arg1) {
    loc_0x00005f28:
        push (r4, r5, r6, r7, lr)
        sp -= 0x14    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r7 = [0x00005f30] // [0x5fc0:4]=0x20d4
        r4 = r0       // arg1
        r5 = [0x00005f34] // [0x5fc4:4]=0x2346 // "F#"
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = rsym.__mmv4l2_munmap_buffer // [0x20d0:4]=0xe28cca10
        r6 = [0x00005f3c] // [0x5fcc:4]=0x2682
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x300   // 0x8584 // "_mmv4l2_destroy" // str._mmv4l2_destroy
        lr = 0x6ed
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        if (!r4) goto 0x5f92 // likely
        goto loc_0x00005f5a;
    loc_0x00005f92:
        // CODE XREF from sym._mmv4l2_destroy @ 0x5f58(x)
        r3 = [0x00005f94] // [0x5fe0:4]=0x209a
        r2 = r7
        lr = [0x00005f9c] // [0x5fe4:4]=0x220c
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x6f0
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5f8e
        
    loc_0x00005f8e:
        // CODE XREF from sym._mmv4l2_destroy @ 0x5fbc(x)
        sp += 0x14
        pop (r4, r5, r6, r7, pc) // r13
        goto loc_0x00005f5e;
        return r0;
    loc_0x00005f5e:
        sym.imp.g_free ()
        
    loc_0x00005f62:
        // CODE XREF from sym._mmv4l2_destroy @ 0x5f5c(x)
        r7 = [0x00005f64] // [0x5fd0:4]=0x2314
        r5 = 0
        r2 = rsym._mmv4l2_set_framerate // [0x2094:4]=0xe28cca10
        r0 = 2
        r3 = [0x00005f6c] // [0x5fd8:4]=0x2122
        r7 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r6 = [0x00005f70] // [0x5fdc:4]=0x264c "4["
        r1 = 3
        [r4 + 0x14] = r5
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r7 += 0x300   // 0x8584 // "_mmv4l2_destroy" // str._mmv4l2_destroy
        r4 = 0x6f4
        stm.w sp, (r6, r7)
        [var_8h] = r4
        fcn.00002084 ()
        r0 = r5
        return r0;
    loc_0x00005f62: // orphan
         // CODE XREF from sym._mmv4l2_destroy @ 0x5f5c(x)
         r7 = [0x00005f64]        // [0x5fd0:4]=0x2314
         r5 = 0
         r2 = rsym._mmv4l2_set_framerate // [0x2094:4]=0xe28cca10
         r0 = 2
         r3 = [0x00005f6c]        // [0x5fd8:4]=0x2122
         r7 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x00005f70]        // [0x5fdc:4]=0x264c "4["
         r1 = 3
         [r4 + 0x14] = r5
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r7 += 0x300              // 0x8584 // "_mmv4l2_destroy" // str._mmv4l2_destroy
         r4 = 0x6f4
         stm.w sp, (r6, r7)
         [var_8h] = r4
         fcn.00002084 ()
         r0 = r5

    loc_0x00005f8e: // orphan
         // CODE XREF from sym._mmv4l2_destroy @ 0x5fbc(x)
         sp += 0x14
         pop (r4, r5, r6, r7, pc) // r13

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_convert_buf_type (uint32_t arg1) {
    loc_0x00006034:
        push (r4, r5, r6, lr) // (cstr 0x000085c8) "mm_v4l2_priv.c"
        sp -= 0x10
        if (!r0) goto 0x6044 // likely
        goto loc_0x0000603a;
    loc_0x00006044:
        // CODE XREF from sym.mmv4l2_convert_buf_type @ 0x6038(x)
        r0 = 1
        goto 0x6040
        
    loc_0x00006040:
        // CODE XREFS from sym.mmv4l2_convert_buf_type @ 0x6046(x), 0x606e(x)
        sp += 0x10
        pop (r4, r5, r6, pc) // elf_shdr // r13
        goto loc_0x0000603e;
        return r0;
    loc_0x0000603e:
        r0 = 2
    loc_0x00006040: // orphan
         // CODE XREFS from sym.mmv4l2_convert_buf_type @ 0x6046(x), 0x606e(x)
         sp += 0x10
         pop (r4, r5, r6, pc)     // elf_shdr // r13

        return r0;
    loc_0x00006048: // orphan
         // CODE XREF from sym.mmv4l2_convert_buf_type @ 0x603c(x)
         r5 = [0x0000604c]        // [0x6070:4]=0x36aa
         r0 = 2
         r2 = [0x00006050]        // [0x6074:4]=0x1fb2
         r1 = 6
         r3 = [0x00006054]        // [0x6078:4]=0x3784
         r5 += pc                 // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
         r6 = [0x00006058]        // [0x607c:4]=0x3770 // "p7"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x97e0 // "%s: %s(%d) > mmv4l2 supports neither capture nor output.\n" // str._s:__s__d____mmv4l2_supports_neither_capture_nor_output._n
         r4 = 0x7f                // '\x7f'
         r6 += pc                 // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
         r5 += 0x18               // 0x9718 // "mmv4l2_convert_buf_type" // str.mmv4l2_convert_buf_type
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         mov.w r0, -1
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_get_attribute_info (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00002008:
        // CODE XREF from sym.mm_v4l2_get_attribute_info @ 0x7248(x)
        bx pc
        return r0;
    loc_0x00007234: // orphan
         (a, b) = compare (r5, 0)
         je 0x72a0                // likely

         goto loc_0x00007238
    loc_0x00007238: // orphan
         (a, b) = compare (r6, 0)
         je 0x7278                // likely

         goto loc_0x0000723c
    loc_0x0000723c: // orphan
         r0 = r4
         r1 = r5
         r2 = r6
         sp += 0x14
         pop (r4, r5, r6, r7, r8, sb, lr) // (pstr 0x000097d0) "mm_v4l2_utils.c" r13
         
         goto loc_0x0000724c
    loc_0x0000724c: // orphan
         // CODE XREF from sym.mm_v4l2_get_attribute_info @ 0x7232(x)
         r3 = [0x00007250]        // [0x72c4:4]=0xde2 "onstruct_attribute" // "onstruct_attribute"
         r2 = r7
         r5 = [0x00007254]        // [0x72c8:4]=0xf54 "type" // "type"
         r0 = 2
         r1 = 5
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r5 += pc                 // 0x81b0 // "v4l2" // str.v4l2
         r4 = 0x212
         stm.w sp, (r8, sb)
         [var_ch] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0x401
         r0 |= 0x8000 << 16

    loc_0x00007272: // orphan
         // CODE XREF from sym.mm_v4l2_get_attribute_info @ 0x729e(x)
         sp += 0x14
         pop (r4, r5, r6, r7, r8, sb, pc) // r13

        return r0;
    loc_0x00007278: // orphan
         // CODE XREF from sym.mm_v4l2_get_attribute_info @ 0x723a(x)
         r5 = [0x0000727c]        // [0x72cc:4]=0xe8c "__mmv4l2_get_buf_type_name" // "__mmv4l2_get_buf_type_name"
         r0 = 2
         r3 = [0x00007280]        // [0x72d0:4]=0xdb4 "nfo" // "nfo"
         r1 = 5
         r5 += pc                 // "info"
         r2 = r7
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         mov.w r4, 0x214

    loc_0x0000728a: // orphan
         // CODE XREF from sym.mm_v4l2_get_attribute_info @ 0x72b2(x)
         stm.w sp, (r8, sb)
         [var_ch] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0x101               // "NU"
         r0 |= 0x8000 << 16
         
         goto loc_0x000072a0
    loc_0x000072a0: // orphan
         // CODE XREF from sym.mm_v4l2_get_attribute_info @ 0x7236(x)
         r5 = [0x000072a4]        // [0x72d4:4]=0xdac "ibutes_info" // "ibutes_info"
         r2 = r7
         r3 = [0x000072a8]        // [0x72d8:4]=0xd8c "ttrs_set_valist" // "ttrs_set_valist"
         r0 = 2
         r5 += pc                 // 0x8058 // "attribute_name" // str.attribute_name
         r1 = 5
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r4 = 0x213
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_get_bps (int16_t arg1, int16_t arg2) {
    loc_0x000063e4:
        push (r4, r5, r6, r7, lr)
        s15 = (float) r0 . // arg1
        vcvt.f64.s32 d18, s15
        vldr d17, [pc, 0x60]
        r7 = [r1 + 4] // arg2
        s15 = (float) r7 .
        r4 = [r1]     // arg2
        push (d8)
        r6 = [0x00006400] // [0x6458:4]=0x32e2
        sp -= 0x1c    // (pstr 0x00009a54) "mm_v4l2.c"
        r2 = [0x00006404] // [0x645c:4]=0x1bfa
        r1 = 3
        r3 = [0x00006408] // [0x6460:4]=0x34e0
        r0 = 2
        lr = [0x00006410] // [0x6464:4]=0x33b0
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        vcvt.f64.s32 d16, s15
        s15 = (float) r4 .
        r3 += pc      // 0x98fc // "%s: %s(%d) > (%f B/s).\n" // str._s:__s__d______f_B_s_._n
        r6 += pc      // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
        lr += pc      // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
        r5 = 0x121
        r6 += 0x74    // 0x9774 // "mmv4l2_get_bps" // str.mmv4l2_get_bps
        str.w lr, [sp]
        [var_4h] = r6
        [var_8h] = r5
        vcvt.f64.s32 d19, s15
        vmla.f64 d16, d19, d17
        d16 = (float) d18 / d16
        vmul.f64 d8, d16, d17
        vstr d8, [sp, 0x10]
        fcn.00002084 ()
        r0 = (float) r1 . d8
        sp += 0x1c
        pop (d8)
        pop (r4, r5, r6, r7, pc) // r13
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_get_attribute (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
    loc_0x000021ec:
        push (r4, r5, r6, r7, r8, sb, sl, lr)
        // DATA XREF from sym.mm_v4l2_get_attribute @ 0x7144(r)
        sl = r3       // arg4
        // DATA XREF from sym.mm_v4l2_get_control @ 0x7e92(r)
        r7 = [0x000021f4] // [0x22bc:4]=0x5e0e
        sp -= 0x10    // (pstr 0x000097d0) "mm_v4l2_utils.c"
        r3 = [0x000021f8] // [0x22c0:4]=0x5e04
        r4 = r2       // arg3
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r6 = [0x00002200] // [0x22c4:4]=0x5e1a
        r8 = [0x00002204] // [0x22c8:4]=0x5d54 // "T]"
        r5 = r0       // arg1
        sb = r1       // arg2
        r2 = r7       // "V4L2" str.V4L2
        r0 = 2
        // DATA XREF from sym._mmv4l2_set_quality @ 0x5e24(r)
        r1 = 3
        // DATA XREF from sym._mmv4l2_destroy @ 0x5f96(r)
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        r8 += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        mov.w lr, 0x43 // 'C'
        stm.w sp, (r6, r8, lr)
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x22a8     // unlikely
        goto loc_0x00002222;
    loc_0x000022a8:
        // CODE XREF from sym._mmv4l2_get_attribute @ 0x2220(x)
        lr = [0x000022b0] // [0x22e8:4]=0x5da2
        r2 = r7
        r3 = [0x000022b0] // [0x22ec:4]=0x5d82
        r0 = 2
        lr += pc      // 0x8058 // "attribute_name" // str.attribute_name
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        // DATA XREF from sym.mm_v4l2_set_attribute @ 0x707c(r)
        r4 = 0x47     // 'G'
        goto 0x228e
        
    loc_0x0000228e:
        // CODE XREF from sym._mmv4l2_get_attribute @ 0x22ba(x)
        [sp] = r6
        r5 = 0x101    // "NU"
        str.w r8, [sp, 4]
        r5 |= 0x8000 << 16
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x2258
        goto loc_0x00002226;
        return r0;
    loc_0x00002226:
        r0 = [r5 + 0xd0]
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7816(r)
        r1 = sb
        r3 = sl
        r2 = r4
        fcn.00001eac ()
        r5 = r0
        if (r0) goto 0x2260 // likely
        goto loc_0x00002238;
    loc_0x00002260:
        // CODE XREF from sym._mmv4l2_get_attribute @ 0x2236(x)
        r3 = [0x00002264] // [0x22dc:4]=0x5e04
        r2 = r7
        r0 = 2
        r1 = 6
        r3 += pc      // 0x8070 // "%s: %s(%d) > failed to get %s attribute\n" // str._s:__s__d____failed_to_get__s_attribute_n
        [sp] = r6
        str.w r8, [sp, 4]
        r6 = 0x50     // 'P'
        [var_ch] = r4
        [var_8h] = r6
        fcn.00002084 ()
        goto 0x2238
    loc_0x00002238: // orphan
         // CODE XREF from sym._mmv4l2_get_attribute @ 0x227a(x)
         r2 = [0x0000223c]        // [0x22cc:4]=0x5dc6
         r0 = 2
         r3 = [0x00002240]        // [0x22d0:4]=0x5e52 // "R^"
         r1 = 3
         r7 = [0x00002244]        // [0x22d4:4]=0x5de0
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r6 = [0x00002248]        // [0x22d8:4]=0x5d18
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r7 += pc                 // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
         r4 = 0x53                // 'S' // (pstr 0x00000100) "GNU"
         r6 += pc                 // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
         [sp] = r7
         [var_4h] = r6
         [var_8h] = r4 // DATA XREF from sym.mm_v4l2_capture_image @ 0x76c8(r)
         fcn.00002084 ()

    loc_0x00002258: // orphan
         // CODE XREF from sym._mmv4l2_get_attribute @ 0x22a6(x)
         r0 = r5
         sp += 0x10
         pop (r4, r5, r6, r7, r8, sb, sl, pc) // elf_shdr // r13

        return r0;
    loc_0x0000227c: // orphan
         // CODE XREF from sym._mmv4l2_get_attribute @ 0x2224(x)
         lr = [0x00002284]        // [0x22e0:4]=0x5dde // "2F"
         r0 = 2
         r3 = [0x00002284]        // [0x22e4:4]=0x5dae
         r1 = 5
         lr += pc                 // 0x8068 // "handle" // str.handle
         r4 = 0x48                // 'H' // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r2 = r7

    loc_0x0000228e: // orphan
         // CODE XREF from sym._mmv4l2_get_attribute @ 0x22ba(x)
         [sp] = r6
         r5 = 0x101               // "NU"
         str.w r8, [sp, 4]
         r5 |= 0x8000 << 16
         str.w lr, [sp, 0xc]
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_set_format (int16_t arg1) {
    loc_0x00006748:
        push (r4, r5, r6, r7, r8, sb, lr)
        sp -= 0x2c
        r7 = [0x00006750] // [0x68e8:4]=0x18b0
        r4 = r0       // arg1
        r8 = [0x00006758] // [0x68ec:4]=0x31ca
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x0000675c] // [0x68f0:4]=0x2bdc
        r6 = [0x00006760] // [0x68f4:4]=0x32ea
        r8 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r6 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r8 += 0x20    // 0x994c // "mm_v4l2_set_format" // str.mm_v4l2_set_format
        r5 = 0x9f
        stm.w sp, (r6, r8)
        [var_8h] = r5
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x6878     // likely
        goto loc_0x0000677c;
    loc_0x00006878:
        // CODE XREF from sym.mm_v4l2_set_format @ 0x677a(x)
        r3 = [0x0000687c] // [0x6914:4]=0x17b4
        r2 = r7
        lr = [0x00006884] // [0x6918:4]=0x1926
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0xa1
        [sp] = r6
        r5 = 0x1001   // "og_status"
        str.w r8, [sp, 4]
        r5 |= 0x8000 << 16
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x6800
        
    loc_0x00006800:
        // CODE XREFS from sym.mm_v4l2_set_format @ 0x68a2(x), 0x68c4(x), 0x68e6(x)
        r0 = r5
        sp += 0x2c
        pop (r4, r5, r6, r7, r8, sb, pc) // r13
        goto loc_0x00006786;
        return r0;
    loc_0x00006786:
        r0 = [r4 + 0xd4]
        (a, b) = compare (r0, 0)
        beq.w 0x68c6  // unlikely
        goto loc_0x00006790;
    loc_0x000068c6:
        // CODE XREF from sym.mm_v4l2_set_format @ 0x678c(x)
        r3 = [0x000068c8] // [0x6920:4]=0x3242 // "B2"
        r2 = r7
        r0 = 2
        r1 = 3
        r3 += pc      // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
        r4 = 0xaa
        [sp] = r6
        r5 = 0x1001   // "og_status"
        str.w r8, [sp, 4]
        r5 |= 0x8000 << 16
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x6800
    loc_0x00006790: // orphan
         fcn.00002048 ()
         r2 = var_28h
         r1 = [0x00006798]        // [0x68f8:4]=0x1a20
         r3 = 4
         r0 = r5
         [r2 - 0x10]! = r3
         r1 += pc                 // 0x81c4 // "pixel_format" // str.pixel_format
         sym.imp.mm_attrs_get_int_by_name ()
         ip = [var_18h]
         r3 = [0x000067ac]        // [0x68fc:4]=0x33aa
         r1 = 3
         r2 = r7
         r0 = 2
         r3 += pc                 // 0x9b60 // "%s: %s(%d) > mm_pixel_format = [%d]\n" // str._s:__s__d____mm_pixel_format____d__n
         mov.w lr, 0xaf
         str.w ip, [sp, 0xc]
         str.w lr, [sp, 8]
         [sp] = r6
         str.w r8, [sp, 4]
         fcn.00002084 ()
         r0 = [var_18h]
         rsym.mmv4l2_convert_pixel_format ()
         r1 = [0x000067d4]        // [0x6900:4]=0x1a54 // "T\x1a"
         r2 = var_1ch
         mov.w lr, 1
         r1 += pc                 // 0x8230 // "set_format" // str.set_format
         mov.w r3, 0x280
         str.w lr, [sp, 0x1c]
         [var_20h] = r3
         mov.w r3, 0x1e0
         [var_24h] = r3
         sb = r0
         r0 = r5
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_1ch]
         if (r3) 
         goto loc_0x000067f6
    loc_0x000067f6: // orphan
         r5 = r3

    loc_0x000067f8: // orphan
         // CODE XREFS from sym.mm_v4l2_set_format @ 0x685c(x), 0x6876(x)
         r0 = [r4 + 0xd4]
         sym.imp.g_mutex_unlock ()

    loc_0x00006800: // orphan
         // CODE XREFS from sym.mm_v4l2_set_format @ 0x68a2(x), 0x68c4(x), 0x68e6(x)
         r0 = r5
         sp += 0x2c
         pop (r4, r5, r6, r7, r8, sb, pc) // r13

        return r0;
    loc_0x00006808: // orphan
         // CODE XREF from sym.mm_v4l2_set_format @ 0x67f4(x)
         r1 = [0x0000680c]        // [0x6904:4]=0x1a62 // "b\x1a"
         r0 = r5
         r2 = var_20h             // U(pstr 0x00000280) ",b"
         r1 += pc                 // 0x8274 // "width" // str.width
         sym.imp.mm_attrs_get_int_by_name ()
         r1 = [0x00006818]        // [0x6908:4]=0x1a5e // "^\x1a"
         r0 = r5
         r2 = var_24h             // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         r1 += pc                 // 0x827c // "height" // str.height
         r5 = 0xc1
         sym.imp.mm_attrs_get_int_by_name ()
         lr = [var_20h]
         ip = [var_24h]
         r1 = 3
         r3 = [0x00006830]        // [0x690c:4]=0x334e // "N3"
         r2 = r7
         r0 = 2
         str.w lr, [sp, 0xc]
         r3 += pc                 // 0x9b88 // "%s: %s(%d) > width = [%d], height = [%d]\n" // str._s:__s__d____width____d___height____d__n
         str.w ip, [sp, 0x10]
         [var_8h] = r5
         r5 = 0
         stm.w sp, (r6, r8)
         fcn.00002084 ()
         r1 = [var_20h]
         r3 = sb
         r2 = [var_24h]
         r0 = r4
         [sp] = r5
         [var_4h] = r5
         rsym._mmv4l2_set_format ()
         r5 = r0
         (a, b) = compare (r0, 0)
         je 0x67f8                // likely

         goto loc_0x0000685e
    loc_0x0000685e: // orphan
         r3 = [0x00006860]        // [0x6910:4]=0x334a
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9bb4 // "%s: %s(%d) > set format error\n" // str._s:__s__d____set_format_error_n
         [sp] = r6
         str.w r8, [sp, 4]
         r6 = 0xc6
         [var_8h] = r6
         fcn.00002084 ()
         
    loc_0x000068a4: // orphan
         // CODE XREF from sym.mm_v4l2_set_format @ 0x6782(x)
         r3 = [0x000068a8]        // [0x691c:4]=0x3284
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9b34 // "%s: %s(%d) > cannot get content attribute" // str._s:__s__d____cannot_get_content_attribute
         r4 = 0xa6
         [sp] = r6
         r5 = 0x1006              // "atus"
         str.w r8, [sp, 4]
         r5 |= 0x8000 << 16
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int rsym.mmv4l2_convert_pixel_format (int r0, int r1) {
    loc_0x00001e24:
        // CALL XREF from sym.mm_v4l2_set_format @ 0x67cc(x)
        // CALL XREF from sym.mm_v4l2_realize @ 0x6bf8(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym.mmv4l2_convert_pixel_format @ 0x1e24(r)
        pc = [ip + 0x6e8]! // 0x12514 // reloc.mmv4l2_convert_pixel_format // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym._mmv4l2_set_format (int r0, int r1) {
    loc_0x00001d1c:
        // CALL XREF from sym.mm_v4l2_set_format @ 0x6854(x)
        // CALL XREF from sym.mm_v4l2_realize @ 0x6c78(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym._mmv4l2_set_format @ 0x1d1c(r)
        pc = [ip + 0x798]! // 0x124bc // reloc._mmv4l2_set_format // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int sym._fini (int r0, int r1) {
    loc_0x00007f60:
        push (r3, lr) // [12] -r-x section size 8 named .fini
        pop (r3, pc)  // r13
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym.__mmv4l2_get_field_name (uint32_t arg1) {
    loc_0x000029d4:
        r3 = [0x000029d8] // [0x2a00:4]=0xf912
        r2 = 0
        push (r4, r5)
        r3 += pc      // 0x122f0 // "\t" // section..data.rel.ro
        r5 = r3 + 0x50 // (pstr 0x000096a0) "any"
        
    loc_0x000029e0:
        // CODE XREF from sym.__mmv4l2_get_field_name @ 0x29ee(x)
        r1 = r2 << 3
        r2 += 1
        r4 = r5 + r1
        r4 = [r4 + 4]
        (a, b) = compare (r4, r0) // arg1
        je 0x29f8     // unlikely
        goto loc_0x000029ec;
        return r0;
    loc_0x000029ec:
        (a, b) = compare (r2, 0xa)
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5610(r)
        // DATA XREF from sym.mm_v4l2_start_capture @ 0x73c0(r)
        bne 0x29e0    // likely
        goto loc_0x000029f0;
    loc_0x000029f0:
        r0 = [0x000029f4] // [0x2a04:4]=0x5bae
        r0 += pc      // 0x85a4 // "unknown" // str.unknown
        
    loc_0x000029f4:
        // CODE XREF from sym.__mmv4l2_get_field_name @ 0x29fc(x)
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x563a(x)
        pop (r4, r5)
        bx lr
        return r0;
    loc_0x000029f4: // orphan
         // CODE XREF from sym.__mmv4l2_get_field_name @ 0x29fc(x) // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x563a(x)
         pop (r4, r5)
         bx lr

        return r0;
    loc_0x000029f8: // orphan
         // CODE XREF from sym.__mmv4l2_get_field_name @ 0x29ea(x)
         r3 += r1                 // 0x122f0 // "\t"
         r0 = [r3 + 0x50] // DATA XREF from sym.mm_v4l2_get_format @ 0x6936(r)
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_open (int16_t arg1, int16_t arg2) {
    loc_0x00002a84:
        push (r4, r5, r6, r7, r8, lr)
        sp -= 0x18    // (pstr 0x0000802c) "mm_v4l2_attrs.c"
        r7 = [0x00002a8c] // [0x2b98:4]=0x5576 // "vU"
        r4 = r0       // arg1
        r5 = [0x00002a90] // [0x2b9c:4]=0x57e8
        r8 = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00002a98] // [0x2ba0:4]=0x5570 // "pU"
        r6 = [0x00002a98] // [0x2ba4:4]=0x5b22 // "\"["
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x18    // 0x829c // "_mmv4l2_open" // str._mmv4l2_open
        mov.w lr, 0x144
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        // DATA XREF from sym._mmv4l2_get_input @ 0x5b02(r)
        (a, b) = compare (r4, 0)
        je 0x2b6a     // likely
        goto loc_0x00002aba;
    loc_0x00002b6a:
        // CODE XREF from sym._mmv4l2_open @ 0x2ab8(x)
        r3 = [0x00002b6c] // [0x2bb8:4]=0x54c2
        r2 = r7
        lr = [0x00002b74] // [0x2bbc:4]=0x5634
        // DATA XREF from sym.mm_v4l2_realize @ 0x6daa(r)
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x56fc(r)
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x146
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5a28(r)
        // DATA XREF from sym.mm_v4l2_get_attribute @ 0x71b4(r)
        r0 |= 0x8000 << 16
        goto 0x2b0e
        
    loc_0x00002b0e:
        // CODE XREFS from sym._mmv4l2_open @ 0x2b30(x), 0x2b68(x), 0x2b94(x)
        sp += 0x18
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x00002ac0;
        return r0;
    loc_0x00002ac0:
        r1 = 2
        r0 = r8
        r1 |= 8 << 16
        fcn.00001ee8 ()
        (a, b) = compare (r0, 0)
        [r4] = r0
        blt 0x2b32    // unlikely
        goto loc_0x00002ad2;
    loc_0x00002b32:
        // CODE XREF from sym._mmv4l2_open @ 0x2ad0(x)
        // DATA XREFS from sym._mmv4l2_enum_formats @ 0x5744(x), 0x5852(r)
        fcn.00001fa8 ()
        r4 = r0
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x5740(r)
        r0 = [r0]
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x573a(r)
        fcn.00001eb8 ()
        [sp] = r6
        [var_4h] = r5
        mov.w r3, 0x152
        // DATA XREF from sym.mm_v4l2_realize @ 0x6dd6(r)
        str.w r8, [sp, 0xc]
        r2 = r7
        [var_8h] = r3
        r1 = 6
        r3 = [0x00002b54] // [0x2bb4:4]=0x5ab2
        r3 += pc      // 0x8608 // "%s: %s(%d) > opening device %s: %s (%d).\n" // str._s:__s__d____opening_device__s:__s___d_._n
        [var_10h] = r0
        r0 = 2
        r4 = [r4]
        [var_14h] = r4
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x54a0(r)
        fcn.00002084 ()
        r0 = 0x100e   // '\x0e\x10' // "mv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x2b0e
    loc_0x00002ad2: // orphan
         r3 = [0x00002ad4]        // [0x2ba8:4]=0x5b56 // "V["
         r1 = 3
         r2 = r7
         r0 = 2
         r3 += pc                 // 0x8634 // "%s: %s(%d) > Device %s opened.\n" // str._s:__s__d____Device__s_opened._n
         mov.w lr, 0x156
         [sp] = r6
         str.w lr, [sp, 8]
         [var_4h] = r5
         str.w r8, [sp, 0xc]
         fcn.00002084 ()
         r3 = 1
         [r4 + 4] = r3
         r3 = [0x00002af8]        // [0x2bac:4]=0x559c
         r2 = r7
         r0 = 2
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         [sp] = r6
         mov.w r4, 0x15a
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0

    loc_0x00002b0e: // orphan
         // CODE XREFS from sym._mmv4l2_open @ 0x2b30(x), 0x2b68(x), 0x2b94(x)
         sp += 0x18
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x00002b14: // orphan
         // CODE XREF from sym._mmv4l2_open @ 0x2abe(x) // DATA XREF from sym.mm_v4l2_realize @ 0x6e08(x)
         r3 = [0x00002b18]        // [0x2bb0:4]=0x5ab8 ".("
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x85d8 // "%s: %s(%d) > Can't open device (already open).\n" // str._s:__s__d____Cant_open_device__already_open_._n
         [sp] = r6
         mov.w r4, 0x14a
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         mov.w r0, -1
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00001ee8 (int r0, int r1) {
    loc_0x00001ee8:
        // CALL XREF from sym._mmv4l2_open @ 0x2ac8(x)
        // CALL XREF from sym.mmv4l2_save_file @ 0x61aa(x)
        add ip, pc, 0, 12 // 0x1ef0 // "d\xf6\xbc\xe5" // rsym._mmv4l2_print_control
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001ee8 @ 0x1ee8(r)
        pc = [ip + 0x664]! // 0x12554 // reloc.open // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001fa8 (int r0, int r1) {
    loc_0x00001fa8:
        // XREFS(30)
        add ip, pc, 0, 12 // 0x1fb0 // rsym.mmv4l2_cap_get_buf_type
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001fa8 @ 0x1fa8(r)
        pc = [ip + 0x5e4]! // 0x12594 // reloc.__errno_location // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001eb8 (int r0, int r1) {
    loc_0x00001eb8:
        // XREFS(27)
        add ip, pc, 0, 12 // 0x1ec0 // rsym._mmv4l2_close
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001eb8 @ 0x1eb8(r)
        pc = [ip + 0x684]! // 0x12544 // reloc.strerror // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym.mm_v4l2_set_control (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
    loc_0x00007ce8:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr) // (pstr 0x00008584) "_mmv4l2_destroy"
        fp = r3       // arg4
        r7 = [0x00007cf0] // [0x7df4:4]=0x310
        sp -= 0x1c
        r8 = [0x00007cf8] // [0x7df8:4]=0x1c26
        r4 = r0       // arg1
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00007cfc] // [0x7dfc:4]=0x1634
        sb = [0x00007d04] // [0x7e00:4]=0x1d42 // "B\x1d"
        r6 = r1       // arg2
        r8 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        sl = r2       // arg3
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        sb += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r8 += 0x100   // 0x9a2c // "mm_v4l2_set_control" // str.mm_v4l2_set_control
        r5 = 0x35d
        str.w sb, [sp]
        str.w r8, [sp, 4]
        [var_8h] = r5
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x7da0     // likely
        goto loc_0x00007d2a;
    loc_0x00007da0:
        // CODE XREF from sym.mm_v4l2_set_control @ 0x7d28(x)
        r3 = [0x00007da4] // [0x7e18:4]=0x28e
        r2 = r7
        r6 = [0x00007da8] // [0x7e1c:4]=0x400
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r6 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x35f
        str.w sb, [sp]
        r5 = 0x1001   // "og_status"
        str.w r8, [sp, 4]
        r5 |= 0x8000 << 16
        [var_ch] = r6
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x7d7a
        
    loc_0x00007d7a:
        // CODE XREFS from sym.mm_v4l2_set_control @ 0x7dca(x), 0x7df0(x)
        r0 = r5
        sp += 0x1c
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc) // r13
        goto loc_0x00007d32;
        return r0;
    loc_0x00007d32:
        fcn.00002048 ()
        r0 = r4
        r1 = r6
        r2 = sl
        r3 = fp       // r13
        fcn.0000206c ()
        r5 = r0
        if (r0) goto 0x7d82 // unlikely
        goto loc_0x00007d46;
    loc_0x00007d82:
        // CODE XREF from sym.mm_v4l2_set_control @ 0x7d44(x)
        r3 = [0x00007d84] // [0x7e14:4]=0x22e2
        r2 = r7
        r0 = 2
        r1 = 6
        r3 += pc      // 0xa070 // "%s: %s(%d) > set control error\n" // str._s:__s__d____set_control_error_n
        r7 = 0x367
        str.w sb, [sp]
        str.w r8, [sp, 4]
        [var_8h] = r7
        fcn.00002084 ()
        goto 0x7d46
    loc_0x00007d46: // orphan
         // CODE XREF from sym.mm_v4l2_set_control @ 0x7d9e(x)
         r0 = [r4 + 0xd4]
         sym.imp.g_mutex_unlock ()
         r7 = [0x00007d50]        // [0x7e04:4]=0x1bd2
         r2 = [0x00007d54]        // [0x7e08:4]=0x2ac
         r0 = 2
         r3 = [0x00007d58]        // [0x7e0c:4]=0x232e // ".#"
         r7 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r4 = fcn.00001cf0        // [0x1cf0:4]=0xe52de004
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0xa090 // "%s: %s(%d) > id(%d) val(%ld)\n" // str._s:__s__d____id__d__val__ld__n
         r4 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r7 += 0x100              // 0x9a2c // "mm_v4l2_set_control" // str.mm_v4l2_set_control
         [var_ch] = r6
         mov.w r6, 0x36c
         strd sl, fp, [sp, 0x10]
         stm.w sp, (r4, r7)
         [var_8h] = r6
         fcn.00002084 ()

    loc_0x00007d7a: // orphan
         // CODE XREFS from sym.mm_v4l2_set_control @ 0x7dca(x), 0x7df0(x)
         r0 = r5
         sp += 0x1c
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc) // r13

        return r0;
    loc_0x00007dcc: // orphan
         // CODE XREF from sym.mm_v4l2_set_control @ 0x7d30(x)
         r3 = [0x00007dd0]        // [0x7e20:4]=0x1d3c // "<\x1d"
         r2 = r7
         r0 = 2
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 += pc                 // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
         r4 = 0x361
         str.w sb, [sp]
         r5 = 0x1001              // "og_status"
         str.w r8, [sp, 4]
         r5 |= 0x8000 << 16
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_diff_time (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x000063b8:
        r3 = [r0 + 4] // 0x1cf0 // fcn.00001cf0
        [10] -r-x section size 1144 named .plt // arg1
        push (r4)
        r4 = [r1 + 4] // 0x1cf0 // fcn.00001cf0
        [10] -r-x section size 1144 named .plt // arg2
        r0 = [r0]     // 0x1cf0 // fcn.00001cf0
        [10] -r-x section size 1144 named .plt // arg1
        r3 -= r4
        r1 = [r1]     // 0x1cf0 // fcn.00001cf0
        [10] -r-x section size 1144 named .plt // arg2
        (a, b) = compare (r3, 0)
        [r2 + 4] = r3 // arg3
        rsb r1, r1, r0
        [r2] = r1     // 0x188 // "u" // arg3
        (>=) goto 0x63de // likely
        goto loc_0x000063d0;
    loc_0x000063de:
        // CODE XREF from sym.mmv4l2_diff_time @ 0x63ce(x)
        pop (r4)
        bx lr
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_dequeue_buffer (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00004838:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        sp -= 0x24    // (pstr 0x00009a54) "mm_v4l2.c"
        // DATA XREFS from sym._mmv4l2_alloc_buffers @ 0x43d2(r), 0x43dc(r)
        r7 = [0x00004840] // [0x49c4:4]=0x37c0
        r5 = r0       // arg1
        sb = [0x00004848] // [0x49c8:4]=0x37c2
        r8 = r1       // arg2
        // DATA XREF from sym._mmv4l2_alloc_buffers @ +0x2d0(r)
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        sl = [0x00004850] // [0x49cc:4]=0x3a2c ".." // ",:"
        sb += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        // DATA XREF from sym._mmv4l2_get_format @ 0x37b4(r)
        r6 = [0x00004854] // [0x49d0:4]=0x3d66 // "f="
        r4 = r2       // arg3
        sl += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r2 = r7       // "V4L2" str.V4L2
        r3 = sb       // "%s: %s(%d) > <ENTER> \n" str._s:__s__d_____ENTER___n
        r0 = 2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        fp = sl + 0x1b0 // 0x8434 // "_mmv4l2_dequeue_buffer" // str._mmv4l2_dequeue_buffer
        lr = 0x492
        [sp] = r6
        str.w fp, [sp, 4]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        beq.w 0x499c  // likely
        goto loc_0x0000487c;
    loc_0x0000499c:
        // CODE XREF from sym._mmv4l2_dequeue_buffer @ 0x4878(x)
        r3 = [0x000049a0] // [0x49fc:4]=0x3692
        r2 = r7
        r5 = [0x000049a4] // [0x4a00:4]=0x3804
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x494
        stm.w sp, (r6, fp)
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x48d0
        
    loc_0x000048d0:
        // CODE XREFS from sym._mmv4l2_dequeue_buffer @ 0x4960(x), 0x4986(x), 0x49c2(x)
        sp += 0x24    // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc) // r13
        goto loc_0x00004884;
        return r0;
    loc_0x00004884:
        (a, b) = compare (r4, 0)
        je 0x4962     // likely
        goto loc_0x00004888;
    loc_0x00004962:
        // CODE XREF from sym._mmv4l2_dequeue_buffer @ 0x4886(x)
        r5 = [0x00004964] // [0x49ec:4]=0x449a
        r0 = 2
        r3 = [0x00004968] // [0x49f0:4]=0x36ca
        r1 = 5
        r5 += pc      // "buf"
        r2 = r7
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r4 = 0x496
        
    loc_0x00004974:
        // CODE XREF from sym._mmv4l2_dequeue_buffer @ 0x499a(x)
        stm.w sp, (r6, fp)
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 1
        r0 |= 0x8000 << 16
        goto 0x48d0
        goto loc_0x000048a8;
        return r0;
    loc_0x000048a8:
        // CODE XREFS from sym._mmv4l2_dequeue_buffer @ 0x48ec(x), 0x492a(x)
        r5 = [0x000048ac] // [0x49d4:4]=0x39ce
        r0 = 2
        r2 = [0x000048b0] // [0x49d8:4]=0x3752 // "R7"
        r1 = 3
        r3 = [0x000048b4] // [0x49dc:4]=0x37e0
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r6 = [0x000048b8] // [0x49e0:4]=0x3d06
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        r4 = 0x4ae
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x1b0   // 0x8434 // "_mmv4l2_dequeue_buffer" // str._mmv4l2_dequeue_buffer
        [sp] = r6
        [var_4h] = r5
        // DATA XREF from sym._mmv4l2_get_format @ 0x3740(r)
        [var_8h] = r4
        // DATA XREF from sym._mmv4l2_get_format @ 0x3730(r)
        fcn.00002084 ()
        r0 = 0
    loc_0x00004888: // orphan
         r2 = [r5 + 8]
         r0 = 8
         r3 = [r5 + 0xc]
         r1 = 0x5611              // '\x11V'
         [r4 + 0x38] = r0
         r1 |= 0xc044 << 16       // unsigned long request
         [r4 + 4] = r2
         r2 = r4
         [r4 + 0x30] = r3
         r0 = [r5]                // int fd
         sym.imp.ioctl () // int ioctl(0, 0xc0445611)
         (a, b) = compare (r0, 0)
         blt 0x48d6               // unlikely

    loc_0x000048d0: // orphan
         // CODE XREFS from sym._mmv4l2_dequeue_buffer @ 0x4960(x), 0x4986(x), 0x49c2(x)
         sp += 0x24               // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc) // r13

        return r0;
    loc_0x000048d6: // orphan
         // CODE XREF from sym._mmv4l2_dequeue_buffer @ 0x48a6(x)
         fcn.00001fa8 () // DATA XREFS from sym._mmv4l2_alloc_buffers @ 0x439e(r), 0x43a8(r)
         ip = r0
         r0 = [r0]
         (a, b) = compare (r0, 5)
         bne 0x492c               // likely

         goto loc_0x000048e2
    loc_0x000048e2: // orphan
         r3 = [r5 + 8] // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3cd8(r)
         r5 = [r5 + 0xc]
         (a, b) = compare (r5, 2)
         [r4 + 4] = r3
         [r4 + 0x30] = r5
         bne 0x48a8               // likely

         goto loc_0x000048ee
    loc_0x000048ee: // orphan
         r3 = sb
         r1 = 3
         r2 = r7
         r0 = r5
         sl += 0x1c8              // 0x844c // "__mmv4l2_fill_buffer_userptr"
         mov.w lr, 0x3b8
         stm.w sp, (r6, sl)
         str.w lr, [sp, 8]
         fcn.00002084 ()
         lr = [r8 + 0x24]
         r0 = r5
         r3 = [0x00004914]        // [0x49e4:4]=0x377a // "z7"
         r2 = r7
         r1 = 3
         r5 += 0x3bc
         str.w lr, [r4, 0x34] // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3c98(r)
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         stm.w sp, (r6, sl)
         [var_8h] = r5
         fcn.00002084 ()
         
    loc_0x0000492c: // orphan
         // CODE XREF from sym._mmv4l2_dequeue_buffer @ 0x48e0(x)
         str.w ip, [sp, 0x1c]
         fcn.00001eb8 ()
         ip = [var_1ch]
         r3 = 0x4a2
         stm.w sp, (r6, fp)
         r2 = r7
         [var_8h] = r3
         r1 = 6
         r3 = [0x00004948]        // [0x49e8:4]=0x44c0
         r3 += pc                 // 0x8e0c // "%s: %s(%d) > Unable to dequeue buffer(VIDIOC_DQBUF): %s (%d).\n" // str._s:__s__d____Unable_to_dequeue_buffer_VIDIOC_DQBUF_:__s___d_._n
         [var_ch] = r0
         r0 = 2
         r4 = [ip]
         [var_10h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
    loc_0x00004974: // orphan
         // CODE XREF from sym._mmv4l2_dequeue_buffer @ 0x499a(x)
         stm.w sp, (r6, fp)
         [var_ch] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 1
         r0 |= 0x8000 << 16
         
         goto loc_0x00004988
    loc_0x00004988: // orphan
         // CODE XREF from sym._mmv4l2_dequeue_buffer @ 0x4880(x)
         r5 = [0x0000498c]        // [0x49f4:4]=0x446c
         r2 = r7
         r3 = [0x00004990]        // [0x49f8:4]=0x36a4
         r0 = 2
         r5 += pc                 // 0x8e00 // "buffer" // str.buffer
         r1 = 5 // DATA XREF from sym._mmv4l2_set_format @ 0x38dc(r)
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r4 = 0x495
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_video_enum_frame_intervals (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
    loc_0x00005064:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        r7 = r3       // arg4
        r4 = [0x0000506c] // [0x5300:4]=0x2f94
        sp -= 0x6c
        sl = [0x00005074] // [0x5304:4]=0x3202
        sb = r0       // arg1
        r4 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00005078] // [0x5308:4]=0x2f88
        fp = [0x00005080] // [0x530c:4]=0x353a // ":5"
        r8 = r1       // arg2
        sl += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r6 = r2       // arg3
        r0 = 2
        r2 = r4       // "V4L2" str.V4L2
        r1 = 3
        // DATA XREFS from sym._mmv4l2_get_format @ 0x3870(r), 0x387a(r)
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        fp += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        sl += 0x244   // 0x84c8 // "__mmv4l2_video_enum_frame_intervals" // str.__mmv4l2_video_enum_frame_intervals
        mov.w r5, 0x580
        str.w fp, [sp]
        str.w sl, [sp, 4]
        [var_8h] = r5
        fcn.00002084 ()
        cmp.w sb, 0
        beq.w 0x52d4  // likely
        goto loc_0x000050aa;
    loc_0x000052d4:
        // DATA XREFS from sym._mmv4l2_set_control @ 0x35ec(r), 0x35f6(r), 0x3640(r), 0x364a(r)
        // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x50a6(r)
        r3 = [0x000052d8] // [0x53a0:4]=0x2d5a
        r2 = r4
        r5 = [0x000052dc] // [0x53a4:4]=0x2ecc
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x582
        str.w fp, [sp]
        str.w sl, [sp, 4]
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        // DATA XREF from sym._mmv4l2_querycap @ 0x2d9a(r)
        // DATA XREF from sym._mmv4l2_get_control @ 0x32c4(r)
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x52ce
        
    loc_0x000052ce:
        // DATA XREF from sym.__mmv4l2_query_control @ 0x2fa8(r)
        // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52fe(r)
        sp += 0x6c
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)
        return r0;
    loc_0x000050ca: // orphan
         // CODE XREFS from sym.__mmv4l2_video_enum_frame_intervals @ 0x51bc(x), 0x51f2(x), 0x525c(x), 0x52a4(x)
         r1 = 0x564b              // 'KV'
         r0 = [sb]                // int fd
         r1 |= 0xc034 << 16       // unsigned long request
         r2 = var_34h
         r4 = 0
         [var_34h] = r5
         str.w r8, [sp, 0x38] // DATA XREF from sym.__mmv4l2_query_control @ 0x2fb0(r)
         [var_3ch] = r6
         [var_40h] = r7
         [var_44h] = r4
         [var_48h] = r4
         [var_4ch] = r4
         [var_50h] = r4
         [var_54h] = r4
         [var_58h] = r4
         [var_5ch] = r4
         [var_60h] = r4
         [var_64h] = r4
         sym.imp.ioctl () // int ioctl(0, 0xc034564b)
         (a, b) = compare (r0, r4)
         blt.w 0x52a6             // unlikely

         goto loc_0x00005100
    loc_0x00005100: // orphan
         r4 = [var_34h]
         (a, b) = compare (r4, r5)
         je 0x5128                // likely

         goto loc_0x00005106
    loc_0x00005106: // orphan
         // DATA XREF from sym.__mmv4l2_get_control @ 0x3170(r)
         r3 = [0x00005108]        // [0x531c:4]=0x34b6
         r0 = 2
         r2 = [0x0000510c]        // [0x5320:4]=0x2ef4
         r1 = 5
         r3 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [sp] = r3
         r3 = [0x00005114]        // [0x5324:4]=0x3ed8 ".."
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_ch] = r4
         r4 = 0x596
         r3 += pc                 // 0x8ff8 // "%s: %s(%d) > driver returned wrong frmivalenum index %u.\n" // str._s:__s__d____driver_returned_wrong_frmivalenum_index__u._n
         str.w sl, [sp, 4]
         [var_8h] = r4
         fcn.00002084 ()

    loc_0x00005128: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5104(x)
         r4 = [var_38h]
         (a, b) = compare (r4, r8) // DATA XREF from sym._mmv4l2_log_status @ 0x2f02(r)
         je 0x5150                // likely

         goto loc_0x0000512e
    loc_0x0000512e: // orphan
         r3 = [0x00005130]        // [0x5328:4]=0x348e
         r0 = 2
         r2 = [0x00005134]        // [0x532c:4]=0x2ecc
         r1 = 5
         r3 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [sp] = r3
         r3 = [0x0000513c]        // [0x5330:4]=0x3eec
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_ch] = r4
         r4 = 0x59c
         r3 += pc                 // 0x9034 // "%s: %s(%d) > driver returned wrong frmivalenum pixel format %08x.\n" // str._s:__s__d____driver_returned_wrong_frmivalenum_pixel_format__08x._n
         str.w fp, [sp, 4]
         [var_8h] = r4
         fcn.00002084 ()

    loc_0x00005150: // orphan
         // DATA XREF from sym._mmv4l2_get_format @ 0x37d6(r) // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x512c(r)
         r4 = [var_3ch] // DATA XREF from sym.__mmv4l2_get_control @ 0x3124(r)
         (a, b) = compare (r4, r6)
         je 0x517c                // likely

         goto loc_0x00005156
    loc_0x00005156: // orphan
         r3 = [var_2ch]           // "__mmv4l2_video_enum_frame_intervals" str.__mmv4l2_video_enum_frame_intervals
         r0 = 2
         r2 = [0x0000515c]        // [0x5334:4]=0x2ea4
         r1 = 5
         lr = [0x00005164]        // [0x5338:4]=0x345c // "\4"
         [var_4h] = r3
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 = [0x00005168]        // [0x533c:4]=0x3f04
         lr += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [var_ch] = r4
         r4 = 0x5a2
         r3 += pc                 // 0x9078 // "%s: %s(%d) > driver returned wrong frmivalenum width %u.\n" // str._s:__s__d____driver_returned_wrong_frmivalenum_width__u._n
         str.w lr, [sp]
         [var_8h] = r4
         fcn.00002084 ()

    loc_0x0000517c: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5154(x)
         r4 = [var_40h]
         (a, b) = compare (r4, r7)
         je 0x51aa                // likely

         goto loc_0x00005182
    loc_0x00005182: // orphan
         r3 = [0x00005184]        // [0x5340:4]=0x30f6
         r0 = 2
         r2 = [0x00005188]        // [0x5344:4]=0x3436 // "64" // DATA XREF from sym._mmv4l2_log_status @ 0x2e7e(r)
         r1 = 5
         r3 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym._mmv4l2_log_status @ 0x2e74(r)
         [var_ch] = r4
         r2 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c // DATA XREF from sym.__mmv4l2_query_control @ 0x3014(r)
         r3 += 0x244              // 0x84c8 // "__mmv4l2_video_enum_frame_intervals" // str.__mmv4l2_video_enum_frame_intervals
         [sp] = r2
         mov.w r4, 0x5a8          // (pstr 0x00000012) "("
         r2 = [0x0000519c]        // [0x5348:4]=0x2e68 // "h."
         [var_4h] = r3
         r3 = [0x000051a0]        // [0x534c:4]=0x3f0c
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_8h] = r4
         r3 += pc                 // 0x90b4 // "%s: %s(%d) > driver returned wrong frmivalenum height %u.\n" // str._s:__s__d____driver_returned_wrong_frmivalenum_height__u._n
         fcn.00002084 ()

    loc_0x000051aa: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5180(x)
         if (r5) 
         goto loc_0x000051ac
    loc_0x000051ac: // orphan
         r1 = [var_44h]
         (a, b) = compare (r1, 2)
         je 0x5220                // unlikely

         goto loc_0x000051b2
    loc_0x000051b2: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x521e(x)
         (a, b) = compare (r1, 3)
         je 0x525e                // unlikely

         goto loc_0x000051b6
    loc_0x000051b6: // orphan
         (a, b) = compare (r1, 1)
         je 0x51be                // unlikely

         goto loc_0x000051ba
    loc_0x000051ba: // orphan
         r5 += 1
         
         goto loc_0x000051be
    loc_0x000051be: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51b8(x)
         r2 = [var_48h]
         r0 = 2
         r3 = [var_4ch]
         r1 = 3
         r4 = [0x000051c8]        // [0x5350:4]=0x30b2
         r5 += 1
         [var_ch] = r2
         [var_10h] = r3
         r4 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r2 = [0x000051d4]        // [0x5354:4]=0x2e2c // ",."
         r4 += 0x244              // 0x84c8 // "__mmv4l2_video_enum_frame_intervals" // str.__mmv4l2_video_enum_frame_intervals
         r3 = [0x000051d8]        // [0x5358:4]=0x3f1e // "}D"
         lr = [0x000051e0]        // [0x535c:4]=0x33e2 // DATA XREF from sym._mmv4l2_print_control @ 0x4ddc(r)
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9100 // "%s: %s(%d) > %u/%u" // str._s:__s__d_____u__u // DATA XREF from sym._mmv4l2_log_status @ 0x2eb0(r)
         [var_4h] = r4
         lr += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r4 = 0x5b5
         str.w lr, [sp]
         [var_8h] = r4
         fcn.00002084 ()
         
    loc_0x000051f4: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51aa(x)
         r3 = [0x000051f8]        // [0x5360:4]=0x33c8
         r1 = 3
         r4 = [0x000051fc]        // [0x5364:4]=0x307e // "~0"
         r0 = 2
         r3 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r2 = [0x00005200]        // [0x5368:4]=0x2e02
         [sp] = r3
         r4 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym.__mmv4l2_get_control @ 0x306e(r)
         r3 = [0x00005208]        // [0x536c:4]=0x3ede
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r4 += 0x244              // 0x84c8 // "__mmv4l2_video_enum_frame_intervals" // str.__mmv4l2_video_enum_frame_intervals
         [var_4h] = r4
         r3 += pc                 // 0x90f0 // "%s: %s(%d) > , " // str._s:__s__d_____
         r4 = 0x5ad
         [var_8h] = r4
         fcn.00002084 ()
         r1 = [var_44h]
         (a, b) = compare (r1, 2)
         bne 0x51b2               // likely

         goto loc_0x00005220
    loc_0x00005220: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51b0(x)
         r3 = [0x00005224]        // [0x5370:4]=0x3058 // "X0"
         r0 = r1
         r2 = [0x00005228]        // [0x5374:4]=0x3398
         r1 = 3
         r3 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r4 = [var_4ch]
         r2 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r3 += 0x244              // 0x84c8 // "__mmv4l2_video_enum_frame_intervals" // str.__mmv4l2_video_enum_frame_intervals
         [sp] = r2
         r5 += 1
         r2 = [var_50h]
         [var_4h] = r3
         r3 = [var_54h]
         lr = [var_48h]
         [var_14h] = r2
         [var_18h] = r3
         r2 = [0x00005248]        // [0x5378:4]=0x2dc0
         r3 = [0x00005248]        // [0x537c:4]=0x3ec4
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_10h] = r4
         r3 += pc                 // 0x9114 // "%s: %s(%d) > %u/%u - %u/%u" // str._s:__s__d_____u__u____u__u
         str.w lr, [sp, 0xc]
         r4 = 0x5bd
         [var_8h] = r4
         fcn.00002084 ()
         
    loc_0x0000525e: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51b4(x)
         r2 = [var_48h]
         r0 = 2 // DATA XREF from sym._mmv4l2_querycap @ 0x2dca(r)
         r3 = [var_4ch]
         r5 += 1
         r4 = [0x00005268]        // [0x5380:4]=0x3014
         [var_ch] = r2
         [var_10h] = r3
         r4 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r2 = [var_58h]
         r4 += 0x244              // 0x84c8 // "__mmv4l2_video_enum_frame_intervals" // str.__mmv4l2_video_enum_frame_intervals
         r3 = [var_5ch]
         lr = [0x0000527c]        // [0x5384:4]=0x3348 // "H3"
         [var_4h] = r4
         lr += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r4 = [var_54h]
         str.w lr, [sp]
         [var_1ch] = r2
         lr = [var_50h]
         [var_20h] = r3
         r2 = [0x00005290]        // [0x5388:4]=0x2d78 // "x-"
         r3 = [0x00005290]        // [0x538c:4]=0x3e98
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_18h] = r4
         r3 += pc                 // 0x9130 // "%s: %s(%d) > %u/%u - %u/%u (by %u/%u)" // str._s:__s__d_____u__u____u__u__by__u__u_
         str.w lr, [sp, 0x14]
         r4 = 0x5c7 // DATA XREF from sym._mmv4l2_log_status @ 0x2f06(r)
         [var_8h] = r4
         fcn.00002084 ()
         
    loc_0x000052a6: // orphan
         // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x50fc(x)
         r6 = [0x000052a8]        // [0x5390:4]=0x2fd0
         r0 = 2
         r2 = [0x000052ac]        // [0x5394:4]=0x2d54
         r1 = 3
         r3 = [0x000052b0]        // [0x5398:4]=0x2de2
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r7 = [0x000052b4]        // [0x539c:4]=0x3308
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r5 = 0x5cf
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r6 += 0x244              // 0x84c8 // "__mmv4l2_video_enum_frame_intervals" // str.__mmv4l2_video_enum_frame_intervals
         [sp] = r7 // DATA XREF from sym._mmv4l2_get_control @ 0x32f6(r)
         [var_4h] = r6
         [var_8h] = r5
         fcn.00002084 ()
         r0 = r4

    loc_0x000052ce: // orphan
         // DATA XREF from sym.__mmv4l2_query_control @ 0x2fa8(r) // CODE XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52fe(r)
         sp += 0x6c
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_convert_pixel_format (uint32_t arg1) {
    loc_0x00006080:
        push (r4, r5, r6, lr)
        sp -= 0x10
        (a, b) = compare (r0, 0) // arg1
        je 0x6122     // likely
        goto loc_0x00006088;
    loc_0x00006122:
        // CODE XREF from sym.mmv4l2_convert_pixel_format @ 0x6086(x)
        r0 = 0x4752   // 'RG'
        r0 |= 0x4f42 << 16
        goto 0x611e
        
    loc_0x0000611e:
        // XREFS: CODE 0x00006094  CODE 0x000060a2  CODE 0x000060b0  CODE 0x000060be  CODE 0x000060cc  CODE 0x000060da
        // XREFS: CODE 0x000060e8  CODE 0x000060f6  CODE 0x0000612a
        sp += 0x10
        pop (r4, r5, r6, pc)
        goto loc_0x00006096;
        return r0;
    loc_0x00006096:
        (a, b) = compare (r0, 3)
        itt eq
        r0 = 0x5659   // 'YV'
        r0 |= 0x3231 << 16
        je 0x611e     // unlikely
        goto loc_0x000060a4;
    loc_0x000060a4:
        (a, b) = compare (r0, 4)
        itt eq
        r0 = 0x3234   // '42'
        r0 |= 0x5032 << 16
        je 0x611e     // unlikely
        goto loc_0x000060b2;
    loc_0x000060b2:
        (a, b) = compare (r0, 5)
        itt eq
        r0 = 0x5955   // 'UY'
        r0 |= 0x5956 << 16
        je 0x611e     // unlikely
        goto loc_0x000060c0;
    loc_0x000060c0:
        (a, b) = compare (r0, 6)
        itt eq
        r0 = 0x5559   // 'YU'
        r0 |= 0x5659 << 16
        je 0x611e     // unlikely
        goto loc_0x000060ce;
    loc_0x000060ce:
        (a, b) = compare (r0, 7)
        itt eq
        r0 = 0x564e   // 'NV'
        r0 |= 0x3231 << 16
        je 0x611e     // unlikely
        goto loc_0x000060dc;
    loc_0x000060dc:
        (a, b) = compare (r0, 8)
        itt eq
        r0 = 0x564e   // 'NV'
        r0 |= 0x3631 << 16
        je 0x611e     // unlikely
        goto loc_0x000060ea;
    loc_0x000060ea:
        (a, b) = compare (r0, 9)
        itt eq
        r0 = 0x4a4d   // 'MJ'
        r0 |= 0x4750 << 16
        je 0x611e     // unlikely
        goto loc_0x000060f8;
    loc_0x000060f8:
        r5 = [0x000060fc] // [0x612c:4]=0x35fa
        r0 = 2
        r2 = [0x00006100] // [0x6130:4]=0x1f02
        r1 = 6
        r3 = [0x00006104] // [0x6134:4]=0x3710
        r5 += pc      // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
        r6 = [0x00006108] // [0x6138:4]=0x36c0
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x981c // "%s: %s(%d) > not supported pixel format.\n" // str._s:__s__d____not_supported_pixel_format._n
        r4 = 0x9d
        r6 += pc      // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
        r5 += 0x30    // 0x9730 // "mmv4l2_convert_pixel_format" // str.mmv4l2_convert_pixel_format
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        fcn.00002084 ()
        mov.w r0, -1
    loc_0x0000611e: // orphan
         // XREFS: CODE 0x00006094  CODE 0x000060a2  CODE 0x000060b0  CODE 0x000060be  CODE 0x000060cc  CODE 0x000060da   // XREFS: CODE 0x000060e8  CODE 0x000060f6  CODE 0x0000612a  
         sp += 0x10
         pop (r4, r5, r6, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_log_status (int16_t arg1) {
    loc_0x00002e70:
        push (r4, r5, r6, r7, lr)
        sp -= 0x1c    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r6 = [0x00002e78] // [0x2f2c:4]=0x518c
        r7 = r0       // arg1
        r4 = [0x00002e7c] // [0x2f30:4]=0x53fe
        r0 = 2
        r6 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00002e80] // [0x2f34:4]=0x5188
        r5 = [0x00002e84] // [0x2f38:4]=0x573a // ":W"
        r4 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r1 = 3
        r2 = r6       // "V4L2" str.V4L2
        // DATA XREFS from sym.__mmv4l2_get_enum_frame_sizes @ 0x53f0(r), 0x540a(r)
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x53ec(r)
        r5 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r4 += 0x4c    // 0x82d0 // "_mmv4l2_log_status" // str._mmv4l2_log_status
        mov.w lr, 0x1aa
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x53e6(r)
        [sp] = r5
        [var_4h] = r4
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r7, 0)
        je 0x2f02     // likely
        goto loc_0x00002ea2;
    loc_0x00002f02:
        // CODE XREF from sym._mmv4l2_log_status @ 0x2ea0(x)
        r3 = [0x00002f04] // [0x2f44:4]=0x512c // ",Q"
        r2 = r6
        r7 = [0x00002f08] // [0x2f48:4]=0x529e
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        // DATA XREF from sym.mm_v4l2_realize @ 0x6db4(r)
        r7 += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r6, 0x1ac
        [sp] = r5
        [var_4h] = r4
        [var_ch] = r7
        [var_8h] = r6
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x2eca
        
    loc_0x00002eca:
        // CODE XREFS from sym._mmv4l2_log_status @ 0x2f00(x), 0x2f28(x)
        sp += 0x1c    // (cstr 0x000084c8) "__mmv4l2_video_enum_frame_intervals"
        // DATA XREFS from sym.__mmv4l2_video_enum_frame_intervals @ 0x5132(r), 0x52d8(r)
        pop (r4, r5, r6, r7, pc) // str.__mmv4l2_video_enum_frame_intervals
        goto loc_0x00002eb0;
        return r0;
    loc_0x00002eb0:
        r3 = [0x00002eb4] // [0x2f3c:4]=0x51e0
        r2 = r6
        r0 = 2
        r1 = 3
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        [sp] = r5
        [var_4h] = r4
        // DATA XREF from sym.mm_v4l2_realize @ 0x6de0(r)
        mov.w r5, 0x1b6
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x53b2(r)
        [var_8h] = r5
        fcn.00002084 ()
        r0 = 0
    loc_0x00002eca: // orphan
         // CODE XREFS from sym._mmv4l2_log_status @ 0x2f00(x), 0x2f28(x)
         sp += 0x1c               // (cstr 0x000084c8) "__mmv4l2_video_enum_frame_intervals" // DATA XREFS from sym.__mmv4l2_video_enum_frame_intervals @ 0x5132(r), 0x52d8(r)
         pop (r4, r5, r6, r7, pc) // str.__mmv4l2_video_enum_frame_intervals

        return r0;
    loc_0x00002ece: // orphan
         // CODE XREF from sym._mmv4l2_log_status @ 0x2eae(x)
         fcn.00001fa8 ()
         r7 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         [sp] = r5
         [var_4h] = r4
         mov.w r3, 0x1b2
         [var_8h] = r3
         r2 = r6
         r3 = [0x00002ee8]        // [0x2f40:4]=0x5826 // "&X"
         r1 = 6
         r3 += pc                 // 0x8714 // "%s: %s(%d) > unable to log status : %s (%d).\n" // str._s:__s__d____unable_to_log_status_:__s___d_._n
         [var_ch] = r0
         r0 = 2 // DATA XREF from sym.mm_v4l2_realize @ 0x6d40(r)
         r4 = [r7]
         [var_10h] = r4 // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x510a(r) // DATA XREF from sym.mm_v4l2_realize @ 0x6a24(r)
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_get_control (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00007e24:
        push (r4, r5, r6, r7, r8, sb, sl, lr)
        sp -= 0x18
        r8 = [0x00007e30] // [0x7f30:4]=466
        r4 = r0       // arg1
        sl = [0x00007e38] // [0x7f34:4]=0x1aea
        r6 = r1       // arg2
        r8 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00007e3c] // [0x7f38:4]=0x14f8 "ontrol" // "ontrol"
        sb = [0x00007e40] // [0x7f3c:4]=0x1c06
        sl += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r7 = r2       // arg3
        r0 = 2
        r2 = r8       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        sb += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        sl += 0x114   // 0x9a40 // "mm_v4l2_get_control" // str.mm_v4l2_get_control
        r5 = 0x375
        stm.w sp, (sb, sl)
        [var_8h] = r5
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x7ede     // likely
        goto loc_0x00007e62;
    loc_0x00007ede:
        // CODE XREF from sym.mm_v4l2_get_control @ 0x7e60(x)
        r3 = [0x00007ee0] // [0x7f54:4]=336
        r2 = r8
        r6 = [0x00007ee4] // [0x7f58:4]=0x2c2
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r6 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x377
        str.w sb, [sp]
        r5 = 0x1001   // "og_status"
        str.w sl, [sp, 4]
        r5 |= 0x8000 << 16
        [var_ch] = r6
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x7eb6
        
    loc_0x00007eb6:
        // CODE XREFS from sym.mm_v4l2_get_control @ 0x7f08(x), 0x7f2e(x)
        r0 = r5
        sp += 0x18
        pop (r4, r5, r6, r7, r8, sb, sl, pc) // str.__mmv4l2_video_enum_frame_intervals
        goto loc_0x00007e6a;
        return r0;
    loc_0x00007e6a:
        fcn.00002048 ()
        r0 = r4
        r1 = r6
        r2 = r7
        fcn.00002024 ()
        r5 = r0
        if (r0) goto 0x7ebe // unlikely
        goto loc_0x00007e7c;
    loc_0x00007ebe:
        // CODE XREF from sym.mm_v4l2_get_control @ 0x7e7a(x)
        r3 = [0x00007ec0] // [0x7f50:4]=0x21e6
        r2 = r8
        r0 = 2
        r1 = 6
        r3 += pc      // 0xa0b0 // "%s: %s(%d) > get control error\n" // str._s:__s__d____get_control_error_n
        lr = 0x37f
        str.w sb, [sp]
        str.w sl, [sp, 4]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        goto 0x7e7c
    loc_0x00007e7c: // orphan
         // CODE XREF from sym.mm_v4l2_get_control @ 0x7edc(x)
         r0 = [r4 + 0xd4]
         sym.imp.g_mutex_unlock ()
         ldrd r8, sb, [r7]        // 0x188 // r2
         lr = [0x00007e90]        // [0x7f40:4]=0x1a94
         r0 = 2
         r2 = [0x00007e90]        // [0x7f44:4]=368
         r1 = 3
         r3 = [0x00007e94]        // [0x7f48:4]=0x21f2
         lr += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r4 = [0x00007e98]        // [0x7f4c:4]=0x1bb2
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0xa090 // "%s: %s(%d) > id(%d) val(%ld)\n" // str._s:__s__d____id__d__val__ld__n
         [var_ch] = r6
         r4 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r6 = lr + 0x114          // 0x9a40 // "mm_v4l2_get_control" // str.mm_v4l2_get_control
         [sp] = r4
         mov.w r4, 0x384
         strd r8, sb, [sp, 0x10]
         [var_4h] = r6
         [var_8h] = r4
         fcn.00002084 ()

    loc_0x00007eb6: // orphan
         // CODE XREFS from sym.mm_v4l2_get_control @ 0x7f08(x), 0x7f2e(x)
         r0 = r5
         sp += 0x18
         pop (r4, r5, r6, r7, r8, sb, sl, pc) // str.__mmv4l2_video_enum_frame_intervals

        return r0;
    loc_0x00007f0a: // orphan
         // CODE XREF from sym.mm_v4l2_get_control @ 0x7e68(x)
         r3 = [0x00007f0c]        // [0x7f5c:4]=0x1bfe
         r2 = r8
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
         r4 = 0x379
         str.w sb, [sp]
         r5 = 0x1001              // "og_status"
         str.w sl, [sp, 4]
         r5 |= 0x8000 << 16
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_apply_attribute (int16_t arg1, int16_t arg2) {
    loc_0x000022f0:
        push (r4, r5, r6, r7, r8, lr)
        sp -= 0x10
        r6 = [0x000022f8] // [0x2380:4]=0x5d0a // "\n]"
        r7 = r0       // arg1
        r4 = [0x000022fc] // [0x2384:4]=0x5c60 // "`\"
        r8 = r1       // arg2
        r6 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00002304] // [0x2388:4]=0x5d04 // "7t"
        r5 = [0x00002304] // [0x238c:4]=0x5d1a
        r4 += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        r0 = 2
        r2 = r6       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        r4 += 0x18    // 0x7f80 // "__mmv4l2_apply_attribute" // str.__mmv4l2_apply_attribute
        // DATA XREF from sym._mmv4l2_set_quality @ 0x5cf4(r)
        mov.w lr, 0x81
        // DATA XREF from sym._mmv4l2_set_quality @ 0x5ce6(r)
        [sp] = r5
        // DATA XREF from sym._mmv4l2_set_quality @ 0x5d78(r)
        [var_4h] = r4
        str.w lr, [sp, 8]
        fcn.00002084 ()
        if (!r7) goto 0x2348 // likely
        goto loc_0x00002324;
    loc_0x00002348:
        // CODE XREF from sym.__mmv4l2_apply_attribute @ 0x2322(x)
        r7 = [0x0000234c] // [0x2394:4]=0x5d14
        r2 = r6
        r3 = [0x00002350] // [0x2398:4]=0x5ce4
        r0 = 2
        r7 += pc      // 0x8068 // "handle" // str.handle
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r6 = 0x83
        
    loc_0x00002358:
        // CODE XREF from sym.__mmv4l2_apply_attribute @ 0x237e(x)
        [sp] = r5
        [var_4h] = r4
        [var_ch] = r7
        [var_8h] = r6
        // DATA XREFS from sym.mm_v4l2_capture_image @ 0x76ea(r), 0x76fc(r)
        fcn.00002084 ()
        r0 = 0x101    // "NU"
        r0 |= 0x8000 << 16
        goto 0x2342
        goto loc_0x0000232a;
        return r0;
    loc_0x0000232a:
        // DATA XREF from sym.mm_v4l2_stop_capture @ 0x75f4(r)
        r3 = [0x0000232c] // [0x2390:4]=0x5d66
        r2 = r6
        // DATA XREF from sym.mm_v4l2_set_control @ 0x7d54(r)
        r0 = 2
        r1 = 3
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        [sp] = r5
        [var_4h] = r4
        r5 = 0x88     // (pstr 0x00000710) "9H"
        [var_8h] = r5
        fcn.00002084 ()
        r0 = 0
        
    loc_0x00002342:
        // CODE XREF from sym.__mmv4l2_apply_attribute @ 0x236c(x)
        sp += 0x10
        pop (r4, r5, r6, r7, r8, pc)
        return r0;
    loc_0x00002342: // orphan
         // CODE XREF from sym.__mmv4l2_apply_attribute @ 0x236c(x)
         sp += 0x10
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x00002358: // orphan
         // CODE XREF from sym.__mmv4l2_apply_attribute @ 0x237e(x)
         [sp] = r5
         [var_4h] = r4
         [var_ch] = r7
         [var_8h] = r6 // DATA XREFS from sym.mm_v4l2_capture_image @ 0x76ea(r), 0x76fc(r)
         fcn.00002084 ()
         r0 = 0x101               // "NU"
         r0 |= 0x8000 << 16
         
         goto loc_0x0000236e
    loc_0x0000236e: // orphan
         // CODE XREF from sym.__mmv4l2_apply_attribute @ 0x2328(x)
         r7 = [0x00002370]        // [0x239c:4]=0x5cde
         r2 = r6
         r3 = [0x00002374]        // [0x23a0:4]=0x5cbe
         r0 = 2
         r7 += pc                 // 0x8058 // "attribute_name" // str.attribute_name // DATA XREF from sym.mm_v4l2_unrealize @ 0x6fbe(r)
         r1 = 5
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n // DATA XREF from sym._mmv4l2_set_quality @ 0x5e28(r)
         r6 = 0x84                // U(pstr 0x00000704) "*\U000b0012\u0492\u4839\u01cc\U000b0012\u04f9\u5065\u0344\U000b0012\u05eb\u6081\xbc\U000b0012\u032c"
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_unrealize (int16_t arg1) {
    loc_0x00006fb0:
        push (r4, r5, r6, r7, lr)
        sp -= 0x14    // (pstr 0x0000802c) "mm_v4l2_attrs.c"
        r7 = [0x00006fb8] // [0x704c:4]=0x104c "control" // "L\x10" // "control"
        r4 = r0       // arg1
        r5 = [0x00006fbc] // [0x7050:4]=0x2966 // "f)"
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00006fc0] // [0x7054:4]=0x2378 ".!{D.&...]" // "x#"
        r6 = [0x00006fc4] // [0x7058:4]=0x2a86
        r5 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r6 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r5 += 0x58    // 0x9984 // "mm_v4l2_unrealize" // str.mm_v4l2_unrealize
        mov.w lr, 0x1dc
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        if (!r4) goto 0x6ffe // likely
        goto loc_0x00006fe0;
    loc_0x00006ffe:
        // CODE XREF from sym.mm_v4l2_unrealize @ 0x6fde(x)
        r3 = [0x00007000] // [0x705c:4]=0x102e "_control" // ".\x10" // "_control"
        r2 = r7
        lr = [0x00007008] // [0x7060:4]=0x11a0
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x1de
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x401
        r0 |= 0x8000 << 16
        goto 0x6ffa
        
    loc_0x00006ffa:
        // CODE XREFS from sym.mm_v4l2_unrealize @ 0x7028(x), 0x704a(x)
        sp += 0x14
        pop (r4, r5, r6, r7, pc)
        goto loc_0x00006fe6;
        return r0;
    loc_0x00006fe6:
        fcn.00002048 ()
        r0 = r4
        fcn.00001ec4 ()
        r0 = [r4 + 0xd4]
        sym.imp.g_mutex_unlock ()
        r0 = 0
    loc_0x00006ffa: // orphan
         // CODE XREFS from sym.mm_v4l2_unrealize @ 0x7028(x), 0x704a(x)
         sp += 0x14
         pop (r4, r5, r6, r7, pc)

        return r0;
    loc_0x0000702a: // orphan
         // CODE XREF from sym.mm_v4l2_unrealize @ 0x6fe4(x)
         r3 = [0x0000702c]        // [0x7064:4]=0x2ade
         r2 = r7
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
         [sp] = r6
         mov.w r4, 0x1e0
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0x1001              // "og_status"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00001ec4 (int r0, int r1) {
    loc_0x00001ec4:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6ca8(x)
        // CALL XREF from sym.mm_v4l2_unrealize @ 0x6fec(x)
        // CALL XREF from sym.mm_v4l2_start_capture @ 0x741a(x)
        add ip, pc, 0, 12 // 0x1ecc // "|\xf6\xbc\xe5" // rsym._mmv4l2_querycap
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001ec4 @ 0x1ec4(r)
        pc = [ip + 0x67c]! // 0x12548 // reloc._mmv4l2_close // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym.mm_v4l2_get_attribute (int16_t arg1, int16_t arg2) {
    loc_0x00007130:
        push (r2, r3) // U(cstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
        push (r4, r5, r6, r7, r8, sb, lr) // (pstr 0x00009984) "mm_v4l2_unrealize"
        sp -= 0x1c
        r7 = [0x0000713c] // [0x71d8:4]=0xec6 "_mmv4l2_get_format_by_name" // "_mmv4l2_get_format_by_name"
        r4 = r0       // arg1
        r8 = [0x00007144] // [0x71dc:4]=0x27e0 ".Y"
        sb = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00007148] // [0x71e0:4]=0x21f0
        r6 = [0x00007148] // [0x71e4:4]=0x28fa
        r8 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        mov.w r5, 0x200
        r6 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r8 += 0x84    // 0x99b0 // "mm_v4l2_get_attribute" // str.mm_v4l2_get_attribute
        [var_8h] = r5
        [sp] = r6
        str.w r8, [sp, 4]
        r5 = [var_38h] // r2
        fcn.00002084 ()
        if (!r4) goto 0x7188 // likely
        goto loc_0x0000716c;
    loc_0x00007188:
        // CODE XREF from sym.mm_v4l2_get_attribute @ 0x716a(x)
        r3 = [0x0000718c] // [0x71e8:4]=0xea6
        r2 = r7
        r5 = [0x00007190] // [0x71ec:4]=0x1018 "y_control" // "y_control"
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x202
        stm.w sp, (r6, r8)
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x401
        r0 |= 0x8000 << 16
        goto 0x717e
        
    loc_0x0000717e:
        // CODE XREFS from sym.mm_v4l2_get_attribute @ 0x71ae(x), 0x71d6(x)
        sp += 0x1c    // (cstr 0x000084c8) "__mmv4l2_video_enum_frame_intervals"
        pop (r4, r5, r6, r7, r8, sb, lr) // "__mmv4l2_video_enum_frame_intervals" str.__mmv4l2_video_enum_frame_intervals
        sp += 8       // 0x178000 // r13
        bx lr
        goto loc_0x0000716e;
        return r0;
    loc_0x0000716e:
        r6 = var_3ch
        r0 = r4
        r1 = sb
        r2 = r5
        r3 = r6
        [var_14h] = r6
        rsym._mmv4l2_get_attribute ()
    loc_0x0000717e: // orphan
         // CODE XREFS from sym.mm_v4l2_get_attribute @ 0x71ae(x), 0x71d6(x)
         sp += 0x1c               // (cstr 0x000084c8) "__mmv4l2_video_enum_frame_intervals"
         pop (r4, r5, r6, r7, r8, sb, lr) // "__mmv4l2_video_enum_frame_intervals" str.__mmv4l2_video_enum_frame_intervals
         sp += 8                  // 0x178000 // r13
         bx lr

        return r0;
    loc_0x000071b0: // orphan
         // CODE XREF from sym.mm_v4l2_get_attribute @ 0x716c(x)
         r3 = [0x000071b4]        // [0x71f0:4]=0xe7e "mf_attrs_free" // "mf_attrs_free"
         r2 = r7
         r5 = [0x000071b8]        // [0x71f4:4]=0x2b90 ".."
         r0 = 2
         r1 = 5
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r5 += pc                 // 0x9d50 // "first_attribute_name" // str.first_attribute_name
         r4 = 0x203
         stm.w sp, (r6, r8)
         [var_ch] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0x101               // "NU"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int rsym._mmv4l2_get_attribute (int r0, int r1) {
    loc_0x00001dac:
        // CALL XREF from sym.mm_v4l2_get_attribute @ 0x717a(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym._mmv4l2_get_attribute @ 0x1dac(r)
        pc = [ip + 0x738]! // 0x124ec // reloc._mmv4l2_get_attribute // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_enum_inputs (int16_t arg1) {
    loc_0x00005940:
        r3 = [0x00005944] // [0x5a9c:4]=0xcb5e
        r1 = 3
        // DATA XREF from sym._mmv4l2_querycap @ 0x2d54(r)
        r2 = [0x00005948] // [0x5aa0:4]=388
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        push (r4, r5, r6, r7, r8, sb, sl, lr)
        sp -= 0x70    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        sl = [r3 + r2] // 0x1262c // reloc.__stack_chk_guard
        r5 = r0       // arg1
        r7 = [0x00005958] // [0x5aa4:4]=0x26a6
        r0 = 2
        r4 = [0x0000595c] // [0x5aa8:4]=0x291a
        lr = 0x65a
        ip = [sl]
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00005968] // [0x5aac:4]=0x26a4
        r4 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym._mmv4l2_querycap @ 0x2d68(r)
        r6 = [0x0000596c] // [0x5ab0:4]=0x2c52 // "R,"
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r4 += 0x2a0   // 0x8524 // "_mmv4l2_enum_inputs" // str._mmv4l2_enum_inputs
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        [var_4h] = r4
        [sp] = r6
        // DATA XREF from sym._mmv4l2_construct_attribute @ 0x268e(r)
        str.w ip, [sp, 0x6c]
        // DATA XREF from sym._mmv4l2_construct_attribute @ 0x2682(r)
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        je 0x5a6c     // likely
        goto loc_0x00005988;
    loc_0x00005a6c:
        // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x25f0(r)
        // CODE XREF from sym._mmv4l2_enum_inputs @ 0x5986(r)
        r3 = [0x00005a70] // [0x5ae8:4]=0x25c0
        r2 = r7
        // DATA XREF from sym._mmv4l2_close @ 0x2c00(r)
        lr = [0x00005a78] // [0x5aec:4]=0x2732
        r0 = 2
        // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x2588(r)
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r5 = 0x65c
        // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x24d6(r)
        [sp] = r6
        [var_4h] = r4
        str.w lr, [sp, 0xc]
        [var_8h] = r5
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5a5c
        
    loc_0x00005a5c:
        // CODE XREF from sym._mmv4l2_enum_inputs @ 0x5a96(x)
        r2 = [var_6ch]
        // DATA XREF from sym._mmv4l2_construct_attribute @ 0x271a(r)
        r3 = [sl]
        (a, b) = compare (r2, r3)
        bne 0x5a98    // unlikely
        goto loc_0x00005a66;
        return r0;
    loc_0x000059a4: // orphan
         // CODE XREF from sym._mmv4l2_enum_inputs @ 0x5a1a(x)
         r7 = [var_18h]
         (a, b) = compare (r7, r4)
         je 0x59d0                // likely

         goto loc_0x000059aa
    loc_0x000059aa: // orphan
         r3 = [0x000059ac]        // [0x5ac0:4]=0x399a
         r0 = 2
         ip = [0x000059b4]        // [0x5ac4:4]=0x2c0c
         r1 = 5
         r2 = r8
         r3 += pc                 // 0x9354 // "%s: %s(%d) > driver returned wrong input index %u.\n" // str._s:__s__d____driver_returned_wrong_input_index__u._n
         ip += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         lr = 0x66a
         str.w sb, [sp, 4]
         [var_ch] = r7
         str.w ip, [sp]
         str.w lr, [sp, 8]
         fcn.00002084 ()

    loc_0x000059d0: // orphan
         // CODE XREF from sym._mmv4l2_enum_inputs @ 0x59a8(x)
         r2 = [0x000059d4]        // [0x5ac8:4]=0x262c // ",&"
         r0 = 2
         r3 = [0x000059d8]        // [0x5acc:4]=0x39a6 // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x2584(r)
         r1 = 3
         ip = [0x000059e0]        // [0x5ad0:4]=0x2be0
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9388 // "%s: %s(%d) > \tInput %u: %s.\n" // str._s:__s__d_____tInput__u:__s._n
         lr = 0x66d
         ip += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r7 = var_1ch             // (cstr 0x000084c8) "__mmv4l2_video_enum_frame_intervals" // DATA XREFS from sym._mmv4l2_close @ 0x2c64(r), 0x2c6e(r)
         [var_ch] = r4 // DATA XREF from sym._mmv4l2_close @ 0x2bd0(r)
         r4 += 1
         [var_4h] = r6
         str.w ip, [sp]
         str.w lr, [sp, 8]
         [var_10h] = r7
         fcn.00002084 ()

    loc_0x000059fc: // orphan
         // CODE XREF from sym._mmv4l2_enum_inputs @ 0x59a2(x)
         r1 = 0
         r2 = 0x50                // 'P' // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x2630(r)
         r0 = var_18h
         fcn.00001ff0 ()
         r1 = 0x561a              // '\x1aV'
         r0 = [r5]                // int fd
         r1 |= 0xc050 << 16       // unsigned long request
         r2 = var_18h // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x261e(r)
         [var_18h] = r4
         sym.imp.ioctl () // int ioctl(0, 0xc050561a)
         (a, b) = compare (r0, 0)
         (>=) 
         goto loc_0x00005a1c
    loc_0x00005a1c: // orphan
         r6 = [0x00005a20]        // [0x5ad4:4]=0x25e4
         r1 = 3
         r5 = [0x00005a24]        // [0x5ad8:4]=0x2856 // "V("
         r0 = 2
         r6 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 = [0x00005a28]        // [0x5adc:4]=0x3912
         r4 = [0x00005a2c]        // [0x5ae0:4]=0x2b90 ".."
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r2 = r6                  // "V4L2" str.V4L2
         r3 += pc                 // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
         r5 += 0x2a0              // 0x8524 // "_mmv4l2_enum_inputs" // str._mmv4l2_enum_inputs
         r4 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         mov.w r7, 0x670
         stm.w sp, (r4, r5, r7)
         fcn.00002084 ()
         r2 = r6                  // "V4L2" str.V4L2
         r3 = [0x00005a48]        // [0x5ae4:4]=0x264c "4["
         r0 = 2
         r1 = 3
         [var_4h] = r5
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r5 = 0x672
         [sp] = r4
         [var_8h] = r5
         fcn.00002084 ()
         r0 = 0

    loc_0x00005a5c: // orphan
         // CODE XREF from sym._mmv4l2_enum_inputs @ 0x5a96(x)
         r2 = [var_6ch] // DATA XREF from sym._mmv4l2_construct_attribute @ 0x271a(r)
         r3 = [sl]
         (a, b) = compare (r2, r3)
         bne 0x5a98               // unlikely

         goto loc_0x00005a66
    loc_0x00005a66: // orphan
         sp += 0x70
         pop (r4, r5, r6, r7, r8, sb, sl, pc)

        return r0;
    loc_0x00005a98: // orphan
         // CODE XREF from sym._mmv4l2_enum_inputs @ 0x5a64(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_get_enum_frame_sizes (int16_t arg1, int16_t arg2) {
    loc_0x000053a8:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        // DATA XREF from sym._mmv4l2_close @ 0x2c80(r)
        sp -= 0x64
        r7 = [0x000053b0] // [0x5664:4]=0x2c50 // "P,"
        r6 = r0       // arg1
        r8 = [0x000053b8] // [0x5668:4]=0x2ec2
        r5 = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x000053bc] // [0x566c:4]=0x2c4a // "J,"
        r4 = [0x000053c0] // [0x5670:4]=0x31fc
        r8 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        // DATA XREF from sym._mmv4l2_list_controls @ +0x154(r)
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r4 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r8 += 0x268   // 0x84ec // "__mmv4l2_get_enum_frame_sizes" // str.__mmv4l2_get_enum_frame_sizes
        lr = 0x5db
        [sp] = r4
        // DATA XREF from sym._mmv4l2_querycap @ 0x2dce(r)
        str.w r8, [sp, 4]
        // DATA XREF from sym._mmv4l2_close @ 0x2c26(r)
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r6, 0)
        beq.w 0x563a  // likely
        goto loc_0x000053e6;
    loc_0x0000563a:
        // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x53e2(x)
        r3 = [0x0000563c] // [0x56e0:4]=0x29f4
        r2 = r7
        // DATA XREF from sym._mmv4l2_set_quality @ 0x5d2e(r)
        r6 = [0x00005640] // [0x56e4:4]=0x2b66
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        // DATA XREF from sym._mmv4l2_log_status @ 0x2ea4(r)
        r6 += pc      // 0x81b0 // "v4l2" // str.v4l2
        // DATA XREF from sym._mmv4l2_set_control @ 0x352e(r)
        r5 = 0x5dd
        stm.w sp, (r4, r8)
        [var_ch] = r6
        [var_8h] = r5
        // DATA XREF from sym._mmv4l2_close @ 0x2c22(r)
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5634
        
    loc_0x00005634:
        // DATA XREF from sym._mmv4l2_open @ 0x2b6e(r)
        // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5660(r)
        sp += 0x64
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)
        return r0;
    loc_0x00005406: // orphan
         // CODE XREFS from sym.__mmv4l2_get_enum_frame_sizes @ 0x549a(x), 0x5504(x), 0x5592(x), 0x560a(x)
         r1 = 0x564a              // 'JV'
         r0 = [r6]                // int fd
         r1 |= 0xc02c << 16       // unsigned long request
         r2 = var_34h
         r7 = 0
         [var_34h] = r4
         [var_38h] = r5
         [var_3ch] = r7
         [var_40h] = r7
         [var_44h] = r7
         [var_48h] = r7
         [var_4ch] = r7
         [var_50h] = r7
         [var_54h] = r7
         [var_58h] = r7
         [var_5ch] = r7
         sym.imp.ioctl () // int ioctl(0, 0xc02c564a)
         (a, b) = compare (r0, r7)
         blt.w 0x560c             // unlikely

         goto loc_0x00005434
    loc_0x00005434: // orphan
         r7 = [var_34h]
         (a, b) = compare (r7, r4) // DATA XREF from sym._mmv4l2_close @ 0x2bce(r)
         je 0x545c                // likely

         goto loc_0x0000543a
    loc_0x0000543a: // orphan
         r3 = [0x0000543c]        // [0x5680:4]=0x3182 // "x2" // DATA XREF from sym._mmv4l2_close @ 0x2bc4(r)
         r0 = 2
         r2 = sym._mmv4l2_close   // [0x2bc0:4]=0xb087b5f0
         r1 = 5
         r3 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [sp] = r3 // DATA XREF from sym.__mmv4l2_get_control @ 0x3176(r)
         r3 = [0x00005448]        // [0x5688:4]=0x3d04
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_ch] = r7
         r7 = 0x5ec
         r3 += pc                 // 0x9158 // "%s: %s(%d) > driver returned wrong frame index %u.\n" // str._s:__s__d____driver_returned_wrong_frame_index__u._n
         str.w fp, [sp, 4]
         [var_8h] = r7
         fcn.00002084 ()

    loc_0x0000545c: // orphan
         // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5438(x)
         r7 = [var_38h]
         (a, b) = compare (r7, r5)
         je 0x5488                // likely

         goto loc_0x00005462
    loc_0x00005462: // orphan
         r3 = [var_28h]           // "__mmv4l2_get_enum_frame_sizes" str.__mmv4l2_get_enum_frame_sizes
         r0 = 2 // DATA XREF from sym._mmv4l2_close @ 0x2c2a(r)
         r2 = [0x00005468]        // [0x568c:4]=0x2b98 "vU"
         r1 = 5
         lr = [0x00005470]        // [0x5690:4]=0x3150 // "P1"
         [var_4h] = r3 // DATA XREF from sym._mmv4l2_get_control @ 0x33b6(r)
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 = [0x00005474]        // [0x5694:4]=0x3d0c
         lr += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [var_ch] = r7
         r7 = 0x5f1
         r3 += pc                 // 0x918c // "%s: %s(%d) > driver returned wrong frame pixel format %08x.\n" // str._s:__s__d____driver_returned_wrong_frame_pixel_format__08x._n
         str.w lr, [sp]
         [var_8h] = r7
         fcn.00002084 ()

    loc_0x00005488: // orphan
         // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5460(x)
         r7 = [var_3ch] // DATA XREF from sym.__mmv4l2_get_control @ 0x3130(r)
         (a, b) = compare (r7, 2)
         beq.w 0x5594             // unlikely

         goto loc_0x00005490
    loc_0x00005490: // orphan
         (a, b) = compare (r7, 3)
         je 0x5506                // unlikely

         goto loc_0x00005494
    loc_0x00005494: // orphan
         (a, b) = compare (r7, 1)
         je 0x549c                // unlikely

         goto loc_0x00005498
    loc_0x00005498: // orphan
         r4 += 1
         
         goto loc_0x0000549c
    loc_0x0000549c: // orphan
         // DATA XREF from sym._mmv4l2_get_control @ 0x338c(r) // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5496(r)
         r3 = [var_40h]
         r1 = 3
         r7 = [0x000054a4]        // [0x5698:4]=0x2b5c // "\+"
         r0 = 2
         ip = [var_44h]
         lr = 0x5f7               // (pstr 0x00001200) "_sizes"
         r7 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_ch] = r3 // DATA XREF from sym._mmv4l2_get_control @ 0x3358(r)
         r8 = [0x000054b8]        // [0x569c:4]=0x2dc2
         r4 += 1
         r3 = [0x000054b8]        // [0x56a0:4]=0x3d08
         r2 = r7                  // "V4L2" str.V4L2
         sb = [0x000054c0]        // [0x56a4:4]=0x30fa
         r8 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym._mmv4l2_get_control @ 0x3320(r)
         r3 += pc                 // 0x91cc // "%s: %s(%d) > \tFrame size: %ux%u (" // str._s:__s__d_____tFrame_size:__ux_u__ // DATA XREF from sym._mmv4l2_open @ 0x2b6a(r)
         str.w ip, [sp, 0x10]
         str.w lr, [sp, 8]
         sb += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r8 += 0x268              // 0x84ec // "__mmv4l2_get_enum_frame_sizes" // str.__mmv4l2_get_enum_frame_sizes
         str.w sb, [sp]
         str.w r8, [sp, 4]
         fcn.00002084 ()
         r1 = [var_38h]
         r0 = r6
         r2 = [var_40h]
         r3 = [var_44h]
         rsym.__mmv4l2_video_enum_frame_intervals ()
         r3 = [0x000054ec]        // [0x56a8:4]=0x3cfc
         r2 = r7                  // "V4L2" str.V4L2
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x91f0 // "%s: %s(%d) > )\n" // str._s:__s__d______n
         r7 = 0x5fa
         str.w r8, [sp, 4]
         str.w sb, [sp]
         [var_8h] = r7
         fcn.00002084 ()
         
    loc_0x00005506: // orphan
         // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5492(x)
         lr = [var_40h]
         mov.w r3, 0x610
         ip = [var_4ch]
         r1 = r7 // DATA XREF from sym._mmv4l2_querycap @ 0x2d62(r)
         r8 = [0x0000551c]        // [0x56ac:4]=0x2ae4
         r0 = 2
         str.w lr, [sp, 0xc] // DATA XREF from sym._mmv4l2_close @ 0x2c84(r)
         r4 += 1
         lr = [var_44h]
         r8 += pc                 // 0x800c // "V4L2" // str.V4L2
         str.w ip, [sp, 0x10]
         ip = [var_50h]
         r2 = r8                  // "V4L2" str.V4L2
         str.w lr, [sp, 0x14]
         [var_8h] = r3
         lr = [var_48h]
         str.w ip, [sp, 0x18]
         sb = [0x00005544]        // [0x56b0:4]=0x2d38 // "8-"
         ip = [var_54h]
         r3 = [0x00005548]        // [0x56b4:4]=0x3cd6
         sb += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         sl = [0x00005550]        // [0x56b8:4]=0x3068 // "h0"
         sb += 0x268              // 0x84ec // "__mmv4l2_get_enum_frame_sizes" // str.__mmv4l2_get_enum_frame_sizes
         r3 += pc                 // 0x922c // "%s: %s(%d) > \tFrame size: %ux%u - %ux%u (by %ux%u) (\n" // str._s:__s__d_____tFrame_size:__ux_u____ux_u__by__ux_u____n
         str.w lr, [sp, 0x1c]
         str.w ip, [sp, 0x20]
         sl += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         str.w sb, [sp, 4]
         str.w sl, [sp]
         fcn.00002084 ()
         r1 = [var_38h]
         r0 = r6
         r2 = [var_44h] // DATA XREF from sym._mmv4l2_open @ 0x2a94(r)
         r3 = [var_50h]
         rsym.__mmv4l2_video_enum_frame_intervals () // DATA XREF from sym._mmv4l2_open @ 0x2a8a(r)
         r3 = [0x00005578]        // [0x56bc:4]=0x3c6e // "n<"
         r1 = r7
         r2 = r8                  // "V4L2" str.V4L2
         r0 = 2
         r3 += pc                 // 0x91f0 // "%s: %s(%d) > )\n" // str._s:__s__d______n
         r7 = 0x614
         str.w sb, [sp, 4]
         str.w sl, [sp]
         [var_8h] = r7
         fcn.00002084 ()
         
    loc_0x00005594: // orphan
         // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x548c(x)
         lr = [var_40h]
         r0 = r7 // DATA XREF from sym._mmv4l2_get_control @ 0x32c0(r)
         ip = [var_4ch]
         r1 = 3
         r3 = [var_2ch]           // "__mmv4l2_get_enum_frame_sizes" str.__mmv4l2_get_enum_frame_sizes
         sl = 0x602
         r8 = [0x000055ac]        // [0x56c0:4]=0x2a58 // "X*"
         r4 += 1
         str.w lr, [sp, 0xc]
         r8 += pc                 // 0x800c // "V4L2" // str.V4L2
         lr = [var_44h]
         [var_4h] = r3
         str.w ip, [sp, 0x10]
         r2 = r8                  // "V4L2" str.V4L2
         ip = [var_50h]
         r3 = [0x000055c4]        // [0x56c4:4]=0x3c34 // "4<"
         sb = [0x000055cc]        // [0x56c8:4]=0x2ff2
         r3 += pc                 // 0x9200 // "%s: %s(%d) > \tFrame size: %ux%u - %ux%u (" // str._s:__s__d_____tFrame_size:__ux_u____ux_u__
         str.w lr, [sp, 0x14]
         str.w ip, [sp, 0x18]
         sb += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         str.w sl, [sp, 8]
         str.w sb, [sp]
         fcn.00002084 ()
         r1 = [var_38h]
         r0 = r6
         r2 = [var_44h]
         r3 = [var_50h]
         rsym.__mmv4l2_video_enum_frame_intervals () // DATA XREF from sym.__mmv4l2_get_control @ 0x3188(r)
         r0 = r7
         r3 = [0x000055f0]        // [0x56cc:4]=0x3bf6
         r2 = r8                  // "V4L2" str.V4L2
         r7 = [var_2ch]           // "__mmv4l2_get_enum_frame_sizes" str.__mmv4l2_get_enum_frame_sizes
         r1 = 3
         r3 += pc                 // 0x91f0 // "%s: %s(%d) > )\n" // str._s:__s__d______n
         lr = 0x606
         str.w sb, [sp] // DATA XREF from sym._mmv4l2_querycap @ 0x2d30(r)
         [var_4h] = r7 // DATA XREF from sym._mmv4l2_enum_formats @ 0x584e(r)
         str.w lr, [sp, 8] // DATA XREF from sym.__mmv4l2_query_control @ 0x2fb4(r)
         fcn.00002084 ()
         
    loc_0x0000560c: // orphan
         // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5430(x)
         r5 = [0x00005610]        // [0x56d0:4]=0x2c6a // "j,"
         r0 = 2
         r2 = [0x00005614]        // [0x56d4:4]=0x29ee // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a44(r)
         r1 = 3
         r3 = [0x00005618]        // [0x56d8:4]=0x2a7c // DATA XREF from sym._mmv4l2_set_framerate @ 0x3b24(r)
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x0000561c]        // [0x56dc:4]=0x2fa2 // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5a06(r)
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2 // DATA XREF from sym._mmv4l2_set_control @ 0x364c(r)
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x61c
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c // DATA XREF from sym.__mmv4l2_query_control @ 0x2f98(r)
         r5 += 0x268              // 0x84ec // "__mmv4l2_get_enum_frame_sizes" // str.__mmv4l2_get_enum_frame_sizes
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = r7

    loc_0x00005634: // orphan
         // DATA XREF from sym._mmv4l2_open @ 0x2b6e(r) // CODE XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5660(r)
         sp += 0x64
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_close (int16_t arg1) {
    loc_0x00002bc0:
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x543e(r)
        push (r4, r5, r6, r7, lr)
        sp -= 0x1c
        r7 = [0x00002bc8] // [0x2cac:4]=0x543c // "<T"
        r4 = r0       // arg1
        r5 = [0x00002bcc] // [0x2cb0:4]=0x56ae
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00002bd0] // [0x2cb4:4]=0x5438 // "8T"
        r6 = [0x00002bd4] // [0x2cb8:4]=0x59ea
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        // DATA XREF from sym.mm_v4l2_set_format @ 0x675a(r)
        r5 += 0x28    // 0x82ac // "_mmv4l2_close" // str._mmv4l2_close
        mov.w lr, 0x164
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x2c80     // likely
        goto loc_0x00002bf2;
    loc_0x00002c80:
        // CODE XREF from sym._mmv4l2_close @ 0x2bf0(x)
        r3 = [0x00002c84] // [0x2cd4:4]=0x53ac
        r2 = r7
        lr = [0x00002c8c] // [0x2cd8:4]=0x551e
        r0 = 2
        r1 = 5
        // DATA XREF from sym.mm_v4l2_realize @ 0x6db8(r)
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x166
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x2c48
        
    loc_0x00002c48:
        // CODE XREFS from sym._mmv4l2_close @ 0x2c7e(x), 0x2caa(x)
        sp += 0x1c
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x53ba(r)
        pop (r4, r5, r6, r7, pc) // str.__mmv4l2_get_enum_frame_sizes // str.__mmv4l2_get_enum_frame_sizes
        goto loc_0x00002bf6;
        return r0;
    loc_0x00002bf6:
        r0 = [r4]
        fcn.00002150 ()
        (a, b) = compare (r0, 0)
        blt 0x2c4c    // unlikely
        goto loc_0x00002c00;
    loc_0x00002c4c:
        // CODE XREF from sym._mmv4l2_close @ 0x2bfe(x)
        fcn.00001fa8 ()
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x53ae(r)
        r4 = r0
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5968(r)
        r0 = [r0]
        fcn.00001eb8 ()
        // DATA XREF from sym._mmv4l2_has_valid_buf_type @ 0x2a6c(r)
        // DATA XREF from sym.mm_v4l2_set_attribute @ 0x70ec(r)
        [sp] = r6
        [var_4h] = r5
        mov.w r3, 0x16c
        // DATA XREF from sym.mm_v4l2_realize @ 0x6de4(r)
        [var_8h] = r3
        // DATA XREF from sym.mm_v4l2_realize @ 0x6ea6(r)
        r2 = r7
        r3 = [0x00002c68] // [0x2cd0:4]=0x59e8
        r1 = 6
        r3 += pc      // 0x8654 // "%s: %s(%d) > closing device : %s (%d).\n" // str._s:__s__d____closing_device_:__s___d_._n
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x560c(r)
        [var_ch] = r0
        r0 = 2
        r4 = [r4]
        [var_10h] = r4
        fcn.00002084 ()
        r0 = 0x1010   // '\x10\x10' // "4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x2c48
    loc_0x00002c00: // orphan
         r3 = [0x00002c04]        // [0x2cbc:4]=0x5a70 // "pZ"
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x867c // "%s: %s(%d) > /dev/video closed.\n" // str._s:__s__d_____dev_video_closed._n
         [sp] = r6 // DATA XREF from sym._mmv4l2_enum_inputs @ 0x59ae(r)
         [var_4h] = r5
         r6 = 0x171 // DATA XREF from sym.mm_v4l2_realize @ 0x6d0e(r)
         [var_8h] = r6
         fcn.00002084 ()
         mov.w r2, -1
         r3 = 0
         stm.w r4, (r2, r3)

    loc_0x00002c22: // orphan
         // CODE XREF from sym._mmv4l2_close @ 0x2bf4(x)
         r5 = [0x00002c24]        // [0x2cc0:4]=0x5654 // "TV"
         r0 = 2
         r2 = [0x00002c28]        // [0x2cc4:4]=0x53d8
         r1 = 3
         r3 = [0x00002c2c]        // [0x2cc8:4]=0x5466
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym.mm_v4l2_realize @ 0x6e16(r)
         r6 = [0x00002c30]        // [0x2ccc:4]=0x598c
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x177
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0x28               // 0x82ac // "_mmv4l2_close" // str._mmv4l2_close
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0

    loc_0x00002c48: // orphan
         // CODE XREFS from sym._mmv4l2_close @ 0x2c7e(x), 0x2caa(x)
         sp += 0x1c // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x53ba(r)
         pop (r4, r5, r6, r7, pc) // str.__mmv4l2_get_enum_frame_sizes // str.__mmv4l2_get_enum_frame_sizes

        return r0;
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00002150 (int r0, int r1) {
    loc_0x00002150:
        // CALL XREF from sym._mmv4l2_close @ 0x2bf8(x)
        // CALL XREF from sym.mmv4l2_save_file @ 0x6290(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002150 @ 0x2150(r)
        pc = [ip + 0x4c8]! // 0x12620 // reloc.close // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_querycap (int16_t arg1, int16_t arg2) {
    loc_0x00002cdc:
        r3 = [0x00002ce0] // [0x2e30:4]=0xf7c4
        r2 = [0x00002ce0] // [0x2e34:4]=388
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        push (r4, r5, r6, r7, r8, sb, lr)
        sp -= 0x8c
        r4 = [r3 + r2] // 0x1262c // reloc.__stack_chk_guard
        r5 = r0       // arg1
        r8 = [0x00002cf4] // [0x2e38:4]=0x530e
        sb = r1       // arg2
        r6 = [0x00002cf4] // [0x2e3c:4]=0x5582
        r0 = 2
        ip = [r4]
        r8 += pc      // 0x800c // "V4L2" // str.V4L2
        // DATA XREF from sym.mm_v4l2_realize @ 0x6ecc(r)
        r3 = [0x00002d00] // [0x2e40:4]=0x530a // "\nS"
        r6 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r7 = [0x00002d04] // [0x2e44:4]=0x58bc
        r1 = 3
        r2 = r8       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r7 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        mov.w lr, 0x182
        r6 += 0x38    // 0x82bc // "_mmv4l2_querycap" // str._mmv4l2_querycap
        [sp] = r7
        [var_4h] = r6
        str.w ip, [sp, 0x84]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        je 0x2dca     // likely
        goto loc_0x00002d24;
    loc_0x00002dca:
        // CODE XREF from sym._mmv4l2_querycap @ 0x2d22(x)
        r3 = [0x00002dcc] // [0x2e64:4]=0x5262 // "bR"
        r2 = r8
        lr = [0x00002dd4] // [0x2e68:4]=0x53d4
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r5, 0x184
        [sp] = r7
        [var_4h] = r6
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52ae(r)
        str.w lr, [sp, 0xc]
        [var_8h] = r5
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x2db4
        
    loc_0x00002db4:
        // CODE XREFS from sym._mmv4l2_querycap @ 0x2df4(x), 0x2e28(x)
        r2 = [var_84h]
        r3 = [r4]
        (a, b) = compare (r2, r3)
        bne 0x2e2a    // likely
        goto loc_0x00002dbc;
        goto loc_0x00002d42;
        return r0;
    loc_0x00002d42:
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x5878(r)
        r3 = [var_70h]
        r0 = r5
        (a, b) = compare (r3, 0)
        it lt
        r3 = [var_74h]
        str.w r3, [sb]
        fcn.00001fc0 ()
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52aa(r)
        lr = [0x00002d5c] // [0x2e48:4]=0x5944 // "DY"
        lr += pc      // 0x86a0 // "capture" // str.capture
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52d4(r)
        (a, b) = compare (r0, 0)
        je 0x2dc2     // likely
        goto loc_0x00002d5e;
    loc_0x00002dc2:
        // CODE XREF from sym._mmv4l2_querycap @ 0x2d5c(x)
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x54b0(x)
        lr = [0x00002dc8] // [0x2e60:4]=0x58de
        lr += pc      // 0x86a8 // "output" // str.output
        goto 0x2d5e
    loc_0x00002d5e: // orphan
         // CODE XREF from sym._mmv4l2_querycap @ 0x2dc8(x)
         r7 = [0x00002d60]        // [0x2e4c:4]=0x52a2
         r1 = 3
         r6 = [0x00002d64]        // [0x2e50:4]=0x5514
         r0 = 2
         r7 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 = [0x00002d6c]        // [0x2e54:4]=0x5968 // "hY"
         r5 = [0x00002d6c]        // [0x2e58:4]=0x584c // "LX"
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r2 = r7                  // "V4L2" str.V4L2
         r3 += pc                 // 0x86dc // "%s: %s(%d) > Device `%s' on `%s' is a video %s device.\n" // str._s:__s__d____Device___s_on___s_is_a_video__s_device._n
         r6 += 0x38               // 0x82bc // "_mmv4l2_querycap" // str._mmv4l2_querycap
         ip = var_2ch             // (pstr 0x000084ec) "__mmv4l2_get_enum_frame_sizes" // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x528c(r)
         r5 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         str.w lr, [sp, 0x14]
         [var_4h] = r6
         lr = var_4ch
         str.w ip, [sp, 0xc]
         r8 = 0x19d
         str.w lr, [sp, 0x10]
         [sp] = r5
         str.w r8, [sp, 8]
         fcn.00002084 ()
         r3 = [0x00002d9c]        // [0x2e5c:4]=0x52f6
         r2 = r7                  // "V4L2" str.V4L2
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         [var_4h] = r6
         [sp] = r5
         r6 = 0x19f
         [var_8h] = r6
         fcn.00002084 ()
         r0 = 0

    loc_0x00002db4: // orphan
         // CODE XREFS from sym._mmv4l2_querycap @ 0x2df4(x), 0x2e28(x)
         r2 = [var_84h]
         r3 = [r4]
         (a, b) = compare (r2, r3)
         bne 0x2e2a               // unlikely

         goto loc_0x00002dbc
    loc_0x00002dbc: // orphan
         sp += 0x8c
         pop (r4, r5, r6, r7, r8, sb, pc)

        return r0;
    loc_0x00002df6: // orphan
         // CODE XREF from sym._mmv4l2_querycap @ 0x2d40(x)
         fcn.00001fa8 ()
         r5 = r0
         r0 = [r0]
         fcn.00001eb8 () // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51fe(r) // DATA XREF from sym._mmv4l2_enum_formats @ 0x57b6(r)
         [sp] = r7
         [var_4h] = r6
         mov.w r3, 0x18e // DATA XREF from sym.mm_v4l2_realize @ 0x6b12(r)
         [var_8h] = r3
         r2 = r8
         r3 = [0x00002e10]        // [0x2e6c:4]=0x589a
         r1 = 6
         r3 += pc                 // 0x86b0 // "%s: %s(%d) > unable to querycap : %s (%d).\n" // str._s:__s__d____unable_to_querycap_:__s___d_._n
         [var_ch] = r0
         r0 = 2
         r5 = [r5]
         [var_10h] = r5
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
         goto loc_0x00002e2a
    loc_0x00002e2a: // orphan
         // CODE XREF from sym._mmv4l2_querycap @ 0x2dba(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_print_control (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00004b38:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        sp -= 0xcc
        // DATA XREFS from sym._mmv4l2_get_format @ 0x3734(r), 0x373a(r)
        r6 = [0x00004b40] // [0x4e68:4]=0xd95e // "^\xd9"
        r4 = r0       // arg1
        r3 = [0x00004b44] // [0x4e6c:4]=388
        fp = r1       // arg2
        // DATA XREF from sym._mmv4l2_set_control @ 0x34b6(r)
        r6 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        r7 = [0x00004b4c] // [0x4e70:4]=0x34b6
        sb = [0x00004b50] // [0x4e74:4]=0x372a // "*7"
        sl = r2       // arg3
        r5 = [r6 + r3] // 0x1262c // reloc.__stack_chk_guard
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        // DATA XREF from sym._mmv4l2_set_control @ 0x34a6(r)
        r3 = [0x00004b58] // [0x4e78:4]=0x34ac
        sb += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r8 = [0x00004b60] // [0x4e7c:4]=0x3a5e // "^:"
        r0 = 2
        r6 = [r5]
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r8 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        lr = 0x4fd
        sb += 0x200   // 0x8484 // "_mmv4l2_print_control" // str._mmv4l2_print_control
        [var_c4h] = r6
        stm.w sp, (r8, sb)
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        beq.w 0x4e38  // likely
        goto loc_0x00004b84;
    loc_0x00004e38:
        // CODE XREF from sym._mmv4l2_print_control @ 0x4b80(x)
        r3 = [0x00004e3c] // [0x4efc:4]=0x31f6
        r2 = r7
        r4 = [0x00004e40] // [0x4f00:4]=0x3368 // "h3"
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r4 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r7 = 0x4ff
        str.w r8, [sp]
        // DATA XREFS from sym._mmv4l2_set_framerate @ 0x3bba(r), 0x3bc8(r)
        r6 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        str.w sb, [sp, 4]
        r6 |= 0x8000 << 16
        [var_ch] = r4
        [var_8h] = r7
        // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3cd2(r)
        fcn.00002084 ()
        goto 0x4c6a
        
    loc_0x00004c6a:
        // CODE XREFS from sym._mmv4l2_print_control @ 0x4cf0(x), 0x4d18(x), 0x4d38(x), 0x4e62(x)
        r2 = [var_c4h]
        r0 = r6
        r3 = [r5]
        (a, b) = compare (r2, r3)
        bne.w 0x4e64  // unlikely
        goto loc_0x00004c76;
        goto loc_0x00004b94;
        return r0;
    loc_0x00004b94:
        r6 = [var_74h]
        r6 &= r6
        bne.w 0x4cd2  // unlikely
        goto loc_0x00004b9e;
    loc_0x00004cd2:
        // CODE XREF from sym._mmv4l2_print_control @ 0x4b9a(x)
        r3 = [0x00004cd4] // [0x4eb4:4]=0x41ee
        r2 = r7
        r0 = 2
        r1 = 5
        r3 += pc      // 0x8ecc // "%s: %s(%d) > __mmv4l2_query_control : V4L2_CTRL_FLAG_DISABLED\n" // str._s:__s__d______mmv4l2_query_control_:_V4L2_CTRL_FLAG_DISABLED_n
        r4 = 0x50a
        str.w r8, [sp]
        r6 = 0
        str.w sb, [sp, 4]
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x4c6a
    loc_0x00004b9e: // orphan
         r3 = [var_40h]
         (a, b) = compare (r3, 6)
         beq.w 0x4cf2             // unlikely

         goto loc_0x00004ba6
    loc_0x00004ba6: // orphan
         r1 = var_3ch
         r0 = r4
         r2 = var_28h             // (pstr 0x000084ec) "__mmv4l2_get_enum_frame_sizes"
         fcn.000020f0 ()
         (a, b) = compare (r0, 0)
         blt.w 0x4cc4             // unlikely

         goto loc_0x00004bb6
    loc_0x00004bb6: // orphan
         r3 = [var_40h]
         (a, b) = compare (r3, 5)
         beq.w 0x4d3a             // unlikely

         goto loc_0x00004bbe
    loc_0x00004bbe: // orphan
         (a, b) = compare (r3, 7)
         r6 = [var_34h]
         je 0x4bd6                // unlikely

         goto loc_0x00004bc4
    loc_0x00004bc4: // orphan
         r3 = [0x00004bc8]        // [0x4e80:4]=0x436c // "lC"
         r1 = 1 // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3fd4(r)
         r2 = 0x18
         r0 = var_ach
         r3 += pc
         [sp] = r6
         fcn.00001fcc ()
         r6 = var_ach

    loc_0x00004bd6: // orphan
         // CODE XREFS from sym._mmv4l2_print_control @ 0x4bc2(x), 0x4cd0(x), 0x4d52(x)
         cmp.w sl, 0
         je 0x4c7c                // likely

         goto loc_0x00004bdc
    loc_0x00004bdc: // orphan
         r3 = [var_3ch]
         r0 = 2
         r2 = [0x00004be4]        // [0x4e84:4]=0x39d8
         r1 = 3
         ip = [var_64h]
         lr = 0x52a
         r2 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r8 = [var_68h]
         sb = [var_6ch]
         r7 = var_44h
         fp = [var_70h]
         [var_24h] = r6
         [sp] = r2
         [var_ch] = r3
         r6 = [0x00004c04]        // [0x4e88:4]=0x3678 // "x6"
         r2 = [0x00004c08]        // [0x4e8c:4]=0x33fe
         r3 = [0x00004c08]        // [0x4e90:4]=0x432c // ",C"
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r6 += 0x200              // 0x8484 // "_mmv4l2_print_control" // str._mmv4l2_print_control
         r3 += pc                 // 0x8f40 // "%s: %s(%d) > control 0x%08x `%s' min %d max %d step %d default %d current %s.\n" // str._s:__s__d____control_0x_08x___s_min__d_max__d_step__d_default__d_current__s._n
         [var_4h] = r6
         str.w ip, [sp, 0x14]
         str.w r8, [sp, 0x18]
         str.w sb, [sp, 0x1c]
         str.w fp, [sp, 0x20]
         str.w lr, [sp, 8]
         [var_10h] = r7
         fcn.00002084 ()
         r3 = [var_40h]
         (a, b) = compare (r3, 7)
         je 0x4cb6                // unlikely

         goto loc_0x00004c34
    loc_0x00004c34: // orphan
         // CODE XREFS from sym._mmv4l2_print_control @ 0x4cb4(x), 0x4cc2(x)
         cmp.w sl, 0
         je 0x4c68                // likely

         goto loc_0x00004c3a
    loc_0x00004c3a: // orphan
         r1 = [var_40h]
         (a, b) = compare (r1, 3)
         beq.w 0x4d54             // unlikely

         goto loc_0x00004c42
    loc_0x00004c42: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4e36(x)
         r6 = [0x00004c44]        // [0x4e94:4]=0x3634 // "46"
         r0 = 2
         r2 = [0x00004c48]        // [0x4e98:4]=0x33b8
         r1 = 3
         r3 = [0x00004c4c]        // [0x4e9c:4]=0x3446 // "F4"
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r7 = [0x00004c50]        // [0x4ea0:4]=0x396c // "l9"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x544
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r6 += 0x200              // 0x8484 // "_mmv4l2_print_control" // str._mmv4l2_print_control
         [sp] = r7
         [var_4h] = r6
         [var_8h] = r4
         fcn.00002084 ()

    loc_0x00004c68: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4c38(x)
         r6 = [var_3ch]

    loc_0x00004c6a: // orphan
         // CODE XREFS from sym._mmv4l2_print_control @ 0x4cf0(x), 0x4d18(x), 0x4d38(x), 0x4e62(x)
         r2 = [var_c4h]
         r0 = r6
         r3 = [r5]
         (a, b) = compare (r2, r3)
         bne.w 0x4e64             // unlikely

         goto loc_0x00004c76
    loc_0x00004c76: // orphan
         sp += 0xcc
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x00004c7c: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4bda(x)
         r8 = [var_3ch]
         r0 = 2
         lr = [0x00004c88]        // [0x4ea4:4]=0x35f0
         r1 = 3
         r2 = [0x00004c8c]        // [0x4ea8:4]=0x3374 // "t3"
         ip = 0x52e
         r3 = [0x00004c90]        // [0x4eac:4]=0x3bce
         lr += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f48(r)
         r7 = [0x00004c94]        // [0x4eb0:4]=0x3928 // "(9"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8868 // "%s: %s(%d) > control 0x%08x current %s.\n" // str._s:__s__d____control_0x_08x_current__s._n
         lr += 0x200              // 0x8484 // "_mmv4l2_print_control" // str._mmv4l2_print_control
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [var_10h] = r6
         stm.w sp, (r7, lr)
         str.w r8, [sp, 0xc]
         str.w ip, [sp, 8]
         fcn.00002084 ()
         r3 = [var_40h]
         (a, b) = compare (r3, 7)
         bne 0x4c34               // likely

         goto loc_0x00004cb6
    loc_0x00004cb6: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4c32(x)
         r0 = [var_34h]
         if (!r0) 
         goto loc_0x00004cba
    loc_0x00004cba: // orphan
         sym.imp.g_free ()

    loc_0x00004cbe: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4cb8(x)
         r3 = 0
         [var_34h] = r3
         
    loc_0x00004cc4: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4bb2(x)
         r3 = 0x2f4e              // 'N/' // DATA XREFS from sym._mmv4l2_set_format @ 0x38ea(r), 0x38ee(r)
         r6 = var_ach
         r3 |= 0x41 << 16
         [var_ach] = r3
         
    loc_0x00004cf2: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4ba2(x)
         r4 = [var_3ch]
         r2 = r7
         r3 = [0x00004cf8]        // [0x4eb8:4]=0x4208
         r0 = 2
         r1 = 5
         mov.w lr, 0x510
         r3 += pc                 // 0x8f0c // "%s: %s(%d) > --- %s (class 0x%08x) ---\n" // str._s:__s__d_________s__class_0x_08x______n
         r7 = var_44h
         str.w r8, [sp]
         str.w sb, [sp, 4]
         [var_10h] = r4
         str.w lr, [sp, 8]
         [var_ch] = r7
         fcn.00002084 ()
         
         goto loc_0x00004d1a
    loc_0x00004d1a: // orphan
         // DATA XREF from sym._mmv4l2_set_control @ 0x3558(r) // CODE XREF from sym._mmv4l2_print_control @ 0x4b90(r)
         r3 = [0x00004d1c]        // [0x4ebc:4]=0x416e // "nA"
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x8e94 // "%s: %s(%d) > __mmv4l2_query_control error ret=[%08x]\n" // str._s:__s__d______mmv4l2_query_control_error_ret__08x__n
         r4 = 0x504
         str.w r8, [sp]
         str.w sb, [sp, 4]
         [var_ch] = r6
         [var_8h] = r4
         fcn.00002084 ()
         
    loc_0x00004d3a: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4bba(x)
         r6 = [var_38h]
         r1 = 1
         r7 = [var_34h]
         r0 = var_ach             // "N/A"
         r3 = [0x00004d44]        // [0x4ec0:4]=0x41e6
         r2 = 0x18
         [var_4h] = r6
         r6 = var_ach             // "N/A"
         r3 += pc                 // 0x8f34 // "%lld" // str._lld
         [sp] = r7
         fcn.00001fcc ()
         
    loc_0x00004d54: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4c3e(x)
         r7 = [0x00004d58]        // [0x4ec4:4]=0x3520 // " 5"
         r0 = 2
         r2 = [0x00004d5c]        // [0x4ec8:4]=0x32a2
         r6 = 0x4d3
         r3 = [0x00004d60]        // [0x4ecc:4]=0x32a8
         r7 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         lr = [0x00004d68]        // [0x4ed0:4]=0x3858 // "X8"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
         [var_8h] = r6
         lr += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r7 += 0x218              // 0x849c // "__mmv4l2_query_menu" // str.__mmv4l2_query_menu
         str.w lr, [sp]
         [var_4h] = r7
         r6 = [var_34h]
         fcn.00002084 ()
         r3 = [var_64h]
         r2 = [var_68h]
         (a, b) = compare (r3, r2)
         [var_84h] = r3
         bhi 0x4e10               // unlikely

         goto loc_0x00004d88
    loc_0x00004d88: // orphan
         sb = [0x00004d90]        // [0x4ed4:4]=0x34ee
         r7 = [0x00004d90]        // [0x4ed8:4]=0x3270 // "p2"
         r8 = [0x00004d94]        // [0x4edc:4]=0x41f2
         sb += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3d70(r)
         sl = [0x00004d9c]        // [0x4ee0:4]=0x3824 // "$8"
         r7 += pc                 // 0x800c // "V4L2" // str.V4L2
         r8 += pc                 // 0x8f90 // "%s: %s(%d) >   %u: %.32s%s\n" // str._s:__s__d_______u:__.32s_s_n
         sb += 0x218              // 0x849c // "__mmv4l2_query_menu" // str.__mmv4l2_query_menu
         sl += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         
         goto loc_0x00004da4
    loc_0x00004da4: // orphan
         // CODE XREFS from sym._mmv4l2_print_control @ 0x4dc6(x), 0x4dcc(x), 0x4e0e(x)
         r3 = [var_84h]
         r2 = [var_68h]
         r3 += 1
         [var_84h] = r3
         (a, b) = compare (r3, r2)
         bhi 0x4e10               // likely

    loc_0x00004db0: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4da2(x)
         r3 = [var_3ch]
         r1 = 0x5625              // '%V'
         r0 = [r4]                // int fd
         r1 |= 0xc02c << 16       // unsigned long request
         r2 = var_80h
         [var_80h] = r3
         sym.imp.ioctl () // int ioctl(0, 0xc02c5625)
         (a, b) = compare (r0, 0)
         blt 0x4da4               // unlikely

         goto loc_0x00004dc8
    loc_0x00004dc8: // orphan
         // DATA XREF from sym._mmv4l2_get_control @ 0x33da(r)
         r3 = [var_40h]
         (a, b) = compare (r3, 3)
         bne 0x4da4               // likely

    loc_0x00004dce: // orphan
         lr = [var_84h]
         ip = [0x00004dd8]        // [0x4ee4:4]=0x40b0
         (a, b) = compare (r6, lr)
         ip += pc                 // 0x8e8c // " (*)" // str.___ // DATA XREF from sym._mmv4l2_get_control @ 0x3222(r)
         je 0x4de2                // unlikely

         goto loc_0x00004ddc
    loc_0x00004ddc: // orphan
         ip = [0x00004de4]        // [0x4ee8:4]=0x51dc
         ip += pc

    loc_0x00004de2: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4dda(x)
         r0 = 2
         r1 = 3
         r2 = r7
         r3 = r8
         str.w lr, [sp, 0xc]
         lr = 0x4e4
         str.w ip, [sp, 0x14]
         ip = var_88h // DATA XREF from sym._mmv4l2_set_framerate @ 0x3c0e(r)
         str.w sl, [sp]
         str.w sb, [sp, 4]
         str.w lr, [sp, 8] // DATA XREF from sym._mmv4l2_get_format @ 0x37ba(r)
         str.w ip, [sp, 0x10]
         fcn.00002084 ()
         
    loc_0x00004e10: // orphan
         // CODE XREFS from sym._mmv4l2_print_control @ 0x4d86(x), 0x4dae(x)
         r6 = [0x00004e14]        // [0x4eec:4]=0x3466 // "f4"
         r0 = 2
         r2 = [0x00004e18]        // [0x4ef0:4]=0x31ea
         r1 = 3
         r3 = [0x00004e1c]        // [0x4ef4:4]=0x3278
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r7 = [0x00004e20]        // [0x4ef8:4]=0x379e
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x4ee
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r6 += 0x218              // 0x849c // "__mmv4l2_query_menu" // str.__mmv4l2_query_menu
         [sp] = r7
         [var_4h] = r6
         [var_8h] = r4
         fcn.00002084 ()
         
    loc_0x00004e64: // orphan
         // CODE XREF from sym._mmv4l2_print_control @ 0x4c72(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_free_buffers (int16_t arg1) {
    loc_0x00004484:
        push (r4, r5, r6, r7, r8, lr) // (cstr 0x00178000) "\u0205"
        sp -= 0x30    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r7 = [0x0000448c] // [0x4640:4]=0x3b76 // "v//"
        r4 = r0       // arg1
        r6 = [0x00004490] // [0x4644:4]=0x3de8 ".E"
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00004498] // [0x4648:4]=0x3b72 // "r//"
        r5 = [0x00004498] // [0x464c:4]=0x4124 // "$A"
        r6 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x4962(r)
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r6 += 0x180   // 0x8404 // "_mmv4l2_free_buffers" // str._mmv4l2_free_buffers
        lr = 0x426
        stm.w sp, (r5, r6)
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        beq.w 0x4614  // likely
        goto loc_0x000044bc;
    loc_0x00004614:
        // CODE XREF from sym._mmv4l2_free_buffers @ 0x44b8(x)
        r3 = [0x00004618] // [0x46a0:4]=0x3a18
        r2 = r7
        lr = [0x00004620] // [0x46a4:4]=0x3b8a
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x428
        [sp] = r5
        r5 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        [var_4h] = r6
        // DATA XREF from sym._mmv4l2_set_format @ 0x39fc(r)
        r5 |= 0x8000 << 16
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x4580
        
    loc_0x00004580:
        // CODE XREFS from sym._mmv4l2_free_buffers @ 0x44c0(x), 0x45be(x), 0x463e(x)
        r0 = r5
        sp += 0x30
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x000044c2;
        return r0;
    loc_0x000044c2:
        mov.w r8, 0
        r6 = [r4 + 0xc]
        r7 = r8
        goto 0x44da
        
    loc_0x000044da:
        // CODE XREFS from sym._mmv4l2_free_buffers @ 0x44ca(x), 0x44fa(x)
        (a, b) = compare (r6, 1)
        bne 0x44cc    // likely
        goto loc_0x000044de;
        return r0;
    loc_0x000044de:
        r1 = [r4 + 0x14]
        r0 = r4
        r1 += r8
        fcn.000020d8 ()
        // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3d8e(r)
        r5 = r0
        (a, b) = compare (r0, 0)
        bne 0x45c0    // unlikely
        goto loc_0x000044ee;
    loc_0x000045c0:
        // CODE XREF from sym._mmv4l2_free_buffers @ 0x44ec(x)
        r7 = [0x000045c4] // [0x4680:4]=0x3ffa
        r0 = 2
        r6 = [0x000045c8] // [0x4684:4]=0x3cb2
        r1 = 6
        // DATA XREF from sym._mmv4l2_alloc_buffers @ +0x2c8(r)
        r2 = [0x000045cc] // [0x4688:4]=0x3a38 // "8:"
        r7 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r3 = [0x000045d0] // [0x468c:4]=0x4736 // "6G"
        r6 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r4 = 0x437
        r3 += pc      // 0x8d10 // "%s: %s(%d) > Unable to munmap\n" // str._s:__s__d____Unable_to_munmap_n
        goto 0x45b0
        
    loc_0x000045b0:
        // CODE XREF from sym._mmv4l2_free_buffers @ 0x45d8(x)
        r6 += 0x180   // 0x8404 // "_mmv4l2_free_buffers"
        [sp] = r7
        [var_4h] = r6
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x4580
        goto loc_0x000044fc;
        return r0;
    loc_0x000044fc:
        // CODE XREF from sym._mmv4l2_free_buffers @ 0x44d8(x)
        r3 = [r4 + 8]
        r1 = 0x5608
        // DATA XREF from sym.__mmv4l2_free_buffer_userptr @ 0x40b6(r)
        r0 = [r4]     // int fd
        r1 |= 0xc014 << 16 // unsigned long request
        r2 = var_1ch
        [var_24h] = r6
        [var_20h] = r3
        r3 = 0
        [var_1ch] = r3
        // DATA XREF from sym._mmv4l2_set_framerate @ 0x3b7e(r)
        [var_28h] = r3
        [var_2ch] = r3
        sym.imp.ioctl () // int ioctl(0, 0xc0145608)
        (a, b) = compare (r0, 0)
        blt 0x45da    // unlikely
        goto loc_0x0000451e;
    loc_0x000045da:
        // CODE XREF from sym._mmv4l2_free_buffers @ 0x451c(x)
        fcn.00001fa8 ()
        r5 = r0
        r0 = [r0]
        // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3fd8(r)
        // DATA XREFS from sym.mmv4l2_wait_frame @ 0x62e2(r), 0x6318(r), 0x6342(r)
        fcn.00001eb8 ()
        // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3c8e(r)
        r3 = [0x000045e8] // [0x4690:4]=0x3c92
        r2 = [0x000045ec] // [0x4694:4]=0x3fd2
        r1 = 0x454
        r3 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        [var_8h] = r1
        r2 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r3 += 0x180   // 0x8404 // "_mmv4l2_free_buffers" // str._mmv4l2_free_buffers
        stm.w sp, (r2, r3)
        r1 = 5
        r2 = [0x00004600] // [0x4698:4]=0x3a06
        r3 = [0x00004604] // [0x469c:4]=0x4754
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x8d5c // "%s: %s(%d) > Unable to release buffers(VIDIOC_REQBUFS): %s (%d).\n" // str._s:__s__d____Unable_to_release_buffers_VIDIOC_REQBUFS_:__s___d_._n
        [var_ch] = r0
        r0 = 2
        r5 = [r5]
        [var_10h] = r5
        // DATA XREFS from sym._mmv4l2_queue_buffer @ 0x47ae(r), 0x47b8(r)
        fcn.00002084 ()
        goto 0x451e
    loc_0x000044cc: // orphan
         // CODE XREF from sym._mmv4l2_free_buffers @ 0x44dc(x)
         (a, b) = compare (r6, 2)
         je 0x4588                // unlikely

         goto loc_0x000044d0
    loc_0x000044d0: // orphan
         r7 += 1
         r8 += 0x44               // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         (a, b) = compare (r5, r7)
         bls 0x44fc               // likely

    loc_0x000044da: // orphan
         // CODE XREFS from sym._mmv4l2_free_buffers @ 0x44ca(x), 0x44fa(x)
         (a, b) = compare (r6, 1)
         bne 0x44cc               // likely

    loc_0x000044ee: // orphan
         // CODE XREF from sym._mmv4l2_free_buffers @ 0x4596(x)
         r5 = [r4 + 0x10]
         r7 += 1
         r6 = [r4 + 0xc]
         r8 += 0x44               // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         (a, b) = compare (r5, r7)
         bhi 0x44da               // likely

    loc_0x0000451e: // orphan
         // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3d5a(r) // CODE XREF from sym._mmv4l2_free_buffers @ 0x4612(r)
         r6 = [r4 + 0x10]
         r0 = 2
         r7 = [0x00004524]        // [0x4650:4]=0x3d52 // "R=" // DATA XREF from sym._mmv4l2_alloc_buffers @ +0x2bc(r)
         r1 = 3
         r2 = [0x00004528]        // [0x4654:4]=0x3ad4
         mov.w r5, 0x458          // (pstr 0x00000018) "h!"
         r3 = [0x00004530]        // [0x4658:4]=0x4866 // "fH"
         r7 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         lr = [0x00004538]        // [0x465c:4]=0x4088 ".E"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8da0 // "%s: %s(%d) > %u buffers released.\n" // str._s:__s__d_____u_buffers_released._n
         r7 += 0x180              // 0x8404 // "_mmv4l2_free_buffers" // str._mmv4l2_free_buffers
         lr += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [var_4h] = r7
         str.w lr, [sp]
         [var_ch] = r6
         [var_8h] = r5
         fcn.00002084 ()
         r0 = [r4 + 0x14]
         if (!r0) 
         goto loc_0x00004550
    loc_0x00004550: // orphan
         sym.imp.g_free ()

    loc_0x00004554: // orphan
         // CODE XREF from sym._mmv4l2_free_buffers @ 0x454e(x)
         r7 = [0x00004558]        // [0x4660:4]=0x3d22 // "\"="
         r5 = 0
         r2 = [0x0000455c]        // [0x4664:4]=0x3aa2
         r0 = 2
         r3 = [0x00004560]        // [0x4668:4]=0x3b2e // ".//"
         r7 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x00004564]        // [0x466c:4]=0x4058 // "X@"
         r1 = 3
         [r4 + 0x14] = r5
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [r4 + 0x10] = r5
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r7 += 0x180              // 0x8404 // "_mmv4l2_free_buffers" // str._mmv4l2_free_buffers
         r4 = 0x45d
         stm.w sp, (r6, r7)
         [var_8h] = r4
         fcn.00002084 ()

    loc_0x00004580: // orphan
         // CODE XREFS from sym._mmv4l2_free_buffers @ 0x44c0(x), 0x45be(x), 0x463e(x)
         r0 = r5
         sp += 0x30
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x00004588: // orphan
         // DATA XREF from sym._mmv4l2_set_framerate @ 0x3a7e(r) // CODE XREF from sym._mmv4l2_free_buffers @ 0x44ce(r)
         r1 = [r4 + 0x14]
         r0 = r4 // DATA XREF from sym._mmv4l2_set_framerate @ 0x3a6e(r)
         r1 += r8
         fcn.000020a8 () // DATA XREF from sym._mmv4l2_list_controls @ 0x4f54(r)
         r5 = r0
         (a, b) = compare (r0, 0)
         je 0x44ee                // likely

         goto loc_0x00004598
    loc_0x00004598: // orphan
         r7 = [0x0000459c]        // [0x4670:4]=0x4022 // "\"@"
         r0 = r6
         r2 = [0x000045a0]        // [0x4674:4]=0x3a62 // "b:"
         r1 = 6
         r6 = [0x000045a4]        // [0x4678:4]=0x3cd8
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r3 = [0x000045a8]        // [0x467c:4]=0x477e // "~G"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3cc6(r)
         mov.w r4, 0x440
         r3 += pc                 // 0x8d30 // "%s: %s(%d) > Unable to free_userptr buffer\n" // str._s:__s__d____Unable_to_free_userptr_buffer_n

    loc_0x000045b0: // orphan
         // CODE XREF from sym._mmv4l2_free_buffers @ 0x45d8(x)
         r6 += 0x180              // 0x8404 // "_mmv4l2_free_buffers"
         [sp] = r7
         [var_4h] = r6
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_construct_attribute (int16_t arg1) {
    loc_0x0000267c:
        push (r4, r5, r6, r7, r8, lr)
        // DATA XREF from sym.mm_v4l2_start_capture @ 0x73c4(r)
        sp -= 0x1d0
        // DATA XREF from sym._mmv4l2_destroy @ 0x5f38(r)
        r8 = [0x00002688] // [0x27d4:4]=0x597c // "|Y"
        r6 = r0       // arg1
        r4 = [0x0000268c] // [0x27d8:4]=0x58d2
        r0 = 2
        // DATA XREF from sym._mmv4l2_set_input @ 0x5bea(r)
        r8 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00002690] // [0x27dc:4]=0x5978 // "xY"
        r5 = [0x00002694] // [0x27e0:4]=0x598e
        r4 += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        r1 = 3
        r2 = r8       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        r4 += 0x68    // 0x7fd0 // "_mmv4l2_construct_attribute" // str._mmv4l2_construct_attribute
        r7 = 0xd5
        [sp] = r5
        [var_4h] = r4
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5964(r)
        [var_8h] = r7
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5954(r)
        fcn.00002084 ()
        (a, b) = compare (r6, 0)
        je 0x2798     // likely
        goto loc_0x000026ae;
    loc_0x00002798:
        // CODE XREF from sym._mmv4l2_construct_attribute @ 0x26ac(x)
        r3 = [0x0000279c] // [0x280c:4]=0x5896
        r2 = r8
        r7 = [0x000027a0] // [0x2810:4]=0x58c0
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r7 += pc      // 0x8068 // "handle" // str.handle
        [sp] = r5
        [var_4h] = r4
        r5 = 0xd7
        [var_ch] = r7
        [var_8h] = r5
        fcn.00002084 ()
        goto 0x2790
        
    loc_0x00002790:
        // CODE XREFS from sym._mmv4l2_construct_attribute @ 0x2736(x), 0x27b4(x), 0x27d0(x)
        r0 = r6
        sp += 0x1d0
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x000026ca;
        return r0;
    loc_0x000026ca:
        r3 = s1
        r0 = var_18h
        r1 = r7 + 8
        r8 = var_1d0h
        r4 = r3
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x78de(r)
        r2 = r7
        
    loc_0x000026da:
        // CODE XREF from sym._mmv4l2_construct_attribute @ 0x26f4(x)
        ldmdb r0, (ip, lr)
        r0 += 0x1c
        r6 = [r3 + 8]
        r5 = [r3 + 0xc]
        r3 += 0x1c
        stmdb r1, (ip, lr)
        r1 += 0x10    // 0x118 // U"a\x82(h"
        [r2 + 8] = r6
        // DATA XREFS from sym.mm_v4l2_capture_image @ 0x7770(r), 0x7828(r)
        [r2 + 0xc] = r5
        r2 += 0x10
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7898(r)
        (a, b) = compare (r3, r8)
        bne 0x26da    // likely
        goto loc_0x000026f6;
        return r0;
    loc_0x000026f6:
        r5 = 0
        r0 = [0x000026fc] // [0x27e8:4]=0x5a72 // "rZ"
        r1 = r7
        r2 = 0x10
        r0 += pc      // 0x8174 // "mmv4l2_attrs" // str.mmv4l2_attrs
        r3 = r5
        [sp] = r5
        sym.imp.mmf_attrs_new_from_data ()
        r6 = r0       // "mmv4l2_attrs" str.mmv4l2_attrs
        r0 = r7
        sym.imp.g_free ()
        if (r6) goto 0x2758 // likely
        goto loc_0x00002712;
    loc_0x00002758:
        // CODE XREFS from sym._mmv4l2_construct_attribute @ 0x2710(x), 0x2764(x)
        r2 = [r4 + 0x10]
        // DATA XREF from sym._mmv4l2_has_valid_fd @ 0x2a78(r)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x77b8(r)
        (a, b) = compare (r2, 2)
        je 0x2738     // unlikely
        goto loc_0x0000275e;
    loc_0x00002738:
        // CODE XREF from sym._mmv4l2_construct_attribute @ 0x275c(x)
        r1 = r5
        r0 = r6
        fcn.00002144 ()
        r7 = [r4 + 0xc]
        r2 = [r4 + 0x14]
        r1 = r5
        r3 = [r4 + 0x18] // section..text
        r0 = r6
        r5 += 1
        [sp] = r7
        r4 += 0x1c
        fcn.000020fc ()
        (a, b) = compare (r5, 0x10)
        // DATA XREF from sym.mm_v4l2_start_capture @ 0x72f0(r)
        je 0x2766     // unlikely
        goto loc_0x00002758;
    loc_0x00002766:
        // CODE XREF from sym._mmv4l2_construct_attribute @ 0x2756(x)
        r0 = r6
        r5 = [0x0000276c] // [0x27fc:4]=0x57f2
        sym.imp.mmf_attrs_commit ()
        r2 = [0x00002770] // [0x2800:4]=0x588e
        r3 = [0x00002774] // [0x2804:4]=0x591c
        r5 += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        r4 = [0x00002778] // [0x2808:4]=0x58aa
        r0 = 2
        r1 = 3
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        // DATA XREF from sym._mmv4l2_get_input @ 0x5afa(r)
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        r4 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        r5 += 0x68    // 0x7fd0 // "_mmv4l2_construct_attribute" // str._mmv4l2_construct_attribute
        [sp] = r4
        [var_4h] = r5
        mov.w r4, 0x1aa
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x58a4(r)
        [var_8h] = r4
        fcn.00002084 ()
    loc_0x000026da: // orphan
         // CODE XREF from sym._mmv4l2_construct_attribute @ 0x26f4(x)
         ldmdb r0, (ip, lr)
         r0 += 0x1c
         r6 = [r3 + 8]
         r5 = [r3 + 0xc]
         r3 += 0x1c
         stmdb r1, (ip, lr)
         r1 += 0x10               // 0x118 // U"a\x82(h"
         [r2 + 8] = r6 // DATA XREFS from sym.mm_v4l2_capture_image @ 0x7770(r), 0x7828(r)
         [r2 + 0xc] = r5
         r2 += 0x10 // DATA XREF from sym.mm_v4l2_capture_image @ 0x7898(r)
         (a, b) = compare (r3, r8)
         bne 0x26da               // likely

    loc_0x00002712: // orphan
         r5 = [0x00002714]        // [0x27ec:4]=0x5848 // "HX"
         r0 = 2
         r2 = [0x00002718]        // [0x27f0:4]=0x58e8 ".." // DATA XREF from sym.mm_v4l2_get_attribute_info @ 0x7202(r)
         r1 = 6
         r3 = [0x0000271c]        // [0x27f4:4]=0x5a5e // "^Z"
         r5 += pc                 // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
         r7 = [0x00002720]        // [0x27f8:4]=0x5900 "T." // (pstr 0x00002e54) "hY"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8184 // "%s: %s(%d) > failed to create v4l2 attrs" // str._s:__s__d____failed_to_create_v4l2_attrs
         mov.w r4, 0x18c
         r7 += pc                 // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
         r5 += 0x68               // 0x7fd0 // "_mmv4l2_construct_attribute" // str._mmv4l2_construct_attribute
         [sp] = r7
         [var_4h] = r5
         [var_8h] = r4 // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5a70(r)
         fcn.00002084 ()
         
    loc_0x0000275e: // orphan
         r5 += 1
         r4 += 0x1c
         (a, b) = compare (r5, 0x10)
         bne 0x2758               // likely

    loc_0x00002790: // orphan
         // CODE XREFS from sym._mmv4l2_construct_attribute @ 0x2736(x), 0x27b4(x), 0x27d0(x)
         r0 = r6
         sp += 0x1d0
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x000027b6: // orphan
         // CODE XREF from sym._mmv4l2_construct_attribute @ 0x26c8(x)
         r3 = [0x000027b8]        // [0x2814:4]=0x5982
         r2 = r8
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x8144 // "%s: %s(%d) > failed to alloc attrs constructor" // str._s:__s__d____failed_to_alloc_attrs_constructor
         [var_4h] = r4
         [sp] = r5
         r4 = 0x173
         r6 = r7
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_stop_capture (int16_t arg1) {
    loc_0x00007570:
        push (r4, r5, r6, r7, lr)
        sp -= 0x14    // U(pstr 0x00000164) "y\x068x\x1e7"
        r7 = [0x00007578] // [0x766c:4]=0xa8c
        r4 = r0       // arg1
        r6 = [0x0000757c] // [0x7670:4]=0x23a6
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = sym.imp.mmf_attrs_commit // [0x1db8:4]=0xe28fc600
        r5 = [0x00007584] // [0x7678:4]=0x24c6
        r6 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r5 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r6 += 0xd0    // 0x99fc // "mm_v4l2_stop_capture" // str.mm_v4l2_stop_capture
        lr = 0x271
        stm.w sp, (r5, r6)
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x761e     // likely
        goto loc_0x000075a2;
    loc_0x0000761e:
        // CODE XREF from sym.mm_v4l2_stop_capture @ 0x75a0(x)
        r3 = [0x00007620] // [0x7690:4]=0xa0e
        r2 = r7
        lr = [0x00007628] // [0x7694:4]=0xb80
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x273
        [sp] = r5
        r5 = 0x1001   // "og_status"
        [var_4h] = r6
        r5 |= 0x8000 << 16
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x75ca
        
    loc_0x000075ca:
        // CODE XREFS from sym.mm_v4l2_stop_capture @ 0x7648(x), 0x766a(x)
        r0 = r5
        sp += 0x14
        pop (r4, r5, r6, r7, pc)
        goto loc_0x000075aa;
        return r0;
    loc_0x000075aa:
        fcn.00002048 ()
        r0 = r4
        r1 = 0
        fcn.0000212c ()
        if (r0) goto 0x75d0 // unlikely
        goto loc_0x000075b8;
    loc_0x000075d0:
        // CODE XREF from sym.mm_v4l2_stop_capture @ 0x75b6(x)
        r3 = [0x000075d4] // [0x767c:4]=0x28b0 ":W"
        r2 = r7
        r1 = 6
        r0 = 2
        r3 += pc      // 0x9e8c // "%s: %s(%d) > cannot stop stream\n" // str._s:__s__d____cannot_stop_stream_n
        [sp] = r5
        [var_4h] = r6
        r5 = 0x27b
        [var_8h] = r5
        fcn.00002084 ()
        r0 = r4
        fcn.00001f00 ()
        r5 = r0
        (a, b) = compare (r0, 0)
        je 0x75c2     // likely
        goto loc_0x000075f4;
    loc_0x000075c2:
        // CODE XREFS from sym.mm_v4l2_stop_capture @ 0x75f2(x), 0x761c(x)
        r0 = [r4 + 0xd4]
        sym.imp.g_mutex_unlock ()
    loc_0x000075b8: // orphan
         r0 = r4
         fcn.00001f00 ()
         r5 = r0
         if (r0) 
    loc_0x000075ca: // orphan
         // CODE XREFS from sym.mm_v4l2_stop_capture @ 0x7648(x), 0x766a(x)
         r0 = r5
         sp += 0x14
         pop (r4, r5, r6, r7, pc)

        return r0;
    loc_0x000075f4: // orphan
         // CODE XREF from sym.mm_v4l2_stop_capture @ 0x75c0(x)
         r7 = [0x000075f8]        // [0x7680:4]=0x232a // "*#"
         r0 = 2
         r2 = [0x000075fc]        // [0x7684:4]=0xa04
         r1 = 6
         r3 = [0x00007600]        // [0x7688:4]=0x28a6
         r7 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         lr = [0x00007608]        // [0x768c:4]=0x2444
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9eb0 // "%s: %s(%d) > cannot free buffers\n" // str._s:__s__d____cannot_free_buffers_n
         r6 = 0x281
         lr += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r7 += 0xd0               // 0x99fc // "mm_v4l2_stop_capture" // str.mm_v4l2_stop_capture
         str.w lr, [sp]
         [var_4h] = r7
         [var_8h] = r6
         fcn.00002084 ()
         
    loc_0x0000764a: // orphan
         // CODE XREF from sym.mm_v4l2_stop_capture @ 0x75a8(x)
         r3 = [0x0000764c]        // [0x7698:4]=0x24be
         r2 = r7
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
         [sp] = r5
         r4 = 0x275
         [var_4h] = r6
         r5 = 0x1001              // "og_status"
         [var_8h] = r4
         r5 |= 0x8000 << 16
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_list_controls (int16_t arg1) {
    loc_0x00004f04:
        push (r4, r5, r6, r7, lr)
        sp -= 0x1c    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r7 = [0x00004f0c] // [0x5014:4]=0x30f8
        r5 = r0       // arg1
        r4 = [0x00004f10] // [0x5018:4]=0x336a // "j3"
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00004f14] // [0x501c:4]=0x30f4
        r6 = [0x00004f18] // [0x5020:4]=0x36a6
        r4 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r4 += 0x22c   // 0x84b0 // "_mmv4l2_list_controls" // str._mmv4l2_list_controls
        mov.w lr, 0x550
        // CODE XREF from sym._mmv4l2_print_control @ +0x330(x)
        [sp] = r6
        [var_4h] = r4
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        je 0x4fe6     // likely
        goto loc_0x00004f38;
    loc_0x00004fe6:
        // CODE XREF from sym._mmv4l2_list_controls @ 0x4f36(x)
        r3 = [0x00004fe8] // [0x505c:4]=0x3046 // "F0"
        r2 = r7
        lr = [0x00004ff0] // [0x5060:4]=0x3fb4
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x8fac // "h_v4l2" // str.h_v4l2
        r5 = 0x552
        // DATA XREF from sym.__mmv4l2_get_control @ 0x31aa(r)
        [sp] = r6
        [var_4h] = r4
        str.w lr, [sp, 0xc]
        [var_8h] = r5
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x4fb2
        
    loc_0x00004fb2:
        // CODE XREF from sym._mmv4l2_list_controls @ 0x5010(x)
        sp += 0x1c
        pop (r4, r5, r6, r7, pc)
        return r0;
    loc_0x00004f3e: // orphan
         // CODE XREF from sym._mmv4l2_list_controls @ 0x4f4e(x)
         r4 += 1

    loc_0x00004f40: // orphan
         // CODE XREF from sym._mmv4l2_list_controls @ 0x4f3c(x)
         r1 |= 0x80000000
         r2 = 1
         r0 = r5
         fcn.00001ef4 ()
         r1 = r0 - 0
         (>=) 
         goto loc_0x00004f50
    loc_0x00004f50: // orphan
         (a, b) = compare (r4, 0)
         je 0x4fb6                // likely

         goto loc_0x00004f54
    loc_0x00004f54: // orphan
         lr = [0x00004f5c]        // [0x5024:4]=0x4592
         (a, b) = compare (r4, 1)
         lr += pc
         bls 0x4fde               // likely

         goto loc_0x00004f5e
    loc_0x00004f5e: // orphan
         // CODE XREF from sym._mmv4l2_list_controls @ 0x4fe4(x)
         r7 = [0x00004f60]        // [0x5028:4]=0x3318
         r0 = 2
         r2 = [0x00004f64]        // [0x502c:4]=0x309c // DATA XREF from sym.__mmv4l2_get_control @ 0x312c(r)
         r1 = 3
         r3 = [0x00004f68]        // [0x5030:4]=0x4042 // "B@"
         r7 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x00004f6c]        // [0x5034:4]=0x3650 // "P6" // DATA XREFS from sym._mmv4l2_set_framerate @ 0x3b00(r), 0x3b20(r), 0x3b28(r), 0x3b2e(r), 0x3be0(r)
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8fb4 // "%s: %s(%d) > %u control%s found.\n" // str._s:__s__d_____u_control_s_found._n // DATA XREFS from sym._mmv4l2_set_framerate @ 0x3ad4(r), 0x3af4(r), 0x3afa(r)
         r5 = 0x56b
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r7 += 0x22c              // 0x84b0 // "_mmv4l2_list_controls" // str._mmv4l2_list_controls // DATA XREF from sym._mmv4l2_set_framerate @ 0x3b5e(r)
         [var_ch] = r4
         str.w lr, [sp, 0x10]
         stm.w sp, (r6, r7)
         [var_8h] = r5
         fcn.00002084 ()

    loc_0x00004f8a: // orphan
         // DATA XREF from sym.__mmv4l2_get_control @ 0x3076(r) // CODE XREF from sym._mmv4l2_list_controls @ 0x4fdc(r)
         r5 = [0x00004f8c]        // [0x5038:4]=0x32ec // DATA XREF from sym._mmv4l2_get_control @ 0x32ea(r)
         r0 = 2
         r2 = [0x00004f90]        // [0x503c:4]=0x3070 // "p0"
         r1 = 3
         r3 = [0x00004f94]        // [0x5040:4]=0x30fe // DATA XREF from sym.__mmv4l2_get_control @ 0x306a(r)
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x00004f98]        // [0x5044:4]=0x3624 // "$6"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n // DATA XREFS from sym._mmv4l2_set_format @ 0x39e2(r), 0x39ea(r)
         r4 = 0x572
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0x22c              // 0x84b0 // "_mmv4l2_list_controls" // str._mmv4l2_list_controls
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0

    loc_0x00004fb2: // orphan
         // CODE XREF from sym._mmv4l2_list_controls @ 0x5010(x)
         sp += 0x1c
         pop (r4, r5, r6, r7, pc)

        return r0;
    loc_0x00004fb6: // orphan
         // CODE XREF from sym._mmv4l2_list_controls @ 0x4f52(x)
         r5 = [0x00004fb8]        // [0x5048:4]=0x32c0 // DATA XREF from sym._mmv4l2_get_control @ 0x32ba(r)
         r0 = 2
         r2 = [0x00004fbc]        // [0x504c:4]=0x3044 "VV" // "D0"
         r1 = 3
         r3 = [0x00004fc0]        // [0x5050:4]=0x400e
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x00004fc4]        // [0x5054:4]=0x35f8
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8fd8 // "%s: %s(%d) > No control found.\n" // str._s:__s__d____No_control_found._n
         r4 = 0x56f
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0x22c              // 0x84b0 // "_mmv4l2_list_controls" // str._mmv4l2_list_controls
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         
         goto loc_0x00004fde
    loc_0x00004fde: // orphan
         // CODE XREF from sym._mmv4l2_list_controls @ 0x4f5c(x)
         lr = [0x00004fe4]        // [0x5058:4]=0x4fda // DATA XREF from sym._mmv4l2_set_control @ 0x35d4(r)
         lr += pc
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_get_format_by_fourcc (uint32_t arg1) {
    loc_0x00002910:
        r2 = [0x00002914] // [0x293c:4]=0xfee2
        r3 = 0
        push (r4)
        r2 += pc      // (pstr 0x00009564) "RGB332"
        r1 = r3
        // DATA XREFS from sym._mmv4l2_enum_inputs @ 0x5958(r), 0x595e(r)
        goto 0x2922
        
    loc_0x00002922:
        // CODE XREF from sym.__mmv4l2_get_format_by_fourcc @ 0x291a(x)
        r4 = r2 + r3
        r3 += 0xc
        r4 = [r4 + 4] // 0x12800 // "RGB1\x01"
        (a, b) = compare (r4, r0) // arg1
        bne 0x291c    // likely
        goto loc_0x0000292c;
        return r0;
    loc_0x0000292c:
        add.w r1, r1, r1, lsl 1
        add.w r0, r2, r1, lsl 2
        
    loc_0x00002934:
        // CODE XREF from sym.__mmv4l2_get_format_by_fourcc @ 0x293a(x)
        pop (r4)      // "mm_v4l2_priv.c" str.mm_v4l2_priv.c // (pstr 0x000084b0) "_mmv4l2_list_controls"
        bx lr
        return r0;
    loc_0x00002922: // orphan
         // CODE XREF from sym.__mmv4l2_get_format_by_fourcc @ 0x291a(x)
         r4 = r2 + r3
         r3 += 0xc
         r4 = [r4 + 4]            // 0x12800 // "RGB1\x01"
         (a, b) = compare (r4, r0) // arg1
         bne 0x291c               // likely

    loc_0x00002934: // orphan
         // CODE XREF from sym.__mmv4l2_get_format_by_fourcc @ 0x293a(x)
         pop (r4)                 // "mm_v4l2_priv.c" str.mm_v4l2_priv.c // (pstr 0x000084b0) "_mmv4l2_list_controls"
         bx lr

        return r0;
    loc_0x00002938: // orphan
         // CODE XREF from sym.__mmv4l2_get_format_by_fourcc @ 0x2920(x)
         r0 = 0
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_set_quality (int16_t arg1, int16_t arg2) {
    loc_0x00005cd0:
        r3 = [0x00005cd4] // [0x5e50:4]=0xc7cc
        ip = 0x6af
        r2 = [0x00005cd8] // [0x5e54:4]=388
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        push (r4, r5, r6, r7, r8, sb, lr)
        // DATA XREF from sym.__mmv4l2_apply_attribute @ 0x236e(r)
        sp -= 0xac
        sb = [r3 + r2] // 0x1262c // reloc.__stack_chk_guard
        // DATA XREF from sym.__mmv4l2_apply_attribute @ 0x234c(r)
        r7 = r0       // arg1
        r6 = [0x00005ce8] // [0x5e58:4]=0x2316
        r8 = r1       // arg2
        r4 = [0x00005cec] // [0x5e5c:4]=0x258a
        r0 = 2
        lr = [sb]
        r6 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00005cf8] // [0x5e60:4]=0x2312
        r4 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r5 = [0x00005cfc] // [0x5e64:4]=0x28c4
        r1 = 3
        r2 = r6       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r4 += 0x2dc   // 0x8560 // "_mmv4l2_set_quality" // str._mmv4l2_set_quality
        [sp] = r5
        [var_4h] = r4
        // DATA XREF from sym.__mmv4l2_apply_attribute @ 0x22f6(r)
        str.w lr, [sp, 0xa4]
        str.w ip, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r7, 0)
        // DATA XREF from sym._mmv4l2_get_attribute @ 0x2244(r)
        beq.w 0x5e24  // likely
        goto loc_0x00005d1c;
    loc_0x00005e24:
        // CODE XREF from sym._mmv4l2_set_quality @ 0x5d18(x)
        r3 = [0x00005e28] // [0x5e7c:4]=0x220a // "\n\""
        r2 = r6
        r7 = [0x00005e2c] // [0x5e80:4]=0x237c ".&...]"
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r7 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r6 = 0x6b1
        [sp] = r5
        [var_4h] = r4
        [var_ch] = r7
        [var_8h] = r6
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5d92
        
    loc_0x00005d92:
        // CODE XREFS from sym._mmv4l2_set_quality @ 0x5dc6(x), 0x5dfe(x), 0x5e4a(x)
        r2 = [var_a4h]
        r3 = [sb]
        (a, b) = compare (r2, r3)
        bne 0x5e4c    // unlikely
        goto loc_0x00005d9c;
        goto loc_0x00005d22;
        return r0;
    loc_0x00005d22:
        r1 = 0
        r2 = 0x8c
        r0 = var_18h
        fcn.00001ff0 ()
        r2 = var_18h
        r1 = 0x563e   // '>V'
        r0 = [r7]     // int fd
        r1 |= 0x408c << 16 // unsigned long request
        str.w r8, [sp, 0x18]
        sym.imp.ioctl () // int ioctl(0, 0x408c563e)
        (a, b) = compare (r0, 0)
        blt 0x5dc8    // unlikely
        goto loc_0x00005d44;
    loc_0x00005dc8:
        // CODE XREF from sym._mmv4l2_set_quality @ 0x5d42(x)
        fcn.00001fa8 ()
        r7 = r0
        r0 = [r0]
        fcn.00001eb8 ()
        mov.w r3, 0x6c0
        [var_8h] = r3
        r1 = 6
        r3 = [0x00005de0] // [0x5e74:4]=0x365e // "^6"
        // DATA XREF from sym._mmv4l2_get_attribute @ 0x227c(r)
        r2 = r6
        // DATA XREF from sym._mmv4l2_get_attribute @ 0x2240(r)
        [sp] = r5
        r3 += pc      // 0x9444 // "%s: %s(%d) > Unable to set jpeg quality to %d: %s (%d).\n" // str._s:__s__d____Unable_to_set_jpeg_quality_to__d:__s___d_._n
        [var_4h] = r4
        str.w r8, [sp, 0xc]
        
    loc_0x00005dea:
        // CODE XREF from sym._mmv4l2_set_quality @ 0x5e22(x)
        [var_10h] = r0
        r0 = 2
        r4 = [r7]
        [var_14h] = r4
        fcn.00002084 ()
        r0 = 0x100f   // '\x0f\x10' // "v4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5d92
        goto loc_0x00005d58;
        return r0;
    loc_0x00005d58:
        lr = [var_18h]
        r1 = 3
        r3 = [0x00005d60] // [0x5e68:4]=0x3752 // "R7"
        r2 = r6
        r0 = 2
        [sp] = r5
        // DATA XREF from sym.__mmv4l2_apply_attribute @ 0x232a(r)
        r3 += pc      // 0x94bc // "%s: %s(%d) > Quality set to %d\n" // str._s:__s__d____Quality_set_to__d_n
        str.w lr, [sp, 0xc]
        r7 = 0x6cd
        [var_4h] = r4
        [var_8h] = r7
        fcn.00002084 ()
        r3 = [0x00005d7c] // [0x5e6c:4]=0x2318
        r2 = r6
        r0 = 2
        r1 = 3
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        // DATA XREF from sym._mmv4l2_get_attribute @ 0x22ae(r)
        [sp] = r5
        [var_4h] = r4
        mov.w r5, 0x6d0
        [var_8h] = r5
        fcn.00002084 ()
        r0 = 0
    loc_0x00005d44: // orphan
         r0 = [r7]                // int fd
         r2 = var_18h
         r1 = 0x563d              // '=V'
         r1 |= 0x808c << 16       // unsigned long request
         sym.imp.ioctl () // int ioctl(0, 0x808c563d) // DATA XREF from sym._mmv4l2_get_attribute @ 0x21fe(r)
         (a, b) = compare (r0, 0)
         blt 0x5e00               // unlikely

    loc_0x00005d92: // orphan
         // CODE XREFS from sym._mmv4l2_set_quality @ 0x5dc6(x), 0x5dfe(x), 0x5e4a(x)
         r2 = [var_a4h]
         r3 = [sb]
         (a, b) = compare (r2, r3)
         bne 0x5e4c               // unlikely

         goto loc_0x00005d9c
    loc_0x00005d9c: // orphan
         sp += 0xac               // "N/A"
         pop (r4, r5, r6, r7, r8, sb, pc)

        return r0;
    loc_0x00005da2: // orphan
         // DATA XREF from sym._mmv4l2_get_attribute @ 0x22a8(r) // CODE XREF from sym._mmv4l2_set_quality @ 0x5d20(r)
         r3 = [0x00005da4]        // [0x5e70:4]=0x3662 // "b6"
         r2 = r6
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9410 // "%s: %s(%d) > Invalid jpeg quality parameter (%d).\n" // str._s:__s__d____Invalid_jpeg_quality_parameter___d_._n
         [sp] = r5 // DATA XREFS from sym._mmv4l2_get_attribute @ 0x2226(r), 0x2282(r)
         [var_4h] = r4
         r5 = 0x6b5
         str.w r8, [sp, 0xc]
         [var_8h] = r5
         fcn.00002084 ()
         r0 = 0x100b              // '\v\x10' // "__mmv4l2_query_control"
         r0 |= 0x8000 << 16 // DATA XREF from sym._mmv4l2_get_attribute @ 0x2238(r)
         
    loc_0x00005dea: // orphan
         // CODE XREF from sym._mmv4l2_set_quality @ 0x5e22(x)
         [var_10h] = r0
         r0 = 2
         r4 = [r7]
         [var_14h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
         goto loc_0x00005e00
    loc_0x00005e00: // orphan
         // CODE XREF from sym._mmv4l2_set_quality @ 0x5d56(x)
         fcn.00001fa8 () // DATA XREFS from sym._mmv4l2_get_attribute @ 0x21f6(r), 0x2260(r)
         r7 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         mov.w r3, 0x6c8
         [var_8h] = r3
         r2 = r6
         r3 = [0x00005e18]        // [0x5e78:4]=0x3660 // "`6"
         r1 = 6
         [sp] = r5 // DATA XREF from sym._mmv4l2_get_attribute @ 0x21fc(r)
         [var_4h] = r4
         r3 += pc                 // 0x9480 // "%s: %s(%d) > Unable to get jpeg quality to %d: %s (%d).\n" // str._s:__s__d____Unable_to_get_jpeg_quality_to__d:__s___d_._n
         str.w r8, [sp, 0xc]
         
    loc_0x00005e4c: // orphan
         // CODE XREF from sym._mmv4l2_set_quality @ 0x5d9a(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_get_fps (int16_t arg1, int16_t arg2) {
    loc_0x00006468:
        push (r4, r5, r6, r7, lr)
        s15 = (float) r0 . // arg1
        vcvt.f64.s32 d18, s15
        vldr d17, [pc, 0x64]
        r7 = [r1 + 4] // arg2
        s15 = (float) r7 .
        r4 = [r1]     // 0x9344 // "%s: %s(%d) > \n" // arg2
        push (d8)
        r6 = [0x00006484] // [0x64e0:4]=0x325e
        sp -= 0x1c    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r2 = [0x00006488] // [0x64e4:4]=0x1b76
        r1 = 3
        r3 = [0x0000648c] // [0x64e8:4]=0x3474
        r0 = 2
        lr = [0x00006494] // [0x64ec:4]=0x332c
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        vcvt.f64.s32 d16, s15
        s15 = (float) r4 .
        r3 += pc      // 0x9914 // "%s: %s(%d) > (%f fps).\n" // str._s:__s__d______f_fps_._n
        r6 += pc      // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
        lr += pc      // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
        mov.w r5, 0x12c
        r6 += 0x84    // 0x9784 // "mmv4l2_get_fps" // str.mmv4l2_get_fps
        str.w lr, [sp]
        [var_4h] = r6
        [var_8h] = r5
        vcvt.f64.s32 d19, s15
        vmla.f64 d16, d19, d17
        d16 = (float) d18 / d16
        vmul.f64 d8, d16, d17
        vstr d8, [sp, 0x10]
        fcn.00002084 ()
        r0 = (float) r1 . d8
        sp += 0x1c
        pop (d8)
        pop (r4, r5, r6, r7, pc) // r13
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_query_control (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00002f4c:
        push (r4, r5, r6, r7, r8, sb, lr)
        sp -= 0x1c    // U(pstr 0x00000200) "//_ot\x81vX"
        r8 = [0x00002f58] // [0x3038:4]=0x50ac
        r5 = r0       // arg1
        r6 = [0x00002f5c] // [0x303c:4]=0x531e
        sb = r1       // arg2
        r8 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00002f60] // [0x3040:4]=0x50a4
        r7 = [0x00002f64] // [0x3044:4]=0x5656 // "VV"
        r6 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r4 = r2       // arg3
        r0 = 2
        r2 = r8       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r7 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r6 += 0x60    // 0x82e4 // "__mmv4l2_query_control" // str.__mmv4l2_query_control
        lr = 0x1bf
        [sp] = r7
        [var_4h] = r6
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        // DATA XREF from sym.mm_v4l2_realize @ 0x6bce(r)
        je 0x3010     // likely
        goto loc_0x00002f86;
    loc_0x00003010:
        // CODE XREF from sym.__mmv4l2_query_control @ 0x2f84(x)
        r3 = [0x00003014] // [0x305c:4]=0x501e
        r2 = r8
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5266(r)
        // DATA XREF from sym.mm_v4l2_realize @ 0x6a30(r)
        r5 = [0x00003018] // [0x3060:4]=0x5190
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x1c1
        [sp] = r7
        [var_4h] = r6
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x2fce
        
    loc_0x00002fce:
        // CODE XREFS from sym.__mmv4l2_query_control @ 0x300e(x), 0x3036(x)
        sp += 0x1c
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52a6(r)
        pop (r4, r5, r6, r7, r8, sb, pc)
        goto loc_0x00002fa8;
        return r0;
    loc_0x00002fa8:
        // CODE XREF from sym.__mmv4l2_query_control @ 0x2fde(x)
        r5 = [0x00002fac] // [0x3048:4]=0x52ce
        r0 = 2
        r2 = [0x00002fb0] // [0x304c:4]=0x5052 // "RP"
        r1 = 3
        r3 = [0x00002fb4] // [0x3050:4]=0x50e0
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r6 = [0x00002fb8] // [0x3054:4]=0x5606
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        mov.w r4, 0x1d2
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x60    // 0x82e4 // "__mmv4l2_query_control" // str.__mmv4l2_query_control
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0
    loc_0x00002fce: // orphan
         // CODE XREFS from sym.__mmv4l2_query_control @ 0x300e(x), 0x3036(x)
         sp += 0x1c // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52a6(r)
         pop (r4, r5, r6, r7, r8, sb, pc)

        return r0;
    loc_0x00002fd4: // orphan
         // CODE XREF from sym.__mmv4l2_query_control @ 0x2fa6(x)
         fcn.00001fa8 ()
         r4 = r0
         r0 = [r0]
         (a, b) = compare (r0, 0x16)
         je 0x2fa8                // unlikely

         goto loc_0x00002fe0
    loc_0x00002fe0: // orphan
         fcn.00001eb8 ()
         [sp] = r7
         [var_4h] = r6
         r3 = 0x1cd
         str.w sb, [sp, 0xc]
         r2 = r8 // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x55c4(r)
         [var_8h] = r3
         r1 = 6
         r3 = [0x00002ff8]        // [0x3058:4]=0x5748 // "HW"
         r3 += pc                 // "%s: %s(%d) > unable to query control 0x%8.8x: %s (%d).\n"
         [var_10h] = r0
         r0 = 2 // DATA XREF from sym.mm_v4l2_realize @ 0x6d14(r)
         r4 = [r4]
         [var_14h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_set_buf_type (int16_t arg1, int16_t arg2) {
    loc_0x00002a28:
        push (r4, r5, r6, lr)
        sp -= 0x10
        [r0 + 8] = r1 // arg2
        r0 = r1       // arg2
        rsym.__mmv4l2_get_buf_type_name ()
        r2 = [0x00002a38] // [0x2a5c:4]=0x55cc
        r3 = [0x00002a38] // [0x2a60:4]=0x5b68 // "h["
        r1 = 6
        r6 = [0x00002a3c] // [0x2a64:4]=0x5b82
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r5 = [0x00002a40] // [0x2a68:4]=0x5838 // "8X"
        r3 += pc      // 0x85ac // "%s: %s(%d) > buf_type (%s)\n" // str._s:__s__d____buf_type___s__n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        mov.w r4, 0x12c
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        [var_ch] = r0
        r0 = 2
        fcn.00002084 ()
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x55a6(r)
        sp += 0x10
        pop (r4, r5, r6, pc) // r13
        return r0;
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int rsym.__mmv4l2_get_buf_type_name (int r0, int r1) {
    loc_0x00001d04:
        // CALL XREF from sym._mmv4l2_set_buf_type @ 0x2a30(x)
        // CALL XREF from sym._mmv4l2_enum_formats @ 0x57de(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym.__mmv4l2_get_buf_type_name @ 0x1d04(r)
        pc = [ip + 0x7a8]! // 0x124b4 // reloc.__mmv4l2_get_buf_type_name // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_enum_formats (int16_t arg1, int16_t arg2) {
    loc_0x000056e8:
        r3 = [0x000056ec] // [0x58d4:4]=0xcdb8
        r2 = [0x000056ec] // [0x58d8:4]=388
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        sp -= 0x6c    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r2 = [r3 + r2] // 0x1262c // reloc.__stack_chk_guard
        r8 = r0       // arg1
        r5 = [0x000056fc] // [0x58dc:4]=0x2906
        sb = r1       // arg2
        r4 = [0x00005700] // [0x58e0:4]=0x2b78 // "x+"
        r0 = 2
        [var_1ch] = r2
        r5 += pc      // 0x800c // "V4L2" // str.V4L2
        lr = [var_1ch]
        r4 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r3 = [0x0000570c] // [0x58e4:4]=0x28f8
        // DATA XREF from sym._mmv4l2_deconstruct_attribute @ 0x284e(r)
        r1 = 3
        sl = [0x00005714] // [0x58e8:4]=0x2eaa
        r2 = r5       // "V4L2" str.V4L2
        r7 = [lr]
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        sl += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r6 = 0x629
        r4 += 0x288   // 0x850c // "_mmv4l2_enum_formats" // str._mmv4l2_enum_formats
        str.w sl, [sp]
        [var_4h] = r4
        [var_64h] = r7
        [var_8h] = r6
        fcn.00002084 ()
        cmp.w r8, 0
        beq.w 0x58a4  // likely
        goto loc_0x0000573a;
    loc_0x000058a4:
        // CODE XREF from sym._mmv4l2_enum_formats @ 0x5736(x)
        r3 = [0x000058a8] // [0x5938:4]=0x278a
        r2 = r5
        r6 = [0x000058ac] // [0x593c:4]=0x28fc
        // DATA XREF from sym._mmv4l2_construct_attribute @ 0x2774(r)
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r6 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r5 = 0x62b
        str.w sl, [sp]
        [var_4h] = r4
        // DATA XREF from sym._mmv4l2_querycap @ 0x2d00(r)
        [var_ch] = r6
        [var_8h] = r5
        // DATA XREF from sym._mmv4l2_construct_attribute @ 0x279c(r)
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5894
        
    loc_0x00005894:
        // CODE XREF from sym._mmv4l2_enum_formats @ 0x58cc(x)
        r1 = [var_1ch]
        // DATA XREF from sym._mmv4l2_construct_attribute @ 0x2798(r)
        r2 = [var_64h]
        r3 = [r1]
        // DATA XREFS from sym._mmv4l2_querycap @ 0x2e0e(r), 0x2e18(r)
        (a, b) = compare (r2, r3)
        bne 0x58ce    // unlikely
        goto loc_0x0000589e;
        return r0;
    loc_0x0000575a: // orphan
         // CODE XREF from sym._mmv4l2_enum_formats @ 0x5868(x)
         r5 = [var_24h]
         (a, b) = compare (r5, r4)
         je 0x5782                // likely

         goto loc_0x00005760
    loc_0x00005760: // orphan
         r2 = [0x00005764]        // [0x58f8:4]=0x289e
         r0 = 2
         r3 = [0x00005768]        // [0x58fc:4]=0x3af4
         r1 = 5
         r6 = [0x0000576c]        // [0x5900:4]=0x2e54 "hY" // "T."
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9264 // "%s: %s(%d) > Warning: driver returned wrong format index %u.\n" // str._s:__s__d____Warning:_driver_returned_wrong_format_index__u._n
         [var_ch] = r5
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 = 0x63a
         str.w sl, [sp, 4]
         [sp] = r6
         [var_8h] = r5
         fcn.00002084 ()

    loc_0x00005782: // orphan
         // CODE XREF from sym._mmv4l2_enum_formats @ 0x575e(x)
         r5 = [var_28h]
         (a, b) = compare (r5, sb)
         je 0x57aa                // likely

         goto loc_0x00005788
    loc_0x00005788: // orphan
         r2 = [0x0000578c]        // [0x5904:4]=0x2876 // "v("
         r0 = 2
         r3 = [0x00005790]        // [0x5908:4]=0x3b0c
         r1 = 5
         r6 = [0x00005794]        // [0x590c:4]=0x2e2c // ",."
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x92a4 // "%s: %s(%d) > Warning: driver returned wrong format type %u.\n" // str._s:__s__d____Warning:_driver_returned_wrong_format_type__u._n
         [var_ch] = r5
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 = 0x63f
         str.w fp, [sp, 4]
         [sp] = r6
         [var_8h] = r5
         fcn.00002084 ()

    loc_0x000057aa: // orphan
         // CODE XREF from sym._mmv4l2_enum_formats @ 0x5786(x)
         r0 = [var_50h]           // int16_t arg1 // DATA XREF from sym._mmv4l2_deconstruct_attribute @ 0x2852(r)
         fcn.00002940 ()          // fcn.00002940(0x0)
         r3 = [var_50h]
         r6 = [0x000057b4]        // [0x5910:4]=0x284c // "L("
         r1 = 3
         r5 = [0x000057b8]        // [0x5914:4]=0x2e02
         lr = 0x643
         r6 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_14h] = r3
         r3 = [0x000057c4]        // [0x5918:4]=0x3b16
         r5 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c // DATA XREF from sym._mmv4l2_deconstruct_attribute @ 0x285a(r)
         r2 = r6                  // "V4L2" str.V4L2
         str.w lr, [sp, 8]
         r3 += pc                 // 0x92e4 // "%s: %s(%d) > \tFormat %u: %s (%08x)\n" // str._s:__s__d_____tFormat__u:__s___08x__n
         [var_ch] = r4
         [var_4h] = r7
         r4 += 1
         [sp] = r5
         [var_10h] = r0
         r0 = 2
         fcn.00002084 ()
         r0 = [var_28h]
         rsym.__mmv4l2_get_buf_type_name ()
         lr = [var_28h]
         r3 = [0x000057e8]        // [0x591c:4]=0x3b14 // DATA XREF from sym._mmv4l2_open @ 0x2a8e(r)
         r2 = r6                  // "V4L2" str.V4L2
         r1 = 3
         stm.w sp, (r5, r7)
         r3 += pc                 // 0x9308 // "%s: %s(%d) > \tType: %s (%u)\n" // str._s:__s__d_____tType:__s___u__n // DATA XREF from sym._mmv4l2_construct_attribute @ 0x2768(r)
         str.w lr, [sp, 0x10] // DATA XREF from sym._mmv4l2_deconstruct_attribute @ 0x2828(r)
         lr = 0x645
         str.w lr, [sp, 8]
         [var_ch] = r0
         r0 = 2
         fcn.00002084 ()
         r3 = [0x00005808]        // [0x5920:4]=0x3b18
         r2 = r6                  // "V4L2" str.V4L2
         r1 = 3
         r3 += pc                 // 0x9328 // "%s: %s(%d) > \tName: %.32s\n" // str._s:__s__d_____tName:__.32s_n
         r0 = 2
         lr = 0x646
         stm.w sp, (r5, r7, lr)
         lr = var_30h
         str.w lr, [sp, 0xc]
         fcn.00002084 ()
         r1 = [var_50h] // DATA XREFS from sym._mmv4l2_log_status @ 0x2ee6(r), 0x2ef0(r)
         r0 = r8
         fcn.00001e94 ()
         r3 = [0x00005830]        // [0x5924:4]=0x3b0c
         r2 = r6                  // "V4L2" str.V4L2
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
         r6 = 0x64a // DATA XREF from sym._mmv4l2_deconstruct_attribute @ 0x2856(r)
         stm.w sp, (r5, r7)
         [var_8h] = r6
         fcn.00002084 ()

    loc_0x00005844: // orphan
         // CODE XREF from sym._mmv4l2_enum_formats @ 0x5758(x)
         r1 = 0
         r2 = 0x40                // '@' // DATA XREF from sym._mmv4l2_construct_attribute @ 0x2712(r)
         r0 = var_24h
         fcn.00001ff0 ()
         r1 = 0x5602
         r0 = [r8]                // int fd
         r1 |= 0xc040 << 16       // unsigned long request
         r2 = var_24h
         [var_24h] = r4
         str.w sb, [sp, 0x28]
         sym.imp.ioctl () // int ioctl(0, 0xc0405602)
         (a, b) = compare (r0, 0)
         bge.w 0x575a             // likely

         goto loc_0x0000586c
    loc_0x0000586c: // orphan
         r5 = [0x00005870]        // [0x5928:4]=0x2a0a // "\n*"
         r0 = 2
         r2 = [0x00005874]        // [0x592c:4]=0x278e
         r1 = 3
         r3 = [0x00005878]        // [0x5930:4]=0x281c
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x0000587c]        // [0x5934:4]=0x2d42 // "B-"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x64d
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0x288              // 0x850c // "_mmv4l2_enum_formats" // str._mmv4l2_enum_formats
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4 // DATA XREF from sym._mmv4l2_construct_attribute @ 0x276e(r)
         fcn.00002084 ()
         r0 = 0

    loc_0x00005894: // orphan
         // CODE XREF from sym._mmv4l2_enum_formats @ 0x58cc(x)
         r1 = [var_1ch] // DATA XREF from sym._mmv4l2_construct_attribute @ 0x2798(r)
         r2 = [var_64h]
         r3 = [r1] // DATA XREFS from sym._mmv4l2_querycap @ 0x2e0e(r), 0x2e18(r)
         (a, b) = compare (r2, r3)
         bne 0x58ce               // unlikely

         goto loc_0x0000589e
    loc_0x0000589e: // orphan
         sp += 0x6c
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x000058ce: // orphan
         // CODE XREF from sym._mmv4l2_enum_formats @ 0x589c(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_cap_get_buf_type (int16_t arg1) {
    loc_0x00005fe8:
        r2 = r0 << 0x1f // arg1
        push (r4, r5, r6, lr)
        sp -= 0x10
        bmi 0x5ffa    // unlikely
        goto loc_0x00005ff0;
    loc_0x00005ffa:
        // CODE XREF from sym.mmv4l2_cap_get_buf_type @ 0x5fee(x)
        r0 = 1
        goto 0x5ff6
        
    loc_0x00005ff6:
        // CODE XREFS from sym.mmv4l2_cap_get_buf_type @ 0x5ffc(x), 0x6022(x)
        sp += 0x10
        pop (r4, r5, r6, pc)
        goto loc_0x00005ff4;
        return r0;
    loc_0x00005ff4:
        r0 = 2
    loc_0x00005ff6: // orphan
         // CODE XREFS from sym.mmv4l2_cap_get_buf_type @ 0x5ffc(x), 0x6022(x)
         sp += 0x10
         pop (r4, r5, r6, pc)

        return r0;
    loc_0x00005ffe: // orphan
         // CODE XREF from sym.mmv4l2_cap_get_buf_type @ 0x5ff2(x)
         r2 = [0x00006000]        // [0x6024:4]=0x2000
         r0 = 2
         r3 = [0x00006004]        // [0x6028:4]=0x3784
         r1 = 6
         r6 = [0x00006008]        // [0x602c:4]=0x37be
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r5 = [0x0000600c]        // [0x6030:4]=0x36ea
         r3 += pc                 // 0x9794 // "%s: %s(%d) > Device supports neither capture nor output.\n" // str._s:__s__d____Device_supports_neither_capture_nor_output._n
         r6 += pc                 // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
         r4 = 0x6b                // 'k'
         r5 += pc                 // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         mov.w r0, -1
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_start_capture (int16_t arg1) {
    loc_0x000072dc:
        push (r4, r5, r6, r7, r8, lr)
        sp -= 0x18
        r7 = [0x000072e4] // [0x750c:4]=0xd1c "bute" // "bute"
        r5 = r0       // arg1
        r8 = [0x000072ec] // [0x7510:4]=0x2636 // "6&"
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = fcn.00002048 // [0x2048:4]=0xe28fc600
        r6 = [0x000072f4] // [0x7518:4]=0x2756 // "V'"
        r8 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r6 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r8 += 0xb8    // 0x99e4 // "mm_v4l2_start_capture" // str.mm_v4l2_start_capture
        mov.w r4, 0x220
        stm.w sp, (r6, r8)
        [var_8h] = r4
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        beq.w 0x7496  // likely
        goto loc_0x00007314;
    loc_0x00007496:
        // CODE XREF from sym.mm_v4l2_start_capture @ 0x7310(x)
        r3 = [0x00007498] // [0x7560:4]=0xb96
        r2 = r7
        lr = [0x000074a0] // [0x7564:4]=0xd08 "es" // "es"
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r5 = 0x222
        [sp] = r6
        r4 = 0x1001   // "og_status"
        str.w r8, [sp, 4]
        r4 |= 0x8000 << 16
        str.w lr, [sp, 0xc]
        [var_8h] = r5
        fcn.00002084 ()
        goto 0x7374
        
    loc_0x00007374:
        // CODE XREFS from sym.mm_v4l2_start_capture @ 0x7494(x), 0x74c2(x), 0x74e6(x), 0x750a(x)
        r0 = r4
        sp += 0x18
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x0000731e;
        return r0;
    loc_0x0000731e:
        r0 = [r5 + 0xd4]
        (a, b) = compare (r0, 0)
        beq.w 0x74e8  // unlikely
        goto loc_0x00007328;
    loc_0x000074e8:
        // CODE XREF from sym.mm_v4l2_start_capture @ 0x7324(x)
        r3 = [0x000074ec] // [0x756c:4]=0x2620 // " &"
        r2 = r7
        r0 = 2
        r1 = 3
        r3 += pc      // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
        r5 = 0x22b
        [sp] = r6
        r4 = 0x1001   // "og_status"
        str.w r8, [sp, 4]
        r4 |= 0x8000 << 16
        [var_8h] = r5
        fcn.00002084 ()
        goto 0x7374
    loc_0x00007328: // orphan
         fcn.00002048 ()
         r2 = var_18h
         r1 = [0x00007330]        // [0x751c:4]=0xf08 "_mmv4l2_get_field_name" // "_mmv4l2_get_field_name"
         r3 = 5
         r0 = r4
         [r2 - 0x4]! = r3
         r1 += pc                 // 0x8244 // "nbuffers" // str.nbuffers
         sym.imp.mm_attrs_get_int_by_name ()
         r0 = r5
         r1 = [var_14h]
         r2 = 0
         fcn.00002018 ()
         r4 = r0
         if (!r0) 
         goto loc_0x0000734c
    loc_0x0000734c: // orphan
         r3 = [0x00007350]        // [0x7520:4]=0x2a10
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9d68 // "%s: %s(%d) > _mmv4l2_alloc_buffers() FAIL..\n" // str._s:__s__d_____mmv4l2_alloc_buffers___FAIL.._n
         [sp] = r6
         str.w r8, [sp, 4]
         r6 = 0x236
         [var_8h] = r6
         fcn.00002084 ()

    loc_0x00007366: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x73e8(x)
         r3 = [r5 + 4]
         (a, b) = compare (r3, 1)
         je 0x7418                // unlikely

         goto loc_0x0000736c
    loc_0x0000736c: // orphan
         // CODE XREFS from sym.mm_v4l2_start_capture @ 0x7416(x), 0x741e(x)
         r0 = [r5 + 0xd4]
         sym.imp.g_mutex_unlock ()

    loc_0x00007374: // orphan
         // CODE XREFS from sym.mm_v4l2_start_capture @ 0x7494(x), 0x74c2(x), 0x74e6(x), 0x750a(x)
         r0 = r4
         sp += 0x18
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x0000737c: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x734a(x)
         r3 = [0x00007380]        // [0x7524:4]=0x2a10
         r0 = 2
         r1 = 3
         r2 = r7
         r3 += pc                 // 0x9d98 // "%s: %s(%d) > success alloc buffers\n" // str._s:__s__d____success_alloc_buffers_n
         [sp] = r6
         str.w r8, [sp, 4]
         r6 = 0x23a
         [var_8h] = r6
         fcn.00002084 ()
         r3 = [var_14h]
         (a, b) = compare (r3, 0)
         ble 0x7420               // unlikely

         goto loc_0x0000739c
    loc_0x0000739c: // orphan
         r6 = r4
         
         goto loc_0x000073a0
    loc_0x000073a0: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x73b6(x)
         r3 = [var_14h]
         (a, b) = compare (r3, r6)
         ble 0x7420               // unlikely

    loc_0x000073a6: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x739e(x)
         r1 = r6
         r0 = r5
         r2 = 0
         r6 += 1
         fcn.000020cc ()
         r4 = r0
         (a, b) = compare (r0, 0)
         je 0x73a0                // likely

         goto loc_0x000073b8
    loc_0x000073b8: // orphan
         r7 = [0x000073bc]        // [0x7528:4]=0x2566 // "f%"
         r0 = 2
         r2 = [0x000073c0]        // [0x752c:4]=0xc40 // "@\f"
         r1 = 6
         r3 = [0x000073c4]        // [0x7530:4]=0x29ee
         r7 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         lr = [0x000073cc]        // [0x7534:4]=0x2680
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9dbc // "%s: %s(%d) > _mmv4l2_queue_buffer() FAIL..\n" // str._s:__s__d_____mmv4l2_queue_buffer___FAIL.._n
         r6 = 0x243
         lr += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r7 += 0xb8               // 0x99e4 // "mm_v4l2_start_capture" // str.mm_v4l2_start_capture
         str.w lr, [sp]
         [var_4h] = r7
         [var_8h] = r6
         fcn.00002084 ()

    loc_0x000073e0: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x7470(x)
         r0 = r5
         fcn.00001f00 ()
         (a, b) = compare (r0, 0)
         je 0x7366                // likely

         goto loc_0x000073ea
    loc_0x000073ea: // orphan
         r7 = [0x000073ec]        // [0x7538:4]=0x2534 // "4%"
         r0 = 2
         r2 = [0x000073f0]        // [0x753c:4]=0xc0e
         r1 = 6
         r3 = [0x000073f4]        // [0x7540:4]=0x2a60 // "`*"
         r7 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         lr = [0x000073fc]        // [0x7544:4]=0x2650 ".Y" // "P&"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9e60 // "%s: %s(%d) > _mmv4l2_free_buffers() FAIL..\n" // str._s:__s__d_____mmv4l2_free_buffers___FAIL.._n
         r7 += 0xb8               // 0x99e4 // "mm_v4l2_start_capture" // str.mm_v4l2_start_capture
         lr += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r6 = 0x25f
         str.w lr, [sp]
         [var_4h] = r7
         [var_8h] = r6
         fcn.00002084 ()
         r3 = [r5 + 4]
         (a, b) = compare (r3, 1)
         bne 0x736c               // likely

         goto loc_0x00007418
    loc_0x00007418: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x736a(x)
         r0 = r5
         fcn.00001ec4 ()
         
    loc_0x00007420: // orphan
         // CODE XREFS from sym.mm_v4l2_start_capture @ 0x739a(x), 0x73a4(x)
         r7 = [0x00007424]        // [0x7548:4]=0xbde
         r1 = 3
         r8 = [0x0000742c]        // [0x754c:4]=0x24f8
         r0 = 2
         r7 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 = [0x00007430]        // [0x7550:4]=0x29b0
         r6 = [0x00007430]        // [0x7554:4]=0x2616
         r8 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r2 = r7                  // "V4L2" str.V4L2
         r3 += pc                 // 0x9de8 // "%s: %s(%d) > success queue buffers\n" // str._s:__s__d____success_queue_buffers_n
         mov.w r4, 0x248
         r6 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         [var_8h] = r4
         r8 += 0xb8               // 0x99e4 // "mm_v4l2_start_capture" // str.mm_v4l2_start_capture
         stm.w sp, (r6, r8)
         fcn.00002084 ()
         r0 = r5
         r1 = 1
         fcn.0000212c ()
         r2 = r7                  // "V4L2" str.V4L2
         r4 = r0
         r0 = 2
         if (!r4) 
         goto loc_0x0000745a
    loc_0x0000745a: // orphan
         r3 = [0x0000745c]        // [0x7558:4]=0x29a4
         r1 = 6
         [sp] = r6
         r6 = 0x24e
         r3 += pc                 // 0x9e0c // "%s: %s(%d) > _mmv4l2_enable_stream() FAIL..\n" // str._s:__s__d_____mmv4l2_enable_stream___FAIL.._n
         str.w r8, [sp, 4]
         [var_8h] = r6
         fcn.00002084 ()
         
         goto loc_0x00007472
    loc_0x00007472: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x7458(x)
         r3 = [0x00007474]        // [0x755c:4]=0x29bc
         r1 = 3
         [sp] = r6
         r6 = 0x252
         r3 += pc                 // 0x9e3c // "%s: %s(%d) > success enable stream\n" // str._s:__s__d____success_enable_stream_n
         str.w r8, [sp, 4]
         [var_8h] = r6
         fcn.00002084 ()
         str.w r4, [r5, 0xd8]
         r0 = [r5 + 0xd4]
         sym.imp.g_mutex_unlock ()
         
    loc_0x000074c4: // orphan
         // CODE XREF from sym.mm_v4l2_start_capture @ 0x731a(x)
         r3 = [0x000074c8]        // [0x7568:4]=0x2664 "lZ" // "d&"
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9b34 // "%s: %s(%d) > cannot get content attribute" // str._s:__s__d____cannot_get_content_attribute
         r5 = 0x227               // (pstr 0x00004800) "B9"
         [sp] = r6
         r4 = 0x1006              // "atus"
         str.w r8, [sp, 4]
         r4 |= 0x8000 << 16
         [var_8h] = r5
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_is_capture (int16_t arg1) {
    loc_0x00002a08:
        r0 = [r0 + 8] // arg1
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x586c(r)
        r2 = r0 - 1   // arg1
        rsbs r0, r2, 0
        // DATA XREF from sym._mmv4l2_is_capture @ 0x2a08(r)
        // DATA XREFS from sym.mm_v4l2_start_capture @ 0x734c(r), 0x737c(r)
        adc.w r0, r0, r2 // arg1
        bx lr
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_set_attribute (int16_t arg1, int16_t arg2) {
    loc_0x00007068:
        push (r2, r3)
        push (r4, r5, r6, r7, r8, sb, lr)
        sp -= 0x1c
        r7 = [0x00007074] // [0x7110:4]=0xf8e "l2_open" // "l2_open"
        r4 = r0       // arg1
        r8 = [0x0000707c] // [0x7114:4]=0x28a8 ".."
        sb = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00007080] // [0x7118:4]=0x22b8
        r6 = [0x00007080] // [0x711c:4]=0x29c2
        r8 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r5 = 0x1ef    // (pstr 0x00000e00) "attrs_new_from_data"
        r6 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r8 += 0x6c    // 0x9998 // "mm_v4l2_set_attribute" // str.mm_v4l2_set_attribute
        [var_8h] = r5
        [sp] = r6
        str.w r8, [sp, 4]
        r5 = [var_38h] // r2
        fcn.00002084 ()
        if (!r4) goto 0x70c0 // likely
        goto loc_0x000070a4;
    loc_0x000070c0:
        // CODE XREF from sym.mm_v4l2_set_attribute @ 0x70a2(x)
        r3 = [0x000070c4] // [0x7120:4]=0xf6e "_type" // "n\x0f" // "_type"
        r2 = r7
        r5 = [0x000070c8] // [0x7124:4]=0x10e0 "erptr" // "erptr"
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x1f1
        stm.w sp, (r6, r8)
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x401
        r0 |= 0x8000 << 16
        goto 0x70b6
        
    loc_0x000070b6:
        // CODE XREFS from sym.mm_v4l2_set_attribute @ 0x70e6(x), 0x710e(x)
        sp += 0x1c
        pop (r4, r5, r6, r7, r8, sb, lr)
        sp += 8       // 0x178000 // r13
        bx lr
        goto loc_0x000070a6;
        return r0;
    loc_0x000070a6:
        r6 = var_3ch
        r0 = r4
        r1 = sb
        r2 = r5
        r3 = r6
        [var_14h] = r6
        fcn.00002120 ()
    loc_0x000070b6: // orphan
         // CODE XREFS from sym.mm_v4l2_set_attribute @ 0x70e6(x), 0x710e(x)
         sp += 0x1c
         pop (r4, r5, r6, r7, r8, sb, lr)
         sp += 8                  // 0x178000 // r13
         bx lr

        return r0;
    loc_0x000070e8: // orphan
         // CODE XREF from sym.mm_v4l2_set_attribute @ 0x70a4(x)
         r3 = [0x000070ec]        // [0x7128:4]=0xf46 "mv4l2_set_buf_type" // "F\x0f" // "mv4l2_set_buf_type"
         r2 = r7
         r5 = [0x000070f0]        // [0x712c:4]=0x2c58 // "X,"
         r0 = 2
         r1 = 5
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r5 += pc                 // 0x9d50 // "first_attribute_name" // str.first_attribute_name
         mov.w r4, 0x1f2
         stm.w sp, (r6, r8)
         [var_ch] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0x101               // "NU"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00002120 (int r0, int r1) {
    loc_0x00002120:
        // CALL XREF from sym.mm_v4l2_set_attribute @ 0x70b2(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002120 @ 0x2120(r)
        pc = [ip + 0x4e8]! // 0x12610 // reloc._mmv4l2_set_attribute // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_has_valid_buf_type (int16_t arg1) {
    loc_0x00002a6c:
        r0 = [r0 + 8] // arg1
        r0 += 1
        it ne
        r0 = 1
        bx lr
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_capture_image (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4, int16_t arg_e0h, int16_t arg_e4h, int16_t arg_e8h, int16_t arg_ech, int16_t arg_f0h, int16_t arg_f4h) {
    loc_0x0000769c:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        r5 = r0       // arg1
        r6 = [0x000076a8] // [0x7bfc:4]=0xadf2
        sp -= 0xbc
        r0 = [0x000076b0] // [0x7c00:4]=388
        r8 = r1       // arg2
        r4 = [0x000076b4] // [0x7c04:4]=0x950 // "P\t"
        r6 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        [var_34h] = r2 // arg3
        r1 = 3
        r4 += pc      // 0x800c // "V4L2" // str.V4L2
        [var_2ch] = r3 // arg4
        [s2] = r4
        r0 = [r6 + r0] // 0x1262c // reloc.__stack_chk_guard
        r2 = r4       // "V4L2" str.V4L2
        r4 = [arg_e8h]
        mov.w r6, 0x298
        r7 = [0x000076d0] // [0x7c08:4]=0x2254 // "T\""
        [var_30h] = r0
        r0 = 2
        ip = [var_30h]
        r7 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        [var_3ch] = r4
        r7 += 0xe8    // 0x9a14 // "mm_v4l2_capture_image" // str.mm_v4l2_capture_image
        r4 = [arg_ech] // "first_attribute_name" str.first_attribute_name
        lr = [ip]
        r3 = [0x000076e8] // [0x7c0c:4]=0x1c58 // "X\x1c"
        [var_40h] = r4
        r4 = [arg_f0h]
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        sb = [0x000076f0] // [0x7c10:4]=0x2360 // "`#"
        [var_8h] = r6
        sb += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        [var_4h] = r7
        str.w sb, [sp]
        str.w lr, [sp, 0xb4]
        ldrb.w fp, [sp, 0xe0] // 0x178000 // r13
        r6 = [arg_e4h]
        [var_4ch] = r4
        sl = [arg_f4h]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        beq.w 0x7b88  // likely
        goto loc_0x00007712;
    loc_0x00007b88:
        // CODE XREF from sym.mm_v4l2_capture_image @ 0x770e(x)
        r3 = [0x00007b8c] // [0x7cd8:4]=0x4a6
        r0 = 2
        r5 = [0x00007b90] // [0x7cdc:4]=0x618
        r1 = 5
        r2 = [s2]
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r6 = 0x29a
        str.w sb, [sp]
        r4 = 0x1001   // "og_status"
        [var_4h] = r7
        r4 |= 0x8000 << 16
        [var_ch] = r5
        [var_8h] = r6
        fcn.00002084 ()
        goto 0x785a
        
    loc_0x0000785a:
        // CODE XREFS from sym.mm_v4l2_capture_image @ 0x7b86(x), 0x7bb0(x), 0x7bd2(x), 0x7bf6(x)
        r0 = r4
        r4 = [var_30h]
        r2 = [var_b4h]
        r3 = [r4]
        (a, b) = compare (r2, r3)
        bne.w 0x7bf8  // unlikely
        goto loc_0x00007868;
        goto loc_0x0000771a;
        return r0;
    loc_0x0000771a:
        (a, b) = compare (r6, 0)
        blt.w 0x7b5c  // unlikely
        goto loc_0x00007720;
    loc_0x00007b5c:
        // CODE XREFS from sym.mm_v4l2_capture_image @ 0x771c(x), 0x7724(x)
        r4 = [0x00007b60] // [0x7cc8:4]=0x1eea
        r0 = 2
        r6 = [0x00007b64] // [0x7ccc:4]=0x1dbe
        r1 = 6
        r2 = [0x00007b68] // [0x7cd0:4]=0x49a
        r4 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r3 = [0x00007b6c] // [0x7cd4:4]=0x2382
        r6 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        [sp] = r4
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r4 = 1
        r3 += pc      // 0x9ef8 // "%s: %s(%d) > flush frame number is invalid\n" // str._s:__s__d____flush_frame_number_is_invalid_n
        mov.w r5, 0x2a4
        r6 += 0xe8    // 0x9a14 // "mm_v4l2_capture_image" // str.mm_v4l2_capture_image
        r4 |= 0x8000 << 16
        [var_4h] = r6
        [var_8h] = r5
        fcn.00002084 ()
        goto 0x785a
    loc_0x00007720: // orphan
         r3 = [r5 + 0x10]
         (a, b) = compare (r6, r3)
         bhi.w 0x7b5c             // unlikely

         goto loc_0x00007728
    loc_0x00007728: // orphan
         r0 = [r5 + 0xd4]
         (a, b) = compare (r6, 0)
         it eq
         r6 = r3
         (a, b) = compare (r0, 0)
         beq.w 0x7bd4             // unlikely

         goto loc_0x00007738
    loc_0x00007738: // orphan
         fcn.00002048 ()
         cmp.w sl, 0
         beq.w 0x7a86             // likely

         goto loc_0x00007744
    loc_0x00007744: // orphan
         r0 = r8 << 3
         sym.imp.g_malloc ()
         [s2] = r0

    loc_0x0000774e: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7a8a(x)
         r7 = (byte) [r5 + 0x18]
         (a, b) = compare (r7, 0)
         bne 0x77ca               // likely

         goto loc_0x00007754
    loc_0x00007754: // orphan
         cmp.w fp, 0
         beq.w 0x7872             // unlikely

         goto loc_0x0000775c
    loc_0x0000775c: // orphan
         (a, b) = compare (r6, 0)
         beq.w 0x786e             // likely

         goto loc_0x00007762
    loc_0x00007762: // orphan
         sb = r7
         
         goto loc_0x00007766
    loc_0x00007766: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x77a4(x)
         r1 = r0
         r2 = 0x44                // 'D' // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         r0 = var_70h
         fcn.00001ff0 ()
         r1 = [r5 + 0x14]
         r0 = r5
         r2 = var_70h
         r1 += r7
         rsym._mmv4l2_dequeue_buffer ()
         (a, b) = compare (r0, 0)
         bne.w 0x7b24             // unlikely

         goto loc_0x00007782
    loc_0x00007782: // orphan
         r2 = 1
         r0 = r5
         r1 = [var_70h]
         fcn.000020cc ()
         (a, b) = compare (r0, 0)
         blt.w 0x7b40             // unlikely

         goto loc_0x00007792
    loc_0x00007792: // orphan
         sb += 1
         r7 += 0x44               // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         (a, b) = compare (sb, r6)
         je 0x786e                // unlikely

    loc_0x0000779c: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7764(x)
         r0 = r5
         fcn.00002054 ()
         (a, b) = compare (r0, 0)
         je 0x7766                // likely

         goto loc_0x000077a6
    loc_0x000077a6: // orphan
         r7 = [0x000077ac]        // [0x7c14:4]=0x229a
         r4 = r0
         r6 = [0x000077b4]        // [0x7c18:4]=0x216c // "l!"
         r0 = 2
         r2 = [0x000077b8]        // [0x7c1c:4]=0x848 // "H\b"
         r7 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r3 = [0x000077c0]        // [0x7c20:4]=0x275a // "Z'"
         r6 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r1 = 6
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         lr = 0x2dd
         r3 += pc                 // 0x9f24 // "%s: %s(%d) > Unable to wait frame\n" // str._s:__s__d____Unable_to_wait_frame_n
         
         goto loc_0x000077ca
    loc_0x000077ca: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7752(x)
         r3 = [r5 + 0x10]
         (a, b) = compare (r3, 0)
         je 0x786e                // likely

    loc_0x000077d0: // orphan
         r6 = 0
         r7 = r6
         
         goto loc_0x000077d6
    loc_0x000077d6: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7814(x)
         r1 = r0
         r2 = 0x44                // 'D' // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         r0 = var_70h
         fcn.00001ff0 ()
         r1 = [r5 + 0x14]
         r0 = r5
         r2 = var_70h
         r1 += r6
         rsym._mmv4l2_dequeue_buffer ()
         (a, b) = compare (r0, 0)
         bne.w 0x7aec             // unlikely

         goto loc_0x000077f2
    loc_0x000077f2: // orphan
         r2 = 1
         r0 = r5
         r1 = [var_70h]
         fcn.000020cc ()
         (a, b) = compare (r0, 0)
         blt.w 0x7b08             // unlikely

         goto loc_0x00007802
    loc_0x00007802: // orphan
         r3 = [r5 + 0x10]
         r7 += 1
         r6 += 0x44               // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         (a, b) = compare (r3, r7)
         bls 0x786e               // likely

    loc_0x0000780c: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x77d4(x)
         r0 = r5
         fcn.00002054 ()
         (a, b) = compare (r0, 0)
         je 0x77d6                // likely

         goto loc_0x00007816
    loc_0x00007816: // orphan
         r7 = [0x0000781c]        // [0x7c24:4]=0x222a // "*\""
         r4 = r0
         r6 = fcn.000020fc        // [0x20fc:4]=0xe28fc600
         r0 = 2
         r2 = [0x00007828]        // [0x7c2c:4]=0x7d8
         r7 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r3 = [0x00007830]        // [0x7c30:4]=0x26ee
         r6 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r1 = 6
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9f24 // "%s: %s(%d) > Unable to wait frame\n" // str._s:__s__d____Unable_to_wait_frame_n
         lr = 0x2bf

    loc_0x00007838: // orphan
         // CODE XREFS from sym.mm_v4l2_capture_image @ 0x77c8(x), 0x7b06(x), 0x7b22(x), 0x7b3e(x), 0x7b5a(x)
         r6 += 0xe8               // 0x9a14 // "mm_v4l2_capture_image"
         [sp] = r7
         [var_4h] = r6
         str.w lr, [sp, 8]
         fcn.00002084 ()

    loc_0x00007846: // orphan
         // CODE XREFS from sym.mm_v4l2_capture_image @ 0x791e(x), 0x7a8e(x)
         cmp.w sl, 0
         je 0x7852                // likely

         goto loc_0x0000784c
    loc_0x0000784c: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7aea(x)
         r0 = [s2]
         sym.imp.g_free ()

    loc_0x00007852: // orphan
         // CODE XREFS from sym.mm_v4l2_capture_image @ 0x784a(x), 0x7adc(x)
         r0 = [r5 + 0xd4]
         sym.imp.g_mutex_unlock ()

    loc_0x0000785a: // orphan
         // CODE XREFS from sym.mm_v4l2_capture_image @ 0x7b86(x), 0x7bb0(x), 0x7bd2(x), 0x7bf6(x)
         r0 = r4
         r4 = [var_30h]
         r2 = [var_b4h]
         r3 = [r4]
         (a, b) = compare (r2, r3)
         bne.w 0x7bf8             // unlikely

         goto loc_0x00007868
    loc_0x00007868: // orphan
         sp += 0xbc
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x0000786e: // orphan
         // CODE XREFS from sym.mm_v4l2_capture_image @ 0x775e(x), 0x779a(x), 0x77ce(x), 0x780a(x)
         r3 = 0
         [r5 + 0x18] = (byte) r3

    loc_0x00007872: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7758(x)
         r0 = var_58h
         r7 = [s2]
         r6 = 0
         [s1] = r6
         fcn.00001fe4 ()
         r3 = [0x00007880]        // [0x7c34:4]=0x20a4
         r2 = entry.init0         // [0x21c8:4]=0xb5084805
         r0 = 2
         r3 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r4 = [var_58h]
         r2 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         lr = [var_5ch]
         [sp] = r2
         r3 += 0xe8               // 0x9a14 // "mm_v4l2_capture_image" // str.mm_v4l2_capture_image
         r2 = [0x00007894]        // [0x7c3c:4]=0x76e // "n\a"
         r1 = 3
         [var_4h] = r3
         r3 = [0x0000789c]        // [0x7c40:4]=0x26f2
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_ch] = r4
         r4 = 0x2f5
         r3 += pc                 // 0x9f98 // "%s: %s(%d) > current time : (%ld.%06ld)\n" // str._s:__s__d____current_time_:___ld._06ld__n
         str.w lr, [sp, 0x10]
         [var_8h] = r4
         fcn.00002084 ()
         ip = [var_2ch]
         mov.w r3, 0x3e8
         r2 = [0x000078b8]        // [0x7c44:4]=0x2068 // "h "
         fp = [0x000078c0]        // [0x7c48:4]=0x2066 // "f "
         r3 *= ip
         r2 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         fp += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r2 += 0xe8               // 0x9a14 // "mm_v4l2_capture_image" // str.mm_v4l2_capture_image
         fp += 0xe8               // 0x9a14 // "mm_v4l2_capture_image" // str.mm_v4l2_capture_image
         [var_48h] = r2
         [var_24h] = r7
         [s] = r3
         r3 = [0x000078d4]        // [0x7c4c:4]=0x2056 // "V "
         r3 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r3 += 0xe8               // 0x9a14 // "mm_v4l2_capture_image" // str.mm_v4l2_capture_image
         [var_54h] = r3
         
         goto loc_0x000078da
    loc_0x000078da: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7940(x)
         r2 = [0x000078dc]        // [0x7c50:4]=0x722 // "\"\a"
         r0 = 2
         r3 = [0x000078e0]        // [0x7c54:4]=0x26d8
         r1 = 6
         lr = [0x000078e8]        // [0x7c58:4]=0x2162 // "b!"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9fc4 // "%s: %s(%d) > Unable to dequeue buffer\n" // str._s:__s__d____Unable_to_dequeue_buffer_n
         str.w fp, [sp, 4]
         lr += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         str.w lr, [sp]
         lr = 0x305
         str.w lr, [sp, 8]
         fcn.00002084 ()

    loc_0x00007900: // orphan
         // CODE XREFS from sym.mm_v4l2_capture_image @ 0x79c4(x), 0x7a28(x), 0x7a5c(x), 0x7a84(x)
         r6 += 1
         ip = [var_24h]
         (a, b) = compare (r6, r8)
         ip += 8
         str.w ip, [sp, 0x24]
         beq.w 0x7a8c             // unlikely

         goto loc_0x00007914
    loc_0x00007914: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x78d8(x)
         r0 = r5
         fcn.00002054 ()
         r4 = r0
         (a, b) = compare (r0, 0)
         bne 0x7846               // unlikely

         goto loc_0x00007920
    loc_0x00007920: // orphan
         r1 = r0
         r2 = 0x44                // 'D' // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         r0 = var_70h
         fcn.00001ff0 ()
         r3 = [r5 + 0x14]
         add.w r1, r6, r6, lsl 4
         r2 = var_70h
         r0 = r5
         add.w r1, r3, r1, lsl 2
         rsym._mmv4l2_dequeue_buffer ()
         r4 = r0
         (a, b) = compare (r0, 0)
         bne 0x78da               // unlikely

         goto loc_0x00007942
    loc_0x00007942: // orphan
         r0 = r5
         fcn.00001fc0 ()
         if (!r0) 
         goto loc_0x0000794a
    loc_0x0000794a: // orphan
         r7 = [var_34h]
         if (r7) 
    loc_0x0000794e: // orphan
         r7 = [var_40h]
         if (!r7) 
         goto loc_0x00007952
    loc_0x00007952: // orphan
         r3 = [var_70h]
         r1 = [r5 + 0x14]
         ip = [s1]
         add.w r3, r3, r3, lsl 4
         r2 = [n]                 // size_t n
         r0 = r7 + ip             // void *s1
         add.w r3, r1, r3, lsl 2
         r1 = [r3 + 0x24]         // const void *s2
         sym.imp.memcpy () // void *memcpy(0, 0xffff, 0)

    loc_0x0000796e: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7950(x)
         r7 = [var_3ch]
         if (!r7) 
         goto loc_0x00007972
    loc_0x00007972: // orphan
         lr = [r5 + 0xd8]
         r1 = var_70h
         r0 = r5
         r2 = r7
         r3 = lr + 1
         str.w r3, [r5, 0xd8]
         r3 = lr
         [sp] = r6
         fcn.00002030 ()

    loc_0x0000798c: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7970(x)
         r3 = [n]
         r7 = [var_4ch]
         ip = [s1]
         [r7] = r3
         ip += r3
         str.w ip, [sp, 0x44]

    loc_0x0000799c: // orphan
         // CODE XREFS from sym.mm_v4l2_capture_image @ 0x7948(x), 0x794c(x)
         cmp.w sl, 0
         je 0x79b0                // likely

         goto loc_0x000079a2
    loc_0x000079a2: // orphan
         r3 = var_84h
         ip = [var_24h]
         ldm.w r3, (r0, r1)
         stm.w ip, (r0, r1)

    loc_0x000079b0: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x79a0(x)
         r7 = [var_2ch]
         (a, b) = compare (r7, 0)
         ble 0x79bc               // likely

         goto loc_0x000079b6
    loc_0x000079b6: // orphan
         r0 = [s]                 // int s
         sym.imp.usleep () // int usleep(0)

    loc_0x000079bc: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x79b4(x)
         r3 = [r5 + 0x10]
         rsb r3, r3, r8
         (a, b) = compare (r3, r6)
         je 0x7900                // likely

         goto loc_0x000079c6
    loc_0x000079c6: // orphan
         r0 = r5
         r1 = [var_70h]
         r2 = 1
         fcn.000020cc ()
         r4 = r0
         (a, b) = compare (r0, 0)
         bne 0x7a5e               // unlikely

         goto loc_0x000079d6
    loc_0x000079d6: // orphan
         r3 = [var_7ch]
         r0 = 2
         r1 = 3
         r7 = [var_70h]
         if ((r3 & 0x40) == 0)
         ip = [0x000079e8]        // [0x7c5c:4]=0x618
         ite eq
         r3 = 0x2d                // '-'
         r3 = 0x45                // 'E'
         [var_14h] = r3
         r3 = [n]
         ip += pc                 // 0x800c // "V4L2" // str.V4L2
         r2 = [var_48h]           // "mm_v4l2_capture_image" str.mm_v4l2_capture_image
         lr = 0x337
         [var_10h] = r7
         [var_1ch] = r3
         r7 = [var_9ch]
         r3 = [0x00007a00]        // [0x7c60:4]=0x25e2
         sb = [0x00007a08]        // [0x7c64:4]=0x2042 // "B "
         [var_4h] = r2
         r3 += pc                 // 0x9fec // "%s: %s(%d) > %u (%u) [%c] %u %u\n" // str._s:__s__d_____u___u____c___u__u_n
         r2 = ip                  // "V4L2" str.V4L2
         str.w ip, [sp, 0x28]
         sb += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         [var_ch] = r6
         str.w sb, [sp]
         [var_18h] = r7
         str.w lr, [sp, 8]
         fcn.00002084 ()
         ip = [var_28h]           // "V4L2" str.V4L2
         cmp.w sl, 0
         beq.w 0x7900             // likely

    loc_0x00007a2c: // orphan
         r7 = [var_48h]           // "mm_v4l2_capture_image" str.mm_v4l2_capture_image
         r2 = ip
         ip = [var_24h]
         r3 = 0x33b
         str.w sb, [sp]
         r0 = 2
         [var_8h] = r3
         r1 = 3
         [var_4h] = r7
         lr = [ip]
         r3 = [0x00007a4c]        // [0x7c68:4]=0x25be
         str.w lr, [sp, 0xc]
         r3 += pc                 // 0xa010 // "%s: %s(%d) >  - time stamp - : %ld.%06ld\n" // str._s:__s__d_______time_stamp___:__ld._06ld_n
         lr = [ip + 4]
         str.w lr, [sp, 0x10]
         fcn.00002084 ()
         
    loc_0x00007a5e: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x79d4(x)
         r7 = [var_54h]           // "mm_v4l2_capture_image" str.mm_v4l2_capture_image
         r0 = 2
         r2 = [0x00007a64]        // [0x7c6c:4]=0x59c
         r1 = 6
         r3 = [0x00007a68]        // [0x7c70:4]=0x24d6
         lr = [0x00007a70]        // [0x7c74:4]=0x1fde
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9f48 // "%s: %s(%d) > Unable to queue buffer\n" // str._s:__s__d____Unable_to_queue_buffer_n
         [var_4h] = r7
         lr += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         str.w lr, [sp]
         lr = 0x331
         str.w lr, [sp, 8]
         fcn.00002084 ()
         
    loc_0x00007a86: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7740(x)
         str.w sl, [sp, 0x38]
         
         goto loc_0x00007a8c
    loc_0x00007a8c: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7910(x)
         (a, b) = compare (r4, 0)
         bne.w 0x7846             // unlikely

    loc_0x00007a92: // orphan
         r0 = var_60h
         r7 = [0x00007a98]        // [0x7c78:4]=0x1e7e // "~\x1e"
         fcn.00001fe4 ()
         r0 = var_58h
         r1 = var_60h
         r2 = var_68h
         rsym.mmv4l2_diff_time ()
         r3 = sym.imp.__errno_location // [0x1fa4:4]=0xe5bcf5ec
         ip = [var_68h]
         r7 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r3 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r8 = [var_6ch]
         r2 = [0x00007ab4]        // [0x7c80:4]=0x54c // "L\x05" // (pstr 0x0000001c) "4"
         r0 = 2
         [sp] = r3
         r1 = 3
         r3 = case.0x256c.2       // [0x2574:4]=0xeddd9a08
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         mov.w lr, 0x344
         r7 += 0xe8               // 0x9a14 // "mm_v4l2_capture_image" // str.mm_v4l2_capture_image
         r3 += pc                 // 0xa03c // "%s: %s(%d) > Captured frames in %lu.%06lu seconds.\n" // str._s:__s__d____Captured_frames_in__lu._06lu_seconds._n
         [var_4h] = r7
         str.w ip, [sp, 0xc]
         str.w r8, [sp, 0x10]
         str.w lr, [sp, 8]
         fcn.00002084 ()
         cmp.w sl, 0
         beq.w 0x7852             // likely

    loc_0x00007ae0: // orphan
         r0 = sl                  // void *s1
         r2 = r6 << 3             // size_t n
         r1 = [s2]                // const void *s2
         sym.imp.memcpy () // void *memcpy(0, 0, 0)
         
         goto loc_0x00007aec
    loc_0x00007aec: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x77ee(x)
         r7 = [0x00007af0]        // [0x7c88:4]=0x1f5a
         r4 = r0
         r6 = [0x00007af4]        // [0x7c8c:4]=0x1e2e // ".\x1e"
         r0 = 2
         r2 = [0x00007af8]        // [0x7c90:4]=0x50a "." // "\n\x05"
         r7 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r3 = [0x00007afc]        // [0x7c94:4]=0x2440 // "@$"
         r6 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r1 = 6
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         mov.w lr, 0x2c8
         r3 += pc                 // 0x9f48 // "%s: %s(%d) > Unable to queue buffer\n" // str._s:__s__d____Unable_to_queue_buffer_n
         
    loc_0x00007b08: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x77fe(x)
         r7 = [0x00007b0c]        // [0x7c98:4]=0x1f3e
         r4 = r0
         r6 = [0x00007b10]        // [0x7c9c:4]=0x1e12
         r0 = 2
         r2 = [0x00007b14]        // [0x7ca0:4]=0x4ee
         r7 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r3 = [0x00007b18]        // [0x7ca4:4]=0x244c // "L$"
         r6 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r1 = 6
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         lr = 0x2cf
         r3 += pc                 // 0x9f70 // "%s: %s(%d) > Unable to requeue buffer\n" // str._s:__s__d____Unable_to_requeue_buffer_n
         
    loc_0x00007b24: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x777e(x)
         r7 = [0x00007b28]        // [0x7ca8:4]=0x1f22
         r4 = r0
         r6 = [0x00007b2c]        // [0x7cac:4]=0x1df6
         r0 = 2
         r2 = [0x00007b30]        // [0x7cb0:4]=0x4d2
         r7 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r3 = [0x00007b34]        // [0x7cb4:4]=0x2408
         r6 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r1 = 6
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         lr = 0x2e6
         r3 += pc                 // 0x9f48 // "%s: %s(%d) > Unable to queue buffer\n" // str._s:__s__d____Unable_to_queue_buffer_n
         
    loc_0x00007b40: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x778e(x)
         r7 = [0x00007b44]        // [0x7cb8:4]=0x1f06
         r4 = r0
         r6 = [0x00007b48]        // [0x7cbc:4]=0x1dda
         r0 = 2
         r2 = [0x00007b4c]        // [0x7cc0:4]=0x4b6
         r7 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r3 = [0x00007b50]        // [0x7cc4:4]=0x2414
         r6 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r1 = 6
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         lr = 0x2ed
         r3 += pc                 // 0x9f70 // "%s: %s(%d) > Unable to requeue buffer\n" // str._s:__s__d____Unable_to_requeue_buffer_n
         
    loc_0x00007bb2: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7716(x)
         r3 = [0x00007bb4]        // [0x7ce0:4]=0x2314
         r4 = 1
         r2 = [s2]
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9ed4 // "%s: %s(%d) > No frames captured.\n" // str._s:__s__d____No_frames_captured._n
         r5 = 0x29e
         str.w sb, [sp]
         [var_4h] = r7
         r4 |= 0x8000 << 16
         [var_8h] = r5
         fcn.00002084 ()
         
         goto loc_0x00007bd4
    loc_0x00007bd4: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7734(x)
         r3 = [0x00007bd8]        // [0x7ce4:4]=0x1f34
         r0 = 2
         r2 = [s2]
         r1 = 3
         r3 += pc                 // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
         r5 = 0x2ad
         str.w sb, [sp]
         r4 = 0x1001              // "og_status"
         [var_4h] = r7
         r4 |= 0x8000 << 16
         [var_8h] = r5
         fcn.00002084 ()
         
    loc_0x00007bf8: // orphan
         // CODE XREF from sym.mm_v4l2_capture_image @ 0x7864(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
int sym.mmv4l2_get_time (int r0, int r1) {
    loc_0x000063b0:
        r1 = 0
        goto sym.imp.gettimeofday
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_has_valid_fd (int16_t arg1) {
    loc_0x00002a78:
        r0 = [r0]     // arg1
        r0 += 1
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5614(r)
        it ne
        r0 = 1
        bx lr
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_get_attributes_info (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x000024cc:
        push (r4, r5, r6, r7, r8, sb, lr)
        sp -= 0x3c    // (cstr 0x000085c8) "mm_v4l2_priv.c"
        r7 = [0x000024d4] // [0x2640:4]=0x5b2c // ",["
        r5 = r1       // arg2
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7a66(r)
        sb = [0x000024dc] // [0x2644:4]=0x5a80
        r6 = r0       // arg1
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x000024e0] // [0x2648:4]=0x5b22 // "\"["
        r8 = [0x000024e8] // [0x264c:4]=0x5b34 // "4["
        sb += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        r4 = r2       // arg3
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        mov.w lr, 0
        r8 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        sb += 0x4c    // 0x7fb4 // "_mmv4l2_get_attributes_info" // str._mmv4l2_get_attributes_info
        mov.w ip, 0x94
        stm.w sp, (r8, sb)
        str.w lr, [sp, 0x10]
        str.w lr, [sp, 0x14]
        // DATA XREF from sym._mmv4l2_get_input @ 0x5af6(r)
        str.w lr, [sp, 0x18]
        str.w lr, [sp, 0x1c]
        str.w lr, [sp, 0x20]
        str.w lr, [sp, 0x24]
        str.w lr, [sp, 0x28]
        str.w lr, [sp, 0x2c]
        str.w lr, [sp, 0x30]
        str.w lr, [sp, 0x34]
        str.w ip, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        // DATA XREF from sym.mm_v4l2_start_capture @ 0x73ea(r)
        je 0x261a     // likely
        goto loc_0x00002536;
    loc_0x0000261a:
        // CODE XREF from sym._mmv4l2_get_attributes_info @ 0x2534(x)
        r6 = [0x0000261c] // [0x266c:4]=0x5a32 // "2Z"
        r2 = r7
        r3 = [0x00002620] // [0x2670:4]=0x5a12
        // DATA XREF from sym.mm_v4l2_start_capture @ 0x74e8(r)
        r0 = 2
        r6 += pc      // 0x8058 // "attribute_name" // str.attribute_name
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r4 = 0x96
        goto 0x2600
        
    loc_0x00002600:
        // CODE XREFS from sym._mmv4l2_get_attributes_info @ 0x262a(x), 0x263c(x)
        str.w r8, [sp]
        r5 = 0x101    // "NU"
        str.w sb, [sp, 4]
        r5 |= 0x8000 << 16
        [var_ch] = r6
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x25a6
        goto loc_0x0000253a;
        return r0;
    loc_0x0000253a:
        (a, b) = compare (r6, 0)
        je 0x25f0     // likely
        goto loc_0x0000253e;
    loc_0x000025f0:
        // CODE XREF from sym._mmv4l2_get_attributes_info @ 0x253c(x)
        r6 = [0x000025f4] // [0x2664:4]=0x5a6c // "lZ"
        r0 = 2
        r3 = [0x000025f8] // [0x2668:4]=0x5a3c // "<Z"
        r1 = 5
        r6 += pc      // 0x8068 // "handle" // str.handle
        r4 = 0x98
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r2 = r7
    loc_0x0000253e: // orphan
         r1 = r5
         r0 = [r6 + 0xd0]
         r2 = var_10h
         sym.imp.mm_attrs_get_info_by_name () // DATA XREF from sym._mmv4l2_is_output @ 0x2a18(r) // DATA XREF from sym._mmv4l2_get_input @ 0x5b40(r)
         r5 = r0
         (a, b) = compare (r0, 0)
         bne 0x25ba               // likely

         goto loc_0x00002550
    loc_0x00002550: // orphan
         r1 = r5
         r2 = 0x28                // '(' // u"4 \x06("
         r0 = r4
         fcn.00001ff0 ()
         r3 = [var_10h]
         r2 = [var_18h]
         r1 = [var_14h]
         [r4] = r3                // 0x188 // r2
         r3 = r2 - 1
         [r4 + 4] = r2 // DATA XREF from sym.mm_v4l2_start_capture @ 0x73b8(r)
         [r4 + 8] = r1
         (a, b) = compare (r3, 3)
         bhi 0x2584               // likely

         goto loc_0x0000256c
    loc_0x0000256c: // orphan
         tbb [pc, r3]             // switch table (4 cases) at 0x2570

        return r0;
    loc_0x00002574: // case 2
         // CODE XREF from sym._mmv4l2_get_attributes_info @ 0x256c(x) // DATA XREF from sym.mm_v4l2_capture_image @ 0x7aba(x)
         r2 = [var_20h]
         vldr d16, [sp, 0x28]
         r3 = [var_24h]
         vstr d16, [r4, 0x18]
         [r4 + 0x10] = r2
         [r4 + 0x14] = r3

    loc_0x00002584: // orphan
         // CODE XREFS from sym._mmv4l2_get_attributes_info @ 0x256a(x), 0x25b8(x), 0x25ee(x)
         r6 = [0x00002588]        // [0x2650:4]=0x59d6
         r0 = 2
         r2 = [0x0000258c]        // [0x2654:4]=0x5a76 // "vZ" // DATA XREFS from sym._mmv4l2_set_quality @ 0x5cea(r), 0x5cee(r)
         r1 = 3
         r3 = [0x00002590]        // [0x2658:4]=0x5b04
         r6 += pc                 // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
         r7 = [0x00002594]        // [0x265c:4]=0x5a90
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0xc8
         r7 += pc                 // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
         r6 += 0x4c               // 0x7fb4 // "_mmv4l2_get_attributes_info" // str._mmv4l2_get_attributes_info
         [sp] = r7
         [var_4h] = r6
         [var_8h] = r4
         fcn.00002084 ()

    loc_0x000025a6: // orphan
         // CODE XREFS from sym._mmv4l2_get_attributes_info @ 0x25d4(x), 0x2618(x)
         r0 = r5
         sp += 0x3c
         pop (r4, r5, r6, r7, r8, sb, pc) // str.mm_v4l2_capture_image // str.mm_v4l2_capture_image

        return r0;
    loc_0x000025ae: // case 1
         // CODE XREF from sym._mmv4l2_get_attributes_info @ 0x256c(x)
         r1 = var_20h
         ldm r1, (r1, r2, r3)
         [r4 + 0x10] = r1
         [r4 + 0x14] = r2
         [r4 + 0x18] = r3
         
    loc_0x000025ba: // orphan
         // CODE XREF from sym._mmv4l2_get_attributes_info @ 0x254e(x)
         r3 = [0x000025bc]        // [0x2660:4]=0x5b52 // "R["
         r2 = r7 // DATA XREFS from sym.mm_v4l2_capture_image @ 0x7a48(r), 0x7a50(r)
         r0 = 2 // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5a6c(r)
         r1 = 6
         r3 += pc                 // 0x8118 // "%s: %s(%d) > failed to get attribute info\n" // str._s:__s__d____failed_to_get_attribute_info_n
         r4 = 0xa0
         str.w r8, [sp]
         str.w sb, [sp, 4]
         [var_8h] = r4
         fcn.00002084 ()
         
         goto loc_0x000025d6
    loc_0x000025d6: // case 3
         // CODE XREF from sym._mmv4l2_get_attributes_info @ 0x256c(x)
         vldr d16, [sp, 0x20]
         vstr d16, [r4, 0x10]
         vldr d16, [sp, 0x28] // DATA XREF from sym.mm_v4l2_capture_image @ 0x79fe(r)
         vstr d16, [r4, 0x18]
         vldr d16, [sp, 0x30]
         vstr d16, [r4, 0x20]
         
    loc_0x00002600: // orphan
         // CODE XREFS from sym._mmv4l2_get_attributes_info @ 0x262a(x), 0x263c(x)
         str.w r8, [sp]
         r5 = 0x101               // "NU"
         str.w sb, [sp, 4]
         r5 |= 0x8000 << 16
         [var_ch] = r6
         [var_8h] = r4
         fcn.00002084 ()
         
    loc_0x0000262c: // orphan
         // CODE XREF from sym._mmv4l2_get_attributes_info @ 0x2538(x) // DATA XREF from sym._mmv4l2_enum_inputs @ 0x59d0(x)
         r6 = [0x00002630]        // [0x2674:4]=0x5ad4 ".%"
         r2 = r7
         r3 = [0x00002634]        // [0x2678:4]=0x5a00
         r0 = 2
         r6 += pc                 // 0x810c // "dst_info" // str.dst_info // DATA XREF from sym.mm_v4l2_start_capture @ 0x72e6(r)
         r1 = 5
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r4 = 0x97
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00001ff0 (int r0, int r1) {
    loc_0x00001ff0:
        // XREFS: CALL 0x00002556  CALL 0x00002d2a  CALL 0x00002f8c  CALL 0x000030b2  CALL 0x00003768  CALL 0x0000391e
        // XREFS: CALL 0x00003aac  CALL 0x00004272  CALL 0x0000427e  CALL 0x00004702  CALL 0x0000584a  CALL 0x00005a02
        // XREFS: CALL 0x00005d28  CALL 0x000066d0  CALL 0x0000776c  CALL 0x000077dc  CALL 0x00007926
        add ip, pc, 0, 12 // sym.imp.write
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001ff8:
        // ICOD XREF from fcn.00001ff0 @ 0x1ff0(r)
        pc = [ip + 0x5b4]!
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_alloc_buffers (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00004184:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        sp -= 0x26c
        lr = [0x00004194] // [0x4428:4]=0xe30e
        r4 = r0       // arg1
        r3 = [0x00004194] // [0x442c:4]=388
        // DATA XREF from sym.__mmv4l2_mmap_buffer @ +0x17c(r)
        r8 = r1       // arg2
        lr += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        [var_1ch] = r2 // arg3
        r7 = [0x0000419c] // [0x4430:4]=0x3e64 // "d>"
        r0 = 2
        r3 = [lr + r3] // 0x1262c // reloc.__stack_chk_guard
        r1 = 3
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r5 = [0x000041a8] // [0x4434:4]=0x40d0
        r6 = [0x000041ac] // [0x4438:4]=0x440a // "\nD"
        lr = 0x3ce
        [var_24h] = r3
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        sb = [var_24h]
        r2 = r7       // "V4L2" str.V4L2
        r3 = [0x000041bc] // [0x443c:4]=0x3e4c // "L>"
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x168   // 0x83ec // "_mmv4l2_alloc_buffers" // str._mmv4l2_alloc_buffers
        ip = [sb]
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        [sp] = r6
        // DATA XREF from sym.__mmv4l2_free_buffer_userptr @ 0x40ae(r)
        [var_4h] = r5
        str.w ip, [sp, 0x264]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        beq.w 0x43ee  // likely
        goto loc_0x000041dc;
    loc_0x000043ee:
        // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x41d8(x)
        r3 = [0x000043f0] // [0x447c:4]=0x3c3e // "><"
        r2 = r7
        lr = [0x000043f8] // [0x4480:4]=0x3db0
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x3d0
        // DATA XREF from sym.__mmv4l2_munmap_buffer @ 0x3e76(r)
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x41a8(r)
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        // DATA XREF from sym._mmv4l2_set_framerate @ 0x3c1a(r)
        r0 |= 0x8000 << 16
        goto 0x4308
        
    loc_0x00004308:
        // XREFS: CODE 0x0000432c  CODE 0x00004366  CODE 0x000043b8  CODE 0x000043ec  CODE 0x00004418  CODE 0x00004422
        sb = [var_24h]
        r2 = [var_264h]
        r3 = [sb]
        (a, b) = compare (r2, r3)
        bne.w 0x4424  // likely
        goto loc_0x00004318;
        goto loc_0x00004210;
        return r0;
    loc_0x00004210:
        lr = [var_20ch]
        r2 = r7
        r3 = [0x00004218] // [0x4440:4]=0x4a38 // "8J"
        r1 = 3
        r0 = 2
        mov.w r7, 0x3e0
        r3 += pc      // 0x8c5c // "%s: %s(%d) > %u buffers requested.\n" // str._s:__s__d_____u_buffers_requested._n
        str.w lr, [sp, 0xc]
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r7
        fcn.00002084 ()
        r3 = [var_20ch]
        add.w r3, r3, r3, lsl 4
        r0 = r3 << 2
        sym.imp.g_malloc ()
        [var_20h] = r0
        (a, b) = compare (r0, 0)
        beq.w 0x441a  // likely
        goto loc_0x00004244;
    loc_0x0000441a:
        // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x4240(x)
        r0 = 0x1004   // "status"
        r0 |= 0x8000 << 16
        goto 0x4308
    loc_0x00004244: // orphan
         r3 = [var_20ch]
         (a, b) = compare (r3, 0) // DATA XREFS from sym._mmv4l2_alloc_buffers @ 0x437a(r), 0x4380(r)
         je 0x4338                // likely

         goto loc_0x0000424a
    loc_0x0000424a: // orphan
         sl = [0x00004250]        // [0x4444:4]=0x4026 // "&@"
         r7 = var_2ch
         r8 = [0x00004258]        // [0x4448:4]=0x3da8
         r5 = 0
         fp = [0x0000425c]        // [0x444c:4]=0x4a5e // "^J"
         sl += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         sb = [0x00004264]        // [0x4450:4]=0x435c // "\C" // DATA XREF from sym.__mmv4l2_munmap_buffer @ +0xb8(r)
         r8 += pc                 // 0x800c // "V4L2" // str.V4L2
         fp += pc                 // 0x8cc4 // "%s: %s(%d) > length: %u offset: %u\n" // str._s:__s__d____length:__u_offset:__u_n
         sl += 0x168              // 0x83ec // "_mmv4l2_alloc_buffers" // str._mmv4l2_alloc_buffers
         sb += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x4352(r)
         r6 = r0

    loc_0x0000426c: // orphan
         // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3d92(r) // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x4336(r)
         r1 = 0
         r2 = 0x44                // 'D' // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         r0 = var_220h
         fcn.00001ff0 ()
         r1 = 0
         mov.w r2, 0x1e0
         r0 = r7
         fcn.00001ff0 ()
         r3 = [r4 + 8]
         lr = [r4 + 0xc]
         r1 = 0x5609
         r0 = [r4]                // int fd
         r1 |= 0xc044 << 16       // unsigned long request // DATA XREFS from sym.__mmv4l2_mmap_buffer @ 0x3d72(r), 0x3d7c(r)
         r2 = var_220h
         [var_224h] = r3
         [var_220h] = r5
         r3 = 8
         [var_254h] = r7
         str.w lr, [sp, 0x250]
         [var_258h] = r3
         sym.imp.ioctl () // int ioctl(0, 0xc0445609)
         (a, b) = compare (r0, 0)
         blt 0x4376               // unlikely

         goto loc_0x000042aa
    loc_0x000042aa: // orphan
         // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3fcc(r)
         lr = [var_258h]
         r0 = 2
         ip = [var_254h]
         r1 = 3
         r3 = fp                  // r13 // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ +0x170(r)
         r2 = r8
         str.w lr, [sp, 0xc]
         mov.w lr, 0x3fc
         stm.w sp, (sb, sl)
         str.w ip, [sp, 0x10]
         str.w lr, [sp, 8]
         fcn.00002084 ()
         r3 = [r4 + 0xc]
         [r6] = r5
         (a, b) = compare (r3, 1)
         je 0x4320                // unlikely

         goto loc_0x000042da
    loc_0x000042da: // orphan
         (a, b) = compare (r3, 2)
         je 0x4368                // unlikely

         goto loc_0x000042de
    loc_0x000042de: // orphan
         lr = r3
         r3 = [0x000042e4]        // [0x4454:4]=0x49fc
         r2 = r8
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x8ce8 // "%s: %s(%d) > Unknown memory type : %u\n" // str._s:__s__d____Unknown_memory_type_:__u_n
         str.w sb, [sp]
         r4 = 0x40b
         str.w sl, [sp, 4]
         str.w lr, [sp, 0xc] // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3d96(r)
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0x100b              // '\v\x10' // "__mmv4l2_query_control"
         r0 |= 0x8000 << 16

    loc_0x00004308: // orphan
         // XREFS: CODE 0x0000432c  CODE 0x00004366  CODE 0x000043b8  CODE 0x000043ec  CODE 0x00004418  CODE 0x00004422  
         sb = [var_24h]
         r2 = [var_264h]
         r3 = [sb]
         (a, b) = compare (r2, r3)
         bne.w 0x4424             // likely

         goto loc_0x00004318
    loc_0x00004318: // orphan
         sp += 0x26c
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x00004320: // orphan
         // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x42d8(x)
         r0 = r4
         r1 = r6
         r2 = var_220h
         fcn.000020e4 ()

    loc_0x0000432a: // orphan
         // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x4374(x)
         (a, b) = compare (r0, 0) // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3ccc(r) // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f4c(r) // DATA XREF from sym._mmv4l2_print_control @ 0x4c06(r)
         bne 0x4308               // unlikely

         goto loc_0x0000432e
    loc_0x0000432e: // orphan
         r3 = [var_20ch]
         r5 += 1
         r6 += 0x44               // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         (a, b) = compare (r3, r5)
         bhi 0x426c               // unlikely

         goto loc_0x00004338
    loc_0x00004338: // orphan
         // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x4248(x)
         r5 = [var_20h]
         r0 = 2
         r2 = [0x00004340]        // [0x4458:4]=0x3f3e // ">?"
         r1 = 3
         [r4 + 0x10] = r3
         r2 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         [r4 + 0x14] = r5
         r3 = [0x00004348]        // [0x445c:4]=0x3d44 // "D="
         r4 = r2 + 0x168          // 0x83ec // "_mmv4l2_alloc_buffers" // str._mmv4l2_alloc_buffers
         r2 = [0x00004350]        // [0x4460:4]=0x3cb2
         r5 = 0x419
         r6 = [0x00004354]        // [0x4464:4]=0x426a // "jB"
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_4h] = r4
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c // DATA XREFS from sym._mmv4l2_alloc_buffers @ 0x425c(r), 0x4282(r), 0x4284(r), 0x428c(r)
         [var_8h] = r5
         [sp] = r6
         fcn.00002084 ()
         r0 = 0
         
    loc_0x00004368: // orphan
         // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x42dc(x)
         r0 = r4
         r1 = r6 // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3c96(r) // DATA XREF from sym._mmv4l2_print_control @ 0x4bc4(r)
         r2 = var_220h
         r3 = [var_1ch]
         fcn.0000203c () // DATA XREF from sym.__mmv4l2_mmap_buffer @ 0x3c8a(r)
         
         goto loc_0x00004376
    loc_0x00004376: // orphan
         // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x42a8(x)
         fcn.00001fa8 ()
         r6 = [0x0000437c]        // [0x4468:4]=0x4248 // "HB"
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         r2 = [0x00004388]        // [0x446c:4]=0x3ef2
         mov.w r3, 0x3f8
         [var_ch] = r5
         r2 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         [var_8h] = r3
         r2 += 0x168              // 0x83ec // "_mmv4l2_alloc_buffers" // str._mmv4l2_alloc_buffers
         [sp] = r6 // DATA XREFS from sym._mmv4l2_enable_stream @ 0x4abc(r), 0x4ac6(r)
         [var_4h] = r2
         r1 = 6
         r2 = [0x000043a0]        // [0x4470:4]=0x3c68 "zO" // "h<"
         r3 = [0x000043a0]        // [0x4474:4]=0x48da
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8c80 // "%s: %s(%d) > Unable to query buffer(VIDIOC_QUERYBUF) %u: %s (%d).\n" // str._s:__s__d____Unable_to_query_buffer_VIDIOC_QUERYBUF___u:__s___d_._n
         [var_10h] = r0
         r0 = 2 // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ +0x188(r)
         r4 = [r4]
         [var_14h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
    loc_0x000043ba: // orphan
         // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x420c(x)
         fcn.00001fa8 () // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a90(r)
         r4 = r0 // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a86(r)
         r0 = [r0]
         fcn.00001eb8 ()
         [sp] = r6
         [var_4h] = r5 // DATA XREF from sym.__mmv4l2_munmap_buffer @ 0x3eac(r)
         mov.w r3, 0x3dc
         [var_8h] = r3
         r2 = r7
         r3 = [0x000043d4]        // [0x4478:4]=0x483e // ">H"
         r1 = 6
         r3 += pc                 // 0x8c18 // "%s: %s(%d) > Unable to request buffers(VIDIOC_REQBUFS): %s (%d).\n" // str._s:__s__d____Unable_to_request_buffers_VIDIOC_REQBUFS_:__s___d_._n
         [var_ch] = r0
         r0 = 2
         r4 = [r4]
         [var_10h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
    loc_0x00004424: // orphan
         // CODE XREF from sym._mmv4l2_alloc_buffers @ 0x4314(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_get_control (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00003210:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        sp -= 0x84    // (pstr 0x0000800c) "V4L2"
        lr = [0x0000321c] // [0x3440:4]=0xf284
        // DATA XREFS from sym.mm_v4l2_get_format @ 0x6972(r), 0x6978(r), 0x697e(r), 0x698e(r)
        r4 = r0       // arg1
        r3 = [0x00003220] // [0x3444:4]=388
        sb = r1       // arg2
        lr += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        r7 = [0x00003224] // [0x3448:4]=0x4dda
        r8 = [0x0000322c] // [0x344c:4]=0x504e // "NP"
        sl = r2       // arg3
        r5 = [lr + r3] // 0x1262c // reloc.__stack_chk_guard
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00003234] // [0x3450:4]=0x4dd0
        r8 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym.mmv4l2_convert_pixel_format @ 0x60a8(r)
        r6 = [0x00003238] // [0x3454:4]=0x5382
        r0 = 2
        lr = [r5]
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        // DATA XREF from sym.mm_v4l2_set_format @ 0x68c6(r)
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        mov.w ip, 0x220
        r8 += 0x90    // 0x8314 // "_mmv4l2_get_control" // str._mmv4l2_get_control
        str.w lr, [sp, 0x7c]
        stm.w sp, (r6, r8)
        str.w ip, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        // DATA XREF from sym.mmv4l2_get_fps @ 0x6482(r)
        beq.w 0x33d6  // likely
        goto loc_0x00003262;
    loc_0x000033d6:
        // CODE XREF from sym._mmv4l2_get_control @ 0x325e(x)
        r3 = [0x000033d8] // [0x3488:4]=0x4c56
        r2 = r7
        lr = [0x000033e0] // [0x348c:4]=0x4dc8
        r0 = 2
        r1 = 5
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51d8(r)
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x222
        stm.w sp, (r6, r8)
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x3310
        
    loc_0x00003310:
        // CODE XREFS from sym._mmv4l2_get_control @ 0x333c(x), 0x3378(x), 0x3400(x), 0x3438(x)
        r2 = [var_7ch]
        r3 = [r5]
        (a, b) = compare (r2, r3)
        bne.w 0x343a  // unlikely
        goto loc_0x0000331a;
        goto loc_0x00003272;
        return r0;
    loc_0x00003272:
        r3 = [var_70h]
        sb &= r3
        // DATA XREF from sym._mmv4l2_print_control @ 0x4e18(r)
        bne 0x3320    // unlikely
        goto loc_0x0000327a;
    loc_0x00003320:
        // CODE XREF from sym._mmv4l2_get_control @ 0x3278(x)
        r3 = [0x00003324] // [0x3478:4]=0x54c0
        r2 = r7
        r0 = 2
        r1 = 5
        r3 += pc      // 0x87ec // "%s: %s(%d) > V4L2_CTRL_FLAG_DISABLED\n" // str._s:__s__d____V4L2_CTRL_FLAG_DISABLED_n
        [sp] = r6
        // DATA XREFS from sym.mmv4l2_get_fps @ 0x648e(r), 0x64c2(r), 0x64d0(r)
        r4 = 0x22e
        str.w r8, [sp, 4]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0
        goto 0x3310
    loc_0x0000327a: // orphan
         r3 = [var_3ch]
         (a, b) = compare (r3, 6)
         je 0x3354                // unlikely

         goto loc_0x00003280
    loc_0x00003280: // orphan
         r0 = r4
         r1 = var_38h             // (cstr 0x00009a14) "mm_v4l2_capture_image" // DATA XREFS from sym.mm_v4l2_set_format @ 0x6786(r), 0x68a4(r)
         r2 = var_24h             // (pstr 0x00000008) "E"
         fcn.000020f0 ()
         (a, b) = compare (r0, 0)
         blt 0x333e               // unlikely

         goto loc_0x0000328e
    loc_0x0000328e: // orphan
         r3 = [var_3ch]
         (a, b) = compare (r3, 5)
         je 0x337a                // unlikely

         goto loc_0x00003294
    loc_0x00003294: // orphan
         (a, b) = compare (r3, 7)
         beq.w 0x33a8             // unlikely

         goto loc_0x0000329a
    loc_0x0000329a: // orphan
         r3 = [var_30h]
         [var_18h] = r3
         r3 = r3 >> 0x1f
         [var_1ch] = r3 // DATA XREF from sym._mmv4l2_print_control @ 0x4d58(r)
         ldrd r2, r3, [sp, 0x18]
         strd r2, r3, [sl]        // 0x188

    loc_0x000032aa: // orphan
         // CODE XREFS from sym._mmv4l2_get_control @ 0x3352(x), 0x338a(x), 0x33d4(x)
         r4 = [0x000032ac]        // [0x3458:4]=0x4d50 // "PM"
         r0 = 2 // DATA XREF from sym.mm_v4l2_destroy @ 0x6670(r)
         lr = [var_38h]
         r1 = 3
         ldrd sl, fp, [sp, 0x18]
         r4 += pc                 // 0x800c // "V4L2" // str.V4L2
         r6 = [0x000032bc]        // [0x345c:4]=0x4fb8
         r7 = 0x24b // DATA XREF from sym._mmv4l2_list_controls @ 0x4fb6(r)
         r3 = [0x000032c4]        // [0x3460:4]=0x559a
         r2 = r4                  // "V4L2" str.V4L2
         r8 = [0x000032cc]        // [0x3464:4]=0x52f6
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r3 += pc                 // 0x8868 // "%s: %s(%d) > control 0x%08x current %s.\n" // str._s:__s__d____control_0x_08x_current__s._n
         r6 += 0x90               // 0x8314 // "_mmv4l2_get_control" // str._mmv4l2_get_control
         r8 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         strd sl, fp, [sp, 0x10]
         str.w r8, [sp]
         [var_4h] = r6
         str.w lr, [sp, 0xc]
         [var_8h] = r7
         fcn.00002084 ()
         r3 = [var_3ch]
         (a, b) = compare (r3, 7)
         je 0x338c                // unlikely

         goto loc_0x000032ea
    loc_0x000032ea: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x33a6(x) // DATA XREF from sym.mm_v4l2_set_format @ 0x675c(x)
         r6 = [0x000032ec]        // [0x3468:4]=0x4f8c // DATA XREF from sym._mmv4l2_list_controls @ 0x4f8a(r)
         r0 = 2
         r2 = [0x000032f0]        // [0x346c:4]=0x4d10
         r1 = 3
         r3 = [0x000032f4]        // [0x3470:4]=0x4d9e
         r6 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r7 = [0x000032f8]        // [0x3474:4]=0x52c4
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x252
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r6 += 0x90               // 0x8314 // "_mmv4l2_get_control" // str._mmv4l2_get_control
         [sp] = r7
         [var_4h] = r6 // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x52b2(r)
         [var_8h] = r4
         fcn.00002084 ()
         r0 = [var_38h]

    loc_0x00003310: // orphan
         // CODE XREFS from sym._mmv4l2_get_control @ 0x333c(x), 0x3378(x), 0x3400(x), 0x3438(x)
         r2 = [var_7ch]
         r3 = [r5]
         (a, b) = compare (r2, r3)
         bne.w 0x343a             // unlikely

         goto loc_0x0000331a
    loc_0x0000331a: // orphan
         sp += 0x84
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x0000333e: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x328c(x)
         mov.w r2, -1
         mov.w r3, -1
         fp = r3 // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5276(r)
         strd r2, r3, [sl]        // 0x188
         sl = r2 // DATA XREF from sym.mm_v4l2_set_format @ 0x682c(r)
         strd sl, fp, [sp, 0x18]
         
         goto loc_0x00003354
    loc_0x00003354: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x327e(x)
         r4 = [var_38h]
         r2 = r7
         r3 = [0x0000335c]        // [0x347c:4]=0x54b0
         r0 = 2
         r1 = 5
         [sp] = r6
         r3 += pc                 // 0x8814 // "%s: %s(%d) > %s (class 0x%08x)\n" // str._s:__s__d_____s__class_0x_08x__n
         mov.w r7, 0x234
         r6 = var_40h // DATA XREF from sym._mmv4l2_print_control @ 0x4e3c(r)
         str.w r8, [sp, 4]
         [var_10h] = r4
         [var_8h] = r7
         [var_ch] = r6
         fcn.00002084 ()
         r0 = sb
         
         goto loc_0x0000337a
    loc_0x0000337a: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x3292(x) // DATA XREF from sym.mmv4l2_wait_frame @ 0x6378(x)
         r2 = [var_30h]
         r3 = [var_34h]
         [var_18h] = r2
         [var_1ch] = r3
         ldrd r2, r3, [sp, 0x18]
         strd r2, r3, [sl]        // 0x188
         
    loc_0x0000338c: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x32e8(x)
         r3 = [0x00003390]        // [0x3480:4]=0x549c
         r2 = r4
         r0 = 2
         r1 = 5
         r3 += pc                 // 0x8834 // "%s: %s(%d) > not supported V4L2_CTRL_TYPE_STRING\n" // str._s:__s__d____not_supported_V4L2_CTRL_TYPE_STRING_n
         r4 = 0x24f
         str.w r8, [sp]
         [var_4h] = r6
         [var_8h] = r4
         fcn.00002084 () // DATA XREF from sym.mmv4l2_wait_frame @ 0x634c(r)
         
         goto loc_0x000033a8
    loc_0x000033a8: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x3296(x)
         mov.w r2, -1
         mov.w r3, -1 // DATA XREFS from sym.mmv4l2_get_bps @ 0x640a(r), 0x643e(r), 0x644c(r)
         strd r2, r3, [sl]        // 0x188
         r0 = 2
         r3 = [0x000033b8]        // [0x3484:4]=0x5470 // DATA XREF from sym._mmv4l2_print_control @ 0x4c46(r)
         r2 = r7
         r1 = 5
         mov.w r4, 0x244
         r3 += pc                 // 0x8834 // "%s: %s(%d) > not supported V4L2_CTRL_TYPE_STRING\n" // str._s:__s__d____not_supported_V4L2_CTRL_TYPE_STRING_n
         stm.w sp, (r6, r8)
         [var_8h] = r4 // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51f4(r)
         fcn.00002084 ()
         ldrd r2, r3, [sl]        // 0x188
         strd r2, r3, [sp, 0x18]
         
    loc_0x00003402: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x326e(x)
         fcn.00001fa8 ()
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         stm.w sp, (r6, r8)
         mov.w r3, 0x228
         str.w sb, [sp, 0xc]
         [var_8h] = r3
         r2 = r7
         r3 = [0x00003420]        // [0x3490:4]=0x538e
         r1 = 6
         r3 += pc                 // 0x87b4 // "%s: %s(%d) > unable to query_control 0x%8.8x: %s (%d).\n" // str._s:__s__d____unable_to_query_control_0x_8.8x:__s___d_._n
         [var_10h] = r0
         r0 = 2
         r4 = [r4]
         [var_14h] = r4 // DATA XREFS from sym.__mmv4l2_get_control @ +0x174(r), +0x1a4(r)
         fcn.00002084 ()
         r0 = 0x1006              // "atus"
         r0 |= 0x8000 << 16
         
    loc_0x0000343a: // orphan
         // CODE XREF from sym._mmv4l2_get_control @ 0x3316(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_save_file (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4, int16_t arg_50h) {
    loc_0x0000613c:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        r6 = r0       // arg1
        sp -= 0x2c
        r0 = r2       // arg3
        r5 = r2       // arg3
        r7 = r1       // arg2
        r8 = r3       // arg4
        fcn.00001f30 ()
        sb = [arg_50h] // 0x178000 // r13
        r0 += 0xc
        fcn.00001ea0 ()
        r4 = r0
        r0 = 0x100b   // '\v\x10' // "__mmv4l2_query_control"
        r0 |= 0x8000 << 16
        (a, b) = compare (r4, 0)
        beq.w 0x6296  // unlikely
        goto loc_0x0000616a;
    loc_0x00006296:
        // CODE XREFS from sym.mmv4l2_save_file @ 0x6166(x), 0x61c4(x)
        sp += 0x2c
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc) // str.mm_v4l2_capture_image
        goto loc_0x0000617a;
        return r0;
    loc_0x0000617a:
        r3 = [0x0000617c] // [0x62a8:4]=0x36c0
        r1 = 1
        r0 = r4
        mov.w r2, -1
        r3 += pc      // 0x9848 // "%.*s%06u-%06u%s" // str._.s_06u__06u_s
        [var_4h] = r5
        str.w r8, [sp, 8]
        rsb r5, r5, lr
        str.w sb, [sp, 0xc]
        lr += r1
        [sp] = r5
        str.w lr, [sp, 0x10]
        fcn.00001fcc ()
        
    loc_0x000061a0:
        // CODE XREF from sym.mmv4l2_save_file @ 0x62a4(x)
        r1 = 0x241
        mov.w r2, 0x1b6
        r0 = r4
        fcn.00001ee8 ()
        r8 = r0
        r0 = r4       // void *ptr
        sym.imp.free () // void free(0)
        cmp.w r8, -1  // 0xffffffff // -1
        itt eq
        r0 = 0x1005   // "tatus"
        r0 |= 0x8000 << 16
        je 0x6296     // unlikely
        goto loc_0x000061c6;
        return r0;
    loc_0x000061c6:
        ldrb.w r3, [r6, 0x28] // elf_phdr
        (a, b) = compare (r3, 0)
        je 0x6288     // unlikely
        goto loc_0x000061ce;
    loc_0x00006288:
        // CODE XREFS from sym.mmv4l2_save_file @ 0x61cc(x), 0x621a(x)
        r0 = r8
        sym.imp.fsync ()
        r0 = r8
        fcn.00002150 ()
        r0 = 0
    loc_0x000061a0: // orphan
         // CODE XREF from sym.mmv4l2_save_file @ 0x62a4(x)
         r1 = 0x241
         mov.w r2, 0x1b6
         r0 = r4
         fcn.00001ee8 ()
         r8 = r0
         r0 = r4                  // void *ptr
         sym.imp.free () // void free(0)
         cmp.w r8, -1             // 0xffffffff // -1
         itt eq
         r0 = 0x1005              // "tatus"
         r0 |= 0x8000 << 16
         je 0x6296                // unlikely

    loc_0x000061ce: // orphan
         r3 = [0x000061d0]        // [0x62ac:4]=0x3522 // "\"5"
         r4 = 0
         sb = [0x000061d8]        // [0x62b0:4]=0x1e22
         mov.w fp, 0xdc
         r3 += pc                 // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
         sl = [0x000061e4]        // [0x62b4:4]=0x3690
         r3 += 0x4c               // 0x974c // "mmv4l2_save_file" // str.mmv4l2_save_file
         [var_24h] = r3
         r3 = [0x000061e8]        // [0x62b8:4]=0x35e0
         sb += pc                 // 0x800c // "V4L2" // str.V4L2
         sl += pc                 // 0x987c // "%s: %s(%d) > write error: only %d bytes written instead of %u\n" // str._s:__s__d____write_error:_only__d_bytes_written_instead_of__u_n
         ip = r6
         r3 += pc                 // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
         [var_20h] = r3
         
         goto loc_0x000061f2
    loc_0x000061f2: // orphan
         // CODE XREF from sym.mmv4l2_save_file @ 0x6252(x)
         (a, b) = compare (lr, r5)
         je 0x6214                // likely

         goto loc_0x000061f6
    loc_0x000061f6: // orphan
         r6 = [var_20h]           // "mm_v4l2_utils.c" str.mm_v4l2_utils.c
         str.w ip, [sp, 0x1c]
         str.w fp, [sp, 8]
         [sp] = r6
         r6 = [var_24h]           // "mmv4l2_save_file" str.mmv4l2_save_file
         str.w lr, [sp, 0xc]
         [var_10h] = r5
         [var_4h] = r6
         fcn.00002084 ()
         ip = [var_1ch]

    loc_0x00006214: // orphan
         // CODE XREF from sym.mmv4l2_save_file @ 0x61f4(x)
         ldrb.w r3, [ip, 0x28]    // elf_phdr
         (a, b) = compare (r3, r4)
         bls 0x6288               // unlikely

         goto loc_0x0000621c
    loc_0x0000621c: // orphan
         // CODE XREF from sym.mmv4l2_save_file @ 0x61f0(x)
         r2 = [r7]
         r0 = r8
         r1 = [ip + 0x14]
         r5 = [r7 + 8]
         add.w r2, r2, r2, lsl 4
         add.w r3, r1, r2, lsl 2
         r2 = r5
         add.w r3, r3, r4, lsl 2
         r4 += 1
         r1 = [r3 + 0x24]
         str.w ip, [sp, 0x1c]
         fcn.00001ffc ()
         r1 = 6
         r2 = sb
         r3 = sl
         ip = [var_1ch]
         subs.w lr, r0, 0
         mov.w r0, 2
         (>=) 
         goto loc_0x00006254
    loc_0x00006254: // orphan
         fcn.00001fa8 ()
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         r3 = [0x00006264]        // [0x62bc:4]=0x3496
         r2 = [0x00006264]        // [0x62c0:4]=0x3562
         r1 = 0xd7                // U(pstr 0x00000164) "y\x068x\x1e7"
         r3 += pc                 // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
         [var_8h] = r1
         r2 += pc                 // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
         r3 += 0x4c               // 0x974c // "mmv4l2_save_file" // str.mmv4l2_save_file
         stm.w sp, (r2, r3)
         r1 = 6
         r2 = [0x00006278]        // [0x62c4:4]=0x1d90
         r3 = [0x00006278]        // [0x62c8:4]=0x35da
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9858 // "%s: %s(%d) > write error: %s (%d)\n" // str._s:__s__d____write_error:__s___d__n
         [var_ch] = r0
         r0 = 2
         r4 = [r4]
         [var_10h] = r4
         fcn.00002084 ()

    loc_0x0000629c: // orphan
         // CODE XREF from sym.mmv4l2_save_file @ 0x6176(x)
         r1 = r5                  // const char *src
         r0 = r4                  // char *dest
         sym.imp.strcpy () // char *strcpy(0, 0)
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_alloc_buffer_userptr (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
    loc_0x00003efc:
        // DATA XREF from sym.__mmv4l2_free_buffer_userptr @ 0x4130(r)
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        sp -= 0x2c
        r4 = [0x00003f04] // [0x405c:4]=0x46ba
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5166(r)
        sb = r0       // arg1
        r7 = r1       // arg2
        sl = r2       // arg3
        r4 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x519e(r)
        r8 = r3       // arg4
        [var_18h] = r4
        fcn.00001f84 ()
        r6 = [0x00003f18] // [0x4060:4]=0x40ee
        r1 = 3
        r5 = [0x00003f1c] // [0x4064:4]=0x4362 // "bC"
        r6 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00003f20] // [0x4068:4]=0x40ec
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51d6(r)
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        [sp] = r4
        r2 = r6       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += 0x128   // 0x83ac // "__mmv4l2_alloc_buffer_userptr" // str.__mmv4l2_alloc_buffer_userptr
        mov.w r4, 0x384
        [var_4h] = r5
        // DATA XREF from fcn.00003ba2 @ +0xd2(r)
        [var_8h] = r4
        fp = r0
        r0 = 2
        fcn.00002084 ()
        cmp.w sb, 0
        // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x433c(r)
        je 0x4030     // likely
        goto loc_0x00003f40;
    loc_0x00004030:
        // CODE XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f3e(x)
        r2 = r6
        r3 = [0x00004034] // [0x409c:4]=0x3ffc
        r6 = [var_18h]
        r0 = 2
        r7 = [0x0000403c] // [0x40a0:4]=0x416a
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r4 = 0x386
        // DATA XREF from sym._mmv4l2_list_controls @ 0x4f66(r)
        r7 += pc      // 0x81b0 // "v4l2" // str.v4l2
        [sp] = r6
        [var_4h] = r5
        [var_ch] = r7
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4560(r)
        goto 0x402a
        
    loc_0x0000402a:
        // CODE XREFS from sym.__mmv4l2_alloc_buffer_userptr @ 0x4000(x), 0x4058(x)
        sp += 0x2c
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc) // str.mm_v4l2_capture_image
        goto loc_0x00003f48;
        return r0;
    loc_0x00003f48:
        r6 = [0x00003f4c] // [0x406c:4]=0x4c92
        r5 = r7 - 4
        r3 = [0x00003f50] // [0x4070:4]=0x432c // ",C"
        r6 += pc      // 0x8be4 // "%s: %s(%d) > Buffer %u/%u allocated at address %p.\n" // str._s:__s__d____Buffer__u__u_allocated_at_address__p._n
        // DATA XREF from sym.__mmv4l2_free_buffer_userptr @ 0x40b4(r)
        r4 = [0x00003f54] // [0x4074:4]=0x40b0
        [var_1ch] = r6
        r3 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym.__mmv4l2_free_buffer_userptr @ 0x40aa(r)
        r6 = [0x00003f58] // [0x4078:4]=0x4664 ".:" // "dF"
        r4 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += 0x128   // 0x83ac // "__mmv4l2_alloc_buffer_userptr" // str.__mmv4l2_alloc_buffer_userptr
        [var_18h] = r4
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r4 = 0
        [var_24h] = r3
        [var_20h] = r6
        goto 0x3fa2
        
    loc_0x00003fa2:
        // CODE XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f68(x)
        r6 = [sl + 0x38]
        add.w r0, r7, r4, lsl 2
        r0 += 0x24
        r1 = fp       // r13
        r2 = r8 + r6
        fcn.00001f90 ()
        r1 = 3
        r2 = [var_18h] // "V4L2" str.V4L2
        r3 = [var_1ch] // "%s: %s(%d) > Buffer %u/%u allocated at address %p.\n" str._s:__s__d____Buffer__u__u_allocated_at_address__p._n
        subs.w lr, r0, 0
        mov.w r0, 2
        (>=) goto 0x3f6a // likely
        goto loc_0x00003fc6;
        return r0;
    loc_0x00003fc6:
        ip = [r7]
        r1 = 6
        r7 = [0x00003fd0] // [0x407c:4]=0x42aa
        r5 = 0x391
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x45e8(r)
        r2 = [0x00003fd4] // [0x4080:4]=0x402e // ".@"
        r3 = [0x00003fd8] // [0x4084:4]=0x4bc8
        r7 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym.__mmv4l2_mmap_buffer @ +0x180(r)
        r6 = [0x00003fdc] // [0x4088:4]=0x45e2
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x8ba8 // "%s: %s(%d) > Unable to allocate aligned buffer %u/%u (%d)\n" // str._s:__s__d____Unable_to_allocate_aligned_buffer__u__u___d__n
        r7 += 0x128   // 0x83ac // "__mmv4l2_alloc_buffer_userptr" // str.__mmv4l2_alloc_buffer_userptr
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        str.w ip, [sp, 0xc]
        [var_10h] = r4
        str.w lr, [sp, 0x14]
        stm.w sp, (r6, r7)
        [var_8h] = r5
        fcn.00002084 ()
        // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x4006(r)
        r0 = 0x1004   // "status"
        // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x4032(r)
        r0 |= 0x8000 << 16
        goto 0x402a
    loc_0x00003f6a: // orphan
         // CODE XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3fc4(x)
         lr = [r5 + 0x28]
         lr += r8
         str.w lr, [r5, 0x28]
         r5 += 4
         [r5 + 4] = r6 // DATA XREF from sym.__mmv4l2_mmap_buffer @ +0x178(r)
         r6 = [var_20h]           // "mm_v4l2_priv.c" str.mm_v4l2_priv.c
         ip = [r7]
         [var_10h] = r4
         r4 += 1
         [sp] = r6
         r6 = [var_24h]           // "__mmv4l2_alloc_buffer_userptr" str.__mmv4l2_alloc_buffer_userptr // DATA XREF from sym.__mmv4l2_free_buffer_userptr @ 0x410a(r)
         str.w lr, [sp, 0x14]
         str.w ip, [sp, 0xc]
         [var_4h] = r6
         r6 = 0x399
         [var_8h] = r6
         fcn.00002084 ()
         ldrb.w r3, [sb, 0x28]    // elf_phdr
         (a, b) = compare (r3, r4)
         bls 0x4002               // unlikely

    loc_0x00003fa2: // orphan
         // CODE XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f68(x)
         r6 = [sl + 0x38]
         add.w r0, r7, r4, lsl 2
         r0 += 0x24
         r1 = fp                  // (pstr 0x000085c8) "mm_v4l2_priv.c" r13
         r2 = r8 + r6
         fcn.00001f90 ()
         r1 = 3
         r2 = [var_18h]           // "V4L2" str.V4L2
         r3 = [var_1ch]           // "%s: %s(%d) > Buffer %u/%u allocated at address %p.\n" str._s:__s__d____Buffer__u__u_allocated_at_address__p._n
         subs.w lr, r0, 0
         mov.w r0, 2
         (>=) 
    loc_0x00004002: // orphan
         // CODE XREFS from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f46(x), 0x3fa0(x)
         r5 = [0x00004004]        // [0x408c:4]=0x4274 // "tB"
         r0 = 2
         r2 = [0x00004008]        // [0x4090:4]=0x3ff8
         r1 = 3
         r3 = [0x0000400c]        // [0x4094:4]=0x4086
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym._mmv4l2_list_controls @ 0x4fbe(r)
         r6 = [0x00004010]        // [0x4098:4]=0x45ac
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         mov.w r4, 0x39c
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0x128              // 0x83ac // "__mmv4l2_alloc_buffer_userptr" // str.__mmv4l2_alloc_buffer_userptr
         [sp] = r6
         [var_4h] = r5 // DATA XREF from sym._mmv4l2_free_buffers @ 0x4598(r)
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0

    loc_0x0000402a: // orphan
         // CODE XREFS from sym.__mmv4l2_alloc_buffer_userptr @ 0x4000(x), 0x4058(x)
         sp += 0x2c
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc) // str.mm_v4l2_capture_image

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mmv4l2_wait_frame (int16_t arg1) {
    loc_0x000062cc:
        push (r4, r5, r6, r7, r8, lr) // (cstr 0x00178000) "\u0205"
        sp -= 0x98
        r3 = var_ch   // (pstr 0x00008314) "_mmv4l2_get_control"
        r2 = var_8ch
        r1 = 0
        
    loc_0x000062d8:
        // CODE XREF from sym.mmv4l2_wait_frame @ 0x62e0(x)
        [r3 + 4]! = r1
        r4 = 0
        (a, b) = compare (r3, r2)
        bne 0x62d8    // likely
        goto loc_0x000062e2;
        return r0;
    loc_0x000062e2:
        r5 = [r0]     // arg1
        r8 = var_98h
        mov.w lr, 1
        r6 = var_90h
        ip = r5 + 0x1f
        r0 = r5 + lr  // int nfds
        (a, b) = compare (r5, r4)
        it ge
        ip = r5
        r7 = r5 >> 0x1f
        [sp] = r6
        r1 = readfds  // fd_set *readfds
        asr.w ip, ip, 5
        r7 = r7 >> 0x1b
        r5 += r7
        r2 = r4       // fd_set *writefds
        add.w ip, r8, ip, lsl 2
        r5 &= 0x1f
        r5 -= r7
        r3 = r4       // fd_set *exceptfds
        r6 = [ip - 0x88]
        r5 = lr << r5
        r7 = 3
        [var_94h] = r4
        orrs r5, r6
        [ip - 0x88] = r5
        [var_90h] = r7
        sym.imp.select () // int select(0, 0x178010, 0, 0, -1)
        r1 = r0 + 1
        je 0x633e     // unlikely
        goto loc_0x00006334;
    loc_0x0000633e:
        // CODE XREF from sym.mmv4l2_wait_frame @ 0x6332(x)
        fcn.00001fa8 ()
        r3 = [r0]
        (a, b) = compare (r3, 4)
        je 0x6336     // unlikely
        goto loc_0x00006348;
    loc_0x00006336:
        // CODE XREF from sym.mmv4l2_wait_frame @ 0x6346(x)
        r0 = r4
        
    loc_0x00006338:
        // CODE XREF from sym.mmv4l2_wait_frame @ 0x6372(x)
        sp += 0x98
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x00006336;
        return r0;
    loc_0x00006374:
        // CODE XREF from sym.mmv4l2_wait_frame @ 0x6334(x)
        r6 = [0x00006378] // [0x63a0:4]=0x344e
        r0 = 2
        r5 = [0x0000637c] // [0x63a4:4]=0x337a
        r1 = 6
        r2 = [0x00006380] // [0x63a8:4]=0x1c84
        r6 += pc      // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
        r3 = [0x00006384] // [0x63ac:4]=0x354e
        r5 += pc      // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        mov.w r4, 0x100 // "GNU"
        r3 += pc      // 0x98dc // "%s: %s(%d) > select() timeout." // str._s:__s__d____select___timeout.
        goto 0x635e
        
    loc_0x0000635e:
        // CODE XREF from sym.mmv4l2_wait_frame @ 0x638c(x)
        r5 += 0x60    // 0x9760 // "mmv4l2_wait_frame"
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x1006   // "atus"
        r0 |= 0x8000 << 16
        goto 0x6338
        return r0;
    loc_0x00006334: // orphan
         if (!r0) 
    loc_0x00006338: // orphan
         // CODE XREF from sym.mmv4l2_wait_frame @ 0x6372(x)
         sp += 0x98
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x00006348: // orphan
         r6 = [0x0000634c]        // [0x6390:4]=0x347a // "z4"
         r0 = 2
         r5 = [0x00006350]        // [0x6394:4]=0x33a6
         r1 = 6
         r2 = [0x00006354]        // [0x6398:4]=0x1cb0
         r6 += pc                 // 0x97d0 // "mm_v4l2_utils.c" // str.mm_v4l2_utils.c
         r3 = [0x00006358]        // [0x639c:4]=0x355c
         r5 += pc                 // 0x9700 // "mmv4l2_cap_get_buf_type" // str.mmv4l2_cap_get_buf_type
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r4 = 0xfa
         r3 += pc                 // 0x98bc // "%s: %s(%d) > select() failed." // str._s:__s__d____select___failed.

    loc_0x0000635e: // orphan
         // CODE XREF from sym.mmv4l2_wait_frame @ 0x638c(x)
         r5 += 0x60               // 0x9760 // "mmv4l2_wait_frame"
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0x1006              // "atus"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_set_control (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
    loc_0x00003494:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        r5 = r0       // arg1
        lr = [0x000034a0] // [0x36d4:4]=0xf000
        fp = r3       // arg4
        r0 = [0x000034a4] // [0x36d8:4]=388
        sp -= 0xa4    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        lr += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        sl = [0x000034ac] // [0x36dc:4]=0x4b54 // "TK"
        r8 = [0x000034b0] // [0x36e0:4]=0x4dc2
        r4 = r1       // arg2
        // DATA XREF from sym._mmv4l2_get_control @ +0x25c(r)
        r6 = [lr + r0] // 0x1262c // reloc.__stack_chk_guard
        sl += pc      // 0x800c // "V4L2" // str.V4L2
        // DATA XREF from sym._mmv4l2_print_control @ 0x4b48(r)
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5106(r)
        r3 = [0x000034b8] // [0x36e4:4]=0x4b46 // "FK"
        r7 = r2       // arg3
        sb = [0x000034c0] // [0x36e8:4]=0x50f8
        r8 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        ip = [r6]
        r0 = 2
        r2 = sl       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        sb += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r8 += 0xa4    // 0x8328 // "_mmv4l2_set_control" // str._mmv4l2_set_control
        lr = 0x263
        str.w sb, [sp]
        str.w r8, [sp, 4]
        str.w ip, [sp, 0x9c]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        beq.w 0x366a  // likely
        goto loc_0x000034f0;
    loc_0x0000366a:
        // CODE XREF from sym._mmv4l2_set_control @ 0x34ec(x)
        r3 = [0x0000366c] // [0x3710:4]=0x49c4 ".7"
        r2 = sl
        r5 = [0x00003670] // [0x3714:4]=0x4b36
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        // DATA XREF from sym._mmv4l2_print_control @ 0x4c02(r)
        r4 = 0x265
        str.w sb, [sp]
        str.w r8, [sp, 4]
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        // DATA XREF from sym.mmv4l2_save_file @ 0x61dc(r)
        r0 |= 0x8000 << 16
        goto 0x35ae
        
    loc_0x000035ae:
        // CODE XREFS from sym._mmv4l2_set_control @ 0x3608(x), 0x3694(x), 0x36ce(x)
        r2 = [var_9ch]
        r3 = [r6]
        (a, b) = compare (r2, r3)
        bne.w 0x36d0  // likely
        goto loc_0x000035b8;
        goto loc_0x00003500;
        return r0;
    loc_0x00003500:
        r3 = [var_5ch]
        (a, b) = compare (r3, 5)
        beq.w 0x360a  // unlikely
        goto loc_0x00003508;
    loc_0x0000360a:
        // CODE XREF from sym._mmv4l2_set_control @ 0x3504(x)
        r1 = 1
        r2 = 0
        r2 |= 0xfff << 16
        r3 = 0
        r2 &= r4
        r0 = var_38h  // (cstr 0x00009a14) "mm_v4l2_capture_image"
        r8 = r1
        [var_38h] = r4
        [var_44h] = r7
        str.w fp, [sp, 0x48]
        [var_20h] = r2
        // DATA XREF from sym._mmv4l2_list_controls @ 0x4f96(r)
        [var_24h] = r1
        [var_28h] = r3
        [var_2ch] = r3
        // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a66(r)
        [var_30h] = r3
        [var_3ch] = r3
        [var_40h] = r3
        [var_34h] = r0
        goto 0x352e
        
    loc_0x0000352e:
        // CODE XREF from sym._mmv4l2_set_control @ 0x3632(x)
        r1 = 0x5648   // 'HV'
        r0 = [r5]     // int fd
        r1 |= 0xc018 << 16 // unsigned long request
        r2 = var_20h
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5078(r)
        sym.imp.ioctl () // int ioctl(-1, 0xc0185648)
        r0 += 1
        // DATA XREF from sym.mm_v4l2_create @ 0x6570(r)
        je 0x35be     // likely
        goto loc_0x00003542;
        return r0;
    loc_0x00003508: // orphan
         r2 = 0
         r1 = var_38h
         [var_38h] = r4
         r3 = r2
         r2 |= 0xfff << 16
         r8 = r3 // DATA XREF from sym.mm_v4l2_create @ 0x65c2(r)
         r2 &= r4
         [var_44h] = r7
         [var_20h] = r2
         r2 = 1
         [var_28h] = r3 // DATA XREF from sym._mmv4l2_print_control @ 0x4d54(r)
         [var_2ch] = r3 // DATA XREF from sym.mmv4l2_save_file @ 0x61ce(r)
         [var_30h] = r3
         [var_3ch] = r3
         [var_40h] = r3
         [var_48h] = r3
         [var_34h] = r1
         [var_24h] = r2

    loc_0x0000352e: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x3632(x)
         r1 = 0x5648              // 'HV'
         r0 = [r5]                // int fd
         r1 |= 0xc018 << 16       // unsigned long request
         r2 = var_20h // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5078(r)
         sym.imp.ioctl () // int ioctl(-1, 0xc0185648)
         r0 += 1 // DATA XREF from sym.mm_v4l2_create @ 0x6570(r)
         je 0x35be                // likely

         goto loc_0x00003542
    loc_0x00003542: // orphan
         // DATA XREF from sym.mm_v4l2_create @ 0x6500(r)
         r5 = [var_44h]
         lr = [var_48h] // DATA XREF from sym.__mmv4l2_get_control @ +0x188(r)
         cmp.w r8, 0
         bne 0x3552               // unlikely

         goto loc_0x0000354e
    loc_0x0000354e: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x3664(x) // DATA XREF from sym.mmv4l2_wait_frame @ 0x6380(x)
         asr.w lr, r5, 0x1f

    loc_0x00003552: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x354c(x)
         r8 = [0x00003558]        // [0x36ec:4]=0x4aaa
         r1 = 3
         ip = [0x00003560]        // [0x36f0:4]=0x4d1a // DATA XREF from sym.mmv4l2_wait_frame @ 0x6354(r)
         r0 = 2
         r8 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 = [0x00003564]        // [0x36f4:4]=0x5326 // "&S" // DATA XREF from sym.mmv4l2_save_file @ 0x6262(r)
         sb = [0x00003568]        // [0x36f8:4]=0x5058 // "XP"
         ip += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r2 = r8                  // "V4L2" str.V4L2
         r3 += pc                 // 0x8894 // "%s: %s(%d) > Control 0x%08x set to %lld, is %lld\n" // str._s:__s__d____Control_0x_08x_set_to__lld__is__lld_n
         sb += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [var_ch] = r4
         str.w lr, [sp, 0x1c]
         r4 = ip + 0xa4           // 0x8328 // "_mmv4l2_set_control" // str._mmv4l2_set_control
         mov.w sl, 0x2ac
         [var_4h] = r4
         [var_10h] = r7
         str.w fp, [sp, 0x14]
         [var_18h] = r5
         str.w sb, [sp]
         str.w sl, [sp, 8]
         fcn.00002084 ()
         r3 = [0x00003594]        // [0x36fc:4]=0x4afe
         r2 = r8                  // "V4L2" str.V4L2
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n // DATA XREF from sym._mmv4l2_get_control @ +0x248(r)
         [var_4h] = r4
         str.w sb, [sp]
         r4 = 0x2ae
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0

    loc_0x000035ae: // orphan
         // CODE XREFS from sym._mmv4l2_set_control @ 0x3608(x), 0x3694(x), 0x36ce(x)
         r2 = [var_9ch]
         r3 = [r6]
         (a, b) = compare (r2, r3)
         bne.w 0x36d0             // likely

         goto loc_0x000035b8
    loc_0x000035b8: // orphan
         sp += 0xa4
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x000035be: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x3540(x)
         cmp.w r8, 0
         je 0x3634                // likely

         goto loc_0x000035c4
    loc_0x000035c4: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x3638(x)
         fcn.00001fa8 ()
         r8 = r0

    loc_0x000035ca: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x3668(x)
         r0 = [r8]

    loc_0x000035ce: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x3648(x)
         fcn.00001eb8 ()
         r2 = [0x000035d4]        // [0x3700:4]=0x4ca6
         r5 = [0x000035d8]        // [0x3704:4]=0x4fe2
         r3 = 0x2a7 // DATA XREFS from sym.mmv4l2_save_file @ 0x6276(r), 0x6280(r)
         r2 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         [var_8h] = r3
         [var_ch] = r4 // DATA XREFS from sym.mmv4l2_save_file @ 0x61e4(r), 0x621c(r), 0x6220(r), 0x6224(r), 0x6236(r)
         r2 += 0xa4               // 0x8328 // "_mmv4l2_set_control" // str._mmv4l2_set_control
         r5 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c // DATA XREF from sym._mmv4l2_get_control @ +0x278(r)
         [var_4h] = r2
         [sp] = r5
         r1 = 6
         r2 = [0x000035ec]        // [0x3708:4]=0x4a1a
         r3 = [0x000035f0]        // [0x370c:4]=0x52d4
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2 // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a14(r) // DATA XREF from sym._mmv4l2_print_control @ 0x4c82(r)
         r3 += pc                 // 0x88c8 // "%s: %s(%d) > unable to set_control 0x%8.8x: %s (%d).\n" // str._s:__s__d____unable_to_set_control_0x_8.8x:__s___d_._n
         [var_10h] = r0
         r0 = 2 // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a0a(r)
         r4 = [r8] // DATA XREF from sym.mmv4l2_convert_pixel_format @ 0x60f8(r)
         [var_14h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
    loc_0x00003634: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x35c2(x) // DATA XREF from sym._mmv4l2_print_control @ 0x4c42(x)
         r3 = [var_5ch]
         (a, b) = compare (r3, 7)
         je 0x35c4                // unlikely

         goto loc_0x0000363a
    loc_0x0000363a: // orphan
         fcn.00001fa8 ()
         r8 = r0
         r0 = [r0]
         (a, b) = compare (r0, 0x16)
         it ne
         (a, b) = compare (r0, 0x19)
         bne 0x35ce               // likely

         goto loc_0x0000364a
    loc_0x0000364a: // orphan
         r0 = [r5]                // int fd
         r1 = 0x561c              // '\x1cV' // DATA XREF from sym._mmv4l2_list_controls @ 0x4f6a(r)
         r2 = var_4ch
         r1 |= 0xc00c << 16       // unsigned long request
         [var_4ch] = r4
         [var_50h] = r7
         sym.imp.ioctl () // int ioctl(-1, 0xc00c561c) // DATA XREFS from sym._mmv4l2_set_quality @ 0x5d44(r), 0x5ddc(r), 0x5dee(r), 0x5e06(r)
         r0 += 1 // DATA XREF from sym._mmv4l2_set_quality @ 0x5e14(r)
         it ne // DATA XREFS from sym._mmv4l2_set_quality @ 0x5d32(r), 0x5da2(r), 0x5dce(r)
         r5 = [var_50h]           // "mm_v4l2_capture_image" str.mm_v4l2_capture_image
         bne.w 0x354e             // unlikely

         goto loc_0x00003668
    loc_0x00003668: // orphan
         
    loc_0x00003696: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x34fc(x)
         fcn.00001fa8 ()
         r5 = r0 // DATA XREF from sym._mmv4l2_get_control @ +0x258(r)
         r0 = [r0]
         fcn.00001eb8 ()
         str.w sb, [sp] // DATA XREF from sym._mmv4l2_list_controls @ 0x4f14(r)
         str.w r8, [sp, 4] // DATA XREF from sym.mmv4l2_convert_buf_type @ 0x6048(r)
         r3 = 0x26b
         [var_ch] = r4
         r2 = sl
         [var_8h] = r3
         r1 = 6
         r3 = [0x000036b8]        // [0x3718:4]=0x50f8
         r3 += pc                 // 0x87b4 // "%s: %s(%d) > unable to query_control 0x%8.8x: %s (%d).\n" // str._s:__s__d____unable_to_query_control_0x_8.8x:__s___d_._n
         [var_10h] = r0
         r0 = 2
         r4 = [r5] // DATA XREF from sym.mmv4l2_convert_pixel_format @ 0x6104(r) // DATA XREF from sym.mmv4l2_save_file @ 0x617a(r)
         [var_14h] = r4
         fcn.00002084 () // DATA XREF from sym._mmv4l2_enable_stream @ 0x4adc(r)
         r0 = 0x1006              // "atus" // DATA XREFS from sym._mmv4l2_dequeue_buffer @ 0x4888(r), 0x488c(r), 0x489e(r), 0x48dc(r), 0x4966(r)
         r0 |= 0x8000 << 16
         
         goto loc_0x000036d0
    loc_0x000036d0: // orphan
         // CODE XREF from sym._mmv4l2_set_control @ 0x35b4(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_set_input (int16_t arg1, int16_t arg2) {
    loc_0x00005be0:
        push (r4, r5, r6, r7, r8, lr)
        sp -= 0x20    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r6 = [0x00005be8] // [0x5cb0:4]=0x241a
        r7 = r0       // arg1
        r4 = [0x00005bec] // [0x5cb4:4]=0x268c
        r8 = r1       // arg2
        r6 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00005bf4] // [0x5cb8:4]=0x2414
        r5 = [0x00005bf4] // [0x5cbc:4]=0x29c6
        r4 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r0 = 2
        r2 = r6       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        // DATA XREF from sym._mmv4l2_set_attribute @ 0x245e(r)
        r5 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r4 += 0x2c8   // 0x854c // "_mmv4l2_set_input" // str._mmv4l2_set_input
        lr = 0x697
        str.w r8, [sp, 0x1c]
        [var_4h] = r4
        [sp] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r7, 0)
        je 0x5c88     // likely
        goto loc_0x00005c1c;
    loc_0x00005c88:
        // CODE XREF from sym._mmv4l2_set_input @ 0x5c1a(x)
        r3 = [0x00005c8c] // [0x5cc8:4]=0x23a6
        r2 = r6
        r7 = [0x00005c90] // [0x5ccc:4]=0x2518
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r7 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r6 = 0x699
        [sp] = r5
        [var_4h] = r4
        [var_ch] = r7
        [var_8h] = r6
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        // DATA XREF from sym._mmv4l2_set_attribute @ 0x2428(r)
        r0 |= 0x8000 << 16
        goto 0x5c4a
        
    loc_0x00005c4a:
        // CODE XREFS from sym._mmv4l2_set_input @ 0x5c86(x), 0x5cae(x)
        sp += 0x20
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x00005c30;
        return r0;
    loc_0x00005c30:
        r3 = [0x00005c34] // [0x5cc0:4]=0x2460
        r2 = r6
        r0 = 2
        r1 = 3
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        [sp] = r5
        [var_4h] = r4
        r5 = 0x6a2
        [var_8h] = r5
        fcn.00002084 ()
        // DATA XREF from sym._mmv4l2_set_attribute @ 0x23b6(r)
        r0 = 0
    loc_0x00005c4a: // orphan
         // CODE XREFS from sym._mmv4l2_set_input @ 0x5c86(x), 0x5cae(x)
         sp += 0x20
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x00005c50: // orphan
         // CODE XREF from sym._mmv4l2_set_input @ 0x5c2e(x)
         fcn.00001fa8 () // DATA XREF from sym._mmv4l2_set_attribute @ 0x23aa(r)
         r7 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         [sp] = r5 // DATA XREF from sym._mmv4l2_set_attribute @ 0x23b8(r)
         [var_4h] = r4 // DATA XREF from sym.__mmv4l2_apply_attribute @ 0x22fa(r)
         r3 = 0x69e
         str.w r8, [sp, 0xc] // DATA XREF from sym._mmv4l2_set_attribute @ 0x2440(r)
         r2 = r6
         [var_8h] = r3
         r1 = 6
         r3 = [0x00005c70]        // [0x5cc4:4]=0x3768
         r3 += pc                 // 0x93dc // "%s: %s(%d) > Unable to select input %u: %s (%d).\n" // str._s:__s__d____Unable_to_select_input__u:__s___d_._n
         [var_10h] = r0
         r0 = 2
         r4 = [r7]
         [var_14h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_create (int16_t arg1) {
    loc_0x000064f0:
        push (r4, r5, r6, r7, r8, sb, lr)
        sp -= 0x14
        r7 = [0x000064f8] // [0x6640:4]=0x1b0a // "\n\x1b"
        r6 = r0       // arg1
        r3 = [0x000064fc] // [0x6644:4]=0x2e34 // "4."
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r8 = [0x00006508] // [0x6648:4]=0x3542 // "B5"
        sb = [0x0000650c] // [0x664c:4]=0x3418
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r8 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        sb += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r4 = 0x32     // '2'
        str.w r8, [sp]
        str.w sb, [sp, 4]
        [var_8h] = r4
        fcn.00002084 ()
        (a, b) = compare (r6, 0)
        je 0x65de     // likely
        goto loc_0x00006526;
    loc_0x000065de:
        // CODE XREF from sym.mm_v4l2_create @ 0x6524(x)
        r3 = [0x000065e0] // [0x6658:4]=0x1a50 // "P\x1a" // (pstr 0x00001116) "userptr"
        r2 = r7
        r6 = [0x000065e4] // [0x665c:4]=0x1bc2
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r6 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x34     // elf_phdr
        str.w r8, [sp]
        r5 = 0x1001   // "og_status"
        str.w sb, [sp, 4]
        r5 |= 0x8000 << 16
        [var_ch] = r6
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x6568
        
    loc_0x00006568:
        // CODE XREFS from sym.mm_v4l2_create @ 0x65c0(x), 0x6606(x)
        r0 = r5
        sp += 0x14
        pop (r4, r5, r6, r7, r8, sb, pc)
        goto loc_0x00006532;
        return r0;
    loc_0x00006532:
        fcn.00002138 ()
        str.w r0, [r4, 0xd4]
        (a, b) = compare (r0, 0)
        je 0x6624     // likely
        goto loc_0x0000653e;
    loc_0x00006624:
        // CODE XREF from sym.mm_v4l2_create @ 0x653c(x)
        r3 = [0x00006628] // [0x6664:4]=0x3460 // "`4"
        r2 = r7
        r0 = 2
        r1 = 6
        r3 += pc      // 0x9a90 // "%s: %s(%d) > failed to create v4l2 lock\n" // str._s:__s__d____failed_to_create_v4l2_lock_n
        r5 = 0x43     // 'C'
        str.w r8, [sp]
        str.w sb, [sp, 4]
        [var_8h] = r5
        fcn.00002084 ()
        goto 0x658a
        
    loc_0x0000658a:
        // CODE XREFS from sym.mm_v4l2_create @ 0x65dc(x), 0x663e(x)
        r0 = [r4 + 0xd4]
        if (!r0) goto 0x659a // likely
        goto loc_0x00006590;
        goto loc_0x0000654c;
        return r0;
    loc_0x0000654c:
        r0 = r4
        fcn.00001f0c ()
        str.w r0, [r4, 0xd0]
        (a, b) = compare (r0, 0)
        je 0x65c2     // likely
        goto loc_0x0000655a;
    loc_0x000065c2:
        // CODE XREF from sym.mm_v4l2_create @ 0x6558(x)
        r3 = [0x000065c4] // [0x6654:4]=0x3516
        r2 = r7
        r0 = 2
        r1 = 6
        r3 += pc      // 0x9ae4 // "%s: %s(%d) > Failed to construct attributes\n" // str._s:__s__d____Failed_to_construct_attributes_n
        r5 = 0x54     // 'T'
        str.w r8, [sp]
        str.w sb, [sp, 4]
        [var_8h] = r5
        fcn.00002084 ()
        goto 0x658a
    loc_0x0000653e: // orphan
         fcn.00002048 ()
         r0 = r4
         rsym._mmv4l2_create ()
         r5 = r0
         if (r0) 
    loc_0x0000655a: // orphan
         r3 = 1
         r0 = [r4 + 0xd4]
         [r4 + 0x18] = (byte) r3  // 0xf4 // segment.NOTE
                                  [01] -r-- section size 36 named .note.gnu.build-id
         [r6] = r4
         sym.imp.g_mutex_unlock ()

    loc_0x00006568: // orphan
         // CODE XREFS from sym.mm_v4l2_create @ 0x65c0(x), 0x6606(x)
         r0 = r5
         sp += 0x14
         pop (r4, r5, r6, r7, r8, sb, pc)

        return r0;
    loc_0x00006570: // orphan
         // CODE XREF from sym.mm_v4l2_create @ 0x654a(x)
         r3 = [0x00006574]        // [0x6650:4]=0x3540 // "@5"
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9abc // "%s: %s(%d) > failed to create mmv4l2\n" // str._s:__s__d____failed_to_create_mmv4l2_n
         r5 = 0x4c                // 'L'
         str.w r8, [sp]
         str.w sb, [sp, 4]
         [var_8h] = r5
         fcn.00002084 ()

    loc_0x0000658a: // orphan
         // CODE XREFS from sym.mm_v4l2_create @ 0x65dc(x), 0x663e(x)
         r0 = [r4 + 0xd4]
         if (!r0) 
         goto loc_0x00006590
    loc_0x00006590: // orphan
         fcn.00001f48 ()
         r3 = 0
         str.w r3, [r4, 0xd4]

    loc_0x0000659a: // orphan
         // CODE XREF from sym.mm_v4l2_create @ 0x658e(x)
         r0 = r4
         fcn.0000215c ()
         r0 = r4
         rsym._mmv4l2_destroy ()
         r0 = r4
         sym.imp.g_free ()

    loc_0x000065ac: // orphan
         // CODE XREF from sym.mm_v4l2_create @ 0x6622(x)
         r3 = 0
         [r6] = r3
         r5 = 0x1004              // "status"
         r5 |= 0x8000 << 16
         r0 = [r3 + 0xd4]
         sym.imp.g_mutex_unlock ()
         
    loc_0x00006608: // orphan
         // CODE XREF from sym.mm_v4l2_create @ 0x6530(x)
         r3 = [0x0000660c]        // [0x6660:4]=0x344c "NP" // "L4"
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9a60 // "%s: %s(%d) > Cannot allocate memory for v4l2\n" // str._s:__s__d____Cannot_allocate_memory_for_v4l2_n
         r4 = 0x3a                // ':'
         str.w r8, [sp]
         str.w sb, [sp, 4]
         [var_8h] = r4
         fcn.00002084 ()
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.000020b4 (int r0, int r1) {
    loc_0x000020b4:
        // CALL XREF from sym.mm_v4l2_create @ 0x6528(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020b4 @ 0x20b4(r)
        pc = [ip + 0x530]! // 0x125ec // reloc.g_malloc0 // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym._mmv4l2_create (int r0, int r1) {
    loc_0x00001d4c:
        // CALL XREF from sym.mm_v4l2_create @ 0x6544(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym._mmv4l2_create @ 0x1d4c(r)
        pc = [ip + 0x778]! // 0x124cc // reloc._mmv4l2_create // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f0c (int r0, int r1) {
    loc_0x00001f0c:
        // CALL XREF from sym.mm_v4l2_create @ 0x654e(x)
        add ip, pc, 0, 12 // 0x1f14 // "L\xf6\xbc\xe5" // rsym._mmv4l2_list_controls
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001f0c @ 0x1f0c(r)
        pc = [ip + 0x64c]! // 0x12560 // reloc._mmv4l2_construct_attribute // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f48 (int r0, int r1) {
    loc_0x00001f48:
        // CALL XREF from sym.mm_v4l2_create @ 0x6590(x)
        // CALL XREF from sym.mm_v4l2_destroy @ 0x66c0(x)
        add ip, pc, 0, 12 // 0x1f50 // "$\xf6\xbc\xe5" // rsym.__mmv4l2_query_control
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001f48 @ 0x1f48(r)
        pc = [ip + 0x624]! // 0x12574 // reloc.g_mutex_free // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.0000215c (int r0, int r1) {
    loc_0x0000215c:
        // CALL XREF from sym.mm_v4l2_create @ 0x659c(x)
        // CALL XREF from sym.mm_v4l2_destroy @ 0x66a6(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.0000215c @ 0x215c(r)
        pc = [ip + 0x4c0]! // 0x12624 // reloc._mmv4l2_deconstruct_attribute // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym._mmv4l2_destroy (int r0, int r1) {
    loc_0x00001d70:
        // CALL XREF from sym.mm_v4l2_create @ 0x65a2(x)
        // CALL XREF from sym.mm_v4l2_destroy @ 0x66ac(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym._mmv4l2_destroy @ 0x1d70(r)
        pc = [ip + 0x760]! // 0x124d8 // reloc._mmv4l2_destroy // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_set_framerate (int16_t arg1, int16_t arg2) {
    loc_0x00003a58:
        r3 = [0x00003a5c] // [0x3c48:4]=0xea44 // "D\xea"
        ip = 0x30a
        // DATA XREFS from sym._mmv4l2_print_control @ 0x4b58(r), 0x4b5e(r)
        r2 = [0x00003a60] // [0x3c4c:4]=388
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x459c(r)
        push (r4, r5, r6, r7, r8, sb, sl, lr)
        sp -= 0xe8
        sb = [r3 + r2] // 0x1262c // reloc.__stack_chk_guard
        r4 = r0       // arg1
        r6 = [0x00003a70] // [0x3c50:4]=0x458c
        r7 = r1       // arg2
        r8 = [0x00003a78] // [0x3c54:4]=0x4800 "B9"
        r0 = 2
        lr = [sb]
        r6 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00003a80] // [0x3c58:4]=0x4588
        r8 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r5 = [0x00003a84] // [0x3c5c:4]=0x4b3a // ":K"
        r1 = 3
        r2 = r6       // "V4L2" str.V4L2
        // DATA XREF from sym._mmv4l2_get_format @ +0x188(r)
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        // DATA XREF from sym._mmv4l2_get_format @ +0x1a4(r)
        r8 += 0xe0    // 0x8364 // "_mmv4l2_set_framerate" // str._mmv4l2_set_framerate
        // DATA XREF from sym._mmv4l2_set_control @ +0x270(r)
        str.w lr, [sp, 0xe4]
        stm.w sp, (r5, r8)
        str.w ip, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4558(r)
        beq.w 0x3c1a  // likely
        goto loc_0x00003aa6;
    loc_0x00003c1a:
        // CODE XREF from sym._mmv4l2_set_framerate @ 0x3aa2(x)
        r3 = [0x00003c1c] // [0x3c7c:4]=0x4414
        r2 = r6
        r7 = [0x00003c20] // [0x3c80:4]=0x4586
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r7 += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x30c
        stm.w sp, (r5, r8)
        [var_ch] = r7
        [var_8h] = r4
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x55c2(r)
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x3b96
        
    loc_0x00003b96:
        // CODE XREFS from sym._mmv4l2_set_framerate @ 0x3bd8(x), 0x3c40(x)
        r2 = [var_e4h]
        r3 = [sb]
        (a, b) = compare (r2, r3)
        bne 0x3c42    // unlikely
        goto loc_0x00003ba0;
        goto loc_0x00003ac8;
        return r0;
    loc_0x00003ac8:
        ip = [var_24h]
        r1 = 3
        sl = [var_28h]
        r0 = 2
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4526(r)
        r3 = [0x00003ad8] // [0x3c60:4]=0x4f70 // "pO"
        r2 = r6
        lr = 0x31b
        str.w ip, [sp, 0xc]
        r3 += pc      // 0x8a54 // "%s: %s(%d) > Current frame rate: %u/%u\n" // str._s:__s__d____Current_frame_rate:__u__u_n
        str.w sl, [sp, 0x10]
        str.w lr, [sp, 8]
        [sp] = r5
        str.w r8, [sp, 4]
        fcn.00002084 ()
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x5764(r)
        lr = [r7]
        // DATA XREF from sym._mmv4l2_set_control @ +0x268(r)
        r1 = 3
        sl = [r7 + 4]
        r0 = 2
        r3 = [0x00003b04] // [0x3c64:4]=0x4f6c // "lO"
        r2 = r6
        ip = 0x31f    // (cstr 0x00001300) "rcpy"
        str.w lr, [sp, 0xc]
        // DATA XREFS from sym._mmv4l2_enum_formats @ 0x578c(r), 0x582c(r)
        r3 += pc      // 0x8a7c // "%s: %s(%d) > Setting frame rate to: %u/%u\n" // str._s:__s__d____Setting_frame_rate_to:__u__u_n
        str.w ip, [sp, 8]
        [sp] = r5
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x57e6(r)
        str.w r8, [sp, 4]
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x5806(r)
        str.w sl, [sp, 0x10]
        fcn.00002084 ()
        lr = [r7]
        r1 = 0x5616   // '\x16V'
        r3 = [r7 + 4]
        // DATA XREF from sym._mmv4l2_queue_buffer @ 0x474c(r)
        // DATA XREFS from sym._mmv4l2_enable_stream @ 0x4a98(r), 0x4a9e(r)
        r1 |= 0xc0cc << 16 // unsigned long request
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x455c(r)
        r0 = [r4]     // int fd
        r2 = var_18h
        str.w lr, [sp, 0x24]
        [var_28h] = r3
        sym.imp.ioctl () // int ioctl(0, 0xc0cc5616)
        (a, b) = compare (r0, 0)
        blt 0x3bda    // unlikely
        goto loc_0x00003b40;
    loc_0x00003bda:
        // CODE XREF from sym._mmv4l2_set_framerate @ 0x3b3e(x)
        fcn.00001fa8 ()
        r4 = r0
        r0 = [r0]
        fcn.00001eb8 ()
        mov.w r3, 0x328
        [var_8h] = r3
        r2 = r6
        r3 = [0x00003bf0] // [0x3c74:4]=0x4eae
        r1 = 6
        stm.w sp, (r5, r8)
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x55ee(r)
        r3 += pc      // 0x8aa8 // "%s: %s(%d) > Unable to set frame rate(VIDIOC_S_PARM): %s (%d).\n" // str._s:__s__d____Unable_to_set_frame_rate_VIDIOC_S_PARM_:__s___d_._n
        goto 0x3bc4
        
    loc_0x00003bc4:
        // DATA XREFS from sym._mmv4l2_get_format @ +0x17c(r), +0x184(r)
        // CODE XREFS from sym._mmv4l2_set_framerate @ 0x3bf8(r), 0x3c18(r)
        [var_ch] = r0
        r0 = 2
        r4 = [r4]
        [var_10h] = r4
        fcn.00002084 ()
        r0 = 0x100f   // '\x0f\x10' // "v4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x3b96
        goto loc_0x00003b54;
        return r0;
    loc_0x00003b54:
        lr = [var_28h]
        r1 = 3
        r7 = [var_24h]
        r2 = r6
        r3 = [0x00003b60] // [0x3c68:4]=0x4f7a // "zO"
        r0 = 2
        r4 = 0x336
        str.w lr, [sp, 0x10]
        r3 += pc      // 0x8ae8 // "%s: %s(%d) > Frame rate set: %u/%u\n" // str._s:__s__d____Frame_rate_set:__u__u_n
        [var_8h] = r4
        [sp] = r5
        mov.w r4, 0x338
        str.w r8, [sp, 4]
        [var_ch] = r7
        fcn.00002084 ()
        r3 = [0x00003b80] // [0x3c6c:4]=0x4512
        r2 = r6
        r0 = 2
        r1 = 3
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        [sp] = r5
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4618(r)
        str.w r8, [sp, 4]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0
    loc_0x00003b40: // orphan
         r0 = [r4]                // int fd
         r2 = var_18h
         r1 = 0x5615              // '\x15V'
         r1 |= 0xc0cc << 16       // unsigned long request
         sym.imp.ioctl () // int ioctl(0, 0xc0cc5615)
         (a, b) = compare (r0, 0)
         blt 0x3bfa               // unlikely

    loc_0x00003b96: // orphan
         // CODE XREFS from sym._mmv4l2_set_framerate @ 0x3bd8(x), 0x3c40(x)
         r2 = [var_e4h]
         r3 = [sb]
         (a, b) = compare (r2, r3)
         bne 0x3c42               // unlikely

         goto loc_0x00003ba0
    loc_0x00003ba0: // orphan
         sp += 0xe8

         goto loc_0x00003ba6
    loc_0x00003ba6: // orphan
         // CODE XREF from sym._mmv4l2_set_framerate @ 0x3ac6(x)
         fcn.00001fa8 ()
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         r3 = 0x315 // DATA XREF from sym._mmv4l2_queue_buffer @ 0x46be(r)
         [var_8h] = r3
         r1 = 6
         r3 = [0x00003bbc]        // [0x3c70:4]=0x4e4e // "NN"
         r2 = r6
         stm.w sp, (r5, r8)
         r3 += pc                 // 0x8a14 // "%s: %s(%d) > Unable to get frame rate(VIDIOC_G_PARM): %s (%d).\n" // str._s:__s__d____Unable_to_get_frame_rate_VIDIOC_G_PARM_:__s___d_._n

    loc_0x00003bc4: // orphan
         // DATA XREFS from sym._mmv4l2_get_format @ +0x17c(r), +0x184(r) // CODE XREFS from sym._mmv4l2_set_framerate @ 0x3bf8(r), 0x3c18(r)
         [var_ch] = r0
         r0 = 2
         r4 = [r4]
         [var_10h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
    loc_0x00003bfa: // orphan
         // CODE XREF from sym._mmv4l2_set_framerate @ 0x3b52(x)
         fcn.00001fa8 ()
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         mov.w r3, 0x330
         [var_8h] = r3
         r2 = r6
         r3 = [0x00003c10]        // [0x3c78:4]=0x4dfa
         r1 = 6
         stm.w sp, (r5, r8)
         r3 += pc                 // 0x8a14 // "%s: %s(%d) > Unable to get frame rate(VIDIOC_G_PARM): %s (%d).\n" // str._s:__s__d____Unable_to_get_frame_rate_VIDIOC_G_PARM_:__s___d_._n
         
    loc_0x00003c42: // orphan
         // CODE XREF from sym._mmv4l2_set_framerate @ 0x3b9e(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_free_buffer_userptr (int16_t arg1, int16_t arg2) {
    loc_0x000040a4:
        push (r4, r5, r6, r7, r8, lr)
        sp -= 0x10
        r7 = [0x000040ac] // [0x415c:4]=0x3f56 // "V?"
        r4 = r0       // arg1
        r5 = [0x000040b0] // [0x4160:4]=0x41c8
        // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f50(r)
        // DATA XREF from sym._mmv4l2_print_control @ 0x4dd2(r)
        r8 = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x000040b8] // [0x4164:4]=0x3f50 // "P?"
        r6 = [0x000040b8] // [0x4168:4]=0x4502
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x148   // 0x83cc // "__mmv4l2_free_buffer_userptr" // str.__mmv4l2_free_buffer_userptr
        lr = 0x3a6
        [sp] = r6
        [var_4h] = r5
        // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x41a6(r)
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x4130     // likely
        goto loc_0x000040dc;
    loc_0x00004130:
        // CODE XREF from sym.__mmv4l2_free_buffer_userptr @ 0x40da(x)
        r3 = sym.__mmv4l2_alloc_buffer_userptr // [0x3efc:4]=0x4ff0e92d // "-\xe9\xf0O\x8b\xb0VL\x81F\x0fF\x92F|D\x98F\x06\x94\xfe\xf78\xe8RN\x03!RM~DRK}D"
        r2 = r7
        lr = [0x0000413c] // [0x4180:4]=0x406e
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x3a8
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        // DATA XREF from sym.__mmv4l2_munmap_buffer @ 0x3eb0(r)
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x412a
        
    loc_0x0000412a:
        // CODE XREF from sym.__mmv4l2_free_buffer_userptr @ 0x415a(x)
        sp += 0x10
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x000040e6;
        return r0;
    loc_0x000040e6:
        // CODE XREF from sym.__mmv4l2_free_buffer_userptr @ 0x4100(x)
        r0 = [r8 + 0x24]
        r5 += 1
        // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f1c(r)
        if (!r0) goto 0x40f2 // unlikely
        goto loc_0x000040ee;
    loc_0x000040f2:
        // CODE XREF from sym.__mmv4l2_free_buffer_userptr @ 0x40ec(x)
        str.w r6, [r8, 0x24]
        r8 += 4
        ldrb.w r3, [r4, 0x28] // elf_phdr
        (a, b) = compare (r3, r5)
        bhi 0x40e6    // likely
        goto loc_0x00004102;
    loc_0x00004102:
        // CODE XREF from sym.__mmv4l2_free_buffer_userptr @ 0x40e4(x)
        r5 = [0x00004104] // [0x416c:4]=0x4174 // "tA"
        r0 = 2
        r2 = [0x00004108] // [0x4170:4]=0x3ef8
        r1 = 3
        r3 = [0x0000410c] // [0x4174:4]=0x3f86
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r6 = [0x00004110] // [0x4178:4]=0x44ac // "`"
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        r4 = 0x3af
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x148   // 0x83cc // "__mmv4l2_free_buffer_userptr" // str.__mmv4l2_free_buffer_userptr
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4496(r)
        fcn.00002084 ()
        r0 = 0
    loc_0x000040ee: // orphan
         // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f14(r)
         sym.imp.g_free ()

    loc_0x0000412a: // orphan
         // CODE XREF from sym.__mmv4l2_free_buffer_userptr @ 0x415a(x)
         sp += 0x10
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_get_format (int16_t arg1) {
    loc_0x0000371c:
        r3 = [0x00003720] // [0x3890:4]=0xed82
        r1 = 3
        r2 = [0x00003724] // [0x3894:4]=388
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr) // (pstr 0x000083cc) "__mmv4l2_free_buffer_userptr"
        sp -= 0x104   // (pstr 0x000085c8) "mm_v4l2_priv.c"
        // DATA XREF from sym._mmv4l2_print_control @ 0x4b4a(r)
        sb = [r3 + r2] // 0x1262c // reloc.__stack_chk_guard
        r4 = r0       // arg1
        r5 = [0x00003734] // [0x3898:4]=0x48ca
        r0 = 2
        r6 = [0x00003738] // [0x389c:4]=0x4b3e // ">K"
        lr = 0x2ba
        ip = [sb]
        r5 += pc      // 0x800c // "V4L2" // str.V4L2
        // DATA XREF from sym._mmv4l2_get_control @ +0x24c(r)
        r3 = [0x00003744] // [0x38a0:4]=0x48c8
        r6 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r7 = [0x00003748] // [0x38a4:4]=0x4e78 ".4" // "xN"
        r2 = r5       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += 0xb8    // 0x833c // "_mmv4l2_get_format" // str._mmv4l2_get_format
        r7 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        [var_4h] = r6
        [sp] = r7
        // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x48ac(r)
        // DATA XREF from sym._mmv4l2_set_quality @ 0x5d5e(r)
        str.w ip, [sp, 0xfc]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x382c     // likely
        goto loc_0x00003762;
    loc_0x0000382c:
        // CODE XREF from sym._mmv4l2_get_format @ 0x3760(x)
        r3 = [0x00003830] // [0x38bc:4]=0x4800 "B9"
        r2 = r5
        // DATA XREF from sym._mmv4l2_set_control @ +0x248(r)
        lr = [0x00003838] // [0x38c0:4]=0x4972
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x2bc
        [sp] = r7
        [var_4h] = r6
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x3818
        
    loc_0x00003818:
        // CODE XREFS from sym._mmv4l2_get_format @ 0x3856(x), 0x388a(x)
        r2 = [var_fch]
        r3 = [sb]
        (a, b) = compare (r2, r3)
        bne 0x388c    // unlikely
        goto loc_0x00003822;
        goto loc_0x00003784;
        return r0;
    loc_0x00003784:
        // DATA XREF from sym.mmv4l2_cap_get_buf_type @ 0x6002(r)
        // DATA XREF from sym.mmv4l2_convert_buf_type @ 0x6050(r)
        r0 = [var_34h]
        r2 = 1
        r1 = [var_38h]
        r3 = [var_44h]
        [r4 + 0x1c] = r0
        [r4 + 0x20] = r1
        [r4 + 0x2d] = (half) r3
        // DATA XREF from sym._mmv4l2_get_control @ +0x240(r)
        strb.w r2, [r4, 0x28]
        (a, b) = compare (r3, 0)
        bne 0x3828    // unlikely
        goto loc_0x0000379c;
    loc_0x00003828:
        // CODE XREF from sym._mmv4l2_get_format @ 0x379a(x)
        r3 = [var_48h]
        goto 0x379c
    loc_0x0000379c: // orphan
         // CODE XREF from sym._mmv4l2_get_format @ 0x382a(x)
         str.w r3, [r4, 0x29]
         r0 = [var_3ch]           // int16_t arg1
         fcn.00002940 ()          // fcn.00002940(0x0)
         r3 = [var_44h]
         r7 = [var_3ch]
         sl = [var_34h]
         fp = [var_38h]
         [var_2ch] = r3 // DATA XREF from sym._mmv4l2_get_control @ +0x238(r)
         r6 = [0x000037b8]        // [0x38a8:4]=0x4850 // "PH"
         r5 = [0x000037b8]        // [0x38ac:4]=0x4ac4
         r6 += pc                 // 0x800c // "V4L2" // str.V4L2
         r4 = [0x000037bc]        // [0x38b0:4]=0x4e06
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREF from sym.mmv4l2_cap_get_buf_type @ 0x6006(r)
         r4 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x483e(r)
         r5 += 0xb8               // 0x833c // "_mmv4l2_get_format" // str._mmv4l2_get_format // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x4842(r)
         r8 = r0
         r0 = [var_40h]
         rsym.__mmv4l2_get_field_name ()
         ip = [var_48h]
         [var_10h] = r7
         r2 = r6                  // "V4L2" str.V4L2
         r7 = [var_2ch] // DATA XREF from sym._mmv4l2_enable_stream @ 0x4aa4(r)
         r1 = 3
         r3 = [0x000037d8]        // [0x38b4:4]=0x5150
         lr = 0x2d3
         str.w ip, [sp, 0x24] // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x48b0(r)
         r3 += pc                 // 0x8934 // "%s: %s(%d) > Video format: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n" // str._s:__s__d____Video_format:__s___08x___ux_u__stride__u__field__s_buffer_size__u_n
         str.w lr, [sp, 8]
         str.w r8, [sp, 0xc]
         str.w sl, [sp, 0x14]
         str.w fp, [sp, 0x18]
         [var_1ch] = r7
         stm.w sp, (r4, r5)
         [var_20h] = r0
         r0 = 2
         fcn.00002084 () // DATA XREF from sym._mmv4l2_set_control @ +0x250(r)
         r3 = [0x00003804]        // [0x38b8:4]=0x4890
         r2 = r6                  // "V4L2" str.V4L2 // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x49a0(r)
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r6 = 0x2d5
         stm.w sp, (r4, r5, r6)
         fcn.00002084 ()
         r0 = 0

    loc_0x00003818: // orphan
         // CODE XREFS from sym._mmv4l2_get_format @ 0x3856(x), 0x388a(x)
         r2 = [var_fch]
         r3 = [sb]
         (a, b) = compare (r2, r3)
         bne 0x388c               // unlikely

         goto loc_0x00003822
    loc_0x00003822: // orphan
         sp += 0x104 // DATA XREF from sym._mmv4l2_print_control @ 0x4d94(r)
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x00003858: // orphan
         // CODE XREF from sym._mmv4l2_get_format @ 0x3782(x) // DATA XREF from sym._mmv4l2_queue_buffer @ 0x47ac(x) // DATA XREF from sym._mmv4l2_print_control @ 0x4d62(x)
         fcn.00001fa8 ()
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 () // DATA XREF from sym._mmv4l2_queue_buffer @ 0x47ca(r)
         [sp] = r7
         [var_4h] = r6 // DATA XREF from sym._mmv4l2_enable_stream @ 0x4a0e(r)
         mov.w r3, 0x2c4
         [var_8h] = r3
         r2 = r5
         r3 = [0x00003874]        // [0x38c4:4]=0x5088
         r1 = 6
         r3 += pc                 // 0x8900 // "%s: %s(%d) > Unable to get video format: %s (%d).\n" // str._s:__s__d____Unable_to_get_video_format:__s___d_._n
         [var_ch] = r0
         r0 = 2
         r4 = [r4]
         [var_10h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
         goto loc_0x0000388c
    loc_0x0000388c: // orphan
         // CODE XREF from sym._mmv4l2_get_format @ 0x3820(x)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_queue_buffer (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x000046a8:
        push (r4, r5, r6, r7, r8, sb, sl, lr)
        sp -= 0x60
        lr = [0x000046b4] // [0x47f8:4]=0xddec
        r4 = r0       // arg1
        r3 = [0x000046b8] // [0x47fc:4]=388
        r5 = r1       // arg2
        lr += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        // DATA XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f02(r)
        r8 = [0x000046c0] // [0x4800:4]=0x3942 // "B9"
        r7 = [0x000046c0] // [0x4804:4]=0x3bb6
        sl = r2       // arg3
        r6 = [lr + r3] // 0x1262c // reloc.__stack_chk_guard
        r8 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x000046cc] // [0x4808:4]=0x3936 // "69"
        r7 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        sb = [0x000046d4] // [0x480c:4]=0x3ee8
        r0 = 2
        ip = [r6]
        r1 = 3
        r2 = r8       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        sb += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r7 += 0x198   // 0x841c // "_mmv4l2_queue_buffer" // str._mmv4l2_queue_buffer
        lr = 0x469
        str.w sb, [sp]
        [var_4h] = r7
        str.w ip, [sp, 0x5c]
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        je 0x47ca     // likely
        goto loc_0x000046fc;
    loc_0x000047ca:
        // CODE XREF from sym._mmv4l2_queue_buffer @ 0x46fa(x)
        r3 = [0x000047cc] // [0x4830:4]=0x3864 // "d8"
        r2 = r8
        r5 = [0x000047d0] // [0x4834:4]=0x39d6
        r0 = 2
        r1 = 5
        // CODE XREF from sym._mmv4l2_queue_buffer @ +0x150(x)
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x46b
        str.w sb, [sp]
        // DATA XREF from sym._mmv4l2_alloc_buffers @ +0x2f0(r)
        [var_4h] = r7
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x4774
        
    loc_0x00004774:
        // CODE XREFS from sym._mmv4l2_queue_buffer @ 0x47c8(x), 0x47f2(x)
        r2 = [var_5ch]
        r3 = [r6]
        (a, b) = compare (r2, r3)
        bne 0x47f4    // unlikely
        goto loc_0x0000477c;
        goto loc_0x0000471e;
        return r0;
    loc_0x0000471e:
        // CODE XREF from sym._mmv4l2_queue_buffer @ 0x4786(x)
        r2 = [r4 + 0x14]
        add.w r5, r5, r5, lsl 4
        // DATA XREF from sym._mmv4l2_set_format @ 0x38da(r)
        r3 = [r4 + 0xc]
        r1 = 0x560f   // '\x0fV'
        add.w r5, r2, r5, lsl 2
        r0 = [r4]     // int fd
        (a, b) = compare (r3, 2)
        r1 |= 0xc044 << 16 // unsigned long request
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x45cc(r)
        r2 = [r5 + 4]
        it eq
        r3 = [r5 + 0x24]
        [var_50h] = r2
        r2 = var_18h
        it eq
        [var_4ch] = r3
        sym.imp.ioctl () // int ioctl(0, 0xc044560f)
        (a, b) = compare (r0, 0)
        blt 0x4788    // unlikely
        goto loc_0x0000474c;
    loc_0x00004788:
        // CODE XREF from sym._mmv4l2_queue_buffer @ 0x474a(x)
        fcn.00001fa8 ()
        r4 = r0
        r0 = [r0]
        fcn.00001eb8 ()
        r3 = [0x00004798] // [0x4820:4]=0x3ae4
        r2 = [0x00004798] // [0x4824:4]=0x3e24 // "$>"
        r1 = 0x482
        r3 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        [var_8h] = r1
        r2 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        // DATA XREF from sym._mmv4l2_set_format @ 0x3a00(r)
        r3 += 0x198   // 0x841c // "_mmv4l2_queue_buffer" // str._mmv4l2_queue_buffer
        stm.w sp, (r2, r3)
        r1 = 6
        r2 = [0x000047b0] // [0x4828:4]=0x3858 // "X8"
        r3 = [0x000047b0] // [0x482c:4]=0x460e
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x8dc4 // "%s: %s(%d) > Unable to queue buffer(VIDIOC_QBUF): %s (%d).\n" // str._s:__s__d____Unable_to_queue_buffer_VIDIOC_QBUF_:__s___d_._n
        [var_ch] = r0
        r0 = 2
        r4 = [r4]
        [var_10h] = r4
        fcn.00002084 ()
        r0 = 0x100f   // '\x0f\x10' // "v4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x4774
    loc_0x0000474c: // orphan
         r5 = [0x00004750]        // [0x4810:4]=0x3b2a // "*//"
         r0 = 2
         r2 = [0x00004754]        // [0x4814:4]=0x38ae // DATA XREFS from sym.mmv4l2_convert_pixel_format @ 0x608c(r), 0x6122(r)
         r1 = 3 // DATA XREFS from sym._mmv4l2_free_buffers @ 0x451e(r), 0x4600(r), 0x460a(r)
         r3 = [0x00004758]        // [0x4818:4]=0x393c // "<9"
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type // DATA XREFS from sym.__mmv4l2_munmap_buffer @ 0x3e6a(r), 0x3e70(r)
         r7 = [0x0000475c]        // [0x481c:4]=0x3e62 // "b>"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x486
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0x198              // 0x841c // "_mmv4l2_queue_buffer" // str._mmv4l2_queue_buffer
         [sp] = r7
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0

    loc_0x00004774: // orphan
         // CODE XREFS from sym._mmv4l2_queue_buffer @ 0x47c8(x), 0x47f2(x)
         r2 = [var_5ch]
         r3 = [r6]
         (a, b) = compare (r2, r3)
         bne 0x47f4               // unlikely

         goto loc_0x0000477c
    loc_0x0000477c: // orphan
         sp += 0x60 // DATA XREFS from sym._mmv4l2_free_buffers @ 0x44de(r), 0x45a4(r)
         pop (r4, r5, r6, r7, r8, sb, sl, pc)

        return r0;
    loc_0x00004782: // orphan
         // CODE XREF from sym._mmv4l2_queue_buffer @ 0x471c(x)
         r3 = [r4 + 0x24]
         [var_24h] = r3
         
    loc_0x000047f4: // orphan
         // DATA XREF from sym._mmv4l2_free_buffers @ +0x1d4(r) // CODE XREF from sym._mmv4l2_queue_buffer @ 0x477a(r)
         sym.imp.__stack_chk_fail () // void __stack_chk_fail(void)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_destroy (int16_t arg1) {
    loc_0x00006668:
        push (r4, r5, r6, r7, lr)
        sp -= 0x14    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r7 = [0x00006670] // [0x672c:4]=0x1994
        r4 = r0       // arg1
        r5 = [0x00006674] // [0x6730:4]=0x32ae
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00006678] // [0x6734:4]=0x2cc0 "TV"
        r6 = [0x0000667c] // [0x6738:4]=0x33ce
        r5 += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r1 = 3
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r6 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        r5 += 0x10    // 0x993c // "mm_v4l2_destroy" // str.mm_v4l2_destroy
        mov.w lr, 0x7b // '{'
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        if (!r4) goto 0x66e0 // likely
        goto loc_0x00006698;
    loc_0x000066e0:
        // CODE XREF from sym.mm_v4l2_destroy @ 0x6696(x)
        r3 = [0x000066e4] // [0x673c:4]=0x194c // "L\x19"
        r2 = r7
        lr = [0x000066ec] // [0x6740:4]=0x1abe
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x7d     // '}'
        [sp] = r6
        r6 = 0x1001   // "og_status"
        [var_4h] = r5
        r6 |= 0x8000 << 16
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x66da
        
    loc_0x000066da:
        // CODE XREFS from sym.mm_v4l2_destroy @ 0x6708(x), 0x6728(x)
        r0 = r6
        sp += 0x14
        pop (r4, r5, r6, r7, pc)
        goto loc_0x000066a0;
        return r0;
    loc_0x000066a0:
        fcn.00002048 ()
        r0 = r4
        fcn.0000215c ()
        r0 = r4
        rsym._mmv4l2_destroy ()
        r6 = r0
        r0 = [r4 + 0xd4]
        sym.imp.g_mutex_unlock ()
        r0 = [r4 + 0xd4]
        if (!r0) goto 0x66ca // likely
        goto loc_0x000066c0;
    loc_0x000066ca:
        // CODE XREF from sym.mm_v4l2_destroy @ 0x66be(x)
        r0 = r4
        r1 = 0
        r2 = 0xdc
        fcn.00001ff0 ()
        r0 = r4
        sym.imp.g_free ()
    loc_0x000066c0: // orphan
         fcn.00001f48 ()
         r3 = 0
         str.w r3, [r4, 0xd4]

    loc_0x000066da: // orphan
         // CODE XREFS from sym.mm_v4l2_destroy @ 0x6708(x), 0x6728(x)
         r0 = r6
         sp += 0x14
         pop (r4, r5, r6, r7, pc)

        return r0;
    loc_0x0000670a: // orphan
         // CODE XREF from sym.mm_v4l2_destroy @ 0x669e(x)
         r3 = [0x0000670c]        // [0x6744:4]=0x33fe
         r2 = r7
         r0 = 2
         r1 = 3
         r3 += pc                 // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
         [sp] = r6
         r4 = 0x7f                // '\x7f'
         [var_4h] = r5
         r6 = 0x1001              // "og_status"
         [var_8h] = r4
         r6 |= 0x8000 << 16
         fcn.00002084 ()
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_munmap_buffer (int16_t arg1, int16_t arg2) {
    loc_0x00003e2c:
        push (r4, r5, r6, r7, r8, lr)
        r6 = r0       // arg1
        ldrb.w r3, [r0, 0x28] // arg1
        sp -= 0x20    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r8 = r1       // arg2
        (a, b) = compare (r3, 0)
        je 0x3eac     // unlikely
        goto loc_0x00003e3e;
    loc_0x00003eac:
        // CODE XREFS from sym.__mmv4l2_munmap_buffer @ 0x3e3c(x), 0x3e52(x)
        r5 = [0x00003eb0] // [0x3eec:4]=0x43ca
        r0 = 2
        r2 = [0x00003eb4] // [0x3ef0:4]=0x414e
        r1 = 3
        r3 = [0x00003eb8] // [0x3ef4:4]=0x41dc
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r6 = [0x00003ebc] // [0x3ef8:4]=0x4702
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        r4 = 0x375
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5246(r)
        r5 += 0x110   // 0x8394 // "__mmv4l2_munmap_buffer" // str.__mmv4l2_munmap_buffer
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0
        
    loc_0x00003ed4:
        // CODE XREF from sym.__mmv4l2_munmap_buffer @ 0x3eaa(x)
        sp += 0x20
        pop (r4, r5, r6, r7, r8, pc)
        return r0;
    loc_0x00003e48: // orphan
         // CODE XREF from sym.__mmv4l2_munmap_buffer @ 0x3e60(x)
         [r4 + 0x24] = r7
         r5 += 1 // DATA XREFS from sym._mmv4l2_alloc_buffers @ 0x41b8(r), 0x41c0(r)
         ldrb.w r3, [r6, 0x28]
         (a, b) = compare (r3, r5)
         bls 0x3eac               // likely

         goto loc_0x00003e54
    loc_0x00003e54: // orphan
         // DATA XREF from fcn.00003ba2 @ +0xc6(r) // CODE XREF from sym.__mmv4l2_munmap_buffer @ 0x3e46(r)
         r0 = [r4 + 0x28]
         r4 += 4
         r1 = [r4 + 4]
         fcn.00002060 ()
         (a, b) = compare (r0, 0)
         (>=) 
         goto loc_0x00003e62
    loc_0x00003e62: // orphan
         // DATA XREF from sym._mmv4l2_queue_buffer @ 0x4758(r)
         fcn.00001fa8 ()
         r6 = [r8]
         r7 = [0x00003e6c]        // [0x3edc:4]=0x4758 // "XG" // DATA XREF from sym.__mmv4l2_mmap_buffer @ +0x16c(r)
         r7 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         r2 = [0x00003e78]        // [0x3ee0:4]=0x4402
         r3 = 0x36e
         [var_ch] = r6
         r2 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         [var_8h] = r3
         [var_10h] = r5
         r2 += 0x110              // 0x8394 // "__mmv4l2_munmap_buffer" // str.__mmv4l2_munmap_buffer
         [sp] = r7
         r1 = 6
         [var_4h] = r2
         r3 = [0x00003e90]        // [0x3ee4:4]=0x4cde
         r2 = [0x00003e94]        // [0x3ee8:4]=0x4174
         r3 += pc                 // 0x8b74 // "%s: %s(%d) > Unable to unmap buffer %u/%u: %s (%d)\n" // str._s:__s__d____Unable_to_unmap_buffer__u__u:__s___d__n
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_14h] = r0 // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x528e(r)
         r0 = 2
         r4 = [r4]
         [var_18h] = r4
         fcn.00002084 ()
         r0 = 0x1004              // "status"
         r0 |= 0x8000 << 16
         
    loc_0x00003ed4: // orphan
         // CODE XREF from sym.__mmv4l2_munmap_buffer @ 0x3eaa(x)
         sp += 0x20
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_mmap_buffer (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00003c84:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr) // (pstr 0x0000993c) "mm_v4l2_destroy"
        sp -= 0x2c    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r4 = [0x00003c8c] // [0x3de4:4]=0x4374 // "tC"
        // DATA XREF from sym._mmv4l2_set_format @ +0x170(r)
        r7 = r0       // arg1
        sl = [0x00003c94] // [0x3de8:4]=0x45e6
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x45e6(r)
        r8 = r1       // arg2
        r4 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00003c98] // [0x3dec:4]=0x436c // "lC"
        r5 = [0x00003c9c] // [0x3df0:4]=0x491e
        sl += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        sb = r2       // arg3
        r0 = 2
        r2 = r4       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        sl += 0xf8    // 0x837c // "__mmv4l2_mmap_buffer" // str.__mmv4l2_mmap_buffer
        r6 = 0x345
        stm.w sp, (r5, sl)
        [var_8h] = r6
        fcn.00002084 ()
        (a, b) = compare (r7, 0)
        je 0x3dba     // likely
        goto loc_0x00003cbe;
    loc_0x00003dba:
        // CODE XREF from sym.__mmv4l2_mmap_buffer @ 0x3cbc(x)
        r3 = [0x00003dbc] // [0x3e24:4]=0x4274 // "tB"
        r2 = r4
        r6 = [0x00003dc0] // [0x3e28:4]=0x43e6
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r6 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x347
        stm.w sp, (r5, sl)
        [var_ch] = r6
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x3db4
        
    loc_0x00003db4:
        // CODE XREFS from sym.__mmv4l2_mmap_buffer @ 0x3d8c(x), 0x3de0(x)
        sp += 0x2c
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)
        goto loc_0x00003cc6;
        return r0;
    loc_0x00003cc6:
        r3 = [0x00003cc8] // [0x3df4:4]=0x45aa
        r4 = r8 - 4
        sl = [0x00003cd4] // [0x3df8:4]=0x432c // ",C"
        r5 = 0
        fp = [0x00003cd8] // [0x3dfc:4]=0x4e5e // "^N"
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5546(r)
        r3 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x45a0(r)
        r6 = [0x00003cdc] // [0x3e00:4]=0x48e4
        r3 += 0xf8    // 0x837c // "__mmv4l2_mmap_buffer" // str.__mmv4l2_mmap_buffer
        sl += pc      // 0x800c // "V4L2" // str.V4L2
        fp += pc      // 0x8b40 // "%s: %s(%d) > Buffer %u/%u mapped at address %p.\n" // str._s:__s__d____Buffer__u__u_mapped_at_address__p._n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        [var_24h] = r3
        [var_20h] = r6
        goto 0x3d10
        
    loc_0x00003d10:
        // CODE XREF from sym.__mmv4l2_mmap_buffer @ 0x3ce6(x)
        r6 = [sb + 0x38]
        r2 = 3
        ip = [r7]
        r3 = 1
        lr = [sb + 0x34]
        r0 = 0
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4554(r)
        r1 = r6
        stm.w sp, (ip, lr)
        fcn.00001f60 ()
        r1 = 3
        r2 = sl
        r3 = fp       // r13
        ip = 0x35a
        lr = r0
        r0 = 2
        str.w lr, [r4, 0x28]
        r4 += 4
        cmp.w lr, -1  // 0xffffffff // -1
        // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x4346(r)
        bne 0x3ce8    // likely
        goto loc_0x00003d46;
        return r0;
    loc_0x00003d46:
        fcn.00001fa8 ()
        r6 = [r8]
        r7 = [0x00003d50] // [0x3e04:4]=0x4874 // "tH"
        r7 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        // DATA XREF from sym._mmv4l2_free_buffers @ 0x4522(r)
        r4 = r0
        r0 = [r0]
        fcn.00001eb8 ()
        r2 = [0x00003d5c] // [0x3e08:4]=0x451e
        r3 = 0x353    // (pstr 0x00001200) "_sizes"
        [var_ch] = r6
        r2 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym._mmv4l2_set_format @ +0x178(r)
        [var_8h] = r3
        // DATA XREF from sym._mmv4l2_dequeue_buffer @ 0x4850(r)
        [var_10h] = r5
        r2 += 0xf8    // 0x837c // "__mmv4l2_mmap_buffer" // str.__mmv4l2_mmap_buffer
        [sp] = r7
        r1 = 6
        [var_4h] = r2
        r3 = [0x00003d74] // [0x3e0c:4]=0x4d94
        r2 = [0x00003d74] // [0x3e10:4]=0x4292
        r3 += pc      // 0x8b0c // "%s: %s(%d) > Unable to map buffer %u/%u : %s (%d)\n" // str._s:__s__d____Unable_to_map_buffer__u__u_:__s___d__n
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        [var_14h] = r0
        r0 = 2
        r4 = [r4]
        [var_18h] = r4
        fcn.00002084 ()
        r0 = 0x1004   // "status"
        r0 |= 0x8000 << 16
        goto 0x3db4
    loc_0x00003ce8: // orphan
         // CODE XREF from sym.__mmv4l2_mmap_buffer @ 0x3d44(x)
         [r4 + 4] = r6
         r6 = [r8]
         [var_10h] = r5
         r5 += 1
         str.w ip, [sp, 8]
         [var_ch] = r6
         r6 = [var_20h]           // "mm_v4l2_priv.c" str.mm_v4l2_priv.c
         str.w lr, [sp, 0x14]
         [sp] = r6
         r6 = [var_24h]           // "__mmv4l2_mmap_buffer" str.__mmv4l2_mmap_buffer
         [var_4h] = r6 // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5446(r)
         fcn.00002084 () // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x54b6(r)
         ldrb.w r3, [r7, 0x28] // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x5472(r)
         (a, b) = compare (r3, r5)
         bls 0x3d8e               // likely

    loc_0x00003d10: // orphan
         // CODE XREF from sym.__mmv4l2_mmap_buffer @ 0x3ce6(x)
         r6 = [sb + 0x38]
         r2 = 3
         ip = [r7]
         r3 = 1
         lr = [sb + 0x34]
         r0 = 0 // DATA XREF from sym._mmv4l2_free_buffers @ 0x4554(r)
         r1 = r6
         stm.w sp, (ip, lr)
         fcn.00001f60 ()
         r1 = 3
         r2 = sl
         r3 = fp                  // r13
         ip = 0x35a
         lr = r0
         r0 = 2
         str.w lr, [r4, 0x28]
         r4 += 4
         cmp.w lr, -1             // 0xffffffff // -1 // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x4346(r)
         bne 0x3ce8               // likely

    loc_0x00003d8e: // orphan
         // CODE XREFS from sym.__mmv4l2_mmap_buffer @ 0x3cc4(x), 0x3d0e(x)
         r5 = [0x00003d90]        // [0x3e14:4]=0x44e8
         r0 = 2
         r2 = [0x00003d94]        // [0x3e18:4]=0x426c
         r1 = 3
         r3 = [0x00003d98]        // [0x3e1c:4]=0x42fa
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x00003d9c]        // [0x3e20:4]=0x4820 // " H"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x35d
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0xf8               // 0x837c // "__mmv4l2_mmap_buffer" // str.__mmv4l2_mmap_buffer // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x4250(r)
         [sp] = r6
         [var_4h] = r5 // DATA XREF from fcn.00003ba2 @ +0xce(r)
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0

    loc_0x00003db4: // orphan
         // CODE XREFS from sym.__mmv4l2_mmap_buffer @ 0x3d8c(x), 0x3de0(x)
         sp += 0x2c
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_get_control (int16_t arg1, int16_t arg2, int16_t arg3) {
    loc_0x00003064:
        push (r4, r5, r6, r7, r8, sb, lr)
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x554a(r)
        sp -= 0x44
        r7 = [0x0000306c] // [0x31d8:4]=0x4f94
        r6 = r0       // arg1
        sb = [0x00003074] // [0x31dc:4]=0x5204
        r5 = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00003078] // [0x31e0:4]=0x4f8a
        r8 = [0x00003080] // [0x31e4:4]=0x553c // "<U"
        sb += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x51f8(r)
        r4 = r2       // arg3
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r8 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        sb += 0x78    // 0x82fc // "__mmv4l2_get_control" // str.__mmv4l2_get_control
        mov.w lr, 0x1e0
        stm.w sp, (r8, sb)
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r6, 0)
        beq.w 0x31a6  // likely
        goto loc_0x000030a4;
    loc_0x000031a6:
        // CODE XREF from sym.__mmv4l2_get_control @ 0x30a0(x)
        r3 = [0x000031a8] // [0x3208:4]=0x4e88 "x6"
        r2 = r7
        r5 = [0x000031ac] // [0x320c:4]=0x4ffa
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r4, 0x1e2
        stm.w sp, (r8, sb)
        [var_ch] = r5
        // DATA XREFS from sym.__mmv4l2_video_enum_frame_intervals @ 0x50b6(r), 0x50ce(r)
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x50b0(r)
        r0 |= 0x8000 << 16
        // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x50aa(r)
        goto 0x30e6
        
    loc_0x000030e6:
        // CODE XREFS from sym.__mmv4l2_get_control @ 0x314a(x), 0x31a4(x), 0x31cc(x), 0x31d6(x)
        sp += 0x44    // (cstr 0x00009a14) "mm_v4l2_capture_image"
        pop (r4, r5, r6, r7, r8, sb, pc) // str.mm_v4l2_capture_image
        goto loc_0x000030d0;
        return r0;
    loc_0x000030d0:
        // CODE XREF from sym.__mmv4l2_get_control @ 0x3160(x)
        r1 = 0x5647   // 'GV'
        r0 = [r6]     // int fd
        r1 |= 0xc018 << 16 // unsigned long request
        r2 = var_1ch
        sym.imp.ioctl () // int ioctl(0, 0xc0185647)
        r0 += 1
        je 0x30ec     // unlikely
        goto loc_0x000030e4;
    loc_0x000030ec:
        // CODE XREF from sym.__mmv4l2_get_control @ 0x30e2(x)
        r3 = [r5 + 4]
        (a, b) = compare (r3, 7)
        it ne
        (a, b) = compare (r3, 5)
        // DATA XREF from sym._mmv4l2_list_controls @ 0x4f12(r)
        je 0x3162     // unlikely
        goto loc_0x000030f6;
    loc_0x00003162:
        // CODE XREF from sym.__mmv4l2_get_control @ 0x30f4(x)
        fcn.00001fa8 ()
        r7 = r0
        r0 = [r0]
        
    loc_0x0000316a:
        // CODE XREF from sym.__mmv4l2_get_control @ 0x3104(x)
        r5 = [r5]
        fcn.00001eb8 ()
        // DATA XREF from sym.mm_v4l2_realize @ 0x6a9c(r)
        r2 = [0x00003174] // [0x31f8:4]=0x5106
        r3 = 0x20e
        r4 = [0x00003178] // [0x31fc:4]=0x5446
        r1 = 6
        r2 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        [var_8h] = r3
        r4 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        [var_ch] = r5
        // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x543a(r)
        r2 += 0x78    // 0x82fc // "__mmv4l2_get_control" // str.__mmv4l2_get_control
        [sp] = r4
        [var_4h] = r2
        r3 = [0x0000318c] // [0x3200:4]=0x55ec
        r2 = [0x0000318c] // [0x3204:4]=0x4e7a
        r3 += pc      // 0x877c // "%s: %s(%d) > unable to get_control 0x%8.8x: %s (%d).\n" // str._s:__s__d____unable_to_get_control_0x_8.8x:__s___d_._n
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        [var_10h] = r0
        r0 = 2
        r4 = [r7]
        [var_14h] = r4
        fcn.00002084 ()
        r0 = 0x100f   // '\x0f\x10' // "v4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x30e6
        goto loc_0x00003106;
        return r0;
    loc_0x000030e4: // orphan
         r0 = 0

    loc_0x000030e6: // orphan
         // CODE XREFS from sym.__mmv4l2_get_control @ 0x314a(x), 0x31a4(x), 0x31cc(x), 0x31d6(x)
         sp += 0x44               // (cstr 0x00009a14) "mm_v4l2_capture_image"
         pop (r4, r5, r6, r7, r8, sb, pc) // str.mm_v4l2_capture_image

        return r0;
    loc_0x000030f6: // orphan
         // DATA XREF from sym.__mmv4l2_video_enum_frame_intervals @ 0x5182(r)
         fcn.00001fa8 () // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x54ba(r)
         r7 = r0
         r0 = [r0] // DATA XREF from sym._mmv4l2_list_controls @ 0x4f92(r)
         (a, b) = compare (r0, 0x16)
         it ne
         (a, b) = compare (r0, 0x19)
         bne 0x316a               // likely

         goto loc_0x00003106
    loc_0x00003106: // orphan
         r3 = [r5]
         r2 = var_40h // DATA XREF from sym.mm_v4l2_get_format @ 0x6938(r)
         r0 = [r6]                // int fd
         r1 = 0x561b              // ''
         r1 |= 0xc00c << 16       // unsigned long request
         [r2 - 0xc]! = r3
         sym.imp.ioctl () // int ioctl(0, 0xc00c561b)
         r0 += 1
         je 0x3124                // unlikely

         goto loc_0x00003120
    loc_0x00003120: // orphan
         r3 = [var_38h]
         [r4 + 0xc] = r3

    loc_0x00003124: // orphan
         // CODE XREF from sym.__mmv4l2_get_control @ 0x311e(x)
         r5 = [0x00003128]        // [0x31e8:4]=0x5152 // "RQ"
         r0 = 2
         r2 = [0x0000312c]        // [0x31ec:4]=0x4ed6
         r1 = 3
         r3 = [0x00003130]        // [0x31f0:4]=0x4f64 // "dO"
         r5 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         r6 = [0x00003134]        // [0x31f4:4]=0x548a
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2 // DATA XREF from sym.mm_v4l2_get_format @ 0x69d4(r)
         r3 += pc                 // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
         r4 = 0x213
         r6 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r5 += 0x78               // 0x82fc // "__mmv4l2_get_control" // str.__mmv4l2_get_control
         [sp] = r6
         [var_4h] = r5
         [var_8h] = r4
         fcn.00002084 ()
         r0 = 0
         
         goto loc_0x0000314c
    loc_0x0000314c: // orphan
         // CODE XREF from sym.__mmv4l2_get_control @ 0x30ce(x)
         r0 = [r5 + 0x2c]
         r0 += r1 // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x546a(r)
         sym.imp.g_malloc ()
         [r4 + 0xc] = r0
         (a, b) = compare (r0, 0)
         je 0x31ce                // likely

         goto loc_0x0000315a
    loc_0x0000315a: // orphan
         r3 = [r5 + 0x2c]
         r3 += 1
         [r4 + 4] = r3
         
    loc_0x0000316a: // orphan
         // CODE XREF from sym.__mmv4l2_get_control @ 0x3104(x)
         r5 = [r5]
         fcn.00001eb8 () // DATA XREF from sym.mm_v4l2_realize @ 0x6a9c(r)
         r2 = [0x00003174]        // [0x31f8:4]=0x5106
         r3 = 0x20e
         r4 = [0x00003178]        // [0x31fc:4]=0x5446
         r1 = 6
         r2 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         [var_8h] = r3
         r4 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         [var_ch] = r5 // DATA XREF from sym.__mmv4l2_get_enum_frame_sizes @ 0x543a(r)
         r2 += 0x78               // 0x82fc // "__mmv4l2_get_control" // str.__mmv4l2_get_control
         [sp] = r4
         [var_4h] = r2
         r3 = [0x0000318c]        // [0x3200:4]=0x55ec
         r2 = [0x0000318c]        // [0x3204:4]=0x4e7a
         r3 += pc                 // 0x877c // "%s: %s(%d) > unable to get_control 0x%8.8x: %s (%d).\n" // str._s:__s__d____unable_to_get_control_0x_8.8x:__s___d_._n
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [var_10h] = r0
         r0 = 2
         r4 = [r7]
         [var_14h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
    loc_0x000031ce: // orphan
         // CODE XREF from sym.__mmv4l2_get_control @ 0x3158(x)
         r0 = 0x1004              // "status"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_get_input (int16_t arg1, int16_t arg2) {
    loc_0x00005af0:
        push (r4, r5, r6, r7, r8, lr)
        sp -= 0x20    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r6 = [0x00005af8] // [0x5bc0:4]=0x250a // "\n%"
        r7 = r0       // arg1
        r4 = [0x00005afc] // [0x5bc4:4]=0x277c // "|'" // "{D|Dh5"
        r8 = r1       // arg2
        r6 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00005b04] // [0x5bc8:4]=0x2504
        r5 = [0x00005b04] // [0x5bcc:4]=0x2ab6
        // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x258c(r)
        r4 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        r0 = 2
        r2 = r6       // "V4L2" str.V4L2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r5 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r4 += 0x2b4   // 0x8538 // "_mmv4l2_get_input" // str._mmv4l2_get_input
        lr = 0x67e
        [sp] = r5
        [var_4h] = r4
        str.w lr, [sp, 8]
        fcn.00002084 ()
        (a, b) = compare (r7, 0)
        je 0x5b96     // likely
        goto loc_0x00005b28;
    loc_0x00005b96:
        // CODE XREF from sym._mmv4l2_get_input @ 0x5b26(x)
        r3 = [0x00005b98] // [0x5bd8:4]=0x2498 ".."
        r2 = r6
        r7 = [0x00005b9c] // [0x5bdc:4]=0x260a
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r7 += pc      // 0x81b0 // "v4l2" // str.v4l2
        // DATA XREFS from sym._mmv4l2_set_attribute @ 0x23ae(r), 0x248c(r)
        mov.w r6, 0x680
        [sp] = r5
        [var_4h] = r4
        [var_ch] = r7
        // DATA XREF from sym.__mmv4l2_get_field_name @ 0x29f0(r)
        [var_8h] = r6
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        r0 |= 0x8000 << 16
        goto 0x5b5c
        
    loc_0x00005b5c:
        // CODE XREFS from sym._mmv4l2_get_input @ 0x5b94(x), 0x5bbc(x)
        sp += 0x20
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x00005b3c;
        return r0;
    loc_0x00005b3c:
        r7 = [var_1ch]
        r2 = r6
        r3 = [0x00005b44] // [0x5bd0:4]=0x254a
        r0 = 2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r6 = 0x68b
        str.w r7, [r8]
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        [sp] = r5
        // DATA XREF from sym._mmv4l2_get_attributes_info @ 0x25ba(r)
        [var_4h] = r4
        [var_8h] = r6
        // DATA XREF from sym._mmv4l2_open @ 0x2ad2(r)
        fcn.00002084 ()
        r0 = 0
    loc_0x00005b5c: // orphan
         // CODE XREFS from sym._mmv4l2_get_input @ 0x5b94(x), 0x5bbc(x)
         sp += 0x20
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x00005b62: // orphan
         // CODE XREF from sym._mmv4l2_get_input @ 0x5b3a(x)
         fcn.00001fa8 ()
         r7 = r0 // DATA XREF from sym._mmv4l2_set_buf_type @ 0x2a36(r)
         r0 = [r0]
         fcn.00001eb8 ()
         [sp] = r5
         [var_4h] = r4
         r3 = 0x685
         [var_8h] = r3
         r2 = r6
         r3 = [0x00005b7c]        // [0x5bd4:4]=0x3826
         r1 = 6
         r3 += pc                 // 0x93a8 // "%s: %s(%d) > Unable to get current input: %s (%d).\n" // str._s:__s__d____Unable_to_get_current_input:__s___d_._n
         [var_ch] = r0 // DATA XREF from sym._mmv4l2_set_buf_type @ 0x2a3a(r)
         r0 = 2
         r4 = [r7]
         [var_10h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_is_output (int16_t arg1) {
    loc_0x00002a18:
        r0 = [r0 + 8] // arg1
        r1 = r0 - 2   // arg1
        rsbs r0, r1, 0
        adc.w r0, r0, r1 // arg1
        bx lr
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym._mmv4l2_set_attribute (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
    loc_0x000023a4:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr)
        fp = r3       // arg4
        // CODE XREF from sym.imp.gettimeofday @ 0x1e8e(x)
        r7 = [0x000023ac] // [0x24a0:4]=0x5c54 // "T\"
        sp -= 0x14    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        sb = [0x000023b4] // [0x24a4:4]=0x5ba4
        r5 = r2       // arg3
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x000023b8] // [0x24a8:4]=0x5c48 // "H\"
        r8 = [0x000023c0] // [0x24ac:4]=0x5c5e // "^\"
        r6 = r0       // arg1
        sl = r1       // arg2
        sb += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        r2 = r7       // "V4L2" str.V4L2
        r0 = 2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r8 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        sb += 0x34    // 0x7f9c // "_mmv4l2_set_attribute" // str._mmv4l2_set_attribute
        r4 = 0x5e     // '^'
        str.w r8, [sp]
        str.w sb, [sp, 4]
        [var_8h] = r4
        fcn.00002084 ()
        (a, b) = compare (r5, 0)
        je 0x2488     // unlikely
        goto loc_0x000023e4;
    loc_0x00002488:
        // CODE XREF from sym._mmv4l2_set_attribute @ 0x23e2(x)
        r6 = [0x0000248c] // [0x24c4:4]=0x5bc4 "|'" // (pstr 0x0000277c) "{D|Dh5"
        r2 = r7
        r3 = [0x00002490] // [0x24c8:4]=0x5ba4
        r0 = 2
        r6 += pc      // 0x8058 // "attribute_name" // str.attribute_name
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 = 0x62     // 'b'
        // DATA XREF from sym._mmv4l2_get_input @ 0x5b96(r)
        str.w r8, [sp]
        r4 += 0xa3
        goto 0x2476
        
    loc_0x00002476:
        // CODE XREF from sym._mmv4l2_set_attribute @ 0x249e(x)
        str.w sb, [sp, 4]
        r4 |= 0x8000 << 16
        [var_ch] = r6
        [var_8h] = r5
        fcn.00002084 ()
        goto 0x2420
        goto loc_0x000023e8;
        return r0;
    loc_0x000023e8:
        r1 = sl
        // DATA XREF from sym._mmv4l2_create @ 0x5e8c(r)
        r3 = fp       // r13
        r0 = [r6 + 0xd0]
        r2 = r5
        fcn.00002090 ()
        r4 = r0
        if (r0) goto 0x2440 // unlikely
        goto loc_0x000023fa;
    loc_0x00002440:
        // CODE XREF from sym._mmv4l2_set_attribute @ 0x23f8(x)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7af8(x)
        r3 = [0x00002444] // [0x24b8:4]=0x5c68
        r2 = r7
        // DATA XREF from sym.mm_v4l2_stop_capture @ 0x7600(r)
        r0 = 2
        r1 = 6
        r3 += pc      // 0x80b4 // "%s: %s(%d) > failed to set %s attribute\n" // str._s:__s__d____failed_to_set__s_attribute_n
        r6 = 0x6c     // 'l'
        // DATA XREFS from sym.mm_v4l2_capture_image @ 0x7802(r), 0x7b14(r)
        str.w r8, [sp]
        str.w sb, [sp, 4]
        [var_ch] = r5
        [var_8h] = r6
        fcn.00002084 ()
        goto 0x2420
        
    loc_0x00002420:
        // CODE XREFS from sym._mmv4l2_set_attribute @ 0x243e(x), 0x245c(x), 0x2486(x)
        r0 = r4
        sp += 0x14
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)
        goto loc_0x0000240a;
        return r0;
    loc_0x0000240a:
        r3 = [0x0000240c] // [0x24b0:4]=0x5c84
        r1 = 3        // (pstr 0x00000100) "GNU"
        r5 = 0x77     // 'w'
        str.w r8, [sp]
        // DATA XREF from sym._mmv4l2_set_input @ 0x5bf0(r)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7b4c(r)
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        str.w sb, [sp, 4]
        // DATA XREF from sym._mmv4l2_set_input @ 0x5be6(r)
        [var_8h] = r5
        fcn.00002084 ()
    loc_0x000023fa: // orphan
         r0 = r6
         r1 = r5
         rsym.__mmv4l2_apply_attribute ()
         r2 = r7
         r4 = r0
         r0 = 2 // DATA XREF from sym.mm_v4l2_capture_image @ 0x7b30(r)
         if (r4) 
    loc_0x00002420: // orphan
         // CODE XREFS from sym._mmv4l2_set_attribute @ 0x243e(x), 0x245c(x), 0x2486(x)
         r0 = r4
         sp += 0x14
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x00002428: // orphan
         // CODE XREF from sym._mmv4l2_set_attribute @ 0x2408(x)
         r3 = [0x0000242c]        // [0x24b4:4]=0x5caa
         r1 = 6
         r5 = 0x73                // 's' // (pstr 0x00000100) "GNU"
         str.w r8, [sp]
         r3 += pc                 // 0x80e0 // "%s: %s(%d) > failed to apply attributes\n" // str._s:__s__d____failed_to_apply_attributes_n
         str.w sb, [sp, 4]
         [var_8h] = r5
         fcn.00002084 ()
         
    loc_0x0000245e: // orphan
         // CODE XREF from sym._mmv4l2_set_attribute @ 0x23e6(x)
         r6 = [0x00002460]        // [0x24bc:4]=0x5bfe // DATA XREF from sym._mmv4l2_set_input @ 0x5c30(r)
         r0 = 2
         r3 = [0x00002464]        // [0x24c0:4]=0x5bce
         r1 = 5
         r6 += pc                 // 0x8068 // "handle" // str.handle
         r5 = 0x63                // 'c'
         r3 += pc                 // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
         r2 = r7
         r4 = 0x101               // "NU"
         str.w r8, [sp]

    loc_0x00002476: // orphan
         // CODE XREF from sym._mmv4l2_set_attribute @ 0x249e(x)
         str.w sb, [sp, 4]
         r4 |= 0x8000 << 16
         [var_ch] = r6
         [var_8h] = r5
         fcn.00002084 ()
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00002090 (int r0, int r1) {
    loc_0x00002090:
        // CALL XREF from sym._mmv4l2_set_attribute @ 0x23f2(x)
        add ip, pc, 0, 12
        // DATA XREF from sym._mmv4l2_destroy @ 0x5f66(r)
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002090 @ 0x2090(r)
        pc = [ip + 0x548]! // 0x125e0 // reloc.mm_attrs_set_valist // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym.__mmv4l2_apply_attribute (int r0, int r1) {
    loc_0x00001e3c:
        // CALL XREF from sym._mmv4l2_set_attribute @ 0x23fe(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym.__mmv4l2_apply_attribute @ 0x1e3c(r)
        pc = [ip + 0x6d8]! // 0x1251c // reloc.__mmv4l2_apply_attribute // fcn.00001cf0
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_enable_stream (int16_t arg1, int16_t arg2) {
    loc_0x00004a04:
        push (r4, r5, r6, r7, r8, lr)
        sp -= 0x20    // (pstr 0x0000802c) "mm_v4l2_attrs.c"
        r7 = [0x00004a0c] // [0x4b04:4]=0x35f6
        r4 = r0       // arg1
        r5 = [0x00004a10] // [0x4b08:4]=0x3868 // "h8"
        r8 = r1       // arg2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00004a18] // [0x4b0c:4]=0x35f0
        r6 = fcn.00003ba2 // [0x3ba2:4]=0x87f0e8bd
        r5 += pc      // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
        // DATA XREF from sym._mmv4l2_set_control @ 0x35ea(r)
        r0 = 2
        r2 = r7       // "V4L2" str.V4L2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
        r5 += 0x1e8   // 0x846c // "_mmv4l2_enable_stream" // str._mmv4l2_enable_stream
        lr = 0x4b9
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        // DATA XREF from sym._mmv4l2_alloc_buffers @ 0x4216(r)
        (a, b) = compare (r4, 0)
        je 0x4ad8     // likely
        goto loc_0x00004a3c;
    loc_0x00004ad8:
        // CODE XREF from sym._mmv4l2_enable_stream @ 0x4a3a(x)
        r3 = [0x00004adc] // [0x4b30:4]=0x3554 // "T5"
        r2 = r7
        lr = [0x00004ae4] // [0x4b34:4]=0x36c6
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x4bb
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0x100c   // '\f\x10' // "_mmv4l2_query_control"
        // DATA XREF from sym._mmv4l2_set_control @ 0x3592(r)
        r0 |= 0x8000 << 16
        goto 0x4a80
        
    loc_0x00004a80:
        // CODE XREFS from sym._mmv4l2_enable_stream @ 0x4ad6(x), 0x4b02(x)
        sp += 0x20
        pop (r4, r5, r6, r7, r8, pc)
        goto loc_0x00004a66;
        return r0;
    loc_0x00004a66:
        r3 = [0x00004a68] // [0x4b14:4]=0x362a // "*6"
        r2 = r7
        r0 = 2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        [sp] = r6
        r4 = 0x4c7
        [var_4h] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 0
    loc_0x00004a80: // orphan
         // CODE XREFS from sym._mmv4l2_enable_stream @ 0x4ad6(x), 0x4b02(x)
         sp += 0x20
         pop (r4, r5, r6, r7, r8, pc)

        return r0;
    loc_0x00004a86: // orphan
         // CODE XREF from sym._mmv4l2_enable_stream @ 0x4a64(x)
         r6 = [0x00004a88]        // [0x4b18:4]=0x43c0
         r6 += pc                 // 0x8e4c // "start" // str.start
         cmp.w r8, 0
         bne 0x4a94               // unlikely

         goto loc_0x00004a90
    loc_0x00004a90: // orphan
         r6 = [0x00004a94]        // [0x4b1c:4]=0x43be
         r6 += pc                 // 0x8e54 // "stop" // str.stop

    loc_0x00004a94: // orphan
         // CODE XREF from sym._mmv4l2_enable_stream @ 0x4a8e(x)
         fcn.00001fa8 ()
         r5 = [0x00004a9c]        // [0x4b20:4]=0x3b2a // "*//"
         r5 += pc                 // 0x85c8 // "mm_v4l2_priv.c" // str.mm_v4l2_priv.c
         r4 = r0
         r0 = [r0]
         fcn.00001eb8 ()
         r2 = [0x00004aa8]        // [0x4b24:4]=0x37d4
         r3 = 0x4c3 // DATA XREF from sym._mmv4l2_set_control @ 0x3552(r)
         [var_ch] = r6
         r2 += pc                 // 0x8284 // "_mmv4l2_set_buf_type" // str._mmv4l2_set_buf_type
         [var_8h] = r3
         r2 += 0x1e8              // 0x846c // "_mmv4l2_enable_stream" // str._mmv4l2_enable_stream
         [sp] = r5
         [var_4h] = r2
         r1 = 6
         r2 = [0x00004abc]        // [0x4b28:4]=0x354a // "J5"
         r3 = [0x00004ac0]        // [0x4b2c:4]=0x4398
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x8e5c // "%s: %s(%d) > Unable to %s streaming: %s (%d).\n" // str._s:__s__d____Unable_to__s_streaming:__s___d_._n
         [var_10h] = r0 // DATA XREF from sym._mmv4l2_get_format @ 0x37b6(r)
         r0 = 2
         r4 = [r4]
         [var_14h] = r4
         fcn.00002084 ()
         r0 = 0x100f              // '\x0f\x10' // "v4l2_query_control"
         r0 |= 0x8000 << 16
         
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int sym._init (int r0, int r1) {
    loc_0x00001ce4:
        push (r3, lr) // [09] -r-x section size 12 named .init
        entry0 ()     // section..text
        pop (r3, pc)  // r13
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void sym._mmv4l2_deconstruct_attribute (int16_t arg1) {
    loc_0x00002818:
        push (r4, r5, r6, r7, lr)
        sp -= 0x14    // (pstr 0x00009a54) "mm_v4l2.c"
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x5874(r)
        r7 = [0x00002820] // [0x28ac:4]=0x57e4
        r4 = r0       // arg1
        r5 = [0x00002824] // [0x28b0:4]=0x573a // ":W"
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00002828] // [0x28b4:4]=0x57e0
        r6 = [0x0000282c] // [0x28b8:4]=0x57f6
        r5 += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        r1 = 3        // (pstr 0x00000100) "GNU"
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x8014 // "%s: %s(%d) > <ENTER> \n" // str._s:__s__d_____ENTER___n
        r6 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        // DATA XREF from sym.mm_v4l2_get_attribute_info @ 0x720c(r)
        r5 += 0x84    // 0x7fec // "_mmv4l2_deconstruct_attribute" // str._mmv4l2_deconstruct_attribute
        mov.w lr, 0x1b2
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 8]
        fcn.00002084 ()
        if (!r4) goto 0x2884 // likely
        goto loc_0x00002848;
    loc_0x00002884:
        // CODE XREF from sym._mmv4l2_deconstruct_attribute @ 0x2846(x)
        r3 = [0x00002888] // [0x28cc:4]=0x57a8
        r2 = r7
        lr = [0x00002890] // [0x28d0:4]=0x591a
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        lr += pc      // 0x81b0 // "v4l2" // str.v4l2
        mov.w r7, 0x1b6
        [sp] = r6
        [var_4h] = r5
        str.w lr, [sp, 0xc]
        [var_8h] = r7
        fcn.00002084 ()
        // DATA XREF from sym.mm_v4l2_stop_capture @ 0x75fc(r)
        r0 = r4
        // DATA XREF from sym.mm_v4l2_set_attribute @ 0x7074(r)
        goto 0x2874
        
    loc_0x00002874:
        // CODE XREF from sym._mmv4l2_deconstruct_attribute @ 0x28a8(x)
        sp += 0x14
        // DATA XREF from sym._mmv4l2_enum_formats @ 0x5788(r)
        pop (r4, r5, r6, r7, pc)
        goto loc_0x0000284e;
        return r0;
    loc_0x0000284e:
        // CODE XREF from sym._mmv4l2_deconstruct_attribute @ 0x2882(x)
        r5 = [0x00002850] // [0x28bc:4]=0x570c
        r0 = 2
        r2 = [0x00002854] // [0x28c0:4]=0x57ac
        r1 = 3        // (pstr 0x00000100) "GNU"
        // DATA XREF from sym._mmv4l2_enum_inputs @ 0x5a20(r)
        r3 = [0x00002858] // [0x28c4:4]=0x583a
        r5 += pc      // 0x7f68 // "_mmv4l2_get_attribute" // section..rodata
        r6 = [0x0000285c] // [0x28c8:4]=0x57c4
        r2 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 += pc      // 0x809c // "%s: %s(%d) > <LEAVE> \n" // str._s:__s__d_____LEAVE___n
        mov.w r4, 0x1be
        r6 += pc      // 0x802c // "mm_v4l2_attrs.c" // str.mm_v4l2_attrs.c
        r5 += 0x84    // 0x7fec // "_mmv4l2_deconstruct_attribute" // str._mmv4l2_deconstruct_attribute
        [sp] = r6
        [var_4h] = r5
        [var_8h] = r4
        fcn.00002084 ()
        r0 = 1
    loc_0x00002874: // orphan
         // CODE XREF from sym._mmv4l2_deconstruct_attribute @ 0x28a8(x)
         sp += 0x14 // DATA XREF from sym._mmv4l2_enum_formats @ 0x5788(r)
         pop (r4, r5, r6, r7, pc)

        return r0;
    loc_0x00002878: // orphan
         // CODE XREF from sym._mmv4l2_deconstruct_attribute @ 0x284c(x)
         sym.imp.mmf_attrs_free ()
         r3 = 0
         str.w r3, [r4, 0xd0]
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.mm_v4l2_realize (int16_t arg1) {
    loc_0x00006a18:
        push (r4, r5, r6, r7, r8, sb, sl, fp, lr) // (pstr 0x00007fec) "_mmv4l2_deconstruct_attribute"
        sp -= 0x5c    // (pstr 0x000085c8) "mm_v4l2_priv.c"
        r7 = [0x00006a24] // [0x6ee0:4]=0x15de
        r4 = r0       // arg1
        sb = [0x00006a2c] // [0x6ee4:4]=0x2ef4
        r0 = 2
        r7 += pc      // 0x800c // "V4L2" // str.V4L2
        r3 = [0x00006a34] // [0x6ee8:4]=0x2906
        r8 = [0x00006a38] // [0x6eec:4]=0x3014
        sb += pc      // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
        r1 = 3        // (pstr 0x00000100) "GNU"
        r2 = r7       // "V4L2" str.V4L2
        r3 += pc      // 0x9344 // "%s: %s(%d) > \n" // str._s:__s__d_____n
        r8 += pc      // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
        sb += 0x48    // 0x9974 // "mm_v4l2_realize" // str.mm_v4l2_realize
        r5 = 0xff
        stm.w sp, (r8, sb)
        [var_8h] = r5
        fcn.00002084 ()
        (a, b) = compare (r4, 0)
        beq.w 0x6e54  // likely
        goto loc_0x00006a54;
    loc_0x00006e54:
        // CODE XREF from sym.mm_v4l2_realize @ 0x6a50(x)
        r3 = [0x00006e58] // [0x6f9c:4]=0x11da "rame_intervals" // "rame_intervals"
        r2 = r7
        r5 = [0x00006e5c] // [0x6fa0:4]=0x134c "mmv4l2_get_bps" // "mmv4l2_get_bps"
        r0 = 2
        r1 = 5
        r3 += pc      // 0x803c // "%s: %s(%d) > failed [%s]\n" // str._s:__s__d____failed___s__n
        r5 += pc      // 0x81b0 // "v4l2" // str.v4l2
        r4 = 0x101    // "NU"
        str.w r8, [sp]
        r6 = 0x1001   // "og_status"
        str.w sb, [sp, 4]
        r6 |= 0x8000 << 16
        [var_ch] = r5
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x6cd2
        
    loc_0x00006cd2:
        // CODE XREFS from sym.mm_v4l2_realize @ 0x6e7e(x), 0x6ea4(x), 0x6eca(x)
        r0 = r6
        sp += 0x5c
        pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)
        goto loc_0x00006a5e;
        return r0;
    loc_0x00006a5e:
        r0 = [r4 + 0xd4]
        (a, b) = compare (r0, 0)
        beq.w 0x6ea6  // likely
        goto loc_0x00006a68;
    loc_0x00006ea6:
        // CODE XREF from sym.mm_v4l2_realize @ 0x6a64(x)
        r3 = [0x00006ea8] // [0x6fa8:4]=0x2c62
        r2 = r7
        r0 = 2
        r1 = 3        // (pstr 0x00000100) "GNU"
        r3 += pc      // 0x9b14 // "%s: %s(%d) > no command lock" // str._s:__s__d____no_command_lock
        mov.w r4, 0x10a
        str.w r8, [sp]
        r6 = 0x1001   // "og_status"
        str.w sb, [sp, 4]
        r6 |= 0x8000 << 16
        [var_8h] = r4
        fcn.00002084 ()
        goto 0x6cd2
    loc_0x00006a68: // orphan
         fcn.00002048 ()
         r2 = var_58h
         r1 = [0x00006a74]        // [0x6ef0:4]=0x173a // ":\x17"
         r3 = 0
         r0 = r5
         [r2 - 0x38]! = r3
         r1 += pc                 // 0x81b8 // "device_node" // str.device_node
         fcn.00001f3c ()
         r1 = [var_20h]
         (a, b) = compare (r1, 0)
         beq.w 0x6ecc             // likely

         goto loc_0x00006a88
    loc_0x00006a88: // orphan
         r0 = r4
         rsym._mmv4l2_open ()
         r6 = r0
         (a, b) = compare (r0, 0)
         bne.w 0x6cae             // unlikely

         goto loc_0x00006a96
    loc_0x00006a96: // orphan
         ip = [var_20h]
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 = [0x00006aa4]        // [0x6ef4:4]=0x3170 // "p1"
         r2 = r7
         r0 = 2
         mov.w lr, 0x120
         r3 += pc                 // 0x9c1c // "%s: %s(%d) > success open..%s\n" // str._s:__s__d____success_open.._s_n
         str.w ip, [sp, 0xc]
         str.w lr, [sp, 8]
         stm.w sp, (r8, sb)
         fcn.00002084 ()
         r2 = var_58h
         r1 = [0x00006ac4]        // [0x6ef8:4]=0x170a
         r0 = r5
         [r2 - 0x34]! = r6
         r1 += pc                 // 0x81d4 // "capabilities" // str.capabilities
         sym.imp.mm_attrs_get_int_by_name ()
         r2 = var_58h
         r1 = [0x00006ad4]        // [0x6efc:4]=0x1746 // "F\x17"
         r3 = 1
         r0 = r5
         [r2 - 0x30]! = r3
         r1 += pc                 // 0x8224 // "no_query" // str.no_query
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_28h]
         (a, b) = compare (r3, 0)
         beq.w 0x6d34             // unlikely

         goto loc_0x00006ae8
    loc_0x00006ae8: // orphan
         r0 = [var_24h]
         rsym.mmv4l2_convert_buf_type ()
         r7 = r0
         r0 = r4
         fcn.00001fd8 ()
         (a, b) = compare (r0, 0)
         beq.w 0x6d74             // likely

         goto loc_0x00006afc
    loc_0x00006afc: // orphan
         // CODE XREFS from sym.mm_v4l2_realize @ 0x6d70(x), 0x6d7c(x)
         r2 = var_58h
         r1 = [0x00006b04]        // [0x6f00:4]=0x16d6
         r3 = 1
         r0 = r5
         [r2 - 0x28]! = r3
         r1 += pc                 // 0x81e4 // "memory_type" // str.memory_type
         sym.imp.mm_attrs_get_int_by_name ()
         r7 = [var_30h]
         ip = [0x00006b18]        // [0x6f04:4]=0x2e0a // "\n."
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r2 = [0x00006b1c]        // [0x6f08:4]=0x14e4 "usleep" // "usleep"
         r0 = 2
         r3 = [0x00006b20]        // [0x6f0c:4]=0x3138 // "81"
         ip += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         lr = [0x00006b28]        // [0x6f10:4]=0x2f26 // "&/"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         [r4 + 0xc] = r7
         r3 += pc                 // 0x9c64 // "%s: %s(%d) > memory type :  %d\n" // str._s:__s__d____memory_type_:___d_n
         lr += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         ip += 0x48               // 0x9974 // "mm_v4l2_realize" // str.mm_v4l2_realize
         str.w lr, [sp]
         r8 = 0x153
         str.w ip, [sp, 4]
         [var_ch] = r7
         str.w r8, [sp, 8]
         fcn.00002084 ()
         r2 = var_58h
         r1 = [0x00006b4c]        // [0x6f14:4]=0x16ba
         r3 = 0
         r0 = r5
         [r2 - 0x24]! = r3
         r1 += pc                 // 0x8210 // "display_controls" // str.display_controls
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_34h]
         (a, b) = compare (r3, 0)
         bne.w 0x6e4c             // unlikely

         goto loc_0x00006b60
    loc_0x00006b60: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6e52(x)
         r2 = var_58h
         r1 = [0x00006b64]        // [0x6f18:4]=0x1680
         r3 = 0
         r0 = r5
         [r2 - 0x20]! = r3
         r1 += pc                 // 0x81f0 // "display_formats" // str.display_formats
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_38h]
         (a, b) = compare (r3, 0)
         bne.w 0x6e08             // unlikely

         goto loc_0x00006b7a
    loc_0x00006b7a: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6e4a(x)
         r2 = var_58h
         r1 = [0x00006b80]        // [0x6f1c:4]=0x1676
         r3 = 0
         r0 = r5
         [r2 - 0x1c]! = r3
         r1 += pc                 // 0x8200 // "display_inputs" // str.display_inputs
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_3ch]
         (a, b) = compare (r3, 0)
         bne.w 0x6dd6             // unlikely

         goto loc_0x00006b94
    loc_0x00006b94: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6e06(x)
         r2 = var_58h
         r1 = [0x00006b98]        // [0x6f20:4]=0x16b4
         r3 = 0
         r0 = r5
         [r2 - 0x18]! = r3
         r1 += pc                 // 0x8258 // "set_input" // str.set_input
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_40h]
         (a, b) = compare (r3, 0)
         bne.w 0x6d7e             // unlikely

         goto loc_0x00006bae
    loc_0x00006bae: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6dd4(x)
         r2 = var_58h
         r1 = [0x00006bb4]        // [0x6f24:4]=0x160a // "\n\x16"
         r7 = [0x00006bb4]        // [0x6f28:4]=0x144a "mm_v4l2_unrealize" // "J\x14" // "mm_v4l2_unrealize"
         r3 = 4
         r1 += pc                 // 0x81c4 // "pixel_format" // str.pixel_format
         [r2 - 0x14]! = r3
         r0 = r5
         r7 += pc                 // 0x800c // "V4L2" // str.V4L2
         sym.imp.mm_attrs_get_int_by_name ()
         sb = [0x00006bcc]        // [0x6f2c:4]=0x2d4e // "N-"
         ip = [var_44h]
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 = [0x00006bd0]        // [0x6f30:4]=0x2f84
         r2 = r7                  // "V4L2" str.V4L2
         r8 = [0x00006bd8]        // [0x6f34:4]=0x2e68 // "h."
         r0 = 2
         r3 += pc                 // 0x9b60 // "%s: %s(%d) > mm_pixel_format = [%d]\n" // str._s:__s__d____mm_pixel_format____d__n
         sb += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         mov.w lr, 0x192
         str.w ip, [sp, 0xc]
         str.w lr, [sp, 8]
         r8 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         sb += 0x48               // 0x9974 // "mm_v4l2_realize" // str.mm_v4l2_realize
         stm.w sp, (r8, sb)
         fcn.00002084 ()
         r0 = [var_44h]
         rsym.mmv4l2_convert_pixel_format ()
         r1 = [0x00006c00]        // [0x6f38:4]=0x1628 // "(\x16"
         r2 = var_48h
         mov.w lr, 1
         r1 += pc                 // 0x8230 // "set_format" // str.set_format
         mov.w r3, 0x280
         str.w lr, [sp, 0x48]
         [var_4ch] = r3
         mov.w r3, 0x1e0
         [var_50h] = r3
         sl = r0
         r0 = r5
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_48h]
         (a, b) = compare (r3, 0)
         je 0x6cda                // unlikely

         goto loc_0x00006c24
    loc_0x00006c24: // orphan
         r1 = [0x00006c28]        // [0x6f3c:4]=0x1646 // "F\x16"
         r2 = var_4ch             // U(pstr 0x00000280) ",b"
         r0 = r5
         r1 += pc                 // 0x8274 // "width" // str.width
         sym.imp.mm_attrs_get_int_by_name ()
         r1 = [0x00006c34]        // [0x6f40:4]=0x1642 // "B\x16"
         r2 = var_50h             // U(pstr 0x000001e0) "g'pJ\x0eI<1//_ot\x81vX"
         r0 = r5
         r1 += pc                 // 0x827c // "height" // str.height
         sym.imp.mm_attrs_get_int_by_name ()
         ip = [var_4ch]
         fp = [var_50h]
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 = [0x00006c48]        // [0x6f44:4]=0x2f34 // "4/"
         r2 = r7
         r0 = 2
         mov.w lr, 0x1a4
         r3 += pc                 // 0x9b88 // "%s: %s(%d) > width = [%d], height = [%d]\n" // str._s:__s__d____width____d___height____d__n
         str.w ip, [sp, 0xc]
         str.w lr, [sp, 8]
         stm.w sp, (r8, sb)
         str.w fp, [sp, 0x10]
         fcn.00002084 ()
         lr = [var_50h]
         r2 = 0
         r1 = [var_4ch]
         r3 = sl
         [sp] = r2
         r0 = r4
         [var_4h] = r2
         r2 = lr
         rsym._mmv4l2_set_format ()
         lr = r0
         (a, b) = compare (r0, 0)
         je 0x6cda                // likely

    loc_0x00006c82: // orphan
         r3 = [0x00006c84]        // [0x6f48:4]=0x3066 // "f0"
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9cf4 // "%s: %s(%d) > _mmv4l2_set_format() FAIL..\n" // str._s:__s__d_____mmv4l2_set_format___FAIL.._n
         r5 = 0x1a9
         str.w r8, [sp]
         r6 = lr
         str.w sb, [sp, 4]
         [var_8h] = r5
         fcn.00002084 ()

    loc_0x00006ca0: // orphan
         // CODE XREFS from sym.mm_v4l2_realize @ 0x6d32(x), 0x6d5e(x)
         r3 = [r4 + 4]
         (a, b) = compare (r3, 1)
         bne 0x6cca               // unlikely

         goto loc_0x00006ca6
    loc_0x00006ca6: // orphan
         r0 = r4
         fcn.00001ec4 ()
         
    loc_0x00006cae: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6a92(x)
         r3 = [0x00006cb0]        // [0x6f4c:4]=0x2f3e // ">/"
         r2 = r7
         r0 = 2
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 += pc                 // 0x9bf8 // "%s: %s(%d) > _mmv4l2_open() FAIL..\n" // str._s:__s__d_____mmv4l2_open___FAIL.._n
         mov.w r5, 0x11c
         str.w r8, [sp]
         str.w sb, [sp, 4]
         [var_8h] = r5
         fcn.00002084 ()

    loc_0x00006cca: // orphan
         // CODE XREFS from sym.mm_v4l2_realize @ 0x6ca4(x), 0x6cac(x), 0x6cf6(x), 0x6d0a(x)
         r0 = [r4 + 0xd4]
         sym.imp.g_mutex_unlock ()

    loc_0x00006cd2: // orphan
         // CODE XREFS from sym.mm_v4l2_realize @ 0x6e7e(x), 0x6ea4(x), 0x6eca(x)
         r0 = r6
         sp += 0x5c
         pop (r4, r5, r6, r7, r8, sb, sl, fp, pc)

        return r0;
    loc_0x00006cda: // orphan
         // CODE XREFS from sym.mm_v4l2_realize @ 0x6c22(x), 0x6c80(x)
         r0 = r4
         fcn.000020c0 ()
         r2 = var_58h
         r1 = [0x00006ce4]        // [0x6f50:4]=0x154c "d.so.0" // "L\x15" // "d.so.0"
         r3 = 0x1e
         r0 = r5
         [r2 - 0x4]! = r3
         r1 += pc                 // 0x823c // "set_fps" // str.set_fps
         sym.imp.mm_attrs_get_int_by_name ()
         r3 = [var_54h]
         r2 = r3 + 1
         je 0x6cca                // unlikely

    loc_0x00006cf8: // orphan
         r0 = r4
         r1 = var_18h
         [var_1ch] = r3
         r3 = 1
         [var_18h] = r3
         fcn.0000209c ()
         r3 = r0
         (a, b) = compare (r0, 0)
         je 0x6cca                // likely

    loc_0x00006d0c: // orphan
         r6 = r3
         r7 = [0x00006d10]        // [0x6f54:4]=0x2c12
         r2 = [0x00006d14]        // [0x6f58:4]=0x12ec "trchr" // "trchr"
         r0 = 2
         r3 = [0x00006d18]        // [0x6f5c:4]=0x2ffe
         r7 += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         r5 = [0x00006d1c]        // [0x6f60:4]=0x2d30 // "0-"
         r1 = 6
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9d20 // "%s: %s(%d) > _mmv4l2_set_framerate() FAIL..\n" // str._s:__s__d_____mmv4l2_set_framerate___FAIL.._n
         r5 += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         r7 += 0x48               // 0x9974 // "mm_v4l2_realize" // str.mm_v4l2_realize
         [sp] = r5
         r5 = 0x1bf
         [var_4h] = r7
         [var_8h] = r5
         fcn.00002084 ()
         
         goto loc_0x00006d34
    loc_0x00006d34: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6ae4(x)
         r0 = r4
         r1 = var_2ch
         fcn.00001ed0 ()
         lr = r0
         if (!r0) 
         goto loc_0x00006d40
    loc_0x00006d40: // orphan
         r3 = [0x00006d44]        // [0x6f64:4]=0x2ef0
         r2 = r7
         r0 = 2
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 += pc                 // 0x9c3c // "%s: %s(%d) > _mmv4l2_querycap() FAIL..\n" // str._s:__s__d_____mmv4l2_querycap___FAIL.._n
         mov.w r5, 0x13c
         str.w r8, [sp]
         r6 = lr
         str.w sb, [sp, 4]
         [var_8h] = r5
         fcn.00002084 ()
         
    loc_0x00006d60: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6d3e(x)
         r0 = [var_2ch]
         fcn.00001fb4 ()
         r7 = r0
         r0 = r4
         fcn.00001fd8 ()
         (a, b) = compare (r0, 0)
         bne.w 0x6afc             // unlikely

         goto loc_0x00006d74
    loc_0x00006d74: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6af8(x)
         r1 = r7
         r0 = r4
         fcn.00001f78 ()
         
    loc_0x00006d7e: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6baa(x)
         r7 = var_58h
         r1 = [0x00006d84]        // [0x6f68:4]=0x14d6 "capture_image" // "capture_image"
         r3 = 1
         r0 = r5
         [r7 - 0x2c]! = r3
         r1 += pc                 // 0x8264 // "select_input" // str.select_input
         r2 = r7
         sym.imp.mm_attrs_get_int_by_name ()
         r1 = [var_2ch]
         r0 = r4
         fcn.00002078 ()
         r1 = r7
         r0 = r4
         r7 = 0x189
         fcn.00002108 ()
         r8 = [var_2ch]
         lr = [0x00006db0]        // [0x6f6c:4]=0x2b72 // "r+"
         r0 = 2
         r2 = [0x00006db4]        // [0x6f70:4]=0x124c "t_input" // "L\x12" // "t_input"
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 = [0x00006db8]        // [0x6f74:4]=0x2f0e
         lr += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         ip = [0x00006dc0]        // [0x6f78:4]=0x2c8c
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9cd0 // "%s: %s(%d) > Input [%d] selected\n" // str._s:__s__d____Input___d__selected_n
         lr += 0x48               // 0x9974 // "mm_v4l2_realize" // str.mm_v4l2_realize
         ip += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         str.w r8, [sp, 0xc]
         stm.w sp, (ip, lr)
         [var_8h] = r7
         fcn.00002084 ()
         
         goto loc_0x00006dd6
    loc_0x00006dd6: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6b90(x)
         lr = [0x00006ddc]        // [0x6f7c:4]=0x2b46 // "F+"
         r0 = 2
         r2 = [0x00006de0]        // [0x6f80:4]=0x1220 "4l2_enum_inputs" // " \x12" // "4l2_enum_inputs"
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r3 = [0x00006de4]        // [0x6f84:4]=0x2ebe
         lr += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         ip = [0x00006dec]        // [0x6f88:4]=0x2c60 // "`,"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9cac // "%s: %s(%d) > *** available inputs:\n" // str._s:__s__d_____available_inputs:_n
         lr += 0x48               // 0x9974 // "mm_v4l2_realize" // str.mm_v4l2_realize
         ip += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         mov.w r7, 0x176
         stm.w sp, (ip, lr)
         [var_8h] = r7
         fcn.00002084 ()
         r0 = r4
         rsym._mmv4l2_enum_inputs ()
         
         goto loc_0x00006e08
    loc_0x00006e08: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6b76(x)
         lr = [0x00006e10]        // [0x6f8c:4]=0x2b14
         r1 = 3                   // (pstr 0x00000100) "GNU"
         r2 = [0x00006e10]        // [0x6f90:4]=0x11ee "4l2_get_enum_frame_sizes" // "4l2_get_enum_frame_sizes"
         r0 = 2
         r3 = [0x00006e14]        // [0x6f94:4]=0x2e64 "bR" // "d."
         lr += pc                 // 0x992c // "mm_v4l2_create" // str.mm_v4l2_create
         ip = [0x00006e1c]        // [0x6f98:4]=0x2c2e // ".,"
         r2 += pc                 // 0x800c // "V4L2" // str.V4L2
         r3 += pc                 // 0x9c84 // "%s: %s(%d) > *** available formats : \n" // str._s:__s__d_____available_formats_:__n
         lr += 0x48               // 0x9974 // "mm_v4l2_realize" // str.mm_v4l2_realize
         ip += pc                 // 0x9a54 // "mm_v4l2.c" // str.mm_v4l2.c
         mov.w r7, 0x168
         stm.w sp, (ip, lr)
         [var_8h] = r7
         fcn.00002084 ()
         r1 = 1
         r0 = r4
         fcn.00001f9c ()
         r1 = 2
         r0 = r4
         fcn.00001f9c ()
         r0 = r4
         r1 = 3                   // (pstr 0x00000100) "GNU"
         fcn.00001f9c ()
         
         goto loc_0x00006e4c
    loc_0x00006e4c: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6b5c(x)
         r0 = r4
         fcn.00001f18 ()
         
    loc_0x00006e80: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6a5a(x)
         r3 = [0x00006e84]        // [0x6fa4:4]=0x2ca8
         r0 = 2
         r1 = 6
         r2 = r7
         r3 += pc                 // 0x9b34 // "%s: %s(%d) > cannot get content attribute" // str._s:__s__d____cannot_get_content_attribute
         mov.w r4, 0x106
         str.w r8, [sp]

    loc_0x00006e92: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6ede(x)
         str.w sb, [sp, 4]
         r6 = 0x1006              // "atus"
         [var_8h] = r4
         r6 |= 0x8000 << 16
         fcn.00002084 ()
         
    loc_0x00006ecc: // orphan
         // CODE XREF from sym.mm_v4l2_realize @ 0x6a84(x)
         r3 = [0x00006ed0]        // [0x6fac:4]=0x2cfc
         r2 = r7
         r0 = 2
         r1 = 6
         r3 += pc                 // 0x9bd4 // "%s: %s(%d) > cannot get device node" // str._s:__s__d____cannot_get_device_node
         str.w r8, [sp]
         mov.w r4, 0x114
         
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
void sym.__mmv4l2_get_format_by_name (int16_t arg1) {
    loc_0x0000296c:
        push (r3, r4, r5, r6, r7, lr)
        r4 = 0
        r6 = [0x00002974] // [0x299c:4]=0xfe82
        r7 = r0       // arg1
        r5 = r4
        r6 += pc      // (pstr 0x00009564) "RGB332"
        goto 0x2980
        
    loc_0x00002980:
        // CODE XREF from sym.__mmv4l2_get_format_by_name @ 0x2978(x)
        r0 = [r6 + r4] // 0x9564 // "RGB332" // const char *s1
        r1 = r7       // const char *s2
        sym.imp.strcasecmp () // int strcasecmp(0, 0)
        r4 += 0xc
        (a, b) = compare (r0, 0)
        bne 0x297a    // unlikely
        goto loc_0x0000298e;
        return r0;
    loc_0x0000298e:
        add.w r5, r5, r5, lsl 1
        add.w r0, r6, r5, lsl 2
        pop (r3, r4, r5, r6, r7, pc)
        return r0;
    loc_0x00002980: // orphan
         // CODE XREF from sym.__mmv4l2_get_format_by_name @ 0x2978(x)
         r0 = [r6 + r4]           // 0x9564 // "RGB332" // const char *s1
         r1 = r7                  // const char *s2
         sym.imp.strcasecmp () // int strcasecmp(0, 0)
         r4 += 0xc
         (a, b) = compare (r0, 0)
         bne 0x297a               // unlikely

    loc_0x00002998: // orphan
         // CODE XREF from sym.__mmv4l2_get_format_by_name @ 0x297e(x)
         r0 = 0
         pop (r3, r4, r5, r6, r7, pc)

        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, stack);
int entry.fini0 (int r0, int r1) {
    loc_0x0000218c:
        r2 = [0x00002190] // [0x21b4:4]=0x10854
        push (r3, lr)
        r2 += pc      // 0x129e8 // loc.__bss_start
        [24] -rw- section size 12 named .bss
        r3 = [0x00002194] // [0x21b8:4]=0x1030e
        r2 = (byte) [r2] // 0x129e8 // loc.__bss_start
        [24] -rw- section size 12 named .bss
        r3 += pc      // 0x124a8 // section..got
        [22] -rw- section size 400 named .got
        if (r2) goto 0x21b2 // unlikely
        goto loc_0x0000219a;
    loc_0x000021b2:
        // CODE XREF from entry.fini0 @ 0x2198(x)
        pop (r3, pc)
        goto loc_0x000021a0;
        return r0;
    loc_0x000021a0:
        r3 = [0x000021a4] // [0x21c0:4]=0x10492
        r3 += pc      // 0x12638 // "8&\x01" // section..data
        r0 = [r3]     // 0x12638 // "8&\x01" // section..data
        sym.imp.__cxa_finalize ()
        
    loc_0x000021aa:
        // CODE XREF from entry.fini0 @ 0x219e(x)
        r3 = [0x000021ac] // [0x21c4:4]=0x10836
        r2 = 1
        r3 += pc      // 0x129e8 // loc.__bss_start
        [24] -rw- section size 12 named .bss
        [r3] = (byte) r2 // 0x129e8 // loc.__bss_start
        [24] -rw- section size 12 named .bss
        return r0;
    loc_0x000021aa: // orphan
         // CODE XREF from entry.fini0 @ 0x219e(x)
         r3 = [0x000021ac]        // [0x21c4:4]=0x10836
         r2 = 1
         r3 += pc                 // 0x129e8 // loc.__bss_start
                                  [24] -rw- section size 12 named .bss
         [r3] = (byte) r2         // 0x129e8 // loc.__bss_start
                                  [24] -rw- section size 12 named .bss

}

// callconv: r0 arm32 (r0, r1, r2, stack);
int fcn.00001eac (int r0, int r1) {
    loc_0x00001eac:
        // CALL XREF from sym._mmv4l2_get_attribute @ 0x2230(x)
        add ip, pc, 0, 12 // sym.imp.strerror
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001eb4:
        // ICOD XREF from fcn.00001eac @ 0x1eac(r)
        pc = [ip + 0x68c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001ea0 (int r0, int r1) {
    loc_0x00001ea0:
        // CALL XREF from sym._mmv4l2_construct_attribute @ 0x26c0(x)
        // CALL XREF from sym.mmv4l2_save_file @ 0x6156(x)
        add ip, pc, 0, 12 // sym.imp.mm_attrs_get_valist
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001ea8:
        // ICOD XREF from fcn.00001ea0 @ 0x1ea0(r)
        pc = [ip + 0x694]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.000020fc (int r0, int r1) {
    loc_0x000020fc:
        // CALL XREF from sym._mmv4l2_construct_attribute @ 0x2750(x)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x781c(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020fc @ 0x20fc(r)
        pc = [ip + 0x500]! // 0x12604 // reloc.mmf_attrs_set_valid_range // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f24 (int r0, int r1) {
    loc_0x00001f24:
        // CALL XREF from fcn.00002940 @ 0x2944(x)
        add ip, pc, 0, 12 // sym.imp.strlen
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001f2c:
        // ICOD XREF from fcn.00001f24 @ 0x1f24(r)
        pc = [ip + 0x63c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001fc0 (int r0, int r1) {
    loc_0x00001fc0:
        // CALL XREF from sym._mmv4l2_querycap @ 0x2d50(x)
        // CALL XREF from sym.mm_v4l2_capture_image @ 0x7944(x)
        add ip, pc, 0, 12 // sym.imp.__sprintf_chk
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001fc8:
        // ICOD XREF from fcn.00001fc0 @ 0x1fc0(r)
        pc = [ip + 0x5d4]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f54 (int r0, int r1) {
    loc_0x00001f54:
        // CALL XREF from sym._mmv4l2_get_control @ 0x3268(x)
        // CALL XREF from sym._mmv4l2_set_control @ 0x34f6(x)
        // CALL XREF from sym._mmv4l2_print_control @ 0x4b8a(x)
        add ip, pc, 0, 12 // sym.imp.mmap
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001f5c:
        // ICOD XREF from fcn.00001f54 @ 0x1f54(r)
        pc = [ip + 0x61c]!
        return r0;
}

// callconv: r0 arm16 (r0, r1, r2, r3, r4, stack);
void fcn.00002940 (int16_t arg1) {
    loc_0x00002940:
        // CALL XREF from sym._mmv4l2_get_format @ 0x37a2(x)
        // CALL XREF from sym._mmv4l2_set_format @ 0x3950(x)
        // CALL XREF from sym._mmv4l2_enum_formats @ 0x57ac(x)
        push (r4, r5, r6, lr)
        r4 = r0       // arg1
        fcn.00001f24 ()
        r3 = r0
        if (!r0) goto 0x2950 // likely
        goto loc_0x0000294c;
    loc_0x00002950:
        // CODE XREF from fcn.00002940 @ 0x294a(x)
        r2 = [0x00002954] // [0x2968:4]=0x10090
        r6 = r4 >> 8
        r5 = r4 >> 0x10
        r1 = r4 >> 0x18
        r2 += pc
        [r2] = (byte) r4
        r0 = r2
        [r2 + 4] = (byte) r3
        [r2 + 1] = (byte) r6
        [r2 + 2] = (byte) r5
        [r2 + 3] = (byte) r1
        // DATA XREF from sym.mm_v4l2_unrealize @ 0x6fb8(r)
        pop (r4, r5, r6, pc)
        return r0;
}

// callconv: r0 arm32 (r0, r1, r2, stack);
int rsym.__mmv4l2_get_field_name (int r0, int r1) {
    loc_0x00001dd0:
        // CALL XREF from sym._mmv4l2_get_format @ 0x37c6(x)
        // CALL XREF from sym._mmv4l2_set_format @ 0x3966(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym.__mmv4l2_get_field_name @ 0x1dd0(r)
        pc = [ip + 0x720]! // 0x124f8 // reloc.__mmv4l2_get_field_name // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f60 (int r0, int r1) {
    loc_0x00001f60:
        // CALL XREF from sym.__mmv4l2_mmap_buffer @ 0x3d28(x)
        add ip, pc, 0, 12 // sym.imp.strchr
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001f68:
        // ICOD XREF from fcn.00001f60 @ 0x1f60(r)
        pc = [ip + 0x614]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002060 (int r0, int r1) {
    loc_0x00002060:
        // CALL XREF from sym.__mmv4l2_munmap_buffer @ 0x3e5a(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002060 @ 0x2060(r)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x78b6(r)
        pc = [ip + 0x568]! // 0x125d0 // reloc.munmap // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f84 (int r0, int r1) {
    loc_0x00001f84:
        // CALL XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3f10(x)
        add ip, pc, 0, 12 // sym.imp.posix_memalign
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001f8c:
        // ICOD XREF from fcn.00001f84 @ 0x1f84(r)
        pc = [ip + 0x5fc]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f90 (int r0, int r1) {
    loc_0x00001f90:
        // CALL XREF from sym.__mmv4l2_alloc_buffer_userptr @ 0x3fb2(x)
        add ip, pc, 0, 12 // 0x1f98 // rsym._mmv4l2_enum_formats
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001f90 @ 0x1f90(r)
        pc = [ip + 0x5f4]! // 0x1258c // reloc.posix_memalign // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.000020e4 (int r0, int r1) {
    loc_0x000020e4:
        // CALL XREF from sym._mmv4l2_alloc_buffers @ 0x4326(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020e4 @ 0x20e4(r)
        pc = [ip + 0x510]! // 0x125fc // reloc.__mmv4l2_mmap_buffer // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.000020d8 (int r0, int r1) {
    loc_0x000020d8:
        // CALL XREF from sym._mmv4l2_free_buffers @ 0x44e4(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020d8 @ 0x20d8(r)
        pc = [ip + 0x518]! // 0x125f8 // reloc.__mmv4l2_munmap_buffer // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002114 (int r0, int r1) {
    loc_0x00002114:
        // CALL XREF from sym._mmv4l2_queue_buffer @ 0x4716(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002114 @ 0x2114(r)
        pc = [ip + 0x4f0]! // 0x1260c // reloc._mmv4l2_is_output // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001fcc (int r0, int r1) {
    loc_0x00001fcc:
        // CALL XREFS from sym._mmv4l2_print_control @ 0x4bd0(x), 0x4d4e(x)
        // CALL XREF from sym.mmv4l2_save_file @ 0x619c(x)
        add ip, pc, 0, 12 // 0x1fd4 // rsym._mmv4l2_has_valid_buf_type
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001fcc @ 0x1fcc(r)
        pc = [ip + 0x5cc]! // 0x125a0 // reloc.__sprintf_chk // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001ef4 (int r0, int r1) {
    loc_0x00001ef4:
        // CALL XREF from sym._mmv4l2_list_controls @ 0x4f48(x)
        add ip, pc, 0, 12 // 0x1efc // "\\xf6\xbc\xe5" // rsym._mmv4l2_free_buffers
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001ef4 @ 0x1ef4(r)
        pc = [ip + 0x65c]! // 0x12558 // reloc._mmv4l2_print_control // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym.__mmv4l2_video_enum_frame_intervals (int r0, int r1) {
    loc_0x00001e18:
        // CALL XREFS from sym.__mmv4l2_get_enum_frame_sizes @ 0x54e4(x), 0x5572(x), 0x55e8(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym.__mmv4l2_video_enum_frame_intervals @ 0x1e18(r)
        pc = [ip + 0x6f0]! // 0x12510 // reloc.__mmv4l2_video_enum_frame_intervals // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001e94 (int r0, int r1) {
    loc_0x00001e94:
        // CALL XREF from sym._mmv4l2_enum_formats @ 0x5828(x)
        add ip, pc, 0, 12 // sym.imp.malloc
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001e9c:
        // ICOD XREF from fcn.00001e94 @ 0x1e94(r)
        pc = [ip + 0x69c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f30 (int r0, int r1) {
    loc_0x00001f30:
        // CALL XREF from sym.mmv4l2_save_file @ 0x614c(x)
        add ip, pc, 0, 12 // sym.imp.mm_attrs_get_string_by_name
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7bd4(r)
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001f38:
        // ICOD XREF from fcn.00001f30 @ 0x1f30(r)
        pc = [ip + 0x634]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f6c (int r0, int r1) {
    loc_0x00001f6c:
        // CALL XREF from sym.mmv4l2_save_file @ 0x616e(x)
        add ip, pc, 0, 12 // 0x1f74 // rsym._mmv4l2_set_buf_type
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001f6c @ 0x1f6c(r)
        pc = [ip + 0x60c]! // 0x12580 // reloc.strchr // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001ffc (int r0, int r1) {
    loc_0x00001ffc:
        // CALL XREF from sym.mmv4l2_save_file @ 0x623c(x)
        add ip, pc, 0, 12 // 0x2004 // rsym._mmv4l2_get_attributes_info
        // DATA XREF from sym.mmv4l2_cap_get_buf_type @ 0x5ffe(r)
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001ffc @ 0x1ffc(r)
        pc = [ip + 0x5ac]! // 0x125b0 // reloc.write // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f3c (int r0, int r1) {
    loc_0x00001f3c:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6a7c(x)
        add ip, pc, 0, 12 // sym.imp.g_mutex_free
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001f44:
        // ICOD XREF from fcn.00001f3c @ 0x1f3c(r)
        pc = [ip + 0x62c]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym._mmv4l2_open (int r0, int r1) {
    loc_0x00001de8:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6a8a(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym._mmv4l2_open @ 0x1de8(r)
        pc = [ip + 0x710]! // 0x12500 // reloc._mmv4l2_open // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym.mmv4l2_convert_buf_type (int r0, int r1) {
    loc_0x00001d7c:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6aea(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym.mmv4l2_convert_buf_type @ 0x1d7c(r)
        pc = [ip + 0x758]! // 0x124dc // reloc.mmv4l2_convert_buf_type // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001fd8 (int r0, int r1) {
    loc_0x00001fd8:
        // CALL XREFS from sym.mm_v4l2_realize @ 0x6af2(x), 0x6d6a(x)
        add ip, pc, 0, 12 // 0x1fe0 // rsym.mmv4l2_get_time
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001fd8 @ 0x1fd8(r)
        pc = [ip + 0x5c4]! // 0x125a4 // reloc._mmv4l2_has_valid_buf_type // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.0000209c (int r0, int r1) {
    loc_0x0000209c:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6d02(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.0000209c @ 0x209c(r)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x787e(r)
        pc = [ip + 0x540]! // 0x125e4 // reloc._mmv4l2_set_framerate // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001ed0 (int r0, int r1) {
    loc_0x00001ed0:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6d38(x)
        add ip, pc, 0, 12 // 0x1ed8 // "t\xf6\xbc\xe5" // loc.imp.__gmon_start__
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001ed0 @ 0x1ed0(r)
        pc = [ip + 0x674]! // 0x1254c // reloc._mmv4l2_querycap // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001fb4 (int r0, int r1) {
    loc_0x00001fb4:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6d62(x)
        add ip, pc, 0, 12 // 0x1fbc // rsym._mmv4l2_is_capture
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001fb4 @ 0x1fb4(r)
        pc = [ip + 0x5dc]! // 0x12598 // reloc.mmv4l2_cap_get_buf_type // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f78 (int r0, int r1) {
    loc_0x00001f78:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6d78(x)
        add ip, pc, 0, 12 // sym.imp.getpagesize
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001f80:
        // ICOD XREF from fcn.00001f78 @ 0x1f78(r)
        pc = [ip + 0x604]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002108 (int r0, int r1) {
    loc_0x00002108:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6da2(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002108 @ 0x2108(r)
        pc = [ip + 0x4f8]! // 0x12608 // reloc._mmv4l2_get_input // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym._mmv4l2_enum_inputs (int r0, int r1) {
    loc_0x00001e60:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6e02(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym._mmv4l2_enum_inputs @ 0x1e60(r)
        pc = [ip + 0x6c0]! // 0x12528 // reloc._mmv4l2_enum_inputs // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f9c (int r0, int r1) {
    loc_0x00001f9c:
        // CALL XREFS from sym.mm_v4l2_realize @ 0x6e36(x), 0x6e3e(x), 0x6e46(x)
        add ip, pc, 0, 12 // sym.imp.__errno_location
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001fa4:
        // ICOD XREF from fcn.00001f9c @ 0x1f9c(r)
        // DATA XREF from sym.mm_v4l2_capture_image @ 0x7aa4(r)
        pc = [ip + 0x5ec]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f18 (int r0, int r1) {
    loc_0x00001f18:
        // CALL XREF from sym.mm_v4l2_realize @ 0x6e4e(x)
        add ip, pc, 0, 12 // 0x1f20 // "D\xf6\xbc\xe5" // rsym.__mmv4l2_get_format_by_fourcc
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001f18 @ 0x1f18(r)
        pc = [ip + 0x644]! // 0x12564 // reloc._mmv4l2_list_controls // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002018 (int r0, int r1) {
    loc_0x00002018:
        // CALL XREF from sym.mm_v4l2_start_capture @ 0x7344(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002018 @ 0x2018(r)
        pc = [ip + 0x598]! // 0x125b8 // reloc._mmv4l2_alloc_buffers // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.000020cc (int r0, int r1) {
    loc_0x000020cc:
        // CALL XREF from sym.mm_v4l2_start_capture @ 0x73ae(x)
        // CALL XREFS from sym.mm_v4l2_capture_image @ 0x7788(x), 0x77f8(x), 0x79cc(x)
        add ip, pc, 0, 12
        // DATA XREF from sym._mmv4l2_destroy @ 0x5f36(r)
        add ip, ip, 16, 20
        // DATA XREF from fcn.000020cc @ 0x20cc(r)
        // DATA XREF from sym._mmv4l2_destroy @ 0x5f2c(r)
        pc = [ip + 0x520]! // 0x125f4 // reloc._mmv4l2_queue_buffer // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001f00 (int r0, int r1) {
    loc_0x00001f00:
        // CALL XREF from sym.mm_v4l2_start_capture @ 0x73e2(x)
        // CALL XREFS from sym.mm_v4l2_stop_capture @ 0x75ba(x), 0x75ea(x)
        add ip, pc, 0, 12 // 0x1f08 // "T\xf6\xbc\xe5" // rsym._mmv4l2_construct_attribute
        add ip, ip, 16, 20
        // DATA XREF from fcn.00001f00 @ 0x1f00(r)
        pc = [ip + 0x654]! // 0x1255c // reloc._mmv4l2_free_buffers // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym._mmv4l2_dequeue_buffer (int r0, int r1) {
    loc_0x00001e0c:
        // CALL XREFS from sym.mm_v4l2_capture_image @ 0x7778(x), 0x77e8(x), 0x7938(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym._mmv4l2_dequeue_buffer @ 0x1e0c(r)
        pc = [ip + 0x6f8]! // 0x1250c // reloc._mmv4l2_dequeue_buffer // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00001fe4 (int r0, int r1) {
    loc_0x00001fe4:
        // CALL XREFS from sym.mm_v4l2_capture_image @ 0x787a(x), 0x7a96(x)
        add ip, pc, 0, 12 // sym.imp.memset
        add ip, ip, 16, 20
        // chop
        
    loc_0x00001fec:
        // ICOD XREF from fcn.00001fe4 @ 0x1fe4(r)
        pc = [ip + 0x5bc]!
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002030 (int r0, int r1) {
    loc_0x00002030:
        // CALL XREF from sym.mm_v4l2_capture_image @ 0x7988(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002030 @ 0x2030(r)
        pc = [ip + 0x588]! // 0x125c0 // reloc.mmv4l2_save_file // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int rsym.mmv4l2_diff_time (int r0, int r1) {
    loc_0x00001e00:
        // CALL XREF from sym.mm_v4l2_capture_image @ 0x7aa0(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from rsym.mmv4l2_diff_time @ 0x1e00(r)
        pc = [ip + 0x700]! // 0x12508 // reloc.mmv4l2_diff_time // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.0000206c (int r0, int r1) {
    loc_0x0000206c:
        // CALL XREF from sym.mm_v4l2_set_control @ 0x7d3e(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.0000206c @ 0x206c(r)
        pc = [ip + 0x560]! // 0x125d4 // reloc._mmv4l2_set_control // fcn.00001cf0
        return r0;
}

// callconv: r0 arm32 (r0, r1);
int fcn.00002024 (int r0, int r1) {
    loc_0x00002024:
        // CALL XREF from sym.mm_v4l2_get_control @ 0x7e74(x)
        add ip, pc, 0, 12
        add ip, ip, 16, 20
        // DATA XREF from fcn.00002024 @ 0x2024(r)
        pc = [ip + 0x590]! // 0x125bc // reloc._mmv4l2_get_control // fcn.00001cf0
        return r0;
}

