[*] Binary protection state of dbus-daemon

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of dbus-daemon

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x223e4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000223e4 ()              | void fcn_000223e4 (int16_t arg1) {
                                         |     r0 = arg1;
    0x000223e4 push {r4, lr}             |     
    0x000223e6 mov r4, r0                |     r4 = r0;
    0x000223e8 ldr r0, [r0, 0x10]        |     r0 = *((r0 + 0x10));
                                         |     if (r0 != 0) {
    0x000223ea cbz r0, 0x223f0           |         
    0x000223ec blx 0xa2c4                |         fcn_0000a2c4 ();
                                         |     }
    0x000223f0 ldr r0, [r4, 0xc]         |     r0 = *((r4 + 0xc));
                                         |     if (r0 != 0) {
    0x000223f2 cbz r0, 0x223f8           |         
    0x000223f4 blx 0xa2c4                |         fcn_0000a2c4 ();
                                         |     }
    0x000223f8 ldr r1, [r4, 0x14]        |     r1 = *((r4 + 0x14));
                                         |     if (r1 != 0) {
    0x000223fa cbz r1, 0x22406           |         
    0x000223fc ldr r3, [r4, 4]           |         r3 = *((r4 + 4));
    0x000223fe ldr r3, [r3, 4]           |         r3 = *((r3 + 4));
    0x00022400 ldr r0, [r3, 8]           |         r0 = *((r3 + 8));
    0x00022402 blx 0xae08                |         fcn_0000ae08 ();
                                         |     }
    0x00022406 ldr r3, [r4]              |     r3 = *(r4);
    0x00022408 ldr r0, [r3, 8]           |     r0 = *((r3 + 8));
    0x0002240a blx 0xa004                |     fcn_0000a004 ();
    0x0002240e ldr r0, [r4]              |     r0 = *(r4);
    0x00022410 bl 0x21b04                |     fcn_00021b04 (r0);
    0x00022414 ldr r0, [r4, 4]           |     r0 = *((r4 + 4));
    0x00022416 bl 0x221f4                |     bus_service_unref ();
    0x0002241a mov r0, r4                |     r0 = r4;
    0x0002241c pop.w {r4, lr}            |     
    0x00022420 b.w 0xa0f8                |     return void (*0xa0f8)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x27fbc */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00027fbc ()                  | void fcn_00027fbc (int16_t arg1) {
                                             |     int16_t var_0h_2;
                                             |     r0 = arg1;
    0x00027fbc push {r4, r5, r6, lr}         |     
    0x00027fbe mov r4, r0                    |     r4 = r0;
    0x00027fc0 ldr r5, [pc, 0x74]            |     
    0x00027fc2 sub sp, 8                     |     
    0x00027fc4 subs r0, 0                    |     
    0x00027fc6 mov.w r3, 0x98                |     r3 = 0x98;
    0x00027fca ldr r6, [pc, 0x70]            |     
    0x00027fcc it ne                         |     
                                             |     if (r0 == 0) {
    0x00027fce movne r0, 1                   |         r0 = 1;
                                             |     }
    0x00027fd0 ldr r1, [pc, 0x6c]            |     
    0x00027fd2 add r5, pc                    |     r5 = 0x5000e;
    0x00027fd4 adds r5, 0x40                 |     r5 += 0x40;
    0x00027fd6 add r6, pc                    |     r6 = 0x50018;
    0x00027fd8 str r5, [sp]                  |     *(sp) = r5;
    0x00027fda add r1, pc                    |     r1 = 0x5001e;
    0x00027fdc mov r2, r6                    |     r2 = r6;
    0x00027fde blx 0xae50                    |     fcn_0000ae50 ();
    0x00027fe2 ldr r0, [r4]                  |     r0 = *(r4);
    0x00027fe4 movs r3, 0x99                 |     r3 = 0x99;
    0x00027fe6 ldr r1, [pc, 0x5c]            |     
    0x00027fe8 mov r2, r6                    |     r2 = r6;
    0x00027fea str r5, [sp]                  |     *(sp) = r5;
    0x00027fec cmp r0, 0                     |     
    0x00027fee add r1, pc                    |     r1 = 0x50038;
    0x00027ff0 ite le                        |     
                                             |     if (r0 > 0) {
    0x00027ff2 movle r0, 0                   |         r0 = 0;
                                             |     }
                                             |     if (r0 <= 0) {
    0x00027ff4 movgt r0, 1                   |         r0 = 1;
                                             |     }
    0x00027ff6 blx 0xae50                    |     fcn_0000ae50 ();
    0x00027ffa ldr r3, [r4]                  |     r3 = *(r4);
    0x00027ffc subs r3, 1                    |     r3--;
    0x00027ffe str r3, [r4]                  |     *(r4) = r3;
                                             |     if (r3 != 0) {
    0x00028000 cbnz r3, 0x28034              |         goto label_0;
                                             |     }
    0x00028002 ldr r3, [r4, 0x20]            |     r3 = *((r4 + 0x20));
    0x00028004 add.w r5, r4, 0x20            |     r5 = r4 + 0x20;
                                             |     if (r3 == 0) {
    0x00028008 cbz r3, 0x2801a               |         goto label_1;
                                             |     }
                                             |     do {
    0x0002800a mov r0, r5                    |         r0 = r5;
    0x0002800c blx 0xa168                    |         fcn_0000a168 ();
    0x00028010 blx 0xa004                    |         fcn_0000a004 ();
    0x00028014 ldr r3, [r4, 0x20]            |         r3 = *((r4 + 0x20));
    0x00028016 cmp r3, 0                     |         
    0x00028018 bne 0x2800a                   |         
                                             |     } while (r3 != 0);
                                             | label_1:
    0x0002801a ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0002801c blx 0xa898                    |     fcn_0000a898 ();
    0x00028020 ldr r0, [r4, 8]               |     r0 = *((r4 + 8));
    0x00028022 ldr r3, [r0]                  |     r3 = *(r0);
    0x00028024 ldr r3, [r3]                  |     r3 = *(r3);
    0x00028026 blx r3                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00028028 mov r0, r4                    |     r0 = r4;
    0x0002802a add sp, 8                     |     
    0x0002802c pop.w {r4, r5, r6, lr}        |     
    0x00028030 b.w 0xa0f8                    |     void (*0xa0f8)() ();
                                             | label_0:
    0x00028034 add sp, 8                     |     
    0x00028036 pop {r4, r5, r6, pc}          |     
                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2825c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0002825c ()                          | void fcn_0002825c (int16_t arg1, int16_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0002825c push {r3, r4, r5, r6, r7, lr}         |     
    0x0002825e add.w r7, r0, 0xc                     |     r7 = r0 + 0xc;
    0x00028262 mov r5, r0                            |     r5 = r0;
    0x00028264 mov r0, r7                            |     r0 = r7;
    0x00028266 mov r6, r1                            |     r6 = r1;
    0x00028268 blx 0xaa18                            |     r0 = fcn_0000aa18 ();
    0x0002826c mov r1, r0                            |     r1 = r0;
                                                     |     do {
                                                     |         if (r1 == 0) {
    0x0002826e cbz r1, 0x2828a                       |             goto label_0;
                                                     |         }
    0x00028270 ldr r4, [r5, 0xc]                     |         r4 = *((r5 + 0xc));
    0x00028272 ldr r2, [r1, 4]                       |         r2 = *((r1 + 4));
    0x00028274 cmp r2, r4                            |         
    0x00028276 ldr r4, [r1, 8]                       |         r4 = *((r1 + 8));
                                                     |         if (r2 == r4) {
    0x00028278 beq 0x28284                           |             goto label_1;
                                                     |         }
    0x0002827a ldr r0, [r4]                          |         r0 = *(r4);
    0x0002827c cmp r0, r6                            |         
                                                     |         if (r0 == r6) {
    0x0002827e beq 0x28298                           |             goto label_2;
                                                     |         }
    0x00028280 mov r1, r2                            |         r1 = r2;
    0x00028282 b 0x2826e                             |         
                                                     |     } while (1);
                                                     | label_1:
    0x00028284 ldr r2, [r4]                          |     r2 = *(r4);
    0x00028286 cmp r6, r2                            |     
                                                     |     if (r6 != r2) {
    0x00028288 beq 0x28298                           |         
                                                     | label_0:
    0x0002828a ldr r0, [pc, 0x28]                    |         
    0x0002828c mov r1, r6                            |         r1 = r6;
    0x0002828e pop.w {r3, r4, r5, r6, r7, lr}        |         
    0x00028292 add r0, pc                            |         r0 = 0x5054c;
    0x00028294 b.w 0xaa04                            |         void (*0xaa04)() ();
                                                     |     }
                                                     | label_2:
    0x00028298 mov r0, r7                            |     r0 = r7;
    0x0002829a blx 0x9ff4                            |     fcn_00009ff4 ();
    0x0002829e ldr r2, [r5, 0x10]                    |     r2 = *((r5 + 0x10));
    0x000282a0 mov r0, r4                            |     r0 = r4;
    0x000282a2 ldr r3, [r5, 0x18]                    |     r3 = *((r5 + 0x18));
    0x000282a4 adds r2, 1                            |     r2++;
    0x000282a6 subs r3, 1                            |     r3--;
    0x000282a8 str r2, [r5, 0x10]                    |     *((r5 + 0x10)) = r2;
    0x000282aa str r3, [r5, 0x18]                    |     *((r5 + 0x18)) = r3;
    0x000282ac pop.w {r3, r4, r5, r6, r7, lr}        |     
    0x000282b0 b.w 0xa0f8                            |     return void (*0xa0f8)() ();
                                                     | }
    ; assembly                   | /* r2dec pseudo code output */
                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x294e0 */
                                 | #include <stdint.h>
                                 |  
    ; (fcn) fcn.000294e0 ()      | void fcn_000294e0 () {
    0x000294e0 b.w 0xa0f8        |     return void (*0xa0f8)() ();
                                 | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x297d0 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.000297d0 ()          | void fcn_000297d0 (int16_t arg1) {
                                     |     r0 = arg1;
    0x000297d0 push {r4, lr}         |     
    0x000297d2 mov r4, r0            |     r4 = r0;
    0x000297d4 ldr r0, [r0]          |     r0 = *(r0);
    0x000297d6 blx 0xac24            |     fcn_0000ac24 ();
    0x000297da mov r0, r4            |     r0 = r4;
    0x000297dc pop.w {r4, lr}        |     
    0x000297e0 b.w 0xa0f8            |     return void (*0xa0f8)() ();
                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2ac50 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0002ac50 ()              | void fcn_0002ac50 (uint32_t arg1) {
                                         |     int16_t var_0h;
                                         |     r0 = arg1;
    0x0002ac50 cmp r0, 0                 |     
                                         |     if (r0 != 0) {
    0x0002ac52 beq 0x2acb8               |         
    0x0002ac54 push {r4, r5, lr}         |         
    0x0002ac56 mov r4, r0                |         r4 = r0;
    0x0002ac58 ldr r5, [pc, 0x60]        |         
    0x0002ac5a sub sp, 0xc               |         
    0x0002ac5c movs r3, 0xf6             |         r3 = 0xf6;
    0x0002ac5e ldr r0, [r0]              |         r0 = *(r0);
    0x0002ac60 ldr r2, [pc, 0x5c]        |         
    0x0002ac62 add r5, pc                |         r5 = 0x55922;
    0x0002ac64 ldr r1, [pc, 0x5c]        |         
    0x0002ac66 adds r5, 0x3c             |         r5 += 0x3c;
    0x0002ac68 cmp r0, 0                 |         
    0x0002ac6a str r5, [sp]              |         *(sp) = r5;
    0x0002ac6c ite le                    |         
                                         |         if (r0 > 0) {
    0x0002ac6e movle r0, 0               |             r0 = 0;
                                         |         }
                                         |         if (r0 <= 0) {
    0x0002ac70 movgt r0, 1               |             r0 = 1;
                                         |         }
    0x0002ac72 add r2, pc                |         r2 = 0x55936;
    0x0002ac74 add r1, pc                |         r1 = 0x5593c;
    0x0002ac76 blx 0xae50                |         fcn_0000ae50 ();
    0x0002ac7a ldr r3, [r4]              |         r3 = *(r4);
    0x0002ac7c subs r3, 1                |         r3--;
    0x0002ac7e cmp r3, 0                 |         
    0x0002ac80 str r3, [r4]              |         *(r4) = r3;
                                         |         if (r3 > 0) {
    0x0002ac82 ble 0x2ac88               |             
    0x0002ac84 add sp, 0xc               |             
    0x0002ac86 pop {r4, r5, pc}          |             
                                         |         }
    0x0002ac88 ldr r0, [r4, 4]           |         r0 = *((r4 + 4));
    0x0002ac8a blx 0xa0fc                |         fcn_0000a0fc ();
    0x0002ac8e ldr r0, [r4, 8]           |         r0 = *((r4 + 8));
    0x0002ac90 blx 0xa0fc                |         fcn_0000a0fc ();
    0x0002ac94 ldr r0, [r4, 0xc]         |         r0 = *((r4 + 0xc));
    0x0002ac96 blx 0xa0fc                |         fcn_0000a0fc ();
    0x0002ac9a ldr r0, [r4, 0x20]        |         r0 = *((r4 + 0x20));
    0x0002ac9c blx 0xa0fc                |         fcn_0000a0fc ();
    0x0002aca0 ldr r0, [r4, 0x10]        |         r0 = *((r4 + 0x10));
    0x0002aca2 blx 0xa0fc                |         fcn_0000a0fc ();
    0x0002aca6 ldr r0, [r4, 0x14]        |         r0 = *((r4 + 0x14));
    0x0002aca8 blx 0xa0fc                |         fcn_0000a0fc ();
    0x0002acac mov r0, r4                |         r0 = r4;
    0x0002acae add sp, 0xc               |         
    0x0002acb0 pop.w {r4, r5, lr}        |         
    0x0002acb4 b.w 0xa0f8                |         void (*0xa0f8)() ();
                                         |     }
    0x0002acb8 bx lr                     |     return;
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2acc8 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0002acc8 ()              | void fcn_0002acc8 (uint32_t arg1) {
                                         |     int16_t var_0h;
                                         |     r0 = arg1;
                                         |     if (r0 != 0) {
    0x0002acc8 cbz r0, 0x2ad18           |         
    0x0002acca push {r4, r5, lr}         |         
    0x0002accc mov r4, r0                |         r4 = r0;
    0x0002acce ldr r5, [pc, 0x4c]        |         
    0x0002acd0 sub sp, 0xc               |         
    0x0002acd2 movs r3, 0x88             |         r3 = 0x88;
    0x0002acd4 ldr r0, [r0]              |         r0 = *(r0);
    0x0002acd6 ldr r2, [pc, 0x48]        |         
    0x0002acd8 add r5, pc                |         r5 = 0x559fa;
    0x0002acda ldr r1, [pc, 0x48]        |         
    0x0002acdc adds r5, 0x58             |         r5 += 0x58;
    0x0002acde cmp r0, 0                 |         
    0x0002ace0 str r5, [sp]              |         *(sp) = r5;
    0x0002ace2 ite le                    |         
                                         |         if (r0 > 0) {
    0x0002ace4 movle r0, 0               |             r0 = 0;
                                         |         }
                                         |         if (r0 <= 0) {
    0x0002ace6 movgt r0, 1               |             r0 = 1;
                                         |         }
    0x0002ace8 add r2, pc                |         r2 = 0x55a0e;
    0x0002acea add r1, pc                |         r1 = 0x55a14;
    0x0002acec blx 0xae50                |         fcn_0000ae50 ();
    0x0002acf0 ldr r3, [r4]              |         r3 = *(r4);
    0x0002acf2 subs r3, 1                |         r3--;
    0x0002acf4 cmp r3, 0                 |         
    0x0002acf6 str r3, [r4]              |         *(r4) = r3;
                                         |         if (r3 <= 0) {
    0x0002acf8 bgt 0x2ad14               |             
    0x0002acfa ldr r0, [r4, 0xc]         |             r0 = *((r4 + 0xc));
                                         |             if (r0 != 0) {
    0x0002acfc cbz r0, 0x2ad02           |                 
    0x0002acfe blx 0xa898                |                 fcn_0000a898 ();
                                         |             }
    0x0002ad02 ldr r0, [r4, 4]           |             r0 = *((r4 + 4));
    0x0002ad04 blx 0xa0fc                |             fcn_0000a0fc ();
    0x0002ad08 mov r0, r4                |             r0 = r4;
    0x0002ad0a add sp, 0xc               |             
    0x0002ad0c pop.w {r4, r5, lr}        |             
    0x0002ad10 b.w 0xa0f8                |             void (*0xa0f8)() ();
                                         |         }
    0x0002ad14 add sp, 0xc               |         
    0x0002ad16 pop {r4, r5, pc}          |         
                                         |     }
    0x0002ad18 bx lr                     |     return;
                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2adb8 */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) fcn.0002adb8 ()                      | void fcn_0002adb8 (uint32_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     r0 = arg1;
                                                 | label_1:
    0x0002adb8 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0002adba beq 0x2aeb2                       |         goto label_2;
                                                 |     }
    0x0002adbc push {r4, r5, r6, r7, lr}         |     
    0x0002adbe mov r4, r0                        |     r4 = r0;
    0x0002adc0 ldr r5, [pc, 0x100]               |     
    0x0002adc2 sub sp, 0xc                       |     
    0x0002adc4 movs r3, 0xb2                     |     r3 = 0xb2;
    0x0002adc6 ldr r0, [r0]                      |     r0 = *(r0);
    0x0002adc8 ldr r2, [pc, 0xfc]                |     
    0x0002adca add r5, pc                        |     r5 = 0x55c92;
    0x0002adcc ldr r1, [pc, 0xfc]                |     
    0x0002adce adds r5, 0xa0                     |     r5 += 0xa0;
    0x0002add0 cmp r0, 0                         |     
    0x0002add2 str r5, [sp]                      |     *(sp) = r5;
    0x0002add4 ite le                            |     
                                                 |     if (r0 > 0) {
    0x0002add6 movle r0, 0                       |         r0 = 0;
                                                 |     }
                                                 |     if (r0 <= 0) {
    0x0002add8 movgt r0, 1                       |         r0 = 1;
                                                 |     }
    0x0002adda add r2, pc                        |     r2 = 0x55ca6;
    0x0002addc add r1, pc                        |     r1 = 0x55cac;
    0x0002adde blx 0xae50                        |     fcn_0000ae50 ();
    0x0002ade2 ldr r3, [r4]                      |     r3 = *(r4);
    0x0002ade4 subs r3, 1                        |     r3--;
    0x0002ade6 cmp r3, 0                         |     
    0x0002ade8 str r3, [r4]                      |     *(r4) = r3;
                                                 |     if (r3 > 0) {
    0x0002adea bgt 0x2aeae                       |         goto label_3;
                                                 |     }
    0x0002adec ldrb.w r3, [r4, 0x24]             |     r3 = *((r4 + 0x24));
    0x0002adf0 lsls r3, r3, 0x1f                 |     r3 <<= 0x1f;
                                                 |     if (r3 < r3) {
    0x0002adf2 bmi 0x2ae92                       |         goto label_4;
                                                 |     }
                                                 | label_0:
    0x0002adf4 ldr r0, [r4, 0x20]                |     r0 = *((r4 + 0x20));
                                                 |     if (r0 != 0) {
    0x0002adf6 cbz r0, 0x2adfc                   |         
    0x0002adf8 blx 0xacec                        |         dbus_message_new_method_return ();
                                                 |     }
    0x0002adfc ldr r0, [r4, 0x1c]                |     r0 = *((r4 + 0x1c));
                                                 |     if (r0 != 0) {
    0x0002adfe cbz r0, 0x2ae18                   |         
    0x0002ae00 movs r3, 0                        |         r3 = 0;
    0x0002ae02 str r0, [sp]                      |         *(sp) = r0;
    0x0002ae04 mov r2, r3                        |         r2 = r3;
    0x0002ae06 mov r1, r3                        |         r1 = r3;
    0x0002ae08 str r3, [sp, 4]                   |         var_4h = r3;
    0x0002ae0a bl 0x2fcf0                        |         r0 = fcn_0002fcf0 (r0);
    0x0002ae0e cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x0002ae10 beq 0x2aeb4                       |             goto label_5;
                                                 |         }
    0x0002ae12 ldr r0, [r4, 0x1c]                |         r0 = *((r4 + 0x1c));
    0x0002ae14 bl 0x2f858                        |         fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
                                                 |     }
    0x0002ae18 ldr r0, [r4, 8]                   |     r0 = *((r4 + 8));
    0x0002ae1a add.w r7, r4, 0x14                |     r7 = r4 + 0x14;
    0x0002ae1e blx 0xa0fc                        |     fcn_0000a0fc ();
    0x0002ae22 ldr r0, [r4, 0xc]                 |     r0 = *((r4 + 0xc));
    0x0002ae24 blx 0xa0fc                        |     fcn_0000a0fc ();
    0x0002ae28 ldr r0, [r4, 0x10]                |     r0 = *((r4 + 0x10));
    0x0002ae2a blx 0xa0fc                        |     fcn_0000a0fc ();
    0x0002ae2e mov r0, r7                        |     r0 = r7;
    0x0002ae30 blx 0xaa18                        |     r0 = fcn_0000aa18 ();
    0x0002ae34 mov r5, r0                        |     r5 = r0;
                                                 |     if (r5 == 0) {
                                                 |         do {
    0x0002ae36 cbz r5, 0x2ae58                   |             goto label_6;
                                                 |         }
    0x0002ae38 ldr r6, [r5, 8]                   |         r6 = *((r5 + 8));
    0x0002ae3a ldr r0, [r6]                      |         r0 = *(r6);
                                                 |         if (r0 != 0) {
    0x0002ae3c cbz r0, 0x2ae42                   |             
    0x0002ae3e blx 0xa8e8                        |             fcn_0000a8e8 ();
                                                 |         }
    0x0002ae42 ldr r0, [r6, 4]                   |         r0 = *((r6 + 4));
                                                 |         if (r0 != 0) {
    0x0002ae44 cbz r0, 0x2ae4a                   |             
    0x0002ae46 blx 0xa004                        |             fcn_0000a004 ();
                                                 |         }
    0x0002ae4a mov r0, r6                        |         r0 = r6;
    0x0002ae4c blx 0xa0fc                        |         fcn_0000a0fc ();
    0x0002ae50 ldr r5, [r5, 4]                   |         r5 = *((r5 + 4));
    0x0002ae52 ldr r3, [r4, 0x14]                |         r3 = *((r4 + 0x14));
    0x0002ae54 cmp r5, r3                        |         
    0x0002ae56 bne 0x2ae36                       |         
                                                 |     } while (r5 != r3);
                                                 | label_6:
    0x0002ae58 mov r0, r7                        |     r0 = r7;
    0x0002ae5a blx 0xa588                        |     fcn_0000a588 ();
    0x0002ae5e ldr r5, [r4, 4]                   |     r5 = *((r4 + 4));
    0x0002ae60 ldr r6, [r4, 0x18]                |     r6 = *((r4 + 0x18));
    0x0002ae62 ldr r3, [pc, 0x6c]                |     
    0x0002ae64 ldr r0, [r5, 0x14]                |     r0 = *((r5 + 0x14));
    0x0002ae66 ldr r2, [pc, 0x6c]                |     
    0x0002ae68 ldr r1, [pc, 0x6c]                |     
    0x0002ae6a add r3, pc                        |     r3 = 0x55d40;
    0x0002ae6c subs r0, r0, r6                   |     r0 -= r6;
    0x0002ae6e adds r3, 0xa0                     |     r3 += 0xa0;
    0x0002ae70 str r0, [r5, 0x14]                |     *((r5 + 0x14)) = r0;
    0x0002ae72 add r2, pc                        |     r2 = 0x55d4c;
    0x0002ae74 ldr r0, [r4, 4]                   |     r0 = *((r4 + 4));
    0x0002ae76 add r1, pc                        |     r1 = 0x55d52;
    0x0002ae78 ldr r0, [r0, 0x14]                |     r0 = *((r0 + 0x14));
    0x0002ae7a str r3, [sp]                      |     *(sp) = r3;
    0x0002ae7c movs r3, 0xe2                     |     r3 = 0xe2;
    0x0002ae7e mvns r0, r0                       |     r0 = ~r0;
    0x0002ae80 lsrs r0, r0, 0x1f                 |     r0 >>= 0x1f;
    0x0002ae82 blx 0xae50                        |     fcn_0000ae50 ();
    0x0002ae86 mov r0, r4                        |     r0 = r4;
    0x0002ae88 add sp, 0xc                       |     
    0x0002ae8a pop.w {r4, r5, r6, r7, lr}        |     
    0x0002ae8e b.w 0xa0f8                        |     void (*0xa0f8)() ();
                                                 | label_4:
    0x0002ae92 ldr r3, [r4, 4]                   |     r3 = *((r4 + 4));
    0x0002ae94 ldr r0, [r3, 0x10]                |     r0 = *((r3 + 0x10));
    0x0002ae96 bl 0xc878                         |     bus_context_get_loop ();
    0x0002ae9a ldr r1, [r4, 0x20]                |     r1 = *((r4 + 0x20));
    0x0002ae9c bl 0x2825c                        |     fcn_0002825c (r0, r1);
    0x0002aea0 ldrb.w r3, [r4, 0x24]             |     r3 = *((r4 + 0x24));
    0x0002aea4 bfc r3, 0, 1                      |     value_0 = BIT_MASK (1, );
                                                 |     value_0 = ~value_0;
                                                 |     r3 &= value_0;
    0x0002aea8 strb.w r3, [r4, 0x24]             |     *((r4 + 0x24)) = r3;
    0x0002aeac b 0x2adf4                         |     goto label_0;
                                                 | label_3:
    0x0002aeae add sp, 0xc                       |     
    0x0002aeb0 pop {r4, r5, r6, r7, pc}          |     
                                                 | label_2:
    0x0002aeb2 bx lr                             |     return;
                                                 | label_5:
    0x0002aeb4 ldr r1, [pc, 0x24]                |     
    0x0002aeb6 movs r2, 0xc9                     |     r2 = 0xc9;
    0x0002aeb8 ldr r0, [pc, 0x24]                |     
    0x0002aeba add r1, pc                        |     r1 = 0x55d9a;
    0x0002aebc add r0, pc                        |     r0 = 0x55da0;
    0x0002aebe blx 0xaa48                        |     fcn_0000aa48 ();
    0x0002aec2 nop                               |     
    0x0002aec4 subs r6, r7, 2                    |     r6 = r7 - 2;
    0x0002aec6 movs r1, r0                       |     r1 = r0;
    0x0002aec8 asrs r6, r2, 0xa                  |     r6 = r2 >> 0xa;
    0x0002aeca movs r1, r0                       |     r1 = r0;
    0x0002aecc asrs r4, r0, 0x1d                 |     r4 = r0 >> 0x1d;
    0x0002aece movs r1, r0                       |     r1 = r0;
    0x0002aed0 subs r6, r3, 0                    |     r6 = r3 - 0;
    0x0002aed2 movs r1, r0                       |     r1 = r0;
    0x0002aed4 asrs r6, r7, 7                    |     r6 = r7 >> 7;
    0x0002aed6 movs r1, r0                       |     r1 = r0;
    0x0002aed8 asrs r6, r1, 0x1b                 |     r6 = r1 >> 0x1b;
    0x0002aeda movs r1, r0                       |     r1 = r0;
    0x0002aedc asrs r6, r6, 6                    |     r6 >>= 6;
    0x0002aede movs r1, r0                       |     r1 = r0;
    0x0002aee0 ldrsh r0, [r7, r6]                |     r0 = *((r7 + r6));
    0x0002aee2 movs r0, r0                       |     
    0x0002aee4 b 0x2adb8                         |     goto label_1;
                                                 | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2e134 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0002e134 ()              | void fcn_0002e134 (int16_t arg1) {
                                         |     int16_t var_0h;
                                         |     r0 = arg1;
    0x0002e134 ldr r3, [pc, 0x40]        |     
    0x0002e136 push {r4, lr}             |     
    0x0002e138 mov r4, r0                |     r4 = r0;
    0x0002e13a ldr r0, [r0]              |     r0 = *(r0);
    0x0002e13c sub sp, 8                 |     
    0x0002e13e add r3, pc                |     r3 = 0x5c2ba;
    0x0002e140 ldr.w ip, [pc, 0x38]      |     ip = *(0x0002e17c);
    0x0002e144 ldr r2, [pc, 0x38]        |     
    0x0002e146 subs r0, r0, r3           |     r0 -= r3;
    0x0002e148 ldr r1, [pc, 0x38]        |     
    0x0002e14a clz r0, r0                |     r0 &= r0;
    0x0002e14e add ip, pc                |     
    0x0002e150 lsrs r0, r0, 5            |     r0 >>= 5;
    0x0002e152 movs r3, 0x32             |     r3 = 0x32;
    0x0002e154 str.w ip, [sp]            |     __asm ("str.w ip, [sp]");
    0x0002e158 add r2, pc                |     r2 = 0x5c2dc;
    0x0002e15a add r1, pc                |     r1 = 0x5c2e2;
    0x0002e15c blx 0xae50                |     fcn_0000ae50 ();
    0x0002e160 ldr r0, [r4, 4]           |     r0 = *((r4 + 4));
    0x0002e162 adds r3, r0, 1            |     r3 = r0 + 1;
                                         |     if (r3 != r0) {
    0x0002e164 beq 0x2e16a               |         
    0x0002e166 blx 0xabd0                |         fcn_0000abd0 ();
                                         |     }
    0x0002e16a mov r0, r4                |     r0 = r4;
    0x0002e16c add sp, 8                 |     
    0x0002e16e pop.w {r4, lr}            |     
    0x0002e172 b.w 0xa0f8                |     return void (*0xa0f8)() ();
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2e64c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0002e64c ()              | void fcn_0002e64c (int16_t arg1) {
                                         |     int16_t var_0h;
                                         |     r0 = arg1;
    0x0002e64c ldr r3, [pc, 0x3c]        |     
    0x0002e64e push {r4, lr}             |     
    0x0002e650 mov r4, r0                |     r4 = r0;
    0x0002e652 ldr r0, [r0]              |     r0 = *(r0);
    0x0002e654 sub sp, 8                 |     
    0x0002e656 add r3, pc                |     r3 = 0x5cce6;
    0x0002e658 ldr.w ip, [pc, 0x34]      |     ip = *(0x0002e690);
    0x0002e65c ldr r2, [pc, 0x34]        |     
    0x0002e65e subs r0, r0, r3           |     r0 -= r3;
    0x0002e660 ldr r1, [pc, 0x34]        |     
    0x0002e662 clz r0, r0                |     r0 &= r0;
    0x0002e666 add ip, pc                |     
    0x0002e668 movs r3, 0x38             |     r3 = 0x38;
    0x0002e66a add r2, pc                |     r2 = 0x5cd02;
    0x0002e66c str.w ip, [sp]            |     __asm ("str.w ip, [sp]");
    0x0002e670 add r1, pc                |     r1 = 0x5cd0c;
    0x0002e672 lsrs r0, r0, 5            |     r0 >>= 5;
    0x0002e674 blx 0xae50                |     fcn_0000ae50 ();
    0x0002e678 ldr r0, [r4, 4]           |     r0 = *((r4 + 4));
    0x0002e67a blx 0xa0fc                |     fcn_0000a0fc ();
    0x0002e67e mov r0, r4                |     r0 = r4;
    0x0002e680 add sp, 8                 |     
    0x0002e682 pop.w {r4, lr}            |     
    0x0002e686 b.w 0xa0f8                |     return void (*0xa0f8)() ();
                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2f858 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0002f858 ()                                      | void fcn_0002f858 (int16_t arg_0h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_42h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ah, int16_t arg_4ch, int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int32_t var_ch_2;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
    0x0002f858 ldr r1, [pc, 0x118]                               |     
    0x0002f85a mov.w r3, 0x150                                   |     r3 = 0x150;
    0x0002f85e ldr r2, [pc, 0x118]                               |     r2 = *(0x2f97a);
    0x0002f860 push {r4, r5, r6, lr}                             |     
    0x0002f862 mov r4, r0                                        |     r4 = r0;
    0x0002f864 ldr r5, [pc, 0x114]                               |     
    0x0002f866 add r1, pc                                        |     r1 = 0x5f1de;
    0x0002f868 sub sp, 0x10                                      |     
    0x0002f86a subs r0, 0                                        |     
    0x0002f86c ldr r6, [pc, 0x110]                               |     
    0x0002f86e it ne                                             |     
                                                                 |     if (r0 == 0) {
    0x0002f870 movne r0, 1                                       |         r0 = 1;
                                                                 |     }
    0x0002f872 ldr r2, [r1, r2]                                  |     
    0x0002f874 add r5, pc                                        |     r5 = 0x5f1f4;
    0x0002f876 ldr r1, [pc, 0x10c]                               |     
    0x0002f878 adds r5, 0x70                                     |     r5 += 0x70;
    0x0002f87a add r6, pc                                        |     r6 = 0x5f1fe;
    0x0002f87c ldr r2, [r2]                                      |     r2 = *(0x5f1de);
    0x0002f87e str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x0002f880 mov.w r2, 0                                       |     r2 = 0;
    0x0002f884 mov r2, r6                                        |     r2 = r6;
    0x0002f886 add r1, pc                                        |     r1 = 0x5f210;
    0x0002f888 str r5, [sp]                                      |     *(sp) = r5;
    0x0002f88a blx 0xae50                                        |     fcn_0000ae50 ();
    0x0002f88e ldr r0, [r4]                                      |     r0 = *(r4);
    0x0002f890 movw r3, 0x151                                    |     r3 = 0x151;
    0x0002f894 ldr r1, [pc, 0xf0]                                |     
    0x0002f896 mov r2, r6                                        |     r2 = r6;
    0x0002f898 str r5, [sp]                                      |     *(sp) = r5;
    0x0002f89a cmp r0, 0                                         |     
    0x0002f89c add r1, pc                                        |     r1 = 0x5f228;
    0x0002f89e ite le                                            |     
                                                                 |     if (r0 > 0) {
    0x0002f8a0 movle r0, 0                                       |         r0 = 0;
                                                                 |     }
                                                                 |     if (r0 <= 0) {
    0x0002f8a2 movgt r0, 1                                       |         r0 = 1;
                                                                 |     }
    0x0002f8a4 blx 0xae50                                        |     fcn_0000ae50 ();
    0x0002f8a8 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0002f8aa subs r3, 1                                        |     r3--;
    0x0002f8ac str r3, [r4]                                      |     *(r4) = r3;
                                                                 |     if (r3 != 0) {
    0x0002f8ae cbz r3, 0x2f8c8                                   |         
    0x0002f8b0 ldr r2, [pc, 0xd8]                                |         
    0x0002f8b2 ldr r3, [pc, 0xc4]                                |         r3 = *(0x2f97a);
    0x0002f8b4 add r2, pc                                        |         r2 = 0x5f244;
    0x0002f8b6 ldr r3, [r2, r3]                                  |         r3 = *(0x5f244);
    0x0002f8b8 ldr r2, [r3]                                      |         r2 = *(0x5f244);
    0x0002f8ba ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0002f8bc eors r2, r3                                       |         r2 ^= r3;
    0x0002f8be mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0002f8c2 bne 0x2f96e                                       |             goto label_12;
                                                                 |         }
    0x0002f8c4 add sp, 0x10                                      |         
    0x0002f8c6 pop {r4, r5, r6, pc}                              |         
                                                                 |     }
    0x0002f8c8 mov r0, r4                                        |     r0 = r4;
    0x0002f8ca bl 0x2f044                                        |     fcn_0002f044 (r0);
    0x0002f8ce mov r0, r4                                        |     r0 = r4;
    0x0002f8d0 bl 0x2f0a8                                        |     fcn_0002f0a8 (r0);
    0x0002f8d4 ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x0002f8d6 cmp r0, 0                                         |     
                                                                 |     if (r0 > 0) {
    0x0002f8d8 bgt 0x2f908                                       |         goto label_13;
                                                                 |     }
    0x0002f8da ldr r0, [r4, 0x18]                                |     r0 = *((r4 + 0x18));
    0x0002f8dc cbz r0, 0x2f8e2                                   |     
                                                                 |     while (r0 != 0) {
    0x0002f8de blx 0xa784                                        |         fcn_0000a784 ();
                                                                 | label_0:
    0x0002f8e2 ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x0002f8e4 blx 0xa0fc                                        |         fcn_0000a0fc ();
    0x0002f8e8 ldr r2, [pc, 0xa4]                                |         
    0x0002f8ea ldr r3, [pc, 0x8c]                                |         r3 = *(0x2f97a);
    0x0002f8ec add r2, pc                                        |         r2 = 0x5f280;
    0x0002f8ee ldr r3, [r2, r3]                                  |         r3 = *(0x5f280);
    0x0002f8f0 ldr r2, [r3]                                      |         r2 = *(0x5f280);
    0x0002f8f2 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0002f8f4 eors r2, r3                                       |         r2 ^= r3;
    0x0002f8f6 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0002f8fa bne 0x2f96e                                       |             goto label_12;
                                                                 |         }
    0x0002f8fc mov r0, r4                                        |         r0 = r4;
    0x0002f8fe add sp, 0x10                                      |         
    0x0002f900 pop.w {r4, r5, r6, lr}                            |         
    0x0002f904 b.w 0xa0f8                                        |         void (*0xa0f8)() ();
                                                                 | label_13:
    0x0002f908 add r5, sp, 8                                     |         r5 += var_8h;
    0x0002f90a movs r2, 1                                        |         r2 = 1;
    0x0002f90c mov r1, r5                                        |         r1 = r5;
    0x0002f90e blx 0xaa30                                        |         r0 = fcn_0000aa30 ();
    0x0002f912 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0002f914 beq 0x2f926                                       |             goto label_14;
                                                                 |         }
                                                                 |         if (r0 < 0) {
    0x0002f916 blt 0x2f946                                       |             goto label_15;
                                                                 |         }
                                                                 | label_1:
    0x0002f918 ldr r0, [r4, 0x18]                                |         r0 = *((r4 + 0x18));
    0x0002f91a mov.w r3, -1                                      |         r3 = -1;
    0x0002f91e str r3, [r4, 0x10]                                |         *((r4 + 0x10)) = r3;
    0x0002f920 cmp r0, 0                                         |         
    0x0002f922 bne 0x2f8de                                       |         
                                                                 |     }
    0x0002f924 b 0x2f8e2                                         |     goto label_0;
                                                                 | label_14:
    0x0002f926 ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x0002f928 movs r1, 9                                        |     r1 = 9;
    0x0002f92a blx 0xb0cc                                        |     fcn_0000b0cc ();
                                                                 | label_2:
    0x0002f92e ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x0002f930 movs r2, 0                                        |     r2 = 0;
    0x0002f932 mov r1, r5                                        |     r1 = r5;
    0x0002f934 blx 0xaa30                                        |     r0 = fcn_0000aa30 ();
    0x0002f938 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0002f93a bge 0x2f918                                       |         goto label_1;
                                                                 |     }
    0x0002f93c blx 0xb214                                        |     r0 = dbus_connection_pop_message ();
    0x0002f940 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0002f942 cmp r3, 4                                         |     
                                                                 |     if (r3 == 4) {
    0x0002f944 beq 0x2f92e                                       |         goto label_2;
                                                                 |     }
                                                                 | label_15:
    0x0002f946 blx 0xb214                                        |     r0 = dbus_connection_pop_message ();
    0x0002f94a ldr r5, [r0]                                      |     r5 = *(r0);
    0x0002f94c cmp r5, 0xa                                       |     
                                                                 |     if (r5 != 0xa) {
    0x0002f94e beq 0x2f964                                       |         
    0x0002f950 mov r0, r5                                        |         r0 = r5;
    0x0002f952 blx 0xa4c8                                        |         r0 = fcn_0000a4c8 ();
    0x0002f956 mov r2, r0                                        |         r2 = r0;
    0x0002f958 ldr r0, [pc, 0x38]                                |         
    0x0002f95a mov r1, r5                                        |         r1 = r5;
    0x0002f95c add r0, pc                                        |         r0 = 0x5f2f4;
    0x0002f95e blx 0xaa08                                        |         fcn_0000aa08 ();
    0x0002f962 b 0x2f918                                         |         goto label_1;
                                                                 |     }
    0x0002f964 ldr r0, [pc, 0x30]                                |     
    0x0002f966 add r0, pc                                        |     r0 = 0x5f302;
    0x0002f968 blx 0xaa08                                        |     fcn_0000aa08 ();
    0x0002f96c b 0x2f918                                         |     goto label_1;
                                                                 | label_12:
    0x0002f96e blx 0xacf8                                        |     chdir ();
    0x0002f972 nop                                               |     
    0x0002f974 lsls r2, r1, 4                                    |     r2 = r1 << 4;
    0x0002f976 movs r1, r0                                       |     r1 = r0;
    0x0002f978 lsls r4, r6, 0x19                                 |     r4 = r6 << 0x19;
    0x0002f97a movs r0, r0                                       |     
    0x0002f97c b 0x30068                                         |     goto label_16;
                                                                 |     do {
    0x0002fe3e mov.w r8, -1                                      |         r8 = -1;
    0x0002fe42 mov sb, r8                                        |         sb = r8;
                                                                 | label_8:
    0x0002fe44 movs r0, 1                                        |         r0 = 1;
                                                                 |         if (r5 != 0) {
    0x0002fe46 cbz r5, 0x2fe54                                   |             
    0x0002fe48 mov r0, r5                                        |             r0 = r5;
    0x0002fe4a blx 0xb020                                        |             fcn_0000b020 ();
    0x0002fe4e subs r0, 0                                        |             
    0x0002fe50 it ne                                             |             
                                                                 |             if (r0 != 0) {
    0x0002fe52 movne r0, 1                                       |                 r0 = 1;
                                                                 |                 goto label_17;
                                                                 |             }
                                                                 |         }
                                                                 | label_17:
    0x0002fe54 ldr.w r3, [pc, 0x598]                             |         
    0x0002fe58 ldr.w r2, [pc, 0x598]                             |         
    0x0002fe5c ldr.w r1, [pc, 0x598]                             |         
    0x0002fe60 add r3, pc                                        |         r3 = 0x60254;
    0x0002fe62 adds r3, 0xa8                                     |         r3 += 0xa8;
    0x0002fe64 add r2, pc                                        |         r2 = 0x6025c;
    0x0002fe66 str r3, [sp]                                      |         *(sp) = r3;
    0x0002fe68 add r1, pc                                        |         r1 = 0x60264;
    0x0002fe6a movw r3, 0x5e7                                    |         r3 = 0x5e7;
    0x0002fe6e blx 0xae50                                        |         fcn_0000ae50 ();
    0x0002fe72 ldr r0, [sp, 0x24]                                |         r0 = *(arg_24h);
    0x0002fe74 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x0002fe76 blt 0x2fe84                                       |             
    0x0002fe78 movs r1, 0                                        |             r1 = 0;
    0x0002fe7a blx 0xa0e0                                        |             dbus_poll ();
    0x0002fe7e mov.w r3, -1                                      |             r3 = -1;
    0x0002fe82 str r3, [sp, 0x24]                                |             *(arg_24h) = r3;
                                                                 |         }
    0x0002fe84 ldr r0, [sp, 0x28]                                |         r0 = *(arg_28h);
    0x0002fe86 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x0002fe88 blt 0x2fe96                                       |             
    0x0002fe8a movs r1, 0                                        |             r1 = 0;
    0x0002fe8c blx 0xa0e0                                        |             dbus_poll ();
    0x0002fe90 mov.w r3, -1                                      |             r3 = -1;
    0x0002fe94 str r3, [sp, 0x28]                                |             *(arg_28h) = r3;
                                                                 |         }
    0x0002fe96 ldr r0, [sp, 0x2c]                                |         r0 = *(arg_2ch);
    0x0002fe98 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x0002fe9a blt 0x2fea8                                       |             
    0x0002fe9c movs r1, 0                                        |             r1 = 0;
    0x0002fe9e blx 0xa0e0                                        |             dbus_poll ();
    0x0002fea2 mov.w r3, -1                                      |             r3 = -1;
    0x0002fea6 str r3, [sp, 0x2c]                                |             *(arg_2ch) = r3;
                                                                 |         }
    0x0002fea8 ldr r0, [sp, 0x30]                                |         r0 = *(arg_30h);
    0x0002feaa cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x0002feac blt 0x2feba                                       |             
    0x0002feae movs r1, 0                                        |             r1 = 0;
    0x0002feb0 blx 0xa0e0                                        |             dbus_poll ();
    0x0002feb4 mov.w r3, -1                                      |             r3 = -1;
    0x0002feb8 str r3, [sp, 0x30]                                |             *(arg_30h) = r3;
                                                                 |         }
    0x0002feba cmp.w sb, 0                                       |         
                                                                 |         if (sb >= 0) {
    0x0002febe blt 0x2fec8                                       |             
    0x0002fec0 movs r1, 0                                        |             r1 = 0;
    0x0002fec2 mov r0, sb                                        |             r0 = sb;
    0x0002fec4 blx 0xa0e0                                        |             dbus_poll ();
                                                                 |         }
    0x0002fec8 cmp.w r8, 0                                       |         
                                                                 |         if (r8 >= 0) {
    0x0002fecc blt 0x2fed6                                       |             
    0x0002fece movs r1, 0                                        |             r1 = 0;
    0x0002fed0 mov r0, r8                                        |             r0 = r8;
    0x0002fed2 blx 0xa0e0                                        |             dbus_poll ();
                                                                 |         }
    0x0002fed6 mov r0, r4                                        |         r0 = r4;
    0x0002fed8 bl 0x2f858                                        |         fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
                                                                 | label_3:
    0x0002fedc movs r0, 0                                        |         r0 = 0;
                                                                 | label_4:
    0x0002fede ldr.w r2, [pc, 0x51c]                             |         r2 = *(0x000303fc);
    0x0002fee2 ldr.w r3, [pc, 0x4e4]                             |         r3 = *(0x303ca);
    0x0002fee6 add r2, pc                                        |         r2 += pc;
    0x0002fee8 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x0002feea ldr r2, [r3]                                      |         r2 = *(0x303ca);
    0x0002feec ldr r3, [sp, 0x4c]                                |         r3 = *(arg_4ch);
    0x0002feee eors r2, r3                                       |         r2 ^= r3;
    0x0002fef0 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0002fef4 bne.w 0x303ae                                     |             goto label_18;
                                                                 |         }
    0x0002fef8 add sp, 0x54                                      |         
    0x0002fefa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_11:
    0x0002ff32 ldr.w r0, [fp]                                    |         r0 = *(fp);
    0x0002ff36 blx 0xa4c8                                        |         fcn_0000a4c8 ();
    0x0002ff3a ldr.w r2, [pc, 0x4d0]                             |         r2 = *(0x0003040c);
    0x0002ff3e mov r3, r0                                        |         r3 = r0;
    0x0002ff40 ldr.w r1, [pc, 0x4cc]                             |         
    0x0002ff44 mov r0, r5                                        |         r0 = r5;
    0x0002ff46 add r2, pc                                        |         r2 += pc;
    0x0002ff48 add r1, pc                                        |         r1 = 0x6035c;
    0x0002ff4a blx 0xa310                                        |         fcn_0000a310 ();
    0x0002ff4e b 0x2fe3e                                         |         
                                                                 |     } while (1);
                                                                 | label_7:
    0x00030038 ldr r3, [pc, 0x3f8]                               |     r3 = *(0x30434);
    0x0003003a ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x0003003c ldr.w fp, [r2, r3]                                |     fp = *((r2 + r3));
    0x00030040 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00030044 blx 0xa7d8                                        |     fcn_0000a7d8 ();
    0x00030048 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x0003004a ldr r3, [pc, 0x3ec]                               |     r3 = *(0x3043a);
    0x0003004c ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0003004e ldr r0, [r3]                                      |     r0 = *(0x3043a);
    0x00030050 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00030052 blx 0xa7d8                                        |     fcn_0000a7d8 ();
    0x00030056 blx 0xaf64                                        |     r0 = fcn_0000af64 ();
    0x0003005a subs.w sl, r0, 0                                  |     sl = r0 - 0;
                                                                 |     if (sl < r0) {
    0x0003005e blt.w 0x30318                                     |         goto label_19;
                                                                 |     }
                                                                 |     if (sl == r0) {
    0x00030062 bne.w 0x301a4                                     |         
    0x00030066 mov r1, sl                                        |         r1 = sl;
                                                                 | label_16:
    0x00030068 movs r0, 0xd                                      |         r0 = 0xd;
    0x0003006a blx 0xa1ec                                        |         fcn_0000a1ec ();
    0x0003006e ldr r0, [sp, 0x24]                                |         r0 = *(arg_24h);
    0x00030070 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x00030072 blt 0x30080                                       |             
    0x00030074 mov r1, sl                                        |             r1 = sl;
    0x00030076 blx 0xa0e0                                        |             dbus_poll ();
    0x0003007a mov.w r3, -1                                      |             r3 = -1;
    0x0003007e str r3, [sp, 0x24]                                |             *(arg_24h) = r3;
                                                                 |         }
    0x00030080 ldr r0, [sp, 0x2c]                                |         r0 = *(arg_2ch);
    0x00030082 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x00030084 blt 0x30092                                       |             
    0x00030086 movs r1, 0                                        |             r1 = 0;
    0x00030088 blx 0xa0e0                                        |             dbus_poll ();
    0x0003008c mov.w r3, -1                                      |             r3 = -1;
    0x00030090 str r3, [sp, 0x2c]                                |             *(arg_2ch) = r3;
                                                                 |         }
    0x00030092 ldr.w r0, [fp]                                    |         r0 = *(fp);
    0x00030096 blx 0xa7d8                                        |         fcn_0000a7d8 ();
    0x0003009a ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x0003009c ldr r0, [r3]                                      |         r0 = *(r3);
    0x0003009e blx 0xa7d8                                        |         fcn_0000a7d8 ();
    0x000300a2 blx 0xaf64                                        |         r0 = fcn_0000af64 ();
    0x000300a6 subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x000300a8 blt.w 0x303b2                                     |             goto label_20;
                                                                 |         }
                                                                 |         if (r5 != r0) {
    0x000300ac bne.w 0x3022c                                     |             goto label_21;
                                                                 |         }
    0x000300b0 bl 0x29fd8                                        |         fcn_00029fd8 (r0);
    0x000300b4 movs r1, 1                                        |         r1 = 1;
    0x000300b6 movs r0, 0xd                                      |         r0 = 0xd;
    0x000300b8 blx 0xa1ec                                        |         fcn_0000a1ec ();
    0x000300bc ldr r0, [sp, 0x30]                                |         r0 = *(arg_30h);
    0x000300be cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x000300c0 blt 0x300ce                                       |             
    0x000300c2 mov r1, r5                                        |             r1 = r5;
    0x000300c4 blx 0xa0e0                                        |             dbus_poll ();
    0x000300c8 mov.w r3, -1                                      |             r3 = -1;
    0x000300cc str r3, [sp, 0x30]                                |             *(arg_30h) = r3;
                                                                 |         }
    0x000300ce cmp.w sb, 0                                       |         
                                                                 |         if (sb >= 0) {
    0x000300d2 bge.w 0x30342                                     |             goto label_22;
                                                                 |         }
    0x000300d6 cmp.w r8, 0                                       |         
                                                                 |         if (r8 >= 0) {
    0x000300da bge.w 0x3039c                                     |             goto label_23;
                                                                 |         }
                                                                 | label_9:
    0x000300de ldr r4, [sp, 0x14]                                |         r4 = var_14h;
    0x000300e0 mov r1, r7                                        |         r1 = r7;
    0x000300e2 ldr r0, [sp, 0x28]                                |         r0 = *(arg_28h);
    0x000300e4 ldrd r2, r3, [sp, 0xc]                            |         __asm ("ldrd r2, r3, [var_ch]");
    0x000300e8 str r4, [sp]                                      |         *(sp) = r4;
    0x000300ea bl 0x2f2cc                                        |         fcn_0002f2cc (r0, r1, r2, r3);
    0x000300ee mov r0, r4                                        |         r0 = r4;
    0x000300f0 bl 0x2f858                                        |         fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
    0x000300f4 ldr r1, [pc, 0x344]                               |         
    0x000300f6 movs r2, 0                                        |         r2 = 0;
    0x000300f8 mov r0, r5                                        |         r0 = r5;
    0x000300fa add r1, pc                                        |         r1 = 0x6053a;
    0x000300fc blx 0xa310                                        |         fcn_0000a310 ();
    0x00030100 b 0x2fedc                                         |         goto label_3;
                                                                 |     }
    0x000301a4 ldr r0, [sp, 0x28]                                |     r0 = *(arg_28h);
    0x000301a6 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x000301a8 blt 0x301b6                                       |         
    0x000301aa movs r1, 0                                        |         r1 = 0;
    0x000301ac blx 0xa0e0                                        |         dbus_poll ();
    0x000301b0 mov.w r3, -1                                      |         r3 = -1;
    0x000301b4 str r3, [sp, 0x28]                                |         *(arg_28h) = r3;
                                                                 |     }
    0x000301b6 ldr r0, [sp, 0x30]                                |     r0 = *(arg_30h);
    0x000301b8 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x000301ba blt 0x301c8                                       |         
    0x000301bc movs r1, 0                                        |         r1 = 0;
    0x000301be blx 0xa0e0                                        |         dbus_poll ();
    0x000301c2 mov.w r3, -1                                      |         r3 = -1;
    0x000301c6 str r3, [sp, 0x30]                                |         *(arg_30h) = r3;
                                                                 |     }
    0x000301c8 cmp.w sb, 0                                       |     
                                                                 |     if (sb >= 0) {
    0x000301cc blt 0x301d6                                       |         
    0x000301ce mov r0, sb                                        |         r0 = sb;
    0x000301d0 movs r1, 0                                        |         r1 = 0;
    0x000301d2 blx 0xa0e0                                        |         dbus_poll ();
                                                                 |     }
    0x000301d6 cmp.w r8, 0                                       |     
                                                                 |     if (r8 >= 0) {
    0x000301da blt 0x301e4                                       |         
    0x000301dc mov r0, r8                                        |         r0 = r8;
    0x000301de movs r1, 0                                        |         r1 = 0;
    0x000301e0 blx 0xa0e0                                        |         dbus_poll ();
                                                                 |     }
    0x000301e4 ldr r2, [sp, 0x2c]                                |     r2 = *(arg_2ch);
    0x000301e6 mov.w r3, -1                                      |     r3 = -1;
    0x000301ea ldr r1, [sp, 0x24]                                |     r1 = *(arg_24h);
    0x000301ec str.w sl, [r4, 0x10]                              |     __asm ("str.w sl, [r4, 0x10]");
    0x000301f0 str r3, [sp, 0x2c]                                |     *(arg_2ch) = r3;
    0x000301f2 strd r2, r1, [r4, 8]                              |     __asm ("strd r2, r1, [r4, 8]");
    0x000301f6 str r3, [sp, 0x24]                                |     *(arg_24h) = r3;
    0x000301f8 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000301fa beq.w 0x303a6                                     |         goto label_24;
                                                                 |     }
    0x000301fe str r4, [r6]                                      |     *(r6) = r4;
                                                                 | label_10:
    0x00030200 movs r0, 1                                        |     r0 = 1;
                                                                 |     if (r5 != 0) {
    0x00030202 cbz r5, 0x30210                                   |         
    0x00030204 mov r0, r5                                        |         r0 = r5;
    0x00030206 blx 0xb020                                        |         r0 = fcn_0000b020 ();
    0x0003020a clz r0, r0                                        |         r0 &= r0;
    0x0003020e lsrs r0, r0, 5                                    |         r0 >>= 5;
                                                                 |     }
    0x00030210 ldr r4, [pc, 0x244]                               |     
    0x00030212 mov.w r3, 0x5e0                                   |     r3 = 0x5e0;
    0x00030216 ldr r2, [pc, 0x244]                               |     
    0x00030218 ldr r1, [pc, 0x244]                               |     
    0x0003021a add r4, pc                                        |     r4 = 0x60676;
    0x0003021c adds r4, 0xa8                                     |     r4 += 0xa8;
    0x0003021e add r2, pc                                        |     r2 = 0x60680;
    0x00030220 add r1, pc                                        |     r1 = 0x60684;
    0x00030222 str r4, [sp]                                      |     *(sp) = r4;
    0x00030224 blx 0xae50                                        |     fcn_0000ae50 ();
    0x00030228 movs r0, 1                                        |     r0 = 1;
    0x0003022a b 0x2fede                                         |     goto label_4;
                                                                 | label_21:
    0x0003022c ldr r0, [sp, 0x28]                                |     r0 = *(arg_28h);
    0x0003022e cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00030230 blt 0x3023e                                       |         
    0x00030232 movs r1, 0                                        |         r1 = 0;
    0x00030234 blx 0xa0e0                                        |         dbus_poll ();
    0x00030238 mov.w r3, -1                                      |         r3 = -1;
    0x0003023c str r3, [sp, 0x28]                                |         *(arg_28h) = r3;
                                                                 |     }
    0x0003023e cmp.w sb, 0                                       |     
                                                                 |     if (sb >= 0) {
    0x00030242 blt 0x3024c                                       |         
    0x00030244 movs r1, 0                                        |         r1 = 0;
    0x00030246 mov r0, sb                                        |         r0 = sb;
    0x00030248 blx 0xa0e0                                        |         dbus_poll ();
                                                                 |     }
    0x0003024c cmp.w r8, 0                                       |     
                                                                 |     if (r8 >= 0) {
    0x00030250 blt 0x3025a                                       |         
    0x00030252 movs r1, 0                                        |         r1 = 0;
    0x00030254 mov r0, r8                                        |         r0 = r8;
    0x00030256 blx 0xa0e0                                        |         dbus_poll ();
                                                                 |     }
    0x0003025a add r0, sp, 0x34                                  |     r0 += arg_34h;
    0x0003025c ldr r7, [sp, 0x30]                                |     r7 = *(arg_30h);
    0x0003025e blx 0xb160                                        |     r0 = getgrnam_r ();
    0x00030262 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00030264 blt 0x30334                                       |         goto label_25;
                                                                 |     }
    0x00030266 ldr r3, [pc, 0x1fc]                               |     
    0x00030268 movs r0, 0x11                                     |     r0 = 0x11;
    0x0003026a ldr r1, [pc, 0x1fc]                               |     
    0x0003026c add.w sb, sp, 0x20                                |     sb += arg_0h;
    0x00030270 ldr r2, [sp, 0x38]                                |     r2 = *(arg_38h);
    0x00030272 add.w r8, sp, 0x3c                                |     r8 += arg_3ch;
    0x00030276 add r3, pc                                        |     r3 = 0x606e0;
    0x00030278 movs r6, 1                                        |     r6 = 1;
    0x0003027a add r1, pc                                        |     r1 = 0x606e8;
    0x0003027c str r2, [r3]                                      |     *(r3) = r2;
    0x0003027e bl 0x294e4                                        |     fcn_000294e4 (r0, r1);
    0x00030282 movs r3, 3                                        |     r3 = 3;
    0x00030284 mov r1, sb                                        |     r1 = sb;
    0x00030286 mov r0, r7                                        |     r0 = r7;
    0x00030288 strd r5, r3, [sp, 0x1c]                           |     __asm ("strd r5, r3, [var_1ch]");
    0x0003028c bl 0x2f17c                                        |     fcn_0002f17c (r0, r1);
    0x00030290 add r1, sp, 0x1c                                  |     r1 += var_1ch;
    0x00030292 mov r0, r7                                        |     r0 = r7;
    0x00030294 bl 0x2f17c                                        |     fcn_0002f17c (r0, r1);
    0x00030298 movs r2, 0                                        |     r2 = 0;
    0x0003029a mov r1, r7                                        |     r1 = r7;
    0x0003029c mov r0, r5                                        |     r0 = r5;
    0x0003029e bl 0x2f1d4                                        |     fcn_0002f1d4 (r0, r1, r2, r3);
                                                                 |     do {
                                                                 | label_5:
    0x000302a2 ldr r3, [sp, 0x34]                                |         r3 = *(arg_34h);
    0x000302a4 mov.w r2, -1                                      |         r2 = -1;
    0x000302a8 movs r1, 2                                        |         r1 = 2;
    0x000302aa mov r0, r8                                        |         r0 = r8;
    0x000302ac strd r7, r6, [sp, 0x3c]                           |         __asm ("strd r7, r6, [sp, 0x3c]");
    0x000302b0 str r6, [sp, 0x48]                                |         *(arg_48h) = r6;
    0x000302b2 str r3, [sp, 0x44]                                |         *(arg_44h) = r3;
    0x000302b4 blx 0xa0ec                                        |         r0 = dbus_free ();
    0x000302b8 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000302ba blt 0x302e0                                       |             goto label_26;
                                                                 |         }
                                                                 | label_6:
    0x000302bc ldrsh.w r4, [sp, 0x42]                            |         r4 = *(arg_42h);
                                                                 |         if (r4 != 0) {
    0x000302c0 cbnz r4, 0x302d4                                  |             goto label_27;
                                                                 |         }
    0x000302c2 ldrh.w r3, [sp, 0x4a]                             |         r3 = *(arg_4ah);
    0x000302c6 lsls r3, r3, 0x1f                                 |         r3 <<= 0x1f;
    0x000302c8 bpl 0x302a2                                       |         
                                                                 |     } while (r3 >= r3);
    0x000302ca ldr r0, [sp, 0x34]                                |     r0 = *(arg_34h);
    0x000302cc mov r1, sb                                        |     r1 = sb;
    0x000302ce movs r2, 1                                        |     r2 = 1;
    0x000302d0 blx 0xa664                                        |     fcn_0000a664 ();
                                                                 | label_27:
    0x000302d4 mov r2, r4                                        |     r2 = r4;
    0x000302d6 mov r1, r7                                        |     r1 = r7;
    0x000302d8 mov r0, r5                                        |     r0 = r5;
    0x000302da bl 0x2f1d4                                        |     fcn_0002f1d4 (r0, r1, r2, r3);
    0x000302de b 0x302a2                                         |     goto label_5;
                                                                 | label_26:
    0x000302e0 blx 0xb214                                        |     r0 = dbus_connection_pop_message ();
    0x000302e4 ldr r0, [r0]                                      |     r0 = *(r0);
    0x000302e6 cmp r0, 4                                         |     
                                                                 |     if (r0 == 4) {
    0x000302e8 beq 0x302bc                                       |         goto label_6;
                                                                 |     }
    0x000302ea blx 0xa034                                        |     r0 = fcn_0000a034 ();
    0x000302ee mov r1, r0                                        |     r1 = r0;
    0x000302f0 ldr r0, [pc, 0x178]                               |     
    0x000302f2 add r0, pc                                        |     r0 = 0x60762;
    0x000302f4 blx 0xaa08                                        |     fcn_0000aa08 ();
    0x000302f8 movs r0, 1                                        |     r0 = 1;
    0x000302fa blx 0xb1fc                                        |     dbus_string_init ();
    0x000302fe mov r2, r8                                        |     r2 = r8;
    0x00030300 movs r1, 6                                        |     r1 = 6;
    0x00030302 ldr r0, [r4, 4]                                   |     r0 = *((r4 + 4));
    0x00030304 blx 0xaebc                                        |     fcn_0000aebc ();
    0x00030308 mov r2, r8                                        |     r2 = r8;
    0x0003030a mov sb, r0                                        |     sb = r0;
    0x0003030c movs r1, 4                                        |     r1 = 4;
    0x0003030e ldr r0, [r4, 4]                                   |     r0 = *((r4 + 4));
    0x00030310 blx 0xaebc                                        |     r0 = fcn_0000aebc ();
    0x00030314 mov r8, r0                                        |     r8 = r0;
    0x00030316 b 0x30038                                         |     goto label_7;
                                                                 | label_19:
    0x00030318 blx 0xb214                                        |     r0 = dbus_connection_pop_message ();
    0x0003031c ldr r0, [r0]                                      |     r0 = *(r0);
    0x0003031e blx 0xa4c8                                        |     fcn_0000a4c8 ();
    0x00030322 ldr r2, [pc, 0x14c]                               |     
    0x00030324 mov r3, r0                                        |     r3 = r0;
    0x00030326 ldr r1, [pc, 0x14c]                               |     
    0x00030328 mov r0, r5                                        |     r0 = r5;
    0x0003032a add r2, pc                                        |     r2 = 0x607a0;
    0x0003032c add r1, pc                                        |     r1 = 0x607a6;
    0x0003032e blx 0xa310                                        |     fcn_0000a310 ();
    0x00030332 b 0x2fe44                                         |     goto label_8;
                                                                 | label_25:
    0x00030334 ldr r0, [pc, 0x140]                               |     
    0x00030336 add r0, pc                                        |     r0 = 0x607b2;
    0x00030338 blx 0xaa08                                        |     fcn_0000aa08 ();
    0x0003033c movs r0, 1                                        |     r0 = 1;
    0x0003033e blx 0xb1fc                                        |     dbus_string_init ();
                                                                 | label_22:
    0x00030342 movs r1, 1                                        |     r1 = 1;
    0x00030344 mov r0, sb                                        |     r0 = sb;
    0x00030346 blx 0xae8c                                        |     fcn_0000ae8c ();
    0x0003034a cmp.w r8, 0                                       |     
                                                                 |     if (r8 < 0) {
    0x0003034e bge 0x3035a                                       |         
    0x00030350 mov r0, sb                                        |         r0 = sb;
    0x00030352 movs r1, 0                                        |         r1 = 0;
    0x00030354 blx 0xa0e0                                        |         dbus_poll ();
    0x00030358 b 0x300de                                         |         goto label_9;
                                                                 |     }
    0x0003035a movs r1, 2                                        |     r1 = 2;
    0x0003035c mov r0, r8                                        |     r0 = r8;
    0x0003035e blx 0xae8c                                        |     fcn_0000ae8c ();
    0x00030362 mov r0, sb                                        |     r0 = sb;
    0x00030364 movs r1, 0                                        |     r1 = 0;
    0x00030366 blx 0xa0e0                                        |     dbus_poll ();
                                                                 |     do {
    0x0003036a mov r0, r8                                        |         r0 = r8;
    0x0003036c movs r1, 0                                        |         r1 = 0;
    0x0003036e blx 0xa0e0                                        |         dbus_poll ();
    0x00030372 b 0x300de                                         |         goto label_9;
                                                                 | label_23:
    0x0003039c movs r1, 2                                        |         r1 = 2;
    0x0003039e mov r0, r8                                        |         r0 = r8;
    0x000303a0 blx 0xae8c                                        |         fcn_0000ae8c ();
    0x000303a4 b 0x3036a                                         |         
                                                                 |     } while (1);
                                                                 | label_24:
    0x000303a6 mov r0, r4                                        |     r0 = r4;
    0x000303a8 bl 0x2f858                                        |     fcn_0002f858 (r0, r1, r2, r3, r4, r5, r6);
    0x000303ac b 0x30200                                         |     goto label_10;
                                                                 | label_18:
    0x000303ae blx 0xacf8                                        |     chdir ();
                                                                 | label_20:
    0x000303b2 ldr r0, [sp, 0x30]                                |     r0 = *(arg_30h);
    0x000303b4 movs r1, 1                                        |     r1 = 1;
    0x000303b6 bl 0x2f28c                                        |     r0 = fcn_0002f28c (r0, r1);
    0x000303ba blx 0xb214                                        |     r0 = dbus_connection_pop_message ();
    0x000303be mov fp, r0                                        |     
    0x000303c0 b 0x2ff32                                         |     goto label_11;
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2bde8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.bus_activation_unref ()          | void bus_activation_unref (uint32_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     r0 = arg1;
    0x0002bde8 push {r4, r5, lr}                 |     
    0x0002bdea mov r4, r0                        |     r4 = r0;
    0x0002bdec ldr r5, [pc, 0x68]                |     
    0x0002bdee sub sp, 0xc                       |     
    0x0002bdf0 movw r3, 0x425                    |     r3 = 0x425;
    0x0002bdf4 ldr r0, [r0]                      |     r0 = *(r0);
    0x0002bdf6 ldr r2, [pc, 0x64]                |     
    0x0002bdf8 add r5, pc                        |     
    0x0002bdfa ldr r1, [pc, 0x64]                |     
    0x0002bdfc add.w r5, r5, 0x11c               |     r5 = 0x57d70;
    0x0002be00 cmp r0, 0                         |     
    0x0002be02 str r5, [sp]                      |     *(sp) = r5;
    0x0002be04 ite le                            |     
                                                 |     if (r0 > 0) {
    0x0002be06 movle r0, 0                       |         r0 = 0;
                                                 |     }
                                                 |     if (r0 <= 0) {
    0x0002be08 movgt r0, 1                       |         r0 = 1;
                                                 |     }
    0x0002be0a add r2, pc                        |     r2 = 0x57c6c;
    0x0002be0c add r1, pc                        |     r1 = 0x57c72;
    0x0002be0e blx 0xae50                        |     fcn_0000ae50 ();
    0x0002be12 ldr r3, [r4]                      |     r3 = *(r4);
    0x0002be14 subs r3, 1                        |     r3--;
    0x0002be16 cmp r3, 0                         |     
    0x0002be18 str r3, [r4]                      |     *(r4) = r3;
                                                 |     if (r3 > 0) {
    0x0002be1a ble 0x2be20                       |         
    0x0002be1c add sp, 0xc                       |         
    0x0002be1e pop {r4, r5, pc}                  |         
                                                 |     }
    0x0002be20 ldr r0, [r4, 0xc]                 |     r0 = *((r4 + 0xc));
    0x0002be22 blx 0xa0fc                        |     fcn_0000a0fc ();
    0x0002be26 ldr r0, [r4, 4]                   |     r0 = *((r4 + 4));
                                                 |     if (r0 != 0) {
    0x0002be28 cbz r0, 0x2be2e                   |         
    0x0002be2a blx 0xa898                        |         fcn_0000a898 ();
                                                 |     }
    0x0002be2e ldr r0, [r4, 8]                   |     r0 = *((r4 + 8));
                                                 |     if (r0 != 0) {
    0x0002be30 cbz r0, 0x2be36                   |         
    0x0002be32 blx 0xa898                        |         fcn_0000a898 ();
                                                 |     }
    0x0002be36 ldr r1, [pc, 0x2c]                |     
    0x0002be38 add.w r0, r4, 0x18                |     r0 = r4 + 0x18;
    0x0002be3c add r1, pc                        |     r1 = 0x57ca6;
    0x0002be3e blx 0xa7b4                        |     fcn_0000a7b4 ();
    0x0002be42 ldr r0, [r4, 0x1c]                |     r0 = *((r4 + 0x1c));
                                                 |     if (r0 != 0) {
    0x0002be44 cbz r0, 0x2be4a                   |         
    0x0002be46 blx 0xa898                        |         fcn_0000a898 ();
                                                 |     }
    0x0002be4a mov r0, r4                        |     r0 = r4;
    0x0002be4c add sp, 0xc                       |     
    0x0002be4e pop.w {r4, r5, lr}                |     
    0x0002be52 b.w 0xa0f8                        |     return void (*0xa0f8)() ();
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x211ac */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.bus_client_policy_unref ()       | void bus_client_policy_unref (uint32_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     r0 = arg1;
    0x000211ac push {r4, r5, lr}                 |     
    0x000211ae mov r4, r0                        |     r4 = r0;
    0x000211b0 ldr r5, [pc, 0x4c]                |     
    0x000211b2 sub sp, 0xc                       |     
    0x000211b4 movw r3, 0x2e6                    |     r3 = 0x2e6;
    0x000211b8 ldr r0, [r0]                      |     r0 = *(r0);
    0x000211ba ldr r2, [pc, 0x48]                |     
    0x000211bc add r5, pc                        |     r5 = 0x423c0;
    0x000211be ldr r1, [pc, 0x48]                |     
    0x000211c0 adds r5, 0x68                     |     r5 += 0x68;
    0x000211c2 cmp r0, 0                         |     
    0x000211c4 str r5, [sp]                      |     *(sp) = r5;
    0x000211c6 add r2, pc                        |     r2 = 0x423d0;
    0x000211c8 it le                             |     
                                                 |     if (r0 > 0) {
    0x000211ca movle r0, 0                       |         r0 = 0;
                                                 |     }
    0x000211cc add r1, pc                        |     r1 = 0x423da;
    0x000211ce it gt                             |     
                                                 |     if (r0 <= 0) {
    0x000211d0 movgt r0, 1                       |         r0 = 1;
                                                 |     }
    0x000211d2 blx 0xae50                        |     fcn_0000ae50 ();
    0x000211d6 ldr r2, [r4]                      |     r2 = *(r4);
    0x000211d8 subs r2, 1                        |     r2--;
    0x000211da str r2, [r4]                      |     *(r4) = r2;
                                                 |     if (r2 != 0) {
    0x000211dc cbz r2, 0x211e2                   |         
    0x000211de add sp, 0xc                       |         
    0x000211e0 pop {r4, r5, pc}                  |         
                                                 |     }
    0x000211e2 ldr r1, [pc, 0x28]                |     
    0x000211e4 adds r5, r4, 4                    |     r5 = r4 + 4;
    0x000211e6 mov r0, r5                        |     r0 = r5;
    0x000211e8 add r1, pc                        |     r1 = 0x423fa;
    0x000211ea blx 0xac30                        |     fcn_0000ac30 ();
    0x000211ec stc p6, c4, [r2, -0xa0]!          |     __asm ("stc p6, c4, [r2, -0xa0]!");
    0x000211f0 blx 0xa588                        |     fcn_0000a588 ();
    0x000211f4 mov r0, r4                        |     r0 = r4;
    0x000211f6 add sp, 0xc                       |     
    0x000211f8 pop.w {r4, r5, lr}                |     
    0x000211fc b.w 0xa0f8                        |     return void (*0xa0f8)() ();
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x12a24 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.bus_config_parser_element_type_to_name ()        | void bus_config_parser_element_type_to_name (uint32_t arg1) {
                                                                 |     r0 = arg1;
    0x00012a24 push {r3, lr}                                     |     
    0x00012a26 cmp r0, 0x17                                      |     
                                                                 |     if (r0 <= 0x17) {
    0x00012a28 bhi 0x12ad4                                       |         
                                                                 |         /* switch table (24 cases) at 0x12a2e */
    0x00012a2a tbb [pc, r0]                                      |         __asm ("tbb [0x00012a30]");
    0x00012a46 ldr r0, [pc, 0x9c]                                |         
    0x00012a48 add r0, pc                                        |         r0 = 0x25532;
    0x00012a4a pop {r3, pc}                                      |         
    0x00012a4c ldr r0, [pc, 0x98]                                |         
    0x00012a4e add r0, pc                                        |         r0 = 0x2553a;
    0x00012a50 pop {r3, pc}                                      |         
    0x00012a52 movs r0, 0                                        |         r0 = 0;
    0x00012a54 pop {r3, pc}                                      |         
    0x00012a56 ldr r0, [pc, 0x94]                                |         
    0x00012a58 add r0, pc                                        |         r0 = 0x2554a;
    0x00012a5a pop {r3, pc}                                      |         
    0x00012a5c ldr r0, [pc, 0x90]                                |         
    0x00012a5e add r0, pc                                        |         r0 = 0x25552;
    0x00012a60 pop {r3, pc}                                      |         
    0x00012a62 ldr r0, [pc, 0x90]                                |         
    0x00012a64 add r0, pc                                        |         r0 = 0x2555e;
    0x00012a66 pop {r3, pc}                                      |         
    0x00012a68 ldr r0, [pc, 0x8c]                                |         
    0x00012a6a add r0, pc                                        |         r0 = 0x25566;
    0x00012a6c pop {r3, pc}                                      |         
    0x00012a6e ldr r0, [pc, 0x8c]                                |         
    0x00012a70 add r0, pc                                        |         r0 = 0x25572;
    0x00012a72 pop {r3, pc}                                      |         
    0x00012a74 ldr r0, [pc, 0x88]                                |         
    0x00012a76 add r0, pc                                        |         r0 = 0x2557a;
    0x00012a78 pop {r3, pc}                                      |         
    0x00012a7a ldr r0, [pc, 0x88]                                |         
    0x00012a7c add r0, pc                                        |         r0 = 0x25586;
    0x00012a7e pop {r3, pc}                                      |         
    0x00012a80 ldr r0, [pc, 0x84]                                |         
    0x00012a82 add r0, pc                                        |         r0 = 0x2558e;
    0x00012a84 pop {r3, pc}                                      |         
    0x00012a86 ldr r0, [pc, 0x84]                                |         
    0x00012a88 add r0, pc                                        |         r0 = 0x2559a;
    0x00012a8a pop {r3, pc}                                      |         
    0x00012a8c ldr r0, [pc, 0x80]                                |         
    0x00012a8e add r0, pc                                        |         r0 = 0x255a2;
    0x00012a90 pop {r3, pc}                                      |         
    0x00012a92 ldr r0, [pc, 0x80]                                |         
    0x00012a94 add r0, pc                                        |         r0 = 0x255ae;
    0x00012a96 pop {r3, pc}                                      |         
    0x00012a98 ldr r0, [pc, 0x7c]                                |         
    0x00012a9a add r0, pc                                        |         r0 = 0x255b6;
    0x00012a9c pop {r3, pc}                                      |         
    0x00012a9e ldr r0, [pc, 0x7c]                                |         
    0x00012aa0 add r0, pc                                        |         r0 = 0x255c2;
    0x00012aa2 pop {r3, pc}                                      |         
    0x00012aa4 ldr r0, [pc, 0x78]                                |         
    0x00012aa6 add r0, pc                                        |         r0 = 0x255ca;
    0x00012aa8 pop {r3, pc}                                      |         
    0x00012aaa ldr r0, [pc, 0x78]                                |         
    0x00012aac add r0, pc                                        |         r0 = 0x255d6;
    0x00012aae pop {r3, pc}                                      |         
    0x00012ab0 ldr r0, [pc, 0x74]                                |         
    0x00012ab2 add r0, pc                                        |         r0 = 0x255de;
    0x00012ab4 pop {r3, pc}                                      |         
    0x00012ab6 ldr r0, [pc, 0x74]                                |         
    0x00012ab8 add r0, pc                                        |         r0 = 0x255ea;
    0x00012aba pop {r3, pc}                                      |         
    0x00012abc ldr r0, [pc, 0x70]                                |         
    0x00012abe add r0, pc                                        |         r0 = 0x255f2;
    0x00012ac0 pop {r3, pc}                                      |         
    0x00012ac2 ldr r0, [pc, 0x70]                                |         
    0x00012ac4 add r0, pc                                        |         r0 = 0x255fe;
    0x00012ac6 pop {r3, pc}                                      |         
    0x00012ac8 ldr r0, [pc, 0x6c]                                |         
    0x00012aca add r0, pc                                        |         r0 = 0x25606;
    0x00012acc pop {r3, pc}                                      |         
    0x00012ace ldr r0, [pc, 0x6c]                                |         
    0x00012ad0 add r0, pc                                        |         r0 = 0x25612;
    0x00012ad2 pop {r3, pc}                                      |         
                                                                 |     }
    0x00012ad4 ldr r1, [pc, 0x68]                                |     
    0x00012ad6 movs r2, 0xbf                                     |     r2 = 0xbf;
    0x00012ad8 ldr r0, [pc, 0x68]                                |     
    0x00012ada add r1, pc                                        |     r1 = 0x2561e;
    0x00012adc add r0, pc                                        |     r0 = 0x25624;
    0x00012ade blx 0xaa48                                        |     fcn_0000aa48 ();
    0x00012ae2 nop                                               |     
    0x00012ae4 vld4.8 {d16, d17, d18, d19}, [r0], r1             |     __asm ("vld4.8 {d16, d17, d18, d19}, [r0], r1");
    0x00012ae8 str.w r0, [r6, r1]                                |     __asm ("str.w r0, [r6, r1]");
    0x00012aec stc2 p0, c0, [r4], -4                             |     __asm ("stc2 p0, c0, [r4], -4");
    0x00012af0 vld4.8 {d0, d1, d2, d3}, [lr], r1                 |     __asm ("vld4.8 {d0, d1, d2, d3}, [lr], r1");
    0x00012af4 b 0x12b58                                         |     
    0x00012b58 push {r4, lr}                                     |     
    0x00012b5a mov r4, r0                                        |     r4 = r0;
    0x00012b5c ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
                                                                 |     if (r3 != 0) {
    0x00012b5e cbz r3, 0x12b64                                   |         
    0x00012b60 ldr r0, [r0, 8]                                   |         r0 = *((r0 + 8));
    0x00012b62 blx r3                                            |         uint32_t (*r3)(uint32_t) (r0);
                                                                 |     }
    0x00012b64 mov r0, r4                                        |     r0 = r4;
    0x00012b66 pop.w {r4, lr}                                    |     
    0x00012b6a b.w 0xa0f8                                        |     return void (*0xa0f8)() ();
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0xfb50 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.bus_config_parser_unref ()           | void bus_config_parser_unref (uint32_t arg1) {
                                                     |     int16_t var_0h;
                                                     |     r0 = arg1;
    0x0000fb50 push {r4, r5, r6, r7, lr}             |     
    0x0000fb52 mov r5, r0                            |     r5 = r0;
    0x0000fb54 ldr r4, [pc, 0xcc]                    |     
    0x0000fb56 sub sp, 0xc                           |     
    0x0000fb58 movw r3, 0x23f                        |     r3 = 0x23f;
    0x0000fb5c ldr r0, [r0]                          |     r0 = *(r0);
    0x0000fb5e ldr r2, [pc, 0xc8]                    |     
    0x0000fb60 add r4, pc                            |     r4 = 0x1f788;
    0x0000fb62 ldr r1, [pc, 0xc8]                    |     
    0x0000fb64 adds r4, 0x90                         |     r4 += 0x90;
    0x0000fb66 cmp r0, 0                             |     
    0x0000fb68 str r4, [sp]                          |     *(sp) = r4;
    0x0000fb6a add r2, pc                            |     r2 = 0x1f798;
    0x0000fb6c it le                                 |     
                                                     |     if (r0 > 0) {
    0x0000fb6e movle r0, 0                           |         r0 = 0;
                                                     |     }
    0x0000fb70 add r1, pc                            |     r1 = 0x1f7a2;
    0x0000fb72 it gt                                 |     
                                                     |     if (r0 <= 0) {
    0x0000fb74 movgt r0, 1                           |         r0 = 1;
                                                     |     }
    0x0000fb76 blx 0xae50                            |     fcn_0000ae50 ();
    0x0000fb7a ldr r3, [r5]                          |     r3 = *(r5);
    0x0000fb7c ldr r6, [pc, 0xb0]                    |     
    0x0000fb7e subs r3, 1                            |     r3--;
    0x0000fb80 add r6, pc                            |     r6 = 0x1f7b4;
    0x0000fb82 str r3, [r5]                          |     *(r5) = r3;
    0x0000fb84 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x0000fb86 bne 0xfc20                            |         goto label_2;
                                                     |     }
    0x0000fb88 ldr r3, [r5, 0x14]                    |     r3 = *((r5 + 0x14));
    0x0000fb8a add.w r7, r5, 0x14                    |     r7 = r5 + 0x14;
    0x0000fb8e cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x0000fb90 bne 0xfc10                            |         goto label_3;
                                                     |     }
                                                     |     do {
    0x0000fb92 ldr r0, [r5, 0x18]                    |         r0 = *((r5 + 0x18));
    0x0000fb94 blx 0xa0fc                            |         fcn_0000a0fc ();
    0x0000fb98 ldr r0, [r5, 0x1c]                    |         r0 = *((r5 + 0x1c));
    0x0000fb9a blx 0xa0fc                            |         fcn_0000a0fc ();
    0x0000fb9e ldr r0, [r5, 0x20]                    |         r0 = *((r5 + 0x20));
    0x0000fba0 blx 0xa0fc                            |         fcn_0000a0fc ();
    0x0000fba4 ldr.w r0, [r5, 0x8c]                  |         r0 = *((r5 + 0x8c));
    0x0000fba8 blx 0xa0fc                            |         fcn_0000a0fc ();
    0x0000fbac ldr r3, [pc, 0x84]                    |         r3 = *(0xfc34);
    0x0000fbae add.w r0, r5, 0x24                    |         r0 = r5 + 0x24;
    0x0000fbb2 ldr r4, [r6, r3]                      |         r4 = *((r6 + r3));
    0x0000fbb4 mov r1, r4                            |         r1 = r4;
    0x0000fbb6 blx 0xa7b4                            |         fcn_0000a7b4 ();
    0x0000fbba ldr r1, [pc, 0x7c]                    |         
    0x0000fbbc add.w r0, r5, 0x2c                    |         r0 = r5 + 0x2c;
    0x0000fbc0 add r1, pc                            |         r1 = 0x1f7fe;
    0x0000fbc2 blx 0xa7b4                            |         fcn_0000a7b4 ();
    0x0000fbc6 mov r1, r4                            |         r1 = r4;
    0x0000fbc8 add.w r0, r5, 0x30                    |         r0 = r5 + 0x30;
    0x0000fbcc blx 0xa7b4                            |         fcn_0000a7b4 ();
    0x0000fbd0 mov r1, r4                            |         r1 = r4;
    0x0000fbd2 add.w r0, r5, 0x28                    |         r0 = r5 + 0x28;
    0x0000fbd6 blx 0xa7b4                            |         fcn_0000a7b4 ();
    0x0000fbda adds r0, r5, 4                        |         r0 = r5 + 4;
    0x0000fbdc blx 0xa724                            |         fcn_0000a724 ();
    0x0000fbe0 ldr r0, [r5, 0x34]                    |         r0 = *((r5 + 0x34));
                                                     |         if (r0 != 0) {
    0x0000fbe2 cbz r0, 0xfbe8                        |             
    0x0000fbe4 bl 0x20e70                            |             bus_policy_unref ();
                                                     |         }
    0x0000fbe8 ldr.w r0, [r5, 0x94]                  |         r0 = *((r5 + 0x94));
                                                     |         if (r0 != 0) {
    0x0000fbec cbz r0, 0xfbf2                        |             
    0x0000fbee blx 0xa898                            |             fcn_0000a898 ();
                                                     |         }
    0x0000fbf2 mov r0, r5                            |         r0 = r5;
    0x0000fbf4 add sp, 0xc                           |         
    0x0000fbf6 pop.w {r4, r5, r6, r7, lr}            |         
    0x0000fbfa b.w 0xa0f8                            |         void (*0xa0f8)() ();
                                                     | label_1:
    0x0000fbfe ldr r0, [r0, 8]                       |         r0 = *((r0 + 8));
    0x0000fc00 blx 0xa0fc                            |         fcn_0000a0fc ();
                                                     | label_0:
    0x0000fc04 mov r0, r4                            |         r0 = r4;
    0x0000fc06 blx 0xa0fc                            |         fcn_0000a0fc ();
    0x0000fc0a ldr r3, [r5, 0x14]                    |         r3 = *((r5 + 0x14));
    0x0000fc0c cmp r3, 0                             |         
    0x0000fc0e beq 0xfb92                            |         
                                                     |     } while (r3 == 0);
                                                     | label_3:
    0x0000fc10 mov r0, r7                            |     r0 = r7;
    0x0000fc12 blx 0xb1f0                            |     r0 = dbus_connection_return_message ();
    0x0000fc16 ldr r3, [r0]                          |     r3 = *(r0);
    0x0000fc18 mov r4, r0                            |     r4 = r0;
    0x0000fc1a cmp r3, 7                             |     
                                                     |     if (r3 != 7) {
    0x0000fc1c bne 0xfc04                            |         goto label_0;
                                                     |     }
    0x0000fc1e b 0xfbfe                              |     goto label_1;
                                                     | label_2:
    0x0000fc20 add sp, 0xc                           |     
    0x0000fc22 pop {r4, r5, r6, r7, pc}              |     
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2d5a4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.bus_desktop_file_free ()                         | void bus_desktop_file_free (int16_t arg1) {
                                                                 |     r0 = arg1;
    0x0002d5a4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0002d5a8 mov sl, r0                                        |     sl = r0;
    0x0002d5aa ldr r3, [r0]                                      |     r3 = *(r0);
    0x0002d5ac cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x0002d5ae ble 0x2d5fa                                       |         goto label_1;
                                                                 |     }
    0x0002d5b0 movs r7, 0                                        |     r7 = 0;
                                                                 | label_0:
    0x0002d5b2 ldr.w sb, [sl, 4]                                 |     sb = *((sl + 4));
    0x0002d5b6 lsl.w r8, r7, 4                                   |     r8 = r7 << 4;
    0x0002d5ba add.w r6, sb, r8                                  |     r6 = sb + r8;
    0x0002d5be ldr r3, [r6, 4]                                   |     r3 = *((r6 + 4));
    0x0002d5c0 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x0002d5c2 ble 0x2d5e2                                       |         goto label_2;
                                                                 |     }
    0x0002d5c4 movs r4, 0                                        |     r4 = 0;
                                                                 |     do {
    0x0002d5c6 ldr r5, [r6, 8]                                   |         r5 = *((r6 + 8));
    0x0002d5c8 ldr.w r0, [r5, r4, lsl 3]                         |         offset_0 = r4 << 3;
                                                                 |         r0 = *((r5 + offset_0));
    0x0002d5cc add.w r5, r5, r4, lsl 3                           |         r5 += (r4 << 3);
    0x0002d5d0 adds r4, 1                                        |         r4++;
    0x0002d5d2 blx 0xa0fc                                        |         fcn_0000a0fc ();
    0x0002d5d6 ldr r0, [r5, 4]                                   |         r0 = *((r5 + 4));
    0x0002d5d8 blx 0xa0fc                                        |         fcn_0000a0fc ();
    0x0002d5dc ldr r3, [r6, 4]                                   |         r3 = *((r6 + 4));
    0x0002d5de cmp r4, r3                                        |         
    0x0002d5e0 blt 0x2d5c6                                       |         
                                                                 |     } while (r4 < r3);
                                                                 | label_2:
    0x0002d5e2 ldr r0, [r6, 8]                                   |     r0 = *((r6 + 8));
    0x0002d5e4 adds r7, 1                                        |     r7++;
    0x0002d5e6 blx 0xa0fc                                        |     fcn_0000a0fc ();
    0x0002d5ea ldr.w r0, [sb, r8]                                |     r0 = *((sb + r8));
    0x0002d5ee blx 0xa0fc                                        |     fcn_0000a0fc ();
    0x0002d5f2 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x0002d5f6 cmp r3, r7                                        |     
                                                                 |     if (r3 > r7) {
    0x0002d5f8 bgt 0x2d5b2                                       |         goto label_0;
                                                                 |     }
                                                                 | label_1:
    0x0002d5fa ldr.w r0, [sl, 4]                                 |     r0 = *((sl + 4));
    0x0002d5fe blx 0xa0fc                                        |     fcn_0000a0fc ();
    0x0002d602 mov r0, sl                                        |     r0 = sl;
    0x0002d604 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0002d608 b.w 0xa0f8                                        |     return void (*0xa0f8)() ();
                                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x20698 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.bus_expire_list_free ()      | void bus_expire_list_free (int16_t arg1) {
                                             |     int16_t var_0h;
                                             |     r0 = arg1;
    0x00020698 ldr r1, [pc, 0x38]            |     
    0x0002069a movs r3, 0x56                 |     r3 = 0x56;
    0x0002069c push {r4, lr}                 |     
    0x0002069e mov r4, r0                    |     r4 = r0;
    0x000206a0 sub sp, 8                     |     
    0x000206a2 ldr r0, [r0]                  |     r0 = *(r0);
    0x000206a4 add r1, pc                    |     r1 = 0x40d7c;
    0x000206a6 str r1, [sp]                  |     *(sp) = r1;
    0x000206a8 ldr r2, [pc, 0x2c]            |     
    0x000206aa clz r0, r0                    |     r0 &= r0;
    0x000206ae ldr r1, [pc, 0x2c]            |     
    0x000206b0 lsrs r0, r0, 5                |     r0 >>= 5;
    0x000206b2 add r2, pc                    |     r2 = 0x40d8e;
    0x000206b4 add r1, pc                    |     r1 = 0x40d96;
    0x000206b6 blx 0xae50                    |     r0 = fcn_0000ae50 ();
    0x000206ba ldrd r1, r0, [r4, 4]          |     __asm ("ldrd r1, r0, [r4, 4]");
    0x000206be bl 0x2825c                    |     fcn_0002825c (r0, r1);
    0x000206c2 ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x000206c4 blx 0xacec                    |     dbus_message_new_method_return ();
    0x000206c8 mov r0, r4                    |     r0 = r4;
    0x000206ca add sp, 8                     |     
    0x000206cc pop.w {r4, lr}                |     
    0x000206d0 b.w 0xa0f8                    |     return void (*0xa0f8)() ();
                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x23eb4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.bus_match_rule_unref ()          | void bus_match_rule_unref (uint32_t arg1) {
                                                 |     int16_t var_0h_2;
                                                 |     r0 = arg1;
    0x00023eb4 push {r4, r5, lr}                 |     
    0x00023eb6 mov r5, r0                        |     r5 = r0;
    0x00023eb8 ldr r4, [pc, 0x80]                |     
    0x00023eba sub sp, 0xc                       |     
    0x00023ebc movs r3, 0x5b                     |     r3 = 0x5b;
    0x00023ebe ldr r0, [r0]                      |     r0 = *(r0);
    0x00023ec0 ldr r2, [pc, 0x7c]                |     
    0x00023ec2 add r4, pc                        |     r4 = 0x47e02;
    0x00023ec4 ldr r1, [pc, 0x7c]                |     
    0x00023ec6 adds r4, 0xb0                     |     r4 += 0xb0;
    0x00023ec8 cmp r0, 0                         |     
    0x00023eca str r4, [sp]                      |     *(sp) = r4;
    0x00023ecc add r2, pc                        |     r2 = 0x47e10;
    0x00023ece it le                             |     
                                                 |     if (r0 > 0) {
    0x00023ed0 movle r0, 0                       |         r0 = 0;
                                                 |     }
    0x00023ed2 add r1, pc                        |     r1 = 0x47e1a;
    0x00023ed4 it gt                             |     
                                                 |     if (r0 <= 0) {
    0x00023ed6 movgt r0, 1                       |         r0 = 1;
                                                 |     }
    0x00023ed8 blx 0xae50                        |     fcn_0000ae50 ();
    0x00023edc ldr r4, [r5]                      |     r4 = *(r5);
    0x00023ede subs r4, 1                        |     r4--;
    0x00023ee0 str r4, [r5]                      |     *(r5) = r4;
                                                 |     if (r4 != 0) {
    0x00023ee2 cbz r4, 0x23ee8                   |         
    0x00023ee4 add sp, 0xc                       |         
    0x00023ee6 pop {r4, r5, pc}                  |         
                                                 |     }
    0x00023ee8 ldr r0, [r5, 0x10]                |     r0 = *((r5 + 0x10));
    0x00023eea blx 0xa0fc                        |     fcn_0000a0fc ();
    0x00023eee ldr r0, [r5, 0x14]                |     r0 = *((r5 + 0x14));
    0x00023ef0 blx 0xa0fc                        |     fcn_0000a0fc ();
    0x00023ef4 ldr r0, [r5, 0x18]                |     r0 = *((r5 + 0x18));
    0x00023ef6 blx 0xa0fc                        |     fcn_0000a0fc ();
    0x00023efa ldr r0, [r5, 0x1c]                |     r0 = *((r5 + 0x1c));
    0x00023efc blx 0xa0fc                        |     fcn_0000a0fc ();
    0x00023f00 ldr r0, [r5, 0x20]                |     r0 = *((r5 + 0x20));
    0x00023f02 blx 0xa0fc                        |     fcn_0000a0fc ();
    0x00023f06 ldr r0, [r5, 0x24]                |     r0 = *((r5 + 0x24));
    0x00023f08 blx 0xa0fc                        |     fcn_0000a0fc ();
    0x00023f0c ldr r3, [r5, 0x28]                |     r3 = *((r5 + 0x28));
                                                 |     if (r3 == 0) {
    0x00023f0e cbz r3, 0x23f30                   |         goto label_0;
                                                 |     }
    0x00023f10 ldr r2, [r5, 0x2c]                |     r2 = *((r5 + 0x2c));
    0x00023f12 cmp r2, 0                         |     
                                                 |     if (r2 <= 0) {
    0x00023f14 ble 0x23f2a                       |         goto label_1;
                                                 |     }
                                                 |     do {
    0x00023f16 ldr.w r0, [r3, r4, lsl 2]         |         offset_0 = r4 << 2;
                                                 |         r0 = *((r3 + offset_0));
    0x00023f1a adds r4, 1                        |         r4++;
                                                 |         if (r0 != 0) {
    0x00023f1c cbz r0, 0x23f26                   |             
    0x00023f1e blx 0xa0fc                        |             fcn_0000a0fc ();
    0x00023f22 ldrd r3, r2, [r5, 0x28]           |             __asm ("ldrd r3, r2, [r5, 0x28]");
                                                 |         }
    0x00023f26 cmp r4, r2                        |         
    0x00023f28 blt 0x23f16                       |         
                                                 |     } while (r4 < r2);
                                                 | label_1:
    0x00023f2a mov r0, r3                        |     r0 = r3;
    0x00023f2c blx 0xa0fc                        |     fcn_0000a0fc ();
                                                 | label_0:
    0x00023f30 mov r0, r5                        |     r0 = r5;
    0x00023f32 add sp, 0xc                       |     
    0x00023f34 pop.w {r4, r5, lr}                |     
    0x00023f38 b.w 0xa0f8                        |     return void (*0xa0f8)() ();
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x2628c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.bus_matchmaker_unref ()          | void bus_matchmaker_unref (uint32_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     r0 = arg1;
    0x0002628c push {r4, r5, r6, r7, lr}         |     
    0x0002628e mov r6, r0                        |     r6 = r0;
    0x00026290 ldr r4, [pc, 0x68]                |     
    0x00026292 sub sp, 0xc                       |     
    0x00026294 movw r3, 0x589                    |     r3 = 0x589;
    0x00026298 ldr r0, [r0]                      |     r0 = *(r0);
    0x0002629a ldr r2, [pc, 0x64]                |     
    0x0002629c add r4, pc                        |     
    0x0002629e ldr r1, [pc, 0x64]                |     
    0x000262a0 add.w r4, r4, 0x224               |     r4 = 0x4c7c0;
    0x000262a4 cmp r0, 0                         |     
    0x000262a6 str r4, [sp]                      |     *(sp) = r4;
    0x000262a8 add r2, pc                        |     r2 = 0x4c5ae;
    0x000262aa it le                             |     
                                                 |     if (r0 > 0) {
    0x000262ac movle r0, 0                       |         r0 = 0;
                                                 |     }
    0x000262ae add r1, pc                        |     r1 = 0x4c5b8;
    0x000262b0 it gt                             |     
                                                 |     if (r0 <= 0) {
    0x000262b2 movgt r0, 1                       |         r0 = 1;
                                                 |     }
    0x000262b4 blx 0xae50                        |     fcn_0000ae50 ();
    0x000262b8 ldr r3, [r6]                      |     r3 = *(r6);
    0x000262ba subs r3, 1                        |     r3--;
    0x000262bc str r3, [r6]                      |     *(r6) = r3;
                                                 |     if (r3 != 0) {
    0x000262be cbnz r3, 0x262f8                  |         goto label_1;
                                                 |     }
    0x000262c0 mov r5, r6                        |     r5 = r6;
    0x000262c2 add.w r7, r6, 0x28                |     r7 = r6 + 0x28;
                                                 | label_0:
    0x000262c6 ldr r0, [r5, 4]                   |     r0 = *((r5 + 4));
    0x000262c8 mov r4, r5                        |     r4 = r5;
    0x000262ca blx 0xa898                        |     fcn_0000a898 ();
    0x000262ce ldr r3, [r5, 8]                   |     r3 = *((r5 + 8));
    0x000262d0 adds r5, 8                        |     r5 += 8;
                                                 |     if (r3 == 0) {
    0x000262d2 cbz r3, 0x262e8                   |         goto label_2;
                                                 |     }
                                                 |     do {
    0x000262d4 ldr r0, [r3, 8]                   |         r0 = *((r3 + 8));
    0x000262d6 bl 0x23eb4                        |         bus_match_rule_unref ();
    0x000262da ldr r1, [r4, 8]                   |         r1 = *((r4 + 8));
    0x000262dc mov r0, r5                        |         r0 = r5;
    0x000262de blx 0x9ff4                        |         fcn_00009ff4 ();
    0x000262e2 ldr r3, [r4, 8]                   |         r3 = *((r4 + 8));
    0x000262e4 cmp r3, 0                         |         
    0x000262e6 bne 0x262d4                       |         
                                                 |     } while (r3 != 0);
                                                 | label_2:
    0x000262e8 cmp r7, r5                        |     
                                                 |     if (r7 != r5) {
    0x000262ea bne 0x262c6                       |         goto label_0;
                                                 |     }
    0x000262ec mov r0, r6                        |     r0 = r6;
    0x000262ee add sp, 0xc                       |     
    0x000262f0 pop.w {r4, r5, r6, r7, lr}        |     
    0x000262f4 b.w 0xa0f8                        |     void (*0xa0f8)() ();
                                                 | label_1:
    0x000262f8 add sp, 0xc                       |     
    0x000262fa pop {r4, r5, r6, r7, pc}          |     
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x20d84 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.bus_policy_rule_unref ()     | void bus_policy_rule_unref (uint32_t arg1) {
                                             |     int16_t var_0h;
                                             |     r0 = arg1;
                                             |     do {
    0x00020d84 push {r4, r5, lr}             |         
    0x00020d86 mov r4, r0                    |         r4 = r0;
    0x00020d88 ldr r5, [pc, 0x88]            |         
    0x00020d8a sub sp, 0xc                   |         
    0x00020d8c movs r3, 0x5d                 |         r3 = 0x5d;
    0x00020d8e ldr r0, [r0]                  |         r0 = *(r0);
    0x00020d90 ldr r2, [pc, 0x84]            |         
    0x00020d92 add r5, pc                    |         r5 = 0x41baa;
    0x00020d94 ldr r1, [pc, 0x84]            |         
    0x00020d96 adds r5, 0x14                 |         r5 += 0x14;
    0x00020d98 cmp r0, 0                     |         
    0x00020d9a str r5, [sp]                  |         *(sp) = r5;
    0x00020d9c add r2, pc                    |         r2 = 0x41bb8;
    0x00020d9e it le                         |         
                                             |         if (r0 > 0) {
    0x00020da0 movle r0, 0                   |             r0 = 0;
                                             |         }
    0x00020da2 add r1, pc                    |         r1 = 0x41bc2;
    0x00020da4 it gt                         |         
                                             |         if (r0 <= 0) {
    0x00020da6 movgt r0, 1                   |             r0 = 1;
                                             |         }
    0x00020da8 blx 0xae50                    |         fcn_0000ae50 ();
    0x00020dac ldr r3, [r4]                  |         r3 = *(r4);
    0x00020dae subs r3, 1                    |         r3--;
    0x00020db0 str r3, [r4]                  |         *(r4) = r3;
                                             |         if (r3 == 0) {
    0x00020db2 cbnz r3, 0x20dc4              |             
    0x00020db4 ldr r3, [r4, 4]               |             r3 = *((r4 + 4));
    0x00020db6 cmp r3, 4                     |             
                                             |             if (r3 > 4) {
    0x00020db8 bhi 0x20e04                   |                 goto label_0;
                                             |             }
                                             |             /* switch table (5 cases) at 0x20dbe */
    0x00020dba tbb [pc, r3]                  |             __asm ("tbb [0x00020dc0]");
                                             |         }
    0x00020dc4 add sp, 0xc                   |         
    0x00020dc6 pop {r4, r5, pc}              |         
    0x00020dc8 ldr r0, [r4, 0x10]            |         r0 = *((r4 + 0x10));
    0x00020dca blx 0xa0fc                    |         fcn_0000a0fc ();
    0x00020dcc invalid                       |         
    0x00020dd0 blx 0xa0fc                    |         fcn_0000a0fc ();
    0x00020dd4 ldr r0, [r4, 0x18]            |         r0 = *((r4 + 0x18));
    0x00020dd6 blx 0xa0fc                    |         fcn_0000a0fc ();
    0x00020dd8 invalid                       |         
    0x00020ddc blx 0xa0fc                    |         fcn_0000a0fc ();
    0x00020de0 ldr r0, [r4, 0x20]            |         r0 = *((r4 + 0x20));
    0x00020de2 blx 0xa0fc                    |         fcn_0000a0fc ();
    0x00020de6 mov r0, r4                    |         r0 = r4;
    0x00020de8 add sp, 0xc                   |         
    0x00020dea pop.w {r4, r5, lr}            |         
    0x00020dee b.w 0xa0f8                    |         void (*0xa0f8)() ();
    0x00020df2 ldr r0, [r4, 0xc]             |         r0 = *((r4 + 0xc));
    0x00020df4 blx 0xa0fc                    |         fcn_0000a0fc ();
    0x00020df8 mov r0, r4                    |         r0 = r4;
    0x00020dfa add sp, 0xc                   |         
    0x00020dfc pop.w {r4, r5, lr}            |         
    0x00020e00 b.w 0xa0f8                    |         void (*0xa0f8)() ();
                                             | label_0:
    0x00020e04 ldr r1, [pc, 0x18]            |         
    0x00020e06 movs r2, 0x7b                 |         r2 = 0x7b;
    0x00020e08 ldr r0, [pc, 0x18]            |         
    0x00020e0a add r1, pc                    |         r1 = 0x41c2e;
    0x00020e0c add r0, pc                    |         r0 = 0x41c34;
    0x00020e0e blx 0xaa48                    |         fcn_0000aa48 ();
    0x00020e12 nop                           |         
    0x00020e14 ldrb r6, [r3, 1]              |         r6 = *((r3 + 1));
    0x00020e16 movs r1, r0                   |         r1 = r0;
    0x00020e18 strb r0, [r5, 0x1e]           |         *((r5 + 0x1e)) = r0;
    0x00020e1a movs r1, r0                   |         r1 = r0;
    0x00020e1c strb r6, [r3, 0x1f]           |         *((r3 + 0x1f)) = r6;
    0x00020e1e movs r1, r0                   |         r1 = r0;
    0x00020e20 strb r2, [r7, 0x1c]           |         *((r7 + 0x1c)) = r2;
    0x00020e22 movs r1, r0                   |         r1 = r0;
    0x00020e24 strb r4, [r4, 0x1d]           |         *((r4 + 0x1d)) = r4;
    0x00020e26 movs r1, r0                   |         r1 = r0;
    0x00020e28 b.w 0x20d84                   |         
                                             |     } while (1);
                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x20e70 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.bus_policy_unref ()                      | void bus_policy_unref (uint32_t arg1) {
                                                         |     int16_t var_0h;
                                                         |     r0 = arg1;
    0x00020e70 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00020e74 mov r4, r0                                |     r4 = r0;
    0x00020e76 ldr r5, [pc, 0xa8]                        |     
    0x00020e78 sub sp, 0xc                               |     
    0x00020e7a movs r3, 0xd1                             |     r3 = 0xd1;
    0x00020e7c ldr r0, [r0]                              |     r0 = *(r0);
    0x00020e7e ldr r2, [pc, 0xa4]                        |     
    0x00020e80 add r5, pc                                |     r5 = 0x41da6;
    0x00020e82 ldr r1, [pc, 0xa4]                        |     
    0x00020e84 adds r5, 0x3c                             |     r5 += 0x3c;
    0x00020e86 cmp r0, 0                                 |     
    0x00020e88 str r5, [sp]                              |     *(sp) = r5;
    0x00020e8a add r2, pc                                |     r2 = 0x41db4;
    0x00020e8c it le                                     |     
                                                         |     if (r0 > 0) {
    0x00020e8e movle r0, 0                               |         r0 = 0;
                                                         |     }
    0x00020e90 add r1, pc                                |     r1 = 0x41dbe;
    0x00020e92 it gt                                     |     
                                                         |     if (r0 <= 0) {
    0x00020e94 movgt r0, 1                               |         r0 = 1;
                                                         |     }
    0x00020e96 blx 0xae50                                |     fcn_0000ae50 ();
    0x00020e9a ldr r5, [r4]                              |     r5 = *(r4);
    0x00020e9c subs r5, 1                                |     r5--;
    0x00020e9e str r5, [r4]                              |     *(r4) = r5;
                                                         |     if (r5 != 0) {
    0x00020ea0 cbz r5, 0x20ea8                           |         
    0x00020ea2 add sp, 0xc                               |         
    0x00020ea4 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         |     }
    0x00020ea8 ldr r6, [pc, 0x80]                        |     
    0x00020eaa add.w sb, r4, 4                           |     sb = r4 + 4;
    0x00020eae mov r2, r5                                |     r2 = r5;
    0x00020eb0 mov r0, sb                                |     r0 = sb;
    0x00020eb2 add.w r8, r4, 8                           |     r8 = r4 + 8;
    0x00020eb6 add.w r7, r4, 0x14                        |     r7 = r4 + 0x14;
    0x00020eba add r6, pc                                |     r6 = 0x41dea;
    0x00020ebc mov r1, r6                                |     r1 = r6;
    0x00020ebe blx 0xac30                                |     fcn_0000ac30 ();
    0x00020ec2 mov r0, sb                                |     r0 = sb;
    0x00020ec4 blx 0xa588                                |     fcn_0000a588 ();
    0x00020ec8 mov r2, r5                                |     r2 = r5;
    0x00020eca mov r1, r6                                |     r1 = r6;
    0x00020ecc mov r0, r8                                |     r0 = r8;
    0x00020ece blx 0xac30                                |     fcn_0000ac30 ();
    0x00020ed2 mov r0, r8                                |     r0 = r8;
    0x00020ed4 blx 0xa588                                |     fcn_0000a588 ();
    0x00020ed8 mov r2, r5                                |     r2 = r5;
    0x00020eda mov r1, r6                                |     r1 = r6;
    0x00020edc mov r0, r7                                |     r0 = r7;
    0x00020ede blx 0xac30                                |     fcn_0000ac30 ();
    0x00020ee2 mov r0, r7                                |     r0 = r7;
    0x00020ee4 add.w r7, r4, 0x18                        |     r7 = r4 + 0x18;
    0x00020ee8 blx 0xa588                                |     fcn_0000a588 ();
    0x00020eec mov r1, r6                                |     r1 = r6;
    0x00020eee mov r2, r5                                |     r2 = r5;
    0x00020ef0 mov r0, r7                                |     r0 = r7;
    0x00020ef2 blx 0xac30                                |     fcn_0000ac30 ();
    0x00020ef6 mov r0, r7                                |     r0 = r7;
    0x00020ef8 blx 0xa588                                |     fcn_0000a588 ();
    0x00020efc ldr r0, [r4, 0xc]                         |     r0 = *((r4 + 0xc));
                                                         |     if (r0 != 0) {
    0x00020efe cbz r0, 0x20f06                           |         
    0x00020f00 blx 0xa898                                |         fcn_0000a898 ();
    0x00020f04 str r5, [r4, 0xc]                         |         *((r4 + 0xc)) = r5;
                                                         |     }
    0x00020f06 ldr r0, [r4, 0x10]                        |     r0 = *((r4 + 0x10));
                                                         |     if (r0 != 0) {
    0x00020f08 cbz r0, 0x20f12                           |         
    0x00020f0a blx 0xa898                                |         fcn_0000a898 ();
    0x00020f0e movs r3, 0                                |         r3 = 0;
    0x00020f10 str r3, [r4, 0x10]                        |         *((r4 + 0x10)) = r3;
                                                         |     }
    0x00020f12 mov r0, r4                                |     r0 = r4;
    0x00020f14 add sp, 0xc                               |     
    0x00020f16 pop.w {r4, r5, r6, r7, r8, sb, lr}        |     
    0x00020f18 mvns r0, r6                               |     r0 = ~r6;
    0x00020f1a b.w 0xa0f8                                |     return void (*0xa0f8)() ();
                                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x21ba0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.bus_registry_unref ()        | void bus_registry_unref (uint32_t arg1) {
                                             |     int16_t var_0h;
                                             |     r0 = arg1;
    0x00021ba0 push {r4, r5, lr}             |     
    0x00021ba2 mov r4, r0                    |     r4 = r0;
    0x00021ba4 ldr r5, [pc, 0x58]            |     
    0x00021ba6 sub sp, 0xc                   |     
    0x00021ba8 movs r3, 0x7d                 |     r3 = 0x7d;
    0x00021baa ldr r0, [r0]                  |     r0 = *(r0);
    0x00021bac ldr r2, [pc, 0x54]            |     
    0x00021bae add r5, pc                    |     r5 = 0x437b2;
    0x00021bb0 ldr r1, [pc, 0x54]            |     
    0x00021bb2 adds r5, 0x24                 |     r5 += 0x24;
    0x00021bb4 cmp r0, 0                     |     
    0x00021bb6 str r5, [sp]                  |     *(sp) = r5;
    0x00021bb8 add r2, pc                    |     r2 = 0x437c0;
    0x00021bba it le                         |     
                                             |     if (r0 > 0) {
    0x00021bbc movle r0, 0                   |         r0 = 0;
                                             |     }
    0x00021bbe add r1, pc                    |     r1 = 0x437ca;
    0x00021bc0 it gt                         |     
                                             |     if (r0 <= 0) {
    0x00021bc2 movgt r0, 1                   |         r0 = 1;
                                             |     }
    0x00021bc4 blx 0xae50                    |     fcn_0000ae50 ();
    0x00021bc8 ldr r3, [r4]                  |     r3 = *(r4);
    0x00021bca subs r3, 1                    |     r3--;
    0x00021bcc str r3, [r4]                  |     *(r4) = r3;
                                             |     if (r3 == 0) {
    0x00021bce cbnz r3, 0x21bfc              |         
    0x00021bd0 ldr r0, [r4, 8]               |         r0 = *((r4 + 8));
                                             |         if (r0 != 0) {
    0x00021bd2 cbz r0, 0x21bd8               |             
    0x00021bd4 blx 0xa898                    |             fcn_0000a898 ();
                                             |         }
    0x00021bd8 ldr r0, [r4, 0xc]             |         r0 = *((r4 + 0xc));
                                             |         if (r0 != 0) {
    0x00021bda cbz r0, 0x21be0               |             
    0x00021bdc blx 0xafec                    |             dbus_message_get_signature ();
                                             |         }
    0x00021be0 ldr r0, [r4, 0x10]            |         r0 = *((r4 + 0x10));
                                             |         if (r0 != 0) {
    0x00021be2 cbz r0, 0x21be8               |             
    0x00021be4 blx 0xafec                    |             dbus_message_get_signature ();
                                             |         }
    0x00021be8 ldr r0, [r4, 0x14]            |         r0 = *((r4 + 0x14));
                                             |         if (r0 != 0) {
    0x00021bea cbz r0, 0x21bf0               |             
    0x00021bec blx 0xa898                    |             fcn_0000a898 ();
                                             |         }
    0x00021bf0 mov r0, r4                    |         r0 = r4;
    0x00021bf2 add sp, 0xc                   |         
    0x00021bf4 pop.w {r4, r5, lr}            |         
    0x00021bf8 b.w 0xa0f8                    |         void (*0xa0f8)() ();
                                             |     }
    0x00021bfc add sp, 0xc                   |     
    0x00021bfe pop {r4, r5, pc}              |     
                                             | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x14bfc */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.bus_transaction_cancel_and_free ()                   | void bus_transaction_cancel_and_free (int16_t arg_8h, int16_t arg_20h, int16_t arg_24h, int16_t arg1) {
                                                                     |     int16_t var_0h_2;
                                                                     |     r0 = arg1;
    0x00014bfc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00014c00 mov r6, r0                                            |     r6 = r0;
    0x00014c02 ldr.w sb, [pc, 0xf8]                                  |     
    0x00014c06 sub sp, 0xc                                           |     
    0x00014c08 ldr.w sl, [pc, 0xf4]                                  |     sl = *(0x00014d00);
    0x00014c0c add sb, pc                                            |     
    0x00014c0e add.w sb, sb, 0x458                                   |     sb = 0x29d66;
    0x00014c12 add sl, pc                                            |     sl += pc;
                                                                     |     do {
                                                                     | label_0:
    0x00014c14 mov r0, r6                                            |         r0 = r6;
    0x00014c16 blx 0xa168                                            |         fcn_0000a168 ();
    0x00014c18 invalid                                               |         
    0x00014c1c cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x00014c1e beq 0x14cac                                           |             goto label_3;
                                                                     |         }
    0x00014c20 ldr.w r1, [sl]                                        |         r1 = *(sl);
    0x00014c24 blx 0xaca4                                            |         stack_chk_fail ();
    0x00014c28 ldr r2, [pc, 0xd8]                                    |         
    0x00014c2a mov r5, r0                                            |         r5 = r0;
    0x00014c2c ldr r1, [pc, 0xd8]                                    |         
    0x00014c2e subs r0, 0                                            |         
    0x00014c30 it ne                                                 |         
                                                                     |         if (r0 == 0) {
    0x00014c32 movne r0, 1                                           |             r0 = 1;
                                                                     |         }
    0x00014c34 movw r3, 0x9f3                                        |         r3 = 0x9f3;
    0x00014c38 add r2, pc                                            |         r2 = 0x29940;
    0x00014c3a add.w r8, r5, 0x20                                    |         r8 = r5 + 0x20;
    0x00014c3e add r1, pc                                            |         r1 = 0x2994a;
    0x00014c40 str.w sb, [sp]                                        |         __asm ("str.w sb, [sp]");
    0x00014c44 blx 0xae50                                            |         fcn_0000ae50 ();
    0x00014c48 mov r0, r8                                            |         r0 = r8;
    0x00014c4a blx 0xaa18                                            |         r0 = fcn_0000aa18 ();
    0x00014c4e mov r1, r0                                            |         r1 = r0;
    0x00014c50 cmp r0, 0                                             |         
    0x00014c52 beq 0x14c14                                           |         
                                                                     |     } while (r0 == 0);
    0x00014c54 ldrd r4, fp, [r1, 4]                                  |     __asm ("ldrd r4, fp, [r1, 4]");
    0x00014c58 ldr r3, [r5, 0x20]                                    |     r3 = *((r5 + 0x20));
    0x00014c5a ldr.w r2, [fp]                                        |     r2 = *(fp);
    0x00014c5e cmp r4, r3                                            |     
                                                                     |     if (r4 == r3) {
    0x00014c60 beq 0x14c7c                                           |         goto label_4;
                                                                     |     }
                                                                     | label_1:
    0x00014c62 cmp r6, r2                                            |     
    0x00014c64 it ne                                                 |     
                                                                     |     if (r6 == r2) {
    0x00014c66 movne r1, r4                                          |         r1 = r4;
                                                                     |     }
                                                                     |     if (r6 == r2) {
    0x00014c68 beq 0x14c82                                           |         goto label_5;
                                                                     |     }
    0x00014c6a cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x00014c6c beq 0x14c14                                           |         goto label_0;
                                                                     |     }
                                                                     | label_2:
    0x00014c6e ldrd r4, fp, [r1, 4]                                  |     __asm ("ldrd r4, fp, [r1, 4]");
    0x00014c72 ldr r3, [r5, 0x20]                                    |     r3 = *((r5 + 0x20));
    0x00014c74 ldr.w r2, [fp]                                        |     r2 = *(fp);
    0x00014c78 cmp r4, r3                                            |     
                                                                     |     if (r4 != r3) {
    0x00014c7a bne 0x14c62                                           |         goto label_1;
                                                                     |     }
                                                                     | label_4:
    0x00014c7c cmp r6, r2                                            |     
                                                                     |     if (r6 != r2) {
    0x00014c7e bne 0x14c14                                           |         goto label_0;
                                                                     |     }
    0x00014c80 movs r4, 0                                            |     r4 = 0;
                                                                     | label_5:
    0x00014c82 mov r0, r8                                            |     r0 = r8;
    0x00014c84 blx 0x9ff4                                            |     fcn_00009ff4 ();
    0x00014c88 ldr.w r0, [fp, 4]                                     |     r0 = *(arg_24h);
                                                                     |     if (r0 != 0) {
    0x00014c8c cbz r0, 0x14c92                                       |         
    0x00014c8e blx 0xa8e8                                            |         fcn_0000a8e8 ();
                                                                     |     }
    0x00014c92 ldr.w r1, [fp, 8]                                     |     r1 = *(arg_8h);
                                                                     |     if (r1 != 0) {
    0x00014c96 cbz r1, 0x14c9e                                       |         
    0x00014c98 mov r0, r7                                            |         r0 = r7;
    0x00014c9a blx 0xabc4                                            |         fcn_0000abc4 ();
    0x00014c9c invalid                                               |         
                                                                     |     }
    0x00014c9e mov r0, fp                                            |     r0 = fp;
    0x00014ca0 blx 0xa0fc                                            |     fcn_0000a0fc ();
    0x00014ca4 mov r1, r4                                            |     r1 = r4;
    0x00014ca6 cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x00014ca8 bne 0x14c6e                                           |         goto label_2;
                                                                     |     }
    0x00014caa b 0x14c14                                             |     goto label_0;
                                                                     | label_3:
    0x00014cac ldr r1, [pc, 0x5c]                                    |     
    0x00014cae add.w r4, r6, 8                                       |     r4 = r6 + 8;
    0x00014cb2 mov r2, r0                                            |     r2 = r0;
    0x00014cb4 mov r0, r4                                            |     r0 = r4;
    0x00014cb6 add r1, pc                                            |     r1 = 0x299c6;
    0x00014cb8 blx 0xac30                                            |     fcn_0000ac30 ();
    0x00014cbc ldr r3, [pc, 0x50]                                    |     
    0x00014cbe ldr r0, [r6]                                          |     r0 = *(r6);
    0x00014cc0 ldr r1, [pc, 0x50]                                    |     
    0x00014cc2 ldr r2, [pc, 0x54]                                    |     
    0x00014cc4 add r3, pc                                            |     
    0x00014cc6 add.w r3, r3, 0x478                                   |     r3 = 0x29e50;
    0x00014cca clz r0, r0                                            |     r0 &= r0;
    0x00014cce str r3, [sp]                                          |     *(sp) = r3;
    0x00014cd0 lsrs r0, r0, 5                                        |     r0 >>= 5;
    0x00014cd2 movw r3, 0x9e4                                        |     r3 = 0x9e4;
    0x00014cd6 add r1, pc                                            |     r1 = 0x299ee;
    0x00014cd8 add r2, pc                                            |     r2 = 0x299f6;
    0x00014cda blx 0xae50                                            |     fcn_0000ae50 ();
    0x00014cde ldr r1, [pc, 0x3c]                                    |     
    0x00014ce0 mov r2, r7                                            |     r2 = r7;
    0x00014ce2 mov r0, r4                                            |     r0 = r4;
    0x00014ce4 add r1, pc                                            |     r1 = 0x29a06;
    0x00014ce6 blx 0xac30                                            |     fcn_0000ac30 ();
    0x00014cea mov r0, r4                                            |     r0 = r4;
    0x00014cec blx 0xa588                                            |     fcn_0000a588 ();
    0x00014cf0 mov r0, r6                                            |     r0 = r6;
    0x00014cf2 add sp, 0xc                                           |     
    0x00014cf4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}            |     
    0x00014cf8 b.w 0xa0f8                                            |     return void (*0xa0f8)() ();
                                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-daemon @ 0x14d20 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.bus_transaction_execute_and_free ()              | void bus_transaction_execute_and_free (int16_t arg_48ch, int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
    0x00014d20 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00014d24 mov r7, r0                                        |     r7 = r0;
    0x00014d26 ldr r3, [pc, 0x128]                               |     
    0x00014d28 sub sp, 0x14                                      |     
    0x00014d2a ldr.w fp, [pc, 0x128]                             |     fp = *(0x00014e54);
    0x00014d2e ldr r5, [pc, 0x128]                               |     
    0x00014d30 add r3, pc                                        |     r3 = 0x29b86;
    0x00014d32 addw r4, r3, 0x48c                                |     __asm ("addw r4, r3, 0x48c");
    0x00014d36 add fp, pc                                        |     
    0x00014d38 add r5, pc                                        |     r5 = 0x29b96;
    0x00014d3a addw r3, fp, 0x48c                                |     __asm ("addw r3, arg_48ch");
    0x00014d3e str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 |     do {
    0x00014d40 mov r0, r7                                        |         r0 = r7;
    0x00014d42 blx 0xa168                                        |         r0 = fcn_0000a168 ();
    0x00014d46 mov r8, r0                                        |         r8 = r0;
    0x00014d48 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00014d4a beq 0x14db0                                       |             goto label_3;
                                                                 |         }
                                                                 | label_0:
    0x00014d4c ldr r1, [r5]                                      |         r1 = *(r5);
    0x00014d4e blx 0xaca4                                        |         stack_chk_fail ();
    0x00014d52 ldr r2, [pc, 0x108]                               |         
    0x00014d54 mov sb, r0                                        |         sb = r0;
    0x00014d56 ldr r1, [pc, 0x108]                               |         
    0x00014d58 subs r0, 0                                        |         
    0x00014d5a it ne                                             |         
                                                                 |         if (r0 == 0) {
    0x00014d5c movne r0, 1                                       |             r0 = 1;
                                                                 |         }
    0x00014d5e movw r3, 0xa1f                                    |         r3 = 0xa1f;
    0x00014d62 add r2, pc                                        |         r2 = 0x29bc4;
    0x00014d64 add.w sl, sb, 0x20                                |         sl = sb + 0x20;
    0x00014d68 add r1, pc                                        |         r1 = 0x29bce;
    0x00014d6a str r4, [sp]                                      |         *(sp) = r4;
    0x00014d6c blx 0xae50                                        |         fcn_0000ae50 ();
    0x00014d70 mov r0, sl                                        |         r0 = sl;
    0x00014d72 blx 0xad04                                        |         r0 = dbus_auth_is_supported_mechanism ();
    0x00014d76 mov r1, r0                                        |         r1 = r0;
    0x00014d78 cmp r0, 0                                         |         
    0x00014d7a beq 0x14d40                                       |         
                                                                 |     } while (r0 == 0);
    0x00014d7c ldr.w fp, [pc, 0xe4]                              |     fp = *(0x00014e64);
    0x00014d80 str.w sl, [sp, 8]                                 |     __asm ("str.w sl, [var_8h]");
    0x00014d84 mov sl, r4                                        |     sl = r4;
    0x00014d86 add fp, pc                                        |     
                                                                 |     do {
                                                                 | label_2:
    0x00014d88 ldr.w r2, [sb, 0x20]                              |         r2 = *((sb + 0x20));
    0x00014d8c ldr r6, [r1, 8]                                   |         r6 = *((r1 + 8));
    0x00014d8e cmp r2, r1                                        |         
    0x00014d90 ldr r3, [r6]                                      |         r3 = *(r6);
                                                                 |         if (r2 == r1) {
    0x00014d92 beq 0x14df4                                       |             goto label_4;
                                                                 |         }
    0x00014d94 ldr r4, [r1]                                      |         r4 = *(r1);
    0x00014d96 cmp r7, r3                                        |         
    0x00014d98 it ne                                             |         
                                                                 |         if (r7 == r3) {
    0x00014d9a movne r1, r4                                      |             r1 = r4;
                                                                 |         }
                                                                 |         if (r7 == r3) {
    0x00014d9c beq 0x14dfa                                       |             goto label_5;
                                                                 |         }
    0x00014d9e cmp r4, 0                                         |         
    0x00014da0 bne 0x14d88                                       |         
                                                                 |     } while (r4 != 0);
                                                                 | label_1:
    0x00014da2 mov r0, r7                                        |     r0 = r7;
    0x00014da4 mov r4, sl                                        |     r4 = sl;
    0x00014da6 blx 0xa168                                        |     r0 = fcn_0000a168 ();
    0x00014daa mov r8, r0                                        |     r8 = r0;
    0x00014dac cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00014dae bne 0x14d4c                                       |         goto label_0;
                                                                 |     }
                                                                 | label_3:
    0x00014db0 mov r4, r7                                        |     r4 = r7;
    0x00014db2 ldr r3, [pc, 0xb4]                                |     
    0x00014db4 ldr r0, [r4], 8                                   |     r0 = *(r4);
                                                                 |     r4 += 8;
    0x00014db8 ldr r1, [pc, 0xb0]                                |     
    0x00014dba ldr r2, [pc, 0xb4]                                |     
    0x00014dbc add r3, pc                                        |     
    0x00014dbe add.w r3, r3, 0x478                               |     r3 = 0x2a0a2;
    0x00014dc2 clz r0, r0                                        |     r0 &= r0;
    0x00014dc6 str r3, [sp]                                      |     *(sp) = r3;
    0x00014dc8 lsrs r0, r0, 5                                    |     r0 >>= 5;
    0x00014dca movw r3, 0x9e4                                    |     r3 = 0x9e4;
    0x00014dce add r1, pc                                        |     r1 = 0x29c3e;
    0x00014dd0 add r2, pc                                        |     r2 = 0x29c46;
    0x00014dd2 blx 0xae50                                        |     fcn_0000ae50 ();
    0x00014dd6 ldr r1, [pc, 0x9c]                                |     
    0x00014dd8 mov r2, r8                                        |     r2 = r8;
    0x00014dda mov r0, r4                                        |     r0 = r4;
    0x00014ddc add r1, pc                                        |     r1 = 0x29c56;
    0x00014dde blx 0xac30                                        |     fcn_0000ac30 ();
    0x00014de2 mov r0, r4                                        |     r0 = r4;
    0x00014de4 blx 0xa588                                        |     fcn_0000a588 ();
    0x00014de8 mov r0, r7                                        |     r0 = r7;
    0x00014dea add sp, 0x14                                      |     
    0x00014dec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00014df0 b.w 0xa0f8                                        |     void (*0xa0f8)() ();
                                                                 | label_4:
    0x00014df4 cmp r7, r3                                        |     
                                                                 |     if (r7 != r3) {
    0x00014df6 bne 0x14da2                                       |         goto label_1;
                                                                 |     }
    0x00014df8 movs r4, 0                                        |     r4 = 0;
                                                                 | label_5:
    0x00014dfa ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00014dfc blx 0x9ff4                                        |     fcn_00009ff4 ();
    0x00014e00 ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
    0x00014e02 blx 0xa1bc                                        |     fcn_0000a1bc ();
    0x00014e06 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00014e08 subs r0, 0                                        |     
    0x00014e0a it ne                                             |     
                                                                 |     if (r0 == 0) {
    0x00014e0c movne r0, 1                                       |         r0 = 1;
                                                                 |     }
    0x00014e0e movw r3, 0xa2d                                    |     r3 = 0xa2d;
    0x00014e10 movs r3, 0x2d                                     |     r3 = 0x2d;
    0x00014e12 mov r2, fp                                        |     r2 = fp;
    0x00014e14 str r1, [sp]                                      |     *(sp) = r1;
    0x00014e16 ldr r1, [pc, 0x60]                                |     
    0x00014e18 add r1, pc                                        |     r1 = 0x29c96;
    0x00014e1a blx 0xae50                                        |     fcn_0000ae50 ();
    0x00014e1e movs r3, 0                                        |     r3 = 0;
    0x00014e20 mov r0, r8                                        |     r0 = r8;
    0x00014e22 ldrd r2, r1, [r6, 4]                              |     __asm ("ldrd r2, r1, [r6, 4]");
    0x00014e26 blx 0xa05c                                        |     dbus_bus_set_unique_name ();
    0x00014e2a ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
    0x00014e2c movs r3, 0                                        |     r3 = 0;
    0x00014e2e str r3, [r6, 8]                                   |     *((r6 + 8)) = r3;
                                                                 |     if (r0 != 0) {
    0x00014e30 cbz r0, 0x14e40                                   |         
    0x00014e32 blx 0xa8e8                                        |         fcn_0000a8e8 ();
    0x00014e36 ldr r1, [r6, 8]                                   |         r1 = *((r6 + 8));
                                                                 |         if (r1 == 0) {
    0x00014e38 cbz r1, 0x14e40                                   |             goto label_6;
                                                                 |         }
    0x00014e3a mov r0, r8                                        |         r0 = r8;
    0x00014e3c blx 0xabc4                                        |         fcn_0000abc4 ();
                                                                 |     }
                                                                 | label_6:
    0x00014e40 mov r0, r6                                        |     r0 = r6;
    0x00014e42 blx 0xa0fc                                        |     fcn_0000a0fc ();
    0x00014e46 mov r1, r4                                        |     r1 = r4;
    0x00014e48 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00014e4a bne 0x14d88                                       |         goto label_2;
                                                                 |     }
    0x00014e4c b 0x14da2                                         |     goto label_1;
                                                                 | }

[*] Function printf used 1 times dbus-daemon