[*] Binary protection state of dbus-run-session

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


[*] Function fprintf tear down of dbus-run-session

    ; 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-run-session @ 0x13ec */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000013ec ()                                  | void fcn_000013ec (int16_t arg_10h, int16_t arg_28h, int16_t arg_30h, int16_t arg_44h, int16_t arg_294h) {
                                                             |     int16_t var_0h;
                                                             | label_1:
    0x00000da6 movs r0, 0x7f                                 |     r0 = 0x7f;
                                                             | label_3:
    0x00000da8 ldr.w r2, [pc, 0x530]                         |     r2 = *(0x000012dc);
    0x00000dac ldr.w r3, [pc, 0x4f4]                         |     r3 = *(0x12a4);
    0x00000db0 add r2, pc                                    |     r2 += pc;
    0x00000db2 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00000db4 ldr r2, [r3]                                  |     r2 = *(0x12a4);
    0x00000db6 ldr r3, [sp, 0x294]                           |     r3 = *(arg_294h);
    0x00000db8 eors r2, r3                                   |     r2 ^= r3;
    0x00000dba mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x00000dbe bne.w 0x11d8                                  |         goto label_5;
                                                             |     }
    0x00000dc2 add.w sp, sp, 0x29c                           |     
    0x00000dc6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             |     if (r2 == r3) {
                                                             | label_4:
    0x00000f30 beq.w 0x1284                                  |         goto label_6;
                                                             |     }
    0x00000f34 ldr r0, [pc, 0x3cc]                           |     
    0x00000f36 movs r1, 0                                    |     r1 = 0;
    0x00000f38 add r0, pc                                    |     r0 = 0x2240;
    0x00000f3a blx 0xae0                                     |     r0 = dbus_setenv ();
    0x00000f3e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00000f40 beq.w 0x1284                                  |         goto label_6;
                                                             |     }
    0x00000f44 ldr r3, [sp, 0x10]                            |     r3 = *(arg_10h);
    0x00000f46 ldr r0, [r3]                                  |     r0 = *(r3);
    0x00000f48 blx 0xb4c                                     |     fflush (r0);
    0x00000f4c ldr.w r0, [sl]                                |     r0 = *(sl);
    0x00000f50 blx 0xb4c                                     |     r0 = fflush (r0);
    0x00000f54 blx 0xba0                                     |     r0 = fork ();
    0x00000f58 subs r6, r0, 0                                |     r6 = r0 - 0;
                                                             |     if (r6 < r0) {
    0x00000f5a blt.w 0x119a                                  |         goto label_7;
                                                             |     }
                                                             |     if (r6 == r0) {
    0x00000f5e beq.w 0x1248                                  |         goto label_8;
                                                             |     }
    0x00000f62 ldr r7, [pc, 0x3a4]                           |     
    0x00000f64 add r4, sp, 0x44                              |     r4 += arg_44h;
    0x00000f66 ldr r5, [pc, 0x3a4]                           |     
    0x00000f68 add r7, pc                                    |     r7 = 0x2276;
    0x00000f6a add r5, pc                                    |     r5 = 0x227c;
                                                             |     do {
                                                             | label_0:
    0x00000f6c movs r2, 0                                    |         r2 = 0;
    0x00000f6e mov r1, r4                                    |         r1 = r4;
    0x00000f70 mov.w r0, -1                                  |         r0 = -1;
    0x00000f74 blx 0xb64                                     |         r0 = waitpid ();
    0x00000f78 adds r3, r0, 1                                |         r3 = r0 + 1;
                                                             |         if (r3 == r0) {
    0x00000f7a beq 0xfaa                                     |             goto label_9;
                                                             |         }
    0x00000f7c cmp r0, r8                                    |         
                                                             |         if (r0 == r8) {
    0x00000f7e beq 0xffa                                     |             goto label_10;
                                                             |         }
    0x00000f80 cmp r6, r0                                    |         
                                                             |         if (r6 == r0) {
    0x00000f82 beq.w 0x117e                                  |             goto label_11;
                                                             |         }
    0x00000f86 str r0, [sp]                                  |         *(sp) = r0;
    0x00000f88 mov r3, r7                                    |         r3 = r7;
    0x00000f8a ldr.w r0, [sl]                                |         r0 = *(sl);
    0x00000f8e mov r2, r5                                    |         r2 = r5;
    0x00000f90 movs r1, 1                                    |         r1 = 1;
    0x00000f92 blx 0xb94                                     |         fprintf_chk ()
    0x00000f96 b 0xf6c                                       |         
                                                             |     } while (1);
                                                             | label_9:
    0x00000faa blx 0xc00                                     |     r0 = errno_location ();
    0x00000fae ldr r0, [r0]                                  |     r0 = *(r0);
    0x00000fb0 cmp r0, 4                                     |     
                                                             |     if (r0 == 4) {
    0x00000fb2 beq 0xf6c                                     |         goto label_0;
                                                             |     }
    0x00000fb4 ldr.w r5, [sl]                                |     r5 = *(sl);
    0x00000fb8 blx 0xac8                                     |     strerror (r0);
    0x00000fbc ldr r3, [pc, 0x350]                           |     
    0x00000fbe mov r4, r0                                    |     r4 = r0;
    0x00000fc0 ldr r2, [pc, 0x350]                           |     
    0x00000fc2 movs r1, 1                                    |     r1 = 1;
    0x00000fc4 mov r0, r5                                    |     r0 = r5;
    0x00000fc6 str r4, [sp]                                  |     *(sp) = r4;
    0x00000fc8 add r3, pc                                    |     r3 = 0x22dc;
    0x00000fca add r2, pc                                    |     r2 = 0x22e2;
    0x00000fcc blx 0xb94                                     |     fprintf_chk ()
    0x00000fd0 b 0xda6                                       |     goto label_1;
                                                             | label_10:
    0x00000ffa ldr r3, [r4]                                  |     r3 = *(r4);
    0x00000ffc ldr.w r0, [sl]                                |     r0 = *(sl);
    0x00001000 ands r2, r3, 0x7f                             |     r2 = r3 & 0x7f;
                                                             |     if (r2 == r3) {
    0x00001004 beq.w 0x111c                                  |         goto label_12;
                                                             |     }
    0x00001008 adds r3, r2, 1                                |     r3 = r2 + 1;
    0x0000100a sbfx r3, r3, 1, 7                             |     __asm ("sbfx r3, r3, 1, 7");
    0x0000100e cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x00001010 ble.w 0x1132                                  |         goto label_13;
                                                             |     }
    0x00001014 ldr r3, [pc, 0x304]                           |     
    0x00001016 movs r1, 1                                    |     r1 = 1;
    0x00001018 str r2, [sp]                                  |     *(sp) = r2;
    0x0000101a ldr r2, [pc, 0x304]                           |     
    0x0000101c add r3, pc                                    |     r3 = 0x233c;
    0x0000101e add r2, pc                                    |     r2 = 0x2344;
    0x00001020 blx 0xb94                                     |     fprintf_chk ()
                                                             |     do {
                                                             | label_2:
    0x00001024 mov.w r8, 0                                   |         r8 = 0;
    0x00001028 b 0xf6c                                       |         goto label_0;
                                                             | label_12:
    0x0000111c ubfx r3, r3, 8, 8                             |         r3 = (r3 >> 8) & ((1 << 8) - 1);
    0x00001120 ldr r2, [pc, 0x238]                           |         
    0x00001122 str r3, [sp]                                  |         *(sp) = r3;
    0x00001124 movs r1, 1                                    |         r1 = 1;
    0x00001126 ldr r3, [pc, 0x238]                           |         
    0x00001128 add r2, pc                                    |         r2 = 0x2488;
    0x0000112a add r3, pc                                    |         r3 = 0x2490;
    0x0000112c blx 0xb94                                     |         fprintf_chk ()
    0x00001130 b 0x1024                                      |         
                                                             |     } while (1);
                                                             | label_13:
    0x00001132 ldr r3, [pc, 0x230]                           |     
    0x00001134 movs r1, 1                                    |     r1 = 1;
    0x00001136 ldr r2, [pc, 0x230]                           |     
    0x00001138 add r3, pc                                    |     r3 = 0x24a2;
    0x0000113a add r2, pc                                    |     r2 = 0x24a8;
    0x0000113c blx 0xb94                                     |     fprintf_chk ()
    0x00001140 b 0x1024                                      |     goto label_2;
                                                             | label_11:
    0x0000117e cmp.w r8, 0                                   |     
    0x00001182 bne 0x1210                                    |     
                                                             |     while (1) {
    0x00001184 ldr r3, [r4]                                  |         r3 = *(r4);
    0x00001186 ands r0, r3, 0x7f                             |         r0 = r3 & 0x7f;
                                                             |         if (r0 != r3) {
    0x0000118a beq 0x120a                                    |             
    0x0000118c adds r3, r0, 1                                |             r3 = r0 + 1;
    0x0000118e sbfx r3, r3, 1, 7                             |             __asm ("sbfx r3, r3, 1, 7");
    0x00001192 cmp r3, 0                                     |             
                                                             |             if (r3 > 0) {
    0x00001194 ble 0x11f6                                    |                 
    0x00001196 adds r0, 0x80                                 |                 r0 += 0x80;
    0x00001198 b 0xda8                                       |                 goto label_3;
                                                             | label_7:
    0x0000119a blx 0xc00                                     |                 r0 = errno_location ();
    0x0000119e ldr r0, [r0]                                  |                 r0 = *(r0);
    0x000011a0 ldr.w r5, [sl]                                |                 r5 = *(sl);
    0x000011a4 blx 0xac8                                     |                 strerror (r0);
    0x000011a8 ldr r3, [pc, 0x1d0]                           |                 
    0x000011aa mov r4, r0                                    |                 r4 = r0;
    0x000011ac ldr r2, [pc, 0x1d0]                           |                 
    0x000011ae movs r1, 1                                    |                 r1 = 1;
    0x000011b0 mov r0, r5                                    |                 r0 = r5;
    0x000011b2 str r4, [sp]                                  |                 *(sp) = r4;
    0x000011b4 add r3, pc                                    |                 r3 = 0x2534;
    0x000011b6 add r2, pc                                    |                 r2 = 0x253a;
    0x000011b8 blx 0xb94                                     |                 fprintf_chk ()
    0x000011bc b 0xda6                                       |                 goto label_1;
                                                             | label_5:
    0x000011d8 blx 0xb88                                     |                 stack_chk_fail ();
    0x000011dc ldr r1, [pc, 0xec]                            |                 r1 = *(0x12cc);
    0x000011de ldr r0, [sp, 0x28]                            |                 r0 = *(arg_28h);
    0x000011e0 ldr r3, [pc, 0x1ac]                           |                 
    0x000011e2 ldr r2, [pc, 0x1b0]                           |                 
    0x000011e4 ldr r0, [r0, r1]                              |                 r0 = *((r0 + r1));
    0x000011e6 movs r1, 1                                    |                 r1 = 1;
    0x000011e8 str r4, [sp]                                  |                 *(sp) = r4;
    0x000011ea add r3, pc                                    |                 r3 = 0x257e;
    0x000011ec add r2, pc                                    |                 r2 = 0x2586;
    0x000011ee ldr r0, [r0]                                  |                 r0 = *(r0);
    0x000011f0 blx 0xb94                                     |                 fprintf_chk ()
    0x000011f4 b 0xda6                                       |                 goto label_1;
                                                             |             }
    0x000011f6 ldr r3, [pc, 0x1a0]                           |             
    0x000011f8 movs r1, 1                                    |             r1 = 1;
    0x000011fa ldr r2, [pc, 0x1a0]                           |             
    0x000011fc ldr.w r0, [sl]                                |             r0 = *(sl);
    0x00001200 add r3, pc                                    |             r3 = 0x259e;
    0x00001202 add r2, pc                                    |             r2 = 0x25a4;
    0x00001204 blx 0xb94                                     |             fprintf_chk ()
    0x00001208 b 0xda6                                       |             goto label_1;
                                                             |         }
    0x0000120a ubfx r0, r3, 8, 8                             |         r0 = (r3 >> 8) & ((1 << 8) - 1);
    0x0000120e b 0xda8                                       |         goto label_3;
    0x00001210 movs r1, 0xf                                  |         r1 = 0xf;
    0x00001212 mov r0, r8                                    |         r0 = r8;
    0x00001214 blx 0xbc4                                     |         kill (r0, r1);
    0x00001218 b 0x1184                                      |         
                                                             |     }
                                                             | label_8:
    0x00001248 ldr r4, [sp, 0x30]                            |     r4 = *(arg_30h);
    0x0000124a ldr.w r0, [r4, r5, lsl 2]                     |     offset_0 = r5 << 2;
                                                             |     r0 = *((r4 + offset_0));
    0x0000124e add.w r1, r4, r5, lsl 2                       |     r1 = r4 + (r5 << 2);
    0x00001252 blx 0xb1c                                     |     execvp ();
    0x00001256 blx 0xc00                                     |     r0 = errno_location ();
    0x0000125a ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000125c ldr.w r6, [sl]                                |     r6 = *(sl);
    0x00001260 ldr.w r4, [r4, r5, lsl 2]                     |     offset_1 = r5 << 2;
                                                             |     r4 = *((r4 + offset_1));
    0x00001264 blx 0xac8                                     |     strerror (r0);
    0x00001268 ldr r3, [pc, 0x13c]                           |     
    0x0000126a mov r1, r0                                    |     r1 = r0;
    0x0000126c ldr r2, [pc, 0x13c]                           |     
    0x0000126e mov r0, r6                                    |     r0 = r6;
    0x00001270 strd r4, r1, [sp]                             |     __asm ("strd r4, r1, [sp]");
    0x00001274 movs r1, 1                                    |     r1 = 1;
    0x00001276 add r3, pc                                    |     r3 = 0x2622;
    0x00001278 add r2, pc                                    |     r2 = 0x2628;
    0x0000127a blx 0xb94                                     |     fprintf_chk ()
    0x0000127e movs r0, 1                                    |     r0 = 1;
    0x00001280 blx 0xbf4                                     |     exit (r0);
                                                             | label_6:
    0x00001284 ldr r3, [pc, 0x128]                           |     
    0x00001286 movs r1, 1                                    |     r1 = 1;
    0x00001288 ldr r2, [pc, 0x128]                           |     
    0x0000128a ldr.w r0, [sl]                                |     r0 = *(sl);
    0x0000128e add r3, pc                                    |     r3 = 0x2642;
    0x00001290 add r2, pc                                    |     r2 = 0x2648;
    0x00001292 blx 0xb94                                     |     fprintf_chk ()
    0x00001296 movs r0, 1                                    |     r0 = 1;
    0x00001298 blx 0xbf4                                     |     exit (r0);
    0x0000129c movs r3, 0x36                                 |     r3 = 0x36;
    0x0000129e movs r0, r0                                   |     
    0x000012a0 movs r3, 0x28                                 |     r3 = 0x28;
    0x000012a2 movs r0, r0                                   |     
    0x000012a4 lsls r0, r1, 2                                |     r0 = r1 << 2;
    0x000012a6 movs r0, r0                                   |     
    0x000012a8 lsrs r4, r3, 8                                |     r4 = r3 >> 8;
    0x000012aa movs r0, r0                                   |     
    0x000012ac lsrs r0, r5, 0xb                              |     r0 = r5 >> 0xb;
    0x000012ae movs r0, r0                                   |     
    0x000012b0 lsrs r4, r5, 0x10                             |     r4 = r5 >> 0x10;
    0x000012b2 movs r0, r0                                   |     
    0x000012b4 lsrs r4, r2, 0x11                             |     r4 = r2 >> 0x11;
    0x000012b6 movs r0, r0                                   |     
    0x000012b8 lsrs r4, r4, 5                                |     r4 >>= 5;
    0x000012ba movs r0, r0                                   |     
    0x000012bc lsrs r4, r3, 5                                |     r4 = r3 >> 5;
    0x000012be movs r0, r0                                   |     
    0x000012c0 lsrs r0, r3, 6                                |     r0 = r3 >> 6;
    0x000012c2 movs r0, r0                                   |     
    0x000012c4 lsrs r0, r2, 0x1b                             |     r0 = r2 >> 0x1b;
    0x000012c6 movs r0, r0                                   |     
    0x000012c8 lsrs r6, r4, 4                                |     r6 = r4 >> 4;
    0x000012ca movs r0, r0                                   |     
    0x000012cc lsls r0, r2, 2                                |     r0 = r2 << 2;
    0x000012ce movs r0, r0                                   |     
    0x000012d0 lsrs r0, r2, 3                                |     r0 = r2 >> 3;
    0x000012d2 movs r0, r0                                   |     
    0x000012d4 lsrs r0, r5, 0x18                             |     r0 = r5 >> 0x18;
    0x000012d6 movs r0, r0                                   |     
    0x000012d8 lsrs r6, r4, 3                                |     r6 = r4 >> 3;
    0x000012da movs r0, r0                                   |     
    0x000012dc movs r1, 0xb0                                 |     r1 = 0xb0;
    0x000012de movs r0, r0                                   |     
    0x000012e0 lsrs r0, r6, 0x16                             |     r0 = r6 >> 0x16;
    0x000012e2 movs r0, r0                                   |     
    0x000012e4 lsrs r6, r7, 0x20                             |     r6 = r7 >> 0x20;
    0x000012e6 movs r0, r0                                   |     
    0x000012e8 lsrs r6, r3, 0x16                             |     r6 = r3 >> 0x16;
    0x000012ea movs r0, r0                                   |     
    0x000012ec lsrs r0, r4, 0xa                              |     r0 = r4 >> 0xa;
    0x000012ee movs r0, r0                                   |     
    0x000012f0 lsls r4, r1, 2                                |     r4 = r1 << 2;
    0x000012f2 movs r0, r0                                   |     
    0x000012f4 lsrs r4, r5, 0xc                              |     r4 = r5 >> 0xc;
    0x000012f6 movs r0, r0                                   |     
    0x000012f8 lsrs r4, r1, 0xd                              |     r4 = r1 >> 0xd;
    0x000012fa movs r0, r0                                   |     
    0x000012fc lsrs r4, r2, 0xd                              |     r4 = r2 >> 0xd;
    0x000012fe movs r0, r0                                   |     
    0x00001300 lsrs r0, r4, 0xd                              |     r0 = r4 >> 0xd;
    0x00001302 movs r0, r0                                   |     
    0x00001304 lsrs r0, r5, 0xd                              |     r0 = r5 >> 0xd;
    0x00001306 movs r0, r0                                   |     
    0x00001308 lsrs r4, r2, 0x11                             |     r4 = r2 >> 0x11;
    0x0000130a movs r0, r0                                   |     
    0x0000130c lsrs r2, r5, 0x10                             |     r2 = r5 >> 0x10;
    0x0000130e movs r0, r0                                   |     
    0x00001310 lsrs r4, r6, 0xf                              |     r4 = r6 >> 0xf;
    0x00001312 movs r0, r0                                   |     
    0x00001314 lsrs r6, r1, 0xc                              |     r6 = r1 >> 0xc;
    0x00001316 movs r0, r0                                   |     
    0x00001318 lsrs r6, r7, 4                                |     r6 = r7 >> 4;
    0x0000131a movs r0, r0                                   |     
    0x0000131c lsrs r0, r4, 0xe                              |     r0 = r4 >> 0xe;
    0x0000131e movs r0, r0                                   |     
    0x00001320 lsrs r6, r7, 0xb                              |     r6 = r7 >> 0xb;
    0x00001322 movs r0, r0                                   |     
    0x00001324 lsrs r0, r7, 0xd                              |     r0 = r7 >> 0xd;
    0x00001326 movs r0, r0                                   |     
    0x00001328 lsrs r6, r5, 6                                |     r6 = r5 >> 6;
    0x0000132a movs r0, r0                                   |     
    0x0000132c lsrs r2, r0, 4                                |     r2 = r0 >> 4;
    0x0000132e movs r0, r0                                   |     
    0x00001330 lsls r2, r7, 0x15                             |     r2 = r7 << 0x15;
    0x00001332 movs r0, r0                                   |     
    0x00001334 lsrs r0, r5, 3                                |     r0 = r5 >> 3;
    0x00001336 movs r0, r0                                   |     
    0x00001338 lsrs r4, r6, 3                                |     r4 = r6 >> 3;
    0x0000133a movs r0, r0                                   |     
    0x0000133c lsrs r6, r0, 0xc                              |     r6 = r0 >> 0xc;
    0x0000133e movs r0, r0                                   |     
    0x00001340 lsrs r4, r3, 3                                |     r4 = r3 >> 3;
    0x00001342 movs r0, r0                                   |     
    0x00001344 lsrs r6, r3, 0xb                              |     r6 = r3 >> 0xb;
    0x00001346 movs r0, r0                                   |     
    0x00001348 lsrs r4, r3, 1                                |     r4 = r3 >> 1;
    0x0000134a movs r0, r0                                   |     
    0x0000134c lsrs r2, r1, 0xb                              |     r2 = r1 >> 0xb;
    0x0000134e movs r0, r0                                   |     
    0x00001350 lsls r4, r7, 0x1f                             |     r4 = r7 << 0x1f;
    0x00001352 movs r0, r0                                   |     
    0x00001354 lsrs r2, r5, 0xa                              |     r2 = r5 >> 0xa;
    0x00001356 movs r0, r0                                   |     
    0x00001358 lsrs r0, r1, 1                                |     r0 = r1 >> 1;
    0x0000135a movs r0, r0                                   |     
    0x0000135c lsrs r4, r1, 7                                |     r4 = r1 >> 7;
    0x0000135e movs r0, r0                                   |     
    0x00001360 lsrs r2, r2, 0xa                              |     r2 >>= 0xa;
    0x00001362 movs r0, r0                                   |     
    0x00001364 lsrs r4, r0, 0xa                              |     r4 = r0 >> 0xa;
    0x00001366 movs r0, r0                                   |     
    0x00001368 lsrs r6, r1, 8                                |     r6 = r1 >> 8;
    0x0000136a movs r0, r0                                   |     
    0x0000136c lsls r4, r0, 0x13                             |     r4 = r0 << 0x13;
    0x0000136e movs r0, r0                                   |     
    0x00001370 lsls r4, r0, 0x1f                             |     r4 = r0 << 0x1f;
    0x00001372 movs r0, r0                                   |     
    0x00001374 lsrs r2, r2, 9                                |     r2 >>= 9;
    0x00001376 movs r0, r0                                   |     
    0x00001378 lsls r0, r5, 0x14                             |     r0 = r5 << 0x14;
    0x0000137a movs r0, r0                                   |     
    0x0000137c lsrs r0, r1, 8                                |     r0 = r1 >> 8;
    0x0000137e movs r0, r0                                   |     
    0x00001380 lsls r6, r4, 0x1e                             |     r6 = r4 << 0x1e;
    0x00001382 movs r0, r0                                   |     
    0x00001384 lsls r0, r5, 0x16                             |     r0 = r5 << 0x16;
    0x00001386 movs r0, r0                                   |     
    0x00001388 lsrs r2, r6, 7                                |     r2 = r6 >> 7;
    0x0000138a movs r0, r0                                   |     
    0x0000138c lsls r4, r5, 0x16                             |     r4 = r5 << 0x16;
    0x0000138e movs r0, r0                                   |     
    0x00001390 lsrs r2, r2, 7                                |     r2 >>= 7;
    0x00001392 movs r0, r0                                   |     
    0x00001394 lsls r0, r5, 0x1c                             |     r0 = r5 << 0x1c;
    0x00001396 movs r0, r0                                   |     
    0x00001398 lsrs r4, r7, 6                                |     r4 = r7 >> 6;
    0x0000139a movs r0, r0                                   |     
    0x0000139c lsrs r2, r5, 5                                |     r2 = r5 >> 5;
    0x0000139e movs r0, r0                                   |     
    0x000013a0 lsrs r0, r3, 6                                |     r0 = r3 >> 6;
    0x000013a2 movs r0, r0                                   |     
    0x000013a4 lsls r2, r4, 0x1e                             |     r2 = r4 << 0x1e;
    0x000013a6 movs r0, r0                                   |     
    0x000013a8 lsrs r6, r0, 5                                |     r6 = r0 >> 5;
    0x000013aa movs r0, r0                                   |     
    0x000013ac lsrs r0, r0, 1                                |     r0 >>= 1;
    0x000013ae movs r0, r0                                   |     
    0x000013b0 lsrs r6, r5, 4                                |     r6 = r5 >> 4;
    0x000013b2 movs r0, r0                                   |     
    0x000013b4 lsls r0, r6, 0x1e                             |     r0 = r6 << 0x1e;
    0x000013b6 movs r0, r0                                   |     
    0x000013ec adds r0, 0x14                                 |     r0 += 0x14;
    0x000013ee b 0xf30                                       |     goto label_4;
                                                             | }
    ; 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-run-session @ 0xc18 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) main ()                                              | int32_t main (int32_t argc, char ** argv) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     char * var_10h;
                                                                 |     char * s2;
                                                                 |     char * var_18h;
                                                                 |     char * var_1ch;
                                                                 |     char * var_20h;
                                                                 |     char * var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     char * var_2ch;
                                                                 |     char ** var_30h;
                                                                 |     void * var_34h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t errnum;
                                                                 |     int32_t fildes;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_94h;
                                                                 |     void * s;
                                                                 |     int16_t var_294h;
                                                                 |     r0 = argc;
                                                                 |     r1 = argv;
                                                                 |     /* [13] -r-x section size 2372 named .text */
    0x00000c18 ldr.w r3, [pc, 0x680]                             |     r3 = *(0x0000129c);
    0x00000c1c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00000c20 sub.w sp, sp, 0x29c                               |     
    0x00000c24 ldr.w r2, [pc, 0x678]                             |     r2 = *(0x000012a0);
    0x00000c28 movs r4, 0                                        |     r4 = 0;
    0x00000c2a add r3, pc                                        |     r3 += pc;
    0x00000c2c mov r8, r0                                        |     r8 = r0;
    0x00000c2e str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00000c30 add.w sb, sp, 0x3c                                |     sb += var_3ch;
    0x00000c34 ldr.w r3, [pc, 0x66c]                             |     
    0x00000c38 add r2, pc                                        |     r2 += pc;
    0x00000c3a str r1, [sp, 0x30]                                |     var_30h = r1;
    0x00000c3c add.w sl, sp, 0x40                                |     sl += var_40h;
    0x00000c40 mov r1, r4                                        |     r1 = r4;
    0x00000c42 add r0, sp, 0x98                                  |     r0 += s;
    0x00000c44 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00000c46 mov.w r2, 0x1fc                                   |     r2 = 0x1fc;
    0x00000c4a ldr r3, [r3]                                      |     r3 = *(0x12a4);
    0x00000c4c str r3, [sp, 0x294]                               |     var_294h = r3;
    0x00000c4e mov.w r3, 0                                       |     r3 = 0;
    0x00000c52 add r3, sp, 0x94                                  |     r3 += var_94h;
    0x00000c54 str.w r4, [sb]                                    |     __asm ("str.w r4, [sb]");
    0x00000c58 str.w r4, [sl]                                    |     __asm ("str.w r4, [sl]");
    0x00000c5c str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00000c5e str r4, [sp, 0x94]                                |     var_94h = r4;
    0x00000c60 blx 0xb10                                         |     memset (r0, r1, r2);
    0x00000c64 cmp.w r8, 1                                       |     
                                                                 |     if (r8 <= 1) {
    0x00000c68 ble 0xce0                                         |         goto label_8;
                                                                 |     }
    0x00000c6a ldr.w r3, [pc, 0x63c]                             |     
    0x00000c6e movs r5, 2                                        |     r5 = 2;
    0x00000c70 ldr r6, [sp, 0x30]                                |     r6 = var_30h;
    0x00000c72 mov r7, r4                                        |     r7 = r4;
    0x00000c74 add r3, pc                                        |     r3 = 0x1f22;
    0x00000c76 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00000c78 ldr.w r3, [pc, 0x630]                             |     
    0x00000c7c add r3, pc                                        |     r3 = 0x1f2c;
    0x00000c7e str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00000c80 ldr.w r3, [pc, 0x62c]                             |     
    0x00000c84 add r3, pc                                        |     r3 = 0x1f38;
    0x00000c86 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00000c88 ldr.w r3, [pc, 0x628]                             |     
    0x00000c8c add r3, pc                                        |     r3 = 0x1f44;
    0x00000c8e str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00000c90 ldr.w r3, [pc, 0x624]                             |     
    0x00000c94 add r3, pc                                        |     r3 = 0x1f50;
    0x00000c96 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00000c98 ldr.w r3, [pc, 0x620]                             |     
    0x00000c9c add r3, pc                                        |     r3 = 0x1f5c;
    0x00000c9e str r3, [sp, 0x14]                                |     s2 = r3;
    0x00000ca0 ldr.w r3, [pc, 0x61c]                             |     
    0x00000ca4 add r3, pc                                        |     r3 = 0x1f68;
    0x00000ca6 str r3, [sp, 0x24]                                |     var_24h = r3;
                                                                 |     do {
    0x00000ca8 mov fp, r4                                        |         
    0x00000caa ldr r4, [r6, 4]!                                  |         r4 = *((r6 += 4));
                                                                 |         if (r7 == 0) {
    0x00000cae cbz r7, 0xcfe                                     |             goto label_9;
                                                                 |         }
    0x00000cb0 ldr r1, [sp, 0x14]                                |         r1 = s2;
    0x00000cb2 mov r0, fp                                        |         r0 = fp;
    0x00000cb4 blx 0xbe8                                         |         r0 = strcmp (r0, r1);
    0x00000cb8 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00000cba beq 0xd7c                                         |             goto label_10;
                                                                 |         }
    0x00000cbc ldr r1, [sp, 0x24]                                |         r1 = var_24h;
    0x00000cbe mov r0, fp                                        |         r0 = fp;
    0x00000cc0 blx 0xbe8                                         |         r0 = strcmp (r0, r1);
    0x00000cc4 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00000cc6 bne.w 0xdfe                                       |             goto label_11;
                                                                 |         }
    0x00000cca ldr.w r7, [sl]                                    |         r7 = *(sl);
    0x00000cce mov r2, sl                                        |         r2 = sl;
    0x00000cd0 cmp r7, 0                                         |         
                                                                 |         if (r7 != 0) {
    0x00000cd2 bne 0xd86                                         |             goto label_12;
                                                                 |         }
                                                                 | label_1:
    0x00000cd4 mov r3, r5                                        |         r3 = r5;
    0x00000cd6 str r4, [r2]                                      |         *(r2) = r4;
                                                                 | label_0:
    0x00000cd8 cmp r8, r3                                        |         
    0x00000cda add.w r5, r5, 1                                   |         r5++;
    0x00000cde bgt 0xca8                                         |         
                                                                 |     } while (r8 > r3);
                                                                 | label_8:
    0x00000ce0 ldr.w r3, [pc, 0x5e0]                             |     
    0x00000ce4 ldr.w r2, [pc, 0x5e0]                             |     r2 = *(0x000012c8);
    0x00000ce8 ldr.w r0, [pc, 0x5e0]                             |     r0 = *(0x12cc);
    0x00000cec add r3, pc                                        |     r3 = 0x1fb4;
    0x00000cee add r2, pc                                        |     r2 += pc;
                                                                 | label_2:
    0x00000cf0 ldr r4, [sp, 0x28]                                |     r4 = var_28h;
    0x00000cf2 movs r1, 1                                        |     r1 = 1;
    0x00000cf4 ldr r0, [r4, r0]                                  |     r0 = *((r4 + r0));
    0x00000cf6 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00000cf8 blx 0xb94                                         |     fprintf_chk ()
    0x00000cfc b 0xda6                                           |     void (*0xda6)() ();
                                                                 | label_9:
    0x00000cfe ldr r1, [sp, 0x10]                                |     r1 = var_10h;
    0x00000d00 mov r0, r4                                        |     r0 = r4;
    0x00000d02 blx 0xbe8                                         |     r0 = strcmp (r0, r1);
    0x00000d06 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00000d08 beq.w 0x115e                                      |         goto label_13;
                                                                 |     }
    0x00000d0c ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00000d0e cmp r3, 0x2d                                      |     
                                                                 |     if (r3 == 0x2d) {
    0x00000d10 bne 0xd32                                         |         
    0x00000d12 ldrb r2, [r4, 1]                                  |         r2 = *((r4 + 1));
    0x00000d14 cmp r2, 0x68                                      |         
                                                                 |         if (r2 == 0x68) {
    0x00000d16 bne 0xd20                                         |             
    0x00000d18 ldrb r2, [r4, 2]                                  |             r2 = *((r4 + 2));
    0x00000d1a cmp r2, 0                                         |             
                                                                 |             if (r2 == 0) {
    0x00000d1c beq.w 0x115e                                      |                 goto label_13;
                                                                 |             }
                                                                 |         }
    0x00000d20 cmp r3, 0x2d                                      |         
                                                                 |         if (r3 != 0x2d) {
    0x00000d22 bne 0xd32                                         |             goto label_14;
                                                                 |         }
    0x00000d24 ldrb r3, [r4, 1]                                  |         r3 = *((r4 + 1));
    0x00000d26 cmp r3, 0x3f                                      |         
                                                                 |         if (r3 != 0x3f) {
    0x00000d28 bne 0xd32                                         |             goto label_14;
                                                                 |         }
    0x00000d2a ldrb r3, [r4, 2]                                  |         r3 = *((r4 + 2));
    0x00000d2c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00000d2e beq.w 0x115e                                      |             goto label_13;
                                                                 |         }
                                                                 |     }
                                                                 | label_14:
    0x00000d32 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x00000d34 mov r0, r4                                        |     r0 = r4;
    0x00000d36 blx 0xbe8                                         |     r0 = strcmp (r0, r1);
    0x00000d3a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00000d3c beq.w 0x11be                                      |         goto label_15;
                                                                 |     }
    0x00000d40 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00000d42 movs r2, 0xe                                      |     r2 = 0xe;
    0x00000d44 mov r0, r4                                        |     r0 = r4;
    0x00000d46 blx 0xbb8                                         |     r0 = strncmp (r0, r1, r2);
    0x00000d4a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00000d4c beq 0xdca                                         |         goto label_16;
                                                                 |     }
    0x00000d4e ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x00000d50 movs r2, 0xe                                      |     r2 = 0xe;
    0x00000d52 mov r0, r4                                        |     r0 = r4;
    0x00000d54 blx 0xbb8                                         |     r0 = strncmp (r0, r1, r2);
    0x00000d58 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00000d5a beq 0xde2                                         |         goto label_17;
                                                                 |     }
    0x00000d5c ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00000d5e mov r0, r4                                        |     r0 = r4;
    0x00000d60 blx 0xbe8                                         |     r0 = strcmp (r0, r1);
                                                                 |     if (r0 != 0) {
    0x00000d64 cbz r0, 0xd76                                     |         
    0x00000d66 ldr.w r1, [pc, 0x568]                             |         r1 = *(0x000012d0);
    0x00000d6a mov r0, r4                                        |         r0 = r4;
    0x00000d6c add r1, pc                                        |         r1 += pc;
    0x00000d6e blx 0xbe8                                         |         r0 = strcmp (r0, r1);
    0x00000d72 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00000d74 bne 0xe24                                         |             goto label_18;
                                                                 |         }
                                                                 |     }
    0x00000d76 movs r7, 1                                        |     r7 = 1;
    0x00000d78 mov r3, r5                                        |     r3 = r5;
    0x00000d7a b 0xcd8                                           |     goto label_0;
                                                                 | label_10:
    0x00000d7c ldr.w r7, [sb]                                    |     r7 = *(sb);
    0x00000d80 mov r2, sb                                        |     r2 = sb;
    0x00000d82 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00000d84 beq 0xcd4                                         |         goto label_1;
                                                                 |     }
                                                                 | label_12:
    0x00000d86 ldr.w r3, [pc, 0x54c]                             |     
    0x00000d8a mov r7, fp                                        |     r7 = fp;
    0x00000d8c ldr.w r2, [pc, 0x548]                             |     r2 = *(0x000012d8);
    0x00000d90 ldr.w r1, [pc, 0x538]                             |     r1 = *(0x12cc);
    0x00000d94 add r3, pc                                        |     r3 = 0x206e;
    0x00000d96 add r2, pc                                        |     r2 += pc;
                                                                 |     do {
    0x00000d98 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x00000d9a ldr r0, [r0, r1]                                  |         r0 = *((r0 + r1));
    0x00000d9c movs r1, 1                                        |         r1 = 1;
    0x00000d9e str r7, [sp]                                      |         *(sp) = r7;
    0x00000da0 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00000da2 blx 0xb94                                         |         fprintf_chk ()
                                                                 | label_16:
    0x00000dca ldr.w r3, [sb]                                    |         r3 = *(sb);
                                                                 |         if (r3 != 0) {
    0x00000dce cbnz r3, 0xe12                                    |             goto label_19;
                                                                 |         }
    0x00000dd0 movs r1, 0x3d                                     |         r1 = 0x3d;
    0x00000dd2 mov r0, r4                                        |         r0 = r4;
    0x00000dd4 blx 0xb04                                         |         strchr (r0, r1);
    0x00000dd8 adds r0, 1                                        |         r0++;
    0x00000dda mov r3, r5                                        |         r3 = r5;
    0x00000ddc str.w r0, [sb]                                    |         __asm ("str.w r0, [sb]");
    0x00000de0 b 0xcd8                                           |         goto label_0;
                                                                 | label_17:
    0x00000de2 ldr.w r3, [sl]                                    |         r3 = *(sl);
    0x00000de6 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00000de8 bne.w 0x10ec                                      |             goto label_20;
                                                                 |         }
    0x00000dec movs r1, 0x3d                                     |         r1 = 0x3d;
    0x00000dee mov r0, r4                                        |         r0 = r4;
    0x00000df0 blx 0xb04                                         |         strchr (r0, r1);
    0x00000df4 adds r0, 1                                        |         r0++;
    0x00000df6 mov r3, r5                                        |         r3 = r5;
    0x00000df8 str.w r0, [sl]                                    |         __asm ("str.w r0, [sl]");
    0x00000dfc b 0xcd8                                           |         goto label_0;
                                                                 | label_11:
    0x00000dfe ldr.w r3, [pc, 0x4e0]                             |         
    0x00000e02 mov r7, fp                                        |         r7 = fp;
    0x00000e04 ldr.w r2, [pc, 0x4dc]                             |         r2 = *(0x000012e4);
    0x00000e08 ldr.w r1, [pc, 0x4c0]                             |         r1 = *(0x12cc);
    0x00000e0c add r3, pc                                        |         r3 = 0x20f2;
    0x00000e0e add r2, pc                                        |         r2 += pc;
    0x00000e10 b 0xd98                                           |         
                                                                 |     } while (1);
                                                                 | label_19:
    0x00000e12 ldr.w r3, [pc, 0x4d4]                             |     r3 = *(0x000012e8);
    0x00000e16 ldr.w r2, [pc, 0x4d4]                             |     
    0x00000e1a ldr.w r0, [pc, 0x4b0]                             |     r0 = *(0x12ce);
    0x00000e1e add r3, pc                                        |     r3 += pc;
    0x00000e20 add r2, pc                                        |     r2 = 0x2112;
    0x00000e22 b 0xcf0                                           |     goto label_2;
                                                                 | label_18:
    0x00000e24 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00000e26 cmp r3, 0x2d                                      |     
                                                                 |     if (r3 == 0x2d) {
    0x00000e28 beq.w 0x1148                                      |         goto label_21;
                                                                 |     }
    0x00000e2c subs r5, 1                                        |     r5--;
                                                                 | label_7:
    0x00000e2e ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00000e32 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00000e34 beq.w 0xff0                                       |         goto label_22;
                                                                 |     }
                                                                 | label_5:
    0x00000e38 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00000e3c ldr.w r6, [sb]                                    |     r6 = *(sb);
    0x00000e40 add.w sb, sp, 0x48                                |     sb += errnum;
    0x00000e44 mov r0, sb                                        |     r0 = sb;
    0x00000e46 ldr.w r4, [sl]                                    |     r4 = *(sl);
    0x00000e4a vstr d16, [sp, 0x48]                              |     __asm ("vstr d16, [sp, 0x48]");
    0x00000e4e blx 0xbdc                                         |     r0 = pipe ();
    0x00000e52 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00000e54 blt.w 0x10c0                                      |         goto label_23;
                                                                 |     }
    0x00000e58 ldr r7, [sp, 0x28]                                |     r7 = var_28h;
    0x00000e5a ldr.w r3, [pc, 0x494]                             |     r3 = *(0x12f2);
    0x00000e5e ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00000e60 ldr r0, [r3]                                      |     r0 = *(0x12f2);
    0x00000e62 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00000e64 blx 0xb4c                                         |     fflush (r0);
    0x00000e68 ldr.w r3, [pc, 0x460]                             |     r3 = *(0x12cc);
    0x00000e6c ldr.w sl, [r7, r3]                                |     sl = *((r7 + r3));
    0x00000e70 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00000e74 blx 0xb4c                                         |     r0 = fflush (r0);
    0x00000e78 blx 0xba0                                         |     r0 = fork ();
    0x00000e7c subs.w r8, r0, 0                                  |     r8 = r0 - 0;
                                                                 |     if (r8 < r0) {
    0x00000e80 blt.w 0x10f8                                      |         goto label_24;
                                                                 |     }
                                                                 |     if (r8 == r0) {
    0x00000e84 beq.w 0x104e                                      |         goto label_25;
                                                                 |     }
    0x00000e88 ldr.w r0, [sb, 4]                                 |     r0 = fildes;
    0x00000e8c movw r4, 0x1ff                                    |     r4 = 0x1ff;
    0x00000e90 blx 0xb7c                                         |     close (r0);
    0x00000e94 mov.w r2, 0x200                                   |     r2 = 0x200;
    0x00000e98 ldr r0, [sp, 0x34]                                |     r0 = var_34h;
    0x00000e9a movs r1, 0                                        |     r1 = 0;
    0x00000e9c ldr.w r7, [sb]                                    |     r7 = *(sb);
    0x00000ea0 mov.w fp, 0                                       |     
    0x00000ea4 mov r6, r4                                        |     r6 = r4;
    0x00000ea6 blx 0xb10                                         |     memset (r0, r1, r2);
    0x00000eaa mov r2, r4                                        |     r2 = r4;
                                                                 |     do {
                                                                 | label_3:
    0x00000eac ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00000eae mov r0, r7                                        |         r0 = r7;
    0x00000eb0 add.w r1, r3, fp                                  |         r1 = r3 + fp;
    0x00000eb4 blx 0xb34                                         |         r0 = read (r0, r1, r2);
    0x00000eb8 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00000eba blt 0xf98                                         |             goto label_26;
                                                                 |         }
                                                                 |         if (r0 == 0) {
    0x00000ebc beq.w 0xfd2                                       |             goto label_27;
                                                                 |         }
    0x00000ec0 add fp, r0                                        |         
    0x00000ec2 subs.w r2, r6, fp                                 |         r2 = r6 - fp;
    0x00000ec6 bne 0xeac                                         |         
                                                                 |     } while (r2 != r6);
    0x00000ec8 mov r4, r2                                        |     r4 = r2;
    0x00000eca movw fp, 0x1ff                                    |     fp = 0x1ff;
                                                                 | label_6:
    0x00000ece eor r3, r4, 1                                     |     r3 = r4 ^ 1;
    0x00000ed2 cmp.w fp, 0                                       |     
    0x00000ed6 ite eq                                            |     
                                                                 |     if (fp != 0) {
    0x00000ed8 moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (fp == 0) {
    0x00000eda andne r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x00000ede cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00000ee0 bne.w 0x122e                                      |         goto label_28;
                                                                 |     }
    0x00000ee4 cmp r4, 1                                         |     
                                                                 |     if (r4 == 1) {
    0x00000ee6 beq.w 0x102a                                      |         goto label_29;
                                                                 |     }
                                                                 | label_4:
    0x00000eea ldr.w r0, [sb]                                    |     r0 = *(sb);
    0x00000eee blx 0xb7c                                         |     close (r0);
    0x00000ef2 ldr.w r0, [pc, 0x400]                             |     
    0x00000ef6 ldr r1, [sp, 0x34]                                |     r1 = var_34h;
    0x00000ef8 add r0, pc                                        |     r0 = 0x21f2;
    0x00000efa blx 0xae0                                         |     r0 = dbus_setenv ();
    0x00000efe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00000f00 beq.w 0x1284                                      |         void (*0x1284)() ();
                                                                 |     }
    0x00000f04 ldr r0, [pc, 0x3f0]                               |     
    0x00000f06 movs r1, 0                                        |     r1 = 0;
    0x00000f08 add r0, pc                                        |     r0 = 0x2204;
    0x00000f0a blx 0xae0                                         |     r0 = dbus_setenv ();
    0x00000f0e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00000f10 beq.w 0x1284                                      |         void (*0x1284)() ();
                                                                 |     }
    0x00000f14 ldr r0, [pc, 0x3e4]                               |     
    0x00000f16 movs r1, 0                                        |     r1 = 0;
    0x00000f18 add r0, pc                                        |     r0 = 0x2218;
    0x00000f1a blx 0xae0                                         |     r0 = dbus_setenv ();
    0x00000f1e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00000f20 beq.w 0x1284                                      |         void (*0x1284)() ();
                                                                 |     }
    0x00000f24 ldr r0, [pc, 0x3d8]                               |     
    0x00000f26 movs r1, 0                                        |     r1 = 0;
    0x00000f28 add r0, pc                                        |     r0 = 0x222c;
    0x00000f2a blx 0xae0                                         |     r0 = dbus_setenv ();
    0x00000f2e cmp r0, 0                                         |     
                                                                 | label_26:
    0x00000f98 blx 0xc00                                         |     r0 = errno_location ();
    0x00000f9c ldr r3, [r0]                                      |     r3 = *(r0);
    0x00000f9e cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x00000fa0 bne.w 0x10e8                                      |         goto label_30;
                                                                 |     }
    0x00000fa4 sub.w r2, r6, fp                                  |     r2 = r6 - fp;
    0x00000fa8 b 0xeac                                           |     goto label_3;
                                                                 | label_27:
    0x00000fd2 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x00000fd6 beq.w 0x121a                                      |         goto label_31;
                                                                 |     }
    0x00000fda ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00000fdc add.w fp, fp, -1                                  |     
    0x00000fe0 ldrb.w r3, [r3, fp]                               |     r3 = *((r3 + fp));
    0x00000fe4 cmp r3, 0xa                                       |     
                                                                 |     if (r3 != 0xa) {
    0x00000fe6 bne 0xeea                                         |         goto label_4;
                                                                 |     }
    0x00000fe8 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00000fea strb.w r0, [r3, fp]                               |     *((r3 + fp)) = r0;
    0x00000fee b 0xeea                                           |     goto label_4;
                                                                 | label_22:
    0x00000ff0 ldr r3, [pc, 0x324]                               |     
    0x00000ff2 add r3, pc                                        |     r3 = 0x230e;
    0x00000ff4 str.w r3, [sl]                                    |     __asm ("str.w r3, [sl]");
    0x00000ff8 b 0xe38                                           |     goto label_5;
                                                                 | label_29:
    0x0000102a blx 0xc00                                         |     r0 = errno_location ();
    0x0000102e ldr r0, [r0]                                      |     r0 = *(r0);
    0x00001030 ldr.w r6, [sl]                                    |     r6 = *(sl);
    0x00001034 blx 0xac8                                         |     strerror (r0);
    0x00001038 ldr r3, [pc, 0x2e8]                               |     
    0x0000103a mov r5, r0                                        |     r5 = r0;
    0x0000103c ldr r2, [pc, 0x2e8]                               |     
    0x0000103e mov r1, r4                                        |     r1 = r4;
    0x00001040 mov r0, r6                                        |     r0 = r6;
    0x00001042 str r5, [sp]                                      |     *(sp) = r5;
    0x00001044 add r3, pc                                        |     r3 = 0x236c;
    0x00001046 add r2, pc                                        |     r2 = 0x2372;
    0x00001048 blx 0xb94                                         |     fprintf_chk ()
    0x0000104c b 0xda6                                           |     void (*0xda6)() ();
                                                                 | label_25:
    0x0000104e ldr.w r0, [sb]                                    |     r0 = *(sb);
    0x00001052 add r5, sp, 0x54                                  |     r5 += var_54h;
    0x00001054 blx 0xb7c                                         |     r0 = close (r0);
    0x00001058 blx 0xb70                                         |     dbus_fd_set_all_close_on_exec ();
    0x0000105c ldr.w r0, [sb, 4]                                 |     r0 = fildes;
    0x00001060 blx 0xb58                                         |     dbus_fd_clear_close_on_exec ();
    0x00001064 ldr.w r3, [sb, 4]                                 |     r3 = fildes;
    0x00001068 movs r2, 0x40                                     |     r2 = 0x40;
    0x0000106a movs r1, 1                                        |     r1 = 1;
    0x0000106c mov r0, r5                                        |     r0 = r5;
    0x0000106e str r3, [sp]                                      |     *(sp) = r3;
    0x00001070 ldr r3, [pc, 0x2b8]                               |     
    0x00001072 add r3, pc                                        |     r3 = 0x23a2;
    0x00001074 blx 0xbac                                         |     sprintf_chk ();
    0x00001078 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0000107a beq 0x1142                                        |         goto label_32;
                                                                 |     }
    0x0000107c ldr r2, [pc, 0x2b0]                               |     
    0x0000107e add r2, pc                                        |     r2 = 0x23b2;
                                                                 |     do {
    0x00001080 strd r5, r2, [sp]                                 |         __asm ("strd r5, r2, [sp]");
    0x00001084 movs r0, 0                                        |         r0 = 0;
    0x00001086 ldr r3, [pc, 0x2ac]                               |         
    0x00001088 mov r1, r4                                        |         r1 = r4;
    0x0000108a ldr r2, [pc, 0x2ac]                               |         
    0x0000108c str r0, [sp, 0xc]                                 |         var_ch = r0;
    0x0000108e mov r0, r4                                        |         r0 = r4;
    0x00001090 add r3, pc                                        |         r3 = 0x23ca;
    0x00001092 str r6, [sp, 8]                                   |         var_8h = r6;
    0x00001094 add r2, pc                                        |         r2 = 0x23d2;
    0x00001096 blx 0xb28                                         |         execlp ();
    0x0000109a blx 0xc00                                         |         r0 = errno_location ();
    0x0000109e ldr r0, [r0]                                      |         r0 = *(r0);
    0x000010a0 ldr.w r5, [sl]                                    |         r5 = *(sl);
    0x000010a4 blx 0xac8                                         |         strerror (r0);
    0x000010a8 ldr r3, [pc, 0x290]                               |         
    0x000010aa mov r1, r0                                        |         r1 = r0;
    0x000010ac ldr r2, [pc, 0x290]                               |         
    0x000010ae mov r0, r5                                        |         r0 = r5;
    0x000010b0 strd r4, r1, [sp]                                 |         __asm ("strd r4, r1, [sp]");
    0x000010b4 movs r1, 1                                        |         r1 = 1;
    0x000010b6 add r3, pc                                        |         r3 = 0x23f6;
    0x000010b8 add r2, pc                                        |         r2 = 0x23fc;
    0x000010ba blx 0xb94                                         |         fprintf_chk ()
    0x000010be b 0xda6                                           |         void (*0xda6)() ();
                                                                 | label_23:
    0x000010c0 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x000010c2 ldr r3, [pc, 0x208]                               |         r3 = *(0x12ce);
    0x000010c4 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x000010c6 ldr r5, [r3]                                      |         r5 = *(0x12ce);
    0x000010c8 blx 0xc00                                         |         r0 = errno_location ();
    0x000010cc ldr r0, [r0]                                      |         r0 = *(r0);
    0x000010ce blx 0xac8                                         |         strerror (r0);
    0x000010d2 ldr r3, [pc, 0x270]                               |         
    0x000010d4 mov r4, r0                                        |         r4 = r0;
    0x000010d6 ldr r2, [pc, 0x270]                               |         
    0x000010d8 movs r1, 1                                        |         r1 = 1;
    0x000010da mov r0, r5                                        |         r0 = r5;
    0x000010dc str r4, [sp]                                      |         *(sp) = r4;
    0x000010de add r3, pc                                        |         r3 = 0x2428;
    0x000010e0 add r2, pc                                        |         r2 = 0x242e;
    0x000010e2 blx 0xb94                                         |         fprintf_chk ()
    0x000010e6 b 0xda6                                           |         void (*0xda6)() ();
                                                                 | label_30:
    0x000010e8 movs r4, 1                                        |         r4 = 1;
    0x000010ea b 0xece                                           |         goto label_6;
                                                                 | label_20:
    0x000010ec ldr r3, [pc, 0x25c]                               |         
    0x000010ee ldr r2, [pc, 0x260]                               |         
    0x000010f0 ldr r0, [pc, 0x1d8]                               |         r0 = *(0x12cc);
    0x000010f2 add r3, pc                                        |         r3 = 0x2442;
    0x000010f4 add r2, pc                                        |         r2 = 0x244a;
    0x000010f6 b 0xcf0                                           |         goto label_2;
                                                                 | label_24:
    0x000010f8 blx 0xc00                                         |         r0 = errno_location ();
    0x000010fc ldr r0, [r0]                                      |         r0 = *(r0);
    0x000010fe ldr.w r5, [sl]                                    |         r5 = *(sl);
    0x00001102 blx 0xac8                                         |         strerror (r0);
    0x00001106 ldr r3, [pc, 0x24c]                               |         
    0x00001108 mov r4, r0                                        |         r4 = r0;
    0x0000110a ldr r2, [pc, 0x24c]                               |         
    0x0000110c movs r1, 1                                        |         r1 = 1;
    0x0000110e mov r0, r5                                        |         r0 = r5;
    0x00001110 str r4, [sp]                                      |         *(sp) = r4;
    0x00001112 add r3, pc                                        |         r3 = 0x246c;
    0x00001114 add r2, pc                                        |         r2 = 0x2472;
    0x00001116 blx 0xb94                                         |         fprintf_chk ()
    0x0000111a b 0xda6                                           |         void (*0xda6)() ();
                                                                 | label_32:
    0x00001142 ldr r2, [pc, 0x228]                               |         
    0x00001144 add r2, pc                                        |         r2 = 0x24b6;
    0x00001146 b 0x1080                                          |         
                                                                 |     } while (1);
                                                                 | label_21:
    0x00001148 ldr r1, [pc, 0x224]                               |     
    0x0000114a mov r0, r4                                        |     r0 = r4;
    0x0000114c add r1, pc                                        |     r1 = 0x24c0;
    0x0000114e blx 0xbe8                                         |     r0 = strcmp (r0, r1);
    0x00001152 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001154 bne 0x11dc                                        |         void (*0x11dc)() ();
                                                                 |     }
    0x00001156 cmp r8, r5                                        |     
                                                                 |     if (r8 > r5) {
    0x00001158 bgt.w 0xe2e                                       |         goto label_7;
                                                                 |     }
    0x0000115c b 0xce0                                           |     goto label_8;
                                                                 | label_13:
    0x0000115e ldr r4, [sp, 0x28]                                |     r4 = var_28h;
    0x00001160 movs r1, 1                                        |     r1 = 1;
    0x00001162 ldr r0, [pc, 0x168]                               |     
    0x00001164 ldr r3, [pc, 0x20c]                               |     
    0x00001166 ldr r2, [pc, 0x210]                               |     
    0x00001168 ldr r0, [r4, r0]                                  |     r0 = *((r4 + r0));
    0x0000116a add r3, pc                                        |     r3 = 0x24e2;
    0x0000116c strd r3, r3, [sp]                                 |     __asm ("strd r3, r3, [sp]");
    0x00001170 add r2, pc                                        |     r2 = 0x24ee;
    0x00001172 ldr r0, [r0]                                      |     r0 = *(0x12ce);
    0x00001174 blx 0xb94                                         |     fprintf_chk ()
    0x00001178 movs r0, 0                                        |     r0 = 0;
    0x0000117a blx 0xbf4                                         |     exit (r0);
                                                                 | label_15:
    0x000011be ldr r3, [pc, 0x1c4]                               |     
    0x000011c0 mov r7, r0                                        |     r7 = r0;
    0x000011c2 ldr r2, [pc, 0x1c4]                               |     
    0x000011c4 movs r0, 1                                        |     r0 = 1;
    0x000011c6 ldr r1, [pc, 0x1c4]                               |     
    0x000011c8 add r3, pc                                        |     r3 = 0x2552;
    0x000011ca add r2, pc                                        |     r2 = 0x2558;
    0x000011cc add r1, pc                                        |     r1 = 0x255e;
    0x000011ce blx 0xaf8                                         |     printf_chk ();
    0x000011d2 mov r0, r7                                        |     r0 = r7;
    0x000011d4 blx 0xbf4                                         |     exit (r0);
                                                                 | label_31:
    0x0000121a ldr r3, [pc, 0x184]                               |     
    0x0000121c movs r1, 1                                        |     r1 = 1;
    0x0000121e ldr r2, [pc, 0x184]                               |     
    0x00001220 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00001224 add r3, pc                                        |     r3 = 0x25ca;
    0x00001226 add r2, pc                                        |     r2 = 0x25d0;
    0x00001228 blx 0xb94                                         |     fprintf_chk ()
    0x0000122c b 0xda6                                           |     void (*0xda6)() ();
                                                                 | label_28:
    0x0000122e ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00001230 add.w fp, fp, -1                                  |     
    0x00001234 ldrb.w r3, [r3, fp]                               |     r3 = *((r3 + fp));
    0x00001238 cmp r3, 0xa                                       |     
                                                                 |     if (r3 != 0xa) {
    0x0000123a bne.w 0xeea                                       |         goto label_4;
                                                                 |     }
    0x0000123e ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00001240 movs r3, 0                                        |     r3 = 0;
    0x00001242 strb.w r3, [r2, fp]                               |     *((r2 + fp)) = r3;
    0x00001246 b 0xeea                                           |     goto label_4;
                                                                 | }
    ; 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-run-session @ 0x14b4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.tool_oom ()              | void tool_oom (int16_t arg1) {
                                         |     r0 = arg1;
    0x000014b4 ldr.w ip, [pc, 0x24]      |     ip = *(0x000014dc);
    0x000014b8 movs r1, 1                |     r1 = 1;
    0x000014ba push {r3, lr}             |     
    0x000014bc mov r3, r0                |     r3 = r0;
    0x000014be ldr.w lr, [pc, 0x20]      |     lr = *(0x14e2);
    0x000014c2 add ip, pc                |     
    0x000014c4 ldr r2, [pc, 0x1c]        |     
    0x000014c6 mov r0, ip                |     r0 = ip;
    0x000014c8 ldr.w r4, [ip, lr]        |     r4 = *((ip + lr));
    0x000014cc add r2, pc                |     r2 = 0x29b4;
    0x000014ce ldr r0, [r4]              |     r0 = *(r4);
    0x000014d0 blx 0xb94                 |     fprintf_chk ()
    0x000014d4 movs r0, 1                |     r0 = 1;
    0x000014d6 blx 0xbf4                 |     exit (r0);
    0x000014da nop                       |     
    0x000014dc subs r6, r3, r2           |     r6 = r3 - r2;
    0x000014de movs r0, r0               |     
    0x000014e0 lsls r0, r2, 2            |     r0 = r2 << 2;
    0x000014e2 movs r0, r0               |     
    0x000014e4 lsls r4, r0, 0x1c         |     r4 = r0 << 0x1c;
    0x000014e6 movs r0, r0               |     
                                         | }
    ; 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-run-session @ 0x1524 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.tool_stderr_error ()             | void tool_stderr_error (int16_t arg1, int16_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     if (? >= ?) {
    0x00001524 strmi r4, [r3], -sl, lsl 20       |         *(r3) = r4;
                                                 |         r3 += 20;
                                                 |     }
    0x00001528 ldr.w ip, [pc, 0x28]              |     ip = *(0x1554);
    0x0000152c push {r4, r5, lr}                 |     
    0x0000152e sub sp, 0xc                       |     
    0x00001530 add r2, pc                        |     r2 += pc;
    0x00001532 ldrd r4, r5, [r1]                 |     __asm ("ldrd r4, r5, [r1]");
    0x00001536 movs r1, 1                        |     r1 = 1;
    0x00001538 ldr.w r0, [r2, ip]                |     r0 = *((r2 + ip));
    0x0000153c ldr r2, [pc, 0x18]                |     
    0x0000153e ldr r0, [r0]                      |     r0 = *(r0);
    0x00001540 add r2, pc                        |     r2 = 0x2a9c;
    0x00001542 str r5, [sp, 4]                   |     var_4h = r5;
    0x00001544 str r4, [sp]                      |     *(sp) = r4;
    0x00001546 blx 0xb94                         |     fprintf_chk ()
    0x0000154a add sp, 0xc                       |     
    0x0000154c pop {r4, r5, pc}                  |     
                                                 | }

[*] Function fprintf used 21 times dbus-run-session